use of com.adaptris.core.services.cache.translators.StringPayloadCacheTranslator in project interlok by adaptris.
the class AddValueToCacheTest method testDoService_NoExpiryMetadata.
@Test
public void testDoService_NoExpiryMetadata() throws Exception {
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage("Hello World");
ExpiringMapCache cache = createCacheInstanceForTests().withExpiration(new TimeInterval(1L, TimeUnit.SECONDS));
MyCacheEventListener listener = new MyCacheEventListener();
cache.getEventListener().addEventListener(listener);
AddValueToCache service = new AddValueToCache().withExpiry("%message{expiry}").withValueTranslator(new StringPayloadCacheTranslator()).withKey("%message{%uniqueId}").withConnection(new CacheConnection().withCacheInstance(cache));
try {
start(service);
// msg.addMetadata("expiry", "a"); // empty expiry should not expire.
service.doService(msg);
Object value = cache.get(msg.getUniqueId());
assertEquals("Hello World", value);
await().atMost(Duration.ofSeconds(5)).with().pollInterval(Duration.ofMillis(100)).until(listener::expiredCount, greaterThanOrEqualTo(1));
assertEquals(0, cache.size());
} finally {
stop(service);
}
}
use of com.adaptris.core.services.cache.translators.StringPayloadCacheTranslator in project interlok by adaptris.
the class AddValueToCacheTest method testDoService_AbsoluteExpiry_Millis.
@Test
public void testDoService_AbsoluteExpiry_Millis() throws Exception {
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage("Hello World");
ExpiringMapCache cache = createCacheInstanceForTests();
MyCacheEventListener listener = new MyCacheEventListener();
cache.getEventListener().addEventListener(listener);
AddValueToCache service = new AddValueToCache().withExpiry("%message{expiry}").withValueTranslator(new StringPayloadCacheTranslator()).withKey("%message{%uniqueId}").withConnection(new CacheConnection().withCacheInstance(cache));
try {
start(service);
// Expire in 2 seconds or so.
long expiry = System.currentTimeMillis() + ThreadLocalRandom.current().nextInt(1000) + 1000;
msg.addMetadata("expiry", String.valueOf(expiry));
System.err.println(getName() + ":" + msg.getMetadataValue("expiry"));
service.doService(msg);
Object value = cache.get(msg.getUniqueId());
assertEquals("Hello World", value);
// Default expiration is > 5 seconds.
await().atMost(Duration.ofSeconds(5)).with().pollInterval(Duration.ofMillis(100)).until(listener::expiredCount, greaterThanOrEqualTo(1));
assertEquals(0, cache.size());
} finally {
stop(service);
}
}
use of com.adaptris.core.services.cache.translators.StringPayloadCacheTranslator in project interlok by adaptris.
the class AddValueToCacheTest method testDoService_Expiry_Unsupported.
@Test
public void testDoService_Expiry_Unsupported() throws Exception {
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage("Hello World");
ExpiringMapCache cache = createCacheInstanceForTests().withExpiration(new TimeInterval(1L, TimeUnit.SECONDS));
MyCacheEventListener listener = new MyCacheEventListener();
cache.getEventListener().addEventListener(listener);
AddValueToCache service = new AddValueToCache().withExpiry("%message{expiry}").withValueTranslator(new StringPayloadCacheTranslator()).withKey("%message{%uniqueId}").withConnection(new CacheConnection().withCacheInstance(cache));
try {
start(service);
// unparseable expiry should not expire.
msg.addMetadata("expiry", "a");
service.doService(msg);
Object value = cache.get(msg.getUniqueId());
assertEquals("Hello World", value);
await().atMost(Duration.ofSeconds(5)).with().pollInterval(Duration.ofMillis(100)).until(listener::expiredCount, greaterThanOrEqualTo(1));
assertEquals(0, cache.size());
} finally {
stop(service);
}
}
use of com.adaptris.core.services.cache.translators.StringPayloadCacheTranslator in project interlok by adaptris.
the class GetValueFromCacheTest method testDoService.
@Test
public void testDoService() throws Exception {
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage("Hello World");
Cache cache = createCacheInstanceForTests();
GetValueFromCache service = new GetValueFromCache().withValueTranslator(new StringPayloadCacheTranslator()).withKey("%message{%uniqueId}").withConnection(new CacheConnection().withCacheInstance(cache));
try {
start(service);
cache.put(msg.getUniqueId(), "Goodbye Cruel World");
service.doService(msg);
assertNotEquals("Hello World", msg.getContent());
assertEquals("Goodbye Cruel World", msg.getContent());
} finally {
stop(service);
}
}
use of com.adaptris.core.services.cache.translators.StringPayloadCacheTranslator in project interlok by adaptris.
the class BasicCacheExampleGenerator method configureRetrieveService.
private static <T extends RetrieveFromCacheService> T configureRetrieveService(T service) {
CacheEntryEvaluator eval1 = new CacheEntryEvaluator();
CacheEntryEvaluator eval2 = new CacheEntryEvaluator();
CacheEntryEvaluator eval3 = new CacheEntryEvaluator();
eval1.setKeyTranslator(new MetadataCacheValueTranslator("A_MetadataKey_Whose_Value_Is_The_Cache_key"));
eval1.setValueTranslator(new MetadataCacheValueTranslator("A_MetadataKey_Which_Will_Contain_What_We_Find_in_The_Cache"));
eval2.setKeyTranslator(new MetadataCacheValueTranslator("MetadataKey_Whose_Value_Is_The_Cache_Key_And_This_Key_Contains_A_Payload"));
eval2.setValueTranslator(new StringPayloadCacheTranslator());
eval3.setKeyTranslator(new MetadataCacheValueTranslator("JMSCorrelationID"));
eval3.setValueTranslator(new JmsReplyToCacheValueTranslator());
service.setCacheEntryEvaluators(new ArrayList(Arrays.asList(new CacheEntryEvaluator[] { eval1, eval2, eval3 })));
return service;
}
Aggregations