本文整理了Java中javax.cache.Cache.getAndReplace()
方法的一些代码示例,展示了Cache.getAndReplace()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Cache.getAndReplace()
方法的具体详情如下:
包路径:javax.cache.Cache
类名称:Cache
方法名:getAndReplace
[英]Atomically replaces the value for a given key if and only if there is a value currently mapped by the key.
This is equivalent to
if (cache.containsKey(key)) {
V oldValue = cache.get(key);
cache.put(key, value);
return oldValue;
} else {
return null;
}
except that the action is performed atomically.
[中]当且仅当给定键当前映射了一个值时,才会自动替换该键的值。
这相当于
if (cache.containsKey(key)) {
V oldValue = cache.get(key);
cache.put(key, value);
return oldValue;
} else {
return null;
}
除了操作是以原子方式执行之外。
代码示例来源:origin: ehcache/ehcache3
@Test
public void getAndReplace() {
expect(cache.getAndReplace(1, "a")).isNull();
changesOf(0, 1, 0, 0);
cache.put(1, "a");
changesOf(0, 0, 1, 0);
expect(cache.getAndReplace(1, "b")).isEqualTo("a");
changesOf(1, 0, 1, 0);
}
代码示例来源:origin: org.apache.camel/camel-jcache
@Override
void execute(Cache<Object, Object> cache, Exchange exchange) {
exchange.getIn().setBody(
cache.getAndReplace(
exchange.getIn().getHeader(JCacheConstants.KEY),
exchange.getIn().getBody())
);
}
},
代码示例来源:origin: cache2k/cache2k
@Override
public V getAndReplace(K key, V value) {
return passingValueTransformer.expand(
cache.getAndReplace(passingKeyTransformer.compact(key), valueTransformer.compact(value)));
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace() {
long now = System.currentTimeMillis();
Date key = new Date(now);
Date value = new Date(now);
cache.put(key, value);
Date nextValue = new Date(now + 1);
assertSame(value, cache.getAndReplace(key, nextValue));
assertSame(nextValue, cache.get(key));
}
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace_NullKey() {
try {
assertNull(cache.getAndReplace(null, ""));
fail("should have thrown an exception - null key not allowed");
} catch (NullPointerException e) {
//good
}
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace_NullValue() {
try {
assertNull(cache.getAndReplace(1L, null));
fail("should have thrown an exception - null value not allowed");
} catch (NullPointerException e) {
//good
}
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace_Closed() {
cache.close();
try {
cache.getAndReplace(null, null);
fail("should have thrown an exception - cache closed");
} catch (IllegalStateException e) {
//good
}
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace_Missing() {
Long key = System.currentTimeMillis();
assertNull(cache.getAndReplace(key, ""));
assertFalse(cache.containsKey(key));
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplace() {
Long key = System.currentTimeMillis();
String value = "value" + key;
cache.put(key, value);
String nextValue = "valueB" + key;
assertEquals(value, cache.getAndReplace(key, nextValue));
assertEquals(nextValue, cache.get(key));
}
}
代码示例来源:origin: javax.cache/cache-tests
/**
* Ensure that a {@link Cache#getAndReplace(Object, Object)} does not cause
* an entry to be loaded.
*/
@Test
public void shouldNotLoadUsingGetAndReplace() {
RecordingCacheLoader<String> cacheLoader = new RecordingCacheLoader<String>();
cacheLoaderServer.setCacheLoader(cacheLoader);
String key = "message";
assertThat(cache.containsKey(key), is(false));
String value = cache.getAndReplace(key, key);
assertThat(cache.containsKey(key), is(false));
assertThat(value, is(nullValue()));
assertThat(cacheLoader.getLoadCount(), is(0));
assertThat(cacheLoader.hasLoaded(key), is(false));
//try again with an existing value
cache.put(key, key);
value = cache.getAndReplace(key, "gudday");
assertThat(value, is(key));
assertThat(cache.containsKey(key), is(true));
assertThat(cacheLoader.getLoadCount(), is(0));
assertThat(cacheLoader.hasLoaded(key), is(false));
}
代码示例来源:origin: javax.cache/cache-tests
/**
* Ensure that a {@link Cache#getAndReplace(Object, Object)} does not cause
* an entry to be loaded.
*/
@Test
public void shouldNotLoadUsingGetAndReplace() {
RecordingCacheLoader<String> cacheLoader = new RecordingCacheLoader<String>();
cacheLoaderServer.setCacheLoader(cacheLoader);
String key = "message";
assertThat(cache.containsKey(key), is(false));
String value = cache.getAndReplace(key, key);
assertThat(cache.containsKey(key), is(false));
assertThat(value, is(nullValue()));
assertThat(cacheLoader.getLoadCount(), is(0));
assertThat(cacheLoader.hasLoaded(key), is(false));
//try again with an existing value
cache.put(key, key);
value = cache.getAndReplace(key, "gudday");
assertThat(value, is(key));
assertThat(cache.containsKey(key), is(true));
assertThat(cacheLoader.getLoadCount(), is(0));
assertThat(cacheLoader.hasLoaded(key), is(false));
}
代码示例来源:origin: org.infinispan/infinispan-core
private <K> void doGetAndReplace(Supplier<K> keySupplier,
Cache<K, String> readCache, Cache<K, String> writeCache) {
K key = keySupplier.get();
assertEquals(null, readCache.get(key));
assertEquals(null, writeCache.getAndReplace(key, "xxx"));
assertEquals(null, writeCache.getAndPut(key, "one"));
assertEquals("one", readCache.get(key));
assertEquals("one", writeCache.getAndReplace(key, "uno"));
assertEquals("uno", readCache.get(key));
assertTrue(writeCache.remove(key));
assertEquals(null, readCache.get(key));
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void getAndReplaceShouldCallGetExpiryForModifiedEntry() {
CountingExpiryPolicy expiryPolicy = new CountingExpiryPolicy();
expiryPolicyServer.setExpiryPolicy(expiryPolicy);
MutableConfiguration<Integer, Integer> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(expiryPolicyClient));
Cache<Integer, Integer> cache = getCacheManager().createCache(getTestCacheName(), config);
cache.containsKey(1);
assertThat(expiryPolicy.getCreationCount(), is(0));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), is(0));
cache.getAndReplace(1, 1);
assertThat(expiryPolicy.getCreationCount(), is(0));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), is(0));
cache.put(1, 1);
assertThat(expiryPolicy.getCreationCount(), greaterThanOrEqualTo(1));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), is(0));
expiryPolicy.resetCount();
int oldValue = cache.getAndReplace(1, 2);
assertEquals(1, oldValue);
assertThat(expiryPolicy.getCreationCount(), is(0));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), greaterThanOrEqualTo(1));
expiryPolicy.resetCount();
}
代码示例来源:origin: javax.cache/cache-tests
long putCount = 0;
String result = cache.getAndReplace(1L, "MissingNoReplace");
missCount++;
assertEquals(putCount, lookupManagementAttribute(cache, CacheStatistics, "CachePuts"));
result = cache.getAndReplace(2L, "InvalidReplace");
missCount++;
assertEquals(null, result);
assertFalse(cache.containsKey(2L));
result = cache.getAndReplace(1L, "Replaced");
hitCount++;
putCount++;
代码示例来源:origin: javax.cache/cache-tests
@Test
public void shouldNotWriteThroughUsingGetAndReplace_MissingSingleEntry() {
assertEquals(0, cacheWriter.getWriteCount());
assertEquals(0, cacheWriter.getDeleteCount());
// replace does not occur since key 1 does not exist in cache
String value = cache.getAndReplace(1, "Gudday World");
assertEquals(value, null);
assertEquals(cache.containsKey(1), false);
assertEquals(0, cacheWriter.getWriteCount());
assertEquals(0, cacheWriter.getDeleteCount());
}
代码示例来源:origin: javax.cache/cache-tests
@Test
public void shouldWriteThroughUsingGetAndReplace_ExistingSingleEntry() {
assertEquals(0, cacheWriter.getWriteCount());
assertEquals(0, cacheWriter.getDeleteCount());
// actual replace of an entry case
cache.put(1, "Gudday World");
String value = cache.getAndReplace(1, "Hello World");
assertEquals(value, "Gudday World");
assertEquals(2, cacheWriter.getWriteCount());
assertEquals(0, cacheWriter.getDeleteCount());
assertEquals(cache.get(1), cacheWriter.get(1));
assertTrue(cacheWriter.hasWritten(1));
}
代码示例来源:origin: javax.cache/cache-tests
assertEquals(0, cacheWriter.getDeleteCount());
String previousValue = cache.getAndReplace(1, "Gudday World");
assertEquals(previousValue, null);
assertEquals(0, cacheWriter.getWriteCount());
assertEquals(0, cacheWriter.getDeleteCount());
previousValue = cache.getAndReplace(1, "Bonjour World");
assertEquals(previousValue, "Gudday World");
nWrite++;
assertEquals(0, cacheWriter.getDeleteCount());
previousValue = cache.getAndReplace(1, "Hello World");
assertEquals("Bonjour World", previousValue);
nWrite++;
代码示例来源:origin: org.infinispan/infinispan-jcache
public void testGetAndReplace(Method m) {
final MutableConfiguration<Integer, String>
cfg = new MutableConfiguration<Integer, String>();
cfg.setExpiryPolicyFactory((Factory<ExpiryPolicy>) () -> new ExpiryPolicy() {
@Override
public Duration getExpiryForCreation() {
return Duration.ETERNAL;
}
@Override
public Duration getExpiryForAccess() {
return null;
}
@Override
public Duration getExpiryForUpdate() {
return Duration.ZERO;
}
});
final String name = getName(m);
withCachingProvider(provider -> {
CacheManager cm = provider.getCacheManager();
Cache<Integer, String> cache = cm.createCache(name, cfg);
cache.put(1, "v1");
assertTrue(cache.containsKey(1));
assertEquals("v1", cache.get(1));
cache.getAndReplace(1, "v2");
assertFalse(cache.containsKey(1));
assertNull(cache.get(1));
});
}
代码示例来源:origin: javax.cache/cache-tests
assertNotNull(cache.get(1));
assertFalse(cache.containsKey(1));
assertNull(cache.getAndReplace(1, 2));
代码示例来源:origin: javax.cache/cache-tests
assertEquals(1, filteredListener.getRemoved());
cache.getAndReplace(1l, "Prince");
assertEquals(2, filteredListener.getCreated());
assertEquals(4, filteredListener.getUpdated());
内容来源于网络,如有侵权,请联系作者删除!