/** * Replaces the {@link org.ehcache.resilience.ResilienceStrategy ResilienceStrategy} instance in * the {@link org.ehcache.Ehcache Ehcache} instance provided with a {@link * org.mockito.Mockito#spy(Object) Mockito <code>spy</code>} wrapping the original {@code * ResilienceStrategy} instance. * * @param ehcache the {@code Ehcache} instance to alter * @return the <code>spy</code>-wrapped {@code ResilienceStrategy} instance */ protected final <K, V> ResilienceStrategy<K, V> setResilienceStrategySpy( final Ehcache<K, V> ehcache) { assert ehcache != null; try { final Field resilienceStrategyField = ehcache.getClass().getDeclaredField("resilienceStrategy"); resilienceStrategyField.setAccessible(true); @SuppressWarnings("unchecked") ResilienceStrategy<K, V> resilienceStrategy = (ResilienceStrategy<K, V>) resilienceStrategyField.get(ehcache); if (resilienceStrategy != null) { resilienceStrategy = spy(resilienceStrategy); resilienceStrategyField.set(ehcache, resilienceStrategy); } return resilienceStrategy; } catch (Exception e) { throw new AssertionError( String.format("Unable to wrap ResilienceStrategy in Ehcache instance: %s", e)); } }