javax.cache.Cache.getAndReplace()方法的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(9.6k)|赞(0)|评价(0)|浏览(141)

本文整理了Java中javax.cache.Cache.getAndReplace()方法的一些代码示例,展示了Cache.getAndReplace()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Cache.getAndReplace()方法的具体详情如下:
包路径:javax.cache.Cache
类名称:Cache
方法名:getAndReplace

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());

相关文章