Search in sources :

Example 1 with Query

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);
    }
}
Also used : ContinuousQuery(org.infinispan.query.api.continuous.ContinuousQuery) Query(org.infinispan.query.dsl.Query)

Example 2 with Query

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;
    });
}
Also used : Query(org.infinispan.query.dsl.Query) TreeSet(java.util.TreeSet) TrackedContent(org.commonjava.indy.folo.model.TrackedContent) TrackedContentEntry(org.commonjava.indy.folo.model.TrackedContentEntry) Logger(org.slf4j.Logger)

Aggregations

Query (org.infinispan.query.dsl.Query)2 TreeSet (java.util.TreeSet)1 TrackedContent (org.commonjava.indy.folo.model.TrackedContent)1 TrackedContentEntry (org.commonjava.indy.folo.model.TrackedContentEntry)1 ContinuousQuery (org.infinispan.query.api.continuous.ContinuousQuery)1 Logger (org.slf4j.Logger)1