Lazily create the GemFireCache instance when spying on the o.a.g.cache.CacheFactory as well as the o.a.g.cache.client.ClientCacheFactory.

This change effectively uses a java.util.function.Supplier to lazily request the 'single' cache instance or create a new cache instance when either CacheFactory.create() or ClientCacheFactory.create() is called.
This commit is contained in:
John Blum
2019-07-25 13:49:45 -07:00
parent 34908200d6
commit 317e074c84

View File

@@ -65,6 +65,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.mockito.ArgumentMatchers;
@@ -2903,8 +2904,8 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
CacheFactory cacheFactorySpy = spy(cacheFactory);
Cache resolvedMockCache = GemFireMockObjectsSupport.<Cache>resolveMockedGemFireCache(useSingletonCache)
.orElseGet(() -> {
Supplier<Cache> resolvedMockCache = () ->
GemFireMockObjectsSupport.<Cache>resolveMockedGemFireCache(useSingletonCache).orElseGet(() -> {
Cache mockCache = mockPeerCache();
@@ -2941,7 +2942,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
doAnswer(invocation -> {
storeConfiguration(cacheFactory);
return rememberMockedGemFireCache(constructGemFireObjects(resolvedMockCache), useSingletonCache);
return rememberMockedGemFireCache(constructGemFireObjects(resolvedMockCache.get()), useSingletonCache);
}).when(cacheFactorySpy).create();
return cacheFactorySpy;
@@ -2955,7 +2956,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
ClientCacheFactory clientCacheFactorySpy = spy(clientCacheFactory);
ClientCache resolvedMockedClientCache =
Supplier<ClientCache> resolvedMockedClientCache = () ->
GemFireMockObjectsSupport.<ClientCache>resolveMockedGemFireCache(useSingletonCache).orElseGet(() -> {
ClientCache mockClientCache = mockClientCache();
@@ -3108,7 +3109,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
doAnswer(invocation -> {
storeConfiguration(clientCacheFactory);
return rememberMockedGemFireCache(constructGemFireObjects(resolvedMockedClientCache), useSingletonCache);
return rememberMockedGemFireCache(constructGemFireObjects(resolvedMockedClientCache.get()), useSingletonCache);
}).when(clientCacheFactorySpy).create();
return clientCacheFactorySpy;