use of javax.cache.processor.EntryProcessor in project hazelcast by hazelcast.
the class CacheEntryProcessorMessageTask method prepareOperation.
@Override
protected Operation prepareOperation() {
CacheService service = getService(getServiceName());
CacheOperationProvider operationProvider = getOperationProvider(parameters.name);
EntryProcessor entryProcessor = (EntryProcessor) service.toObject(parameters.entryProcessor);
ArrayList argumentsList = new ArrayList(parameters.arguments.size());
for (Data data : parameters.arguments) {
argumentsList.add(service.toObject(data));
}
return operationProvider.createEntryProcessorOperation(parameters.key, parameters.completionId, entryProcessor, argumentsList.toArray());
}
use of javax.cache.processor.EntryProcessor in project cache2k by cache2k.
the class CacheExpiryTest method invokeMultiSetValueShouldCallGetExpiry.
@Test
public void invokeMultiSetValueShouldCallGetExpiry() {
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);
final Integer key = 123;
final Integer setValue = 456;
final Integer modifySetValue = 789;
// verify create
EntryProcessor[] processors = new EntryProcessor[] { new AssertNotPresentEntryProcessor(null), new SetEntryProcessor<Integer, Integer>(111), new SetEntryProcessor<Integer, Integer>(setValue), new GetEntryProcessor<Integer, Integer>() };
Object[] result = (Object[]) cache.invoke(key, new CombineEntryProcessor(processors));
assertEquals(result[1], 111);
assertEquals(result[2], setValue);
assertEquals(result[3], setValue);
// expiry called should be for create, not for the get or modify.
// Operations get combined in entry processor and only net result should be expiryPolicy method called.
assertThat(expiryPolicy.getCreationCount(), greaterThanOrEqualTo(1));
assertThat(expiryPolicy.getAccessCount(), greaterThanOrEqualTo(0));
assertThat(expiryPolicy.getUpdatedCount(), greaterThanOrEqualTo(0));
}
use of javax.cache.processor.EntryProcessor in project cache2k by cache2k.
the class CacheExpiryTest method invokeSetValueShouldCallGetExpiry.
// skipping test for removeAll and removeAll specified keys for now. negative test of remove seems enough.
@Test
public void invokeSetValueShouldCallGetExpiry() {
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);
final Integer key = 123;
final Integer setValue = 456;
final Integer modifySetValue = 789;
// verify create
EntryProcessor[] processors = new EntryProcessor[] { new AssertNotPresentEntryProcessor(null), new SetEntryProcessor<Integer, Integer>(setValue), new GetEntryProcessor<Integer, Integer>() };
Object[] result = (Object[]) cache.invoke(key, new CombineEntryProcessor(processors));
assertEquals(result[1], setValue);
assertEquals(result[2], setValue);
// expiry called should be for create, not for the get or modify.
// Operations get combined in entry processor and only net result should be expiryPolicy method called.
assertThat(expiryPolicy.getCreationCount(), greaterThanOrEqualTo(1));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), is(0));
expiryPolicy.resetCount();
// verify modify
Integer resultValue = cache.invoke(key, new SetEntryProcessor<Integer, Integer>(modifySetValue));
assertEquals(modifySetValue, resultValue);
assertThat(expiryPolicy.getCreationCount(), is(0));
assertThat(expiryPolicy.getAccessCount(), is(0));
assertThat(expiryPolicy.getUpdatedCount(), greaterThanOrEqualTo(1));
}
Aggregations