@InvokeOnHeader("PUTIFABSENTASYNC")
@InvokeOnHeader(InfinispanConstants.PUT_IF_ABSENT_ASYNC)
void onPutIfAbsentAsync(Message message) {
final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
final Object key = message.getHeader(InfinispanConstants.KEY);
final Object value = message.getHeader(InfinispanConstants.VALUE);
final CompletableFuture<Object> result;
if (hasLifespan(message)) {
long lifespan = message.getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
TimeUnit timeUnit = message.getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, TimeUnit.class);
if (hasMaxIdleTime(message)) {
long maxIdle = message.getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
TimeUnit maxIdleTimeUnit = message.getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, TimeUnit.class);
result = cache.putIfAbsentAsync(key, value, lifespan, timeUnit, maxIdle, maxIdleTimeUnit);
} else {
result = cache.putIfAbsentAsync(key, value, lifespan, timeUnit);
}
} else {
result = cache.putIfAbsentAsync(key, value);
}
setResult(message, result);
}