public void testSkipCacheFlagUsage() throws CacheLoaderException { CountingCacheStore countingCS = getCountingCacheStore(); store.store(TestInternalCacheEntryFactory.create("k1", "v1")); assert countingCS.numLoads == 0; assert countingCS.numContains == 0; // load using SKIP_CACHE_STORE should not find the object in the store assert cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_STORE).get("k1") == null; assert countingCS.numLoads == 0; assert countingCS.numContains == 0; // counter-verify that the object was actually in the store: assert "v1".equals(cache.get("k1")); assert countingCS.numLoads == 1 : "Expected 1, was " + countingCS.numLoads; assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains; // now check that put won't return the stored value store.store(TestInternalCacheEntryFactory.create("k2", "v2")); Object putReturn = cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_STORE).put("k2", "v2-second"); assert putReturn == null; assert countingCS.numLoads == 1 : "Expected 1, was " + countingCS.numLoads; assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains; // but it inserted it in the cache: assert "v2-second".equals(cache.get("k2")); // perform the put in the cache & store, using same value: putReturn = cache.put("k2", "v2-second"); // returned value from the cache: assert "v2-second".equals(putReturn); // and verify that the put operation updated the store too: assert "v2-second".equals(store.load("k2").getValue()); assert countingCS.numLoads == 2 : "Expected 2, was " + countingCS.numLoads; assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains; cache.containsKey("k1"); assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains; assert false == cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_STORE).containsKey("k3"); assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains; assert countingCS.numLoads == 2 : "Expected 2, was " + countingCS.numLoads; // now with batching: boolean batchStarted = cache.getAdvancedCache().startBatch(); assert batchStarted; assert null == cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_STORE).get("k1batch"); assert countingCS.numLoads == 2 : "Expected 2, was " + countingCS.numLoads; assert null == cache.getAdvancedCache().get("k2batch"); assert countingCS.numLoads == 3 : "Expected 3, was " + countingCS.numLoads; cache.endBatch(true); }