use of org.infinispan.query.dsl.Query in project camel by apache.
the class InfinispanConsumer method doStart.
@Override
protected void doStart() throws Exception {
super.doStart();
manager.start();
cache = manager.getCache();
if (configuration.hasQueryBuilder()) {
if (InfinispanUtil.isRemote(cache)) {
RemoteCache<Object, Object> remoteCache = InfinispanUtil.asRemote(cache);
Query query = InfinispanRemoteOperation.buildQuery(configuration.getQueryBuilder(), remoteCache);
continuousQuery = Search.getContinuousQuery(remoteCache);
continuousQuery.addContinuousQueryListener(query, new ContinuousQueryEventListener(cache.getName()));
} else {
throw new IllegalArgumentException("Can't run continuous queries against embedded cache (" + cache.getName() + ")");
}
} else {
if (manager.isCacheContainerEmbedded()) {
consumerHandler = InfinispanConsumerEmbeddedHandler.INSTANCE;
} else if (manager.isCacheContainerRemote()) {
consumerHandler = InfinispanConsumerRemoteHandler.INSTANCE;
} else {
throw new UnsupportedOperationException("Unsupported CacheContainer type " + manager.getCacheContainer().getClass().getName());
}
listener = consumerHandler.start(this);
}
}
use of org.infinispan.query.dsl.Query in project indy by Commonjava.
the class FoloRecordCache method seal.
public TrackedContent seal(final TrackingKey trackingKey) {
TrackedContent record = sealedRecordCache.get(trackingKey);
Logger logger = LoggerFactory.getLogger(getClass());
if (record != null) {
logger.debug("Tracking record: {} already sealed! Returning sealed record.", trackingKey);
return record;
}
logger.debug("Listing unsealed tracking record entries for: {}...", trackingKey);
return inProgressByTrackingKey(trackingKey, (qb, cacheHandle) -> {
Query query = qb.build();
List<TrackedContentEntry> results = query.list();
TrackedContent created = null;
if (results != null) {
logger.debug("Adding {} entries to record: {}", results.size(), trackingKey);
Set<TrackedContentEntry> uploads = new TreeSet<>();
Set<TrackedContentEntry> downloads = new TreeSet<>();
results.forEach((result) -> {
if (StoreEffect.DOWNLOAD == result.getEffect()) {
downloads.add(result);
} else if (StoreEffect.UPLOAD == result.getEffect()) {
uploads.add(result);
}
logger.debug("Removing in-progress entry: {}", result);
inProgressRecordCache.remove(result);
});
created = new TrackedContent(trackingKey, uploads, downloads);
}
logger.debug("Sealing record for: {}", trackingKey);
sealedRecordCache.put(trackingKey, created);
return created;
});
}
Aggregations