org.infinispan.query.Search Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of infinispan-embedded-query
Show all versions of infinispan-embedded-query
Infinispan Embedded Query All-in-One module
The newest version!
package org.infinispan.query;
import java.util.Map;
import org.infinispan.AdvancedCache;
import org.infinispan.Cache;
import org.infinispan.notifications.cachelistener.filter.CacheEventFilterConverter;
import org.infinispan.objectfilter.ObjectFilter;
import org.infinispan.objectfilter.impl.ReflectionMatcher;
import org.infinispan.query.api.continuous.ContinuousQuery;
import org.infinispan.query.continuous.impl.ContinuousQueryImpl;
import org.infinispan.query.dsl.Query;
import org.infinispan.query.dsl.QueryFactory;
import org.infinispan.query.dsl.embedded.impl.EmbeddedQueryEngine;
import org.infinispan.query.dsl.embedded.impl.EmbeddedQueryFactory;
import org.infinispan.query.dsl.embedded.impl.IckleCacheEventFilterConverter;
import org.infinispan.query.dsl.embedded.impl.IckleFilterAndConverter;
import org.infinispan.query.dsl.impl.BaseQuery;
import org.infinispan.query.impl.SearchManagerImpl;
import org.infinispan.query.logging.Log;
import org.infinispan.security.AuthorizationManager;
import org.infinispan.security.AuthorizationPermission;
import org.infinispan.util.logging.LogFactory;
/**
* Helper class to get a SearchManager out of an indexing enabled cache.
*
* @author Sanne Grinovero (C) 2011 Red Hat Inc.
* @author [email protected]
*/
public final class Search {
private static final Log log = LogFactory.getLog(Search.class, Log.class);
private Search() {
}
public static CacheEventFilterConverter makeFilter(String queryString) {
return makeFilter(queryString, null);
}
public static CacheEventFilterConverter makeFilter(String queryString, Map namedParameters) {
IckleFilterAndConverter filterAndConverter = new IckleFilterAndConverter<>(queryString, namedParameters, ReflectionMatcher.class);
return new IckleCacheEventFilterConverter<>(filterAndConverter);
}
public static CacheEventFilterConverter makeFilter(Query query) {
BaseQuery baseQuery = (BaseQuery) query;
return makeFilter(baseQuery.getQueryString(), baseQuery.getParameters());
}
public static QueryFactory getQueryFactory(Cache, ?> cache) {
if (cache == null || cache.getAdvancedCache() == null) {
throw new IllegalArgumentException("cache parameter shall not be null");
}
AdvancedCache, ?> advancedCache = cache.getAdvancedCache();
ensureAccessPermissions(advancedCache);
EmbeddedQueryEngine queryEngine = SecurityActions.getCacheComponentRegistry(advancedCache).getComponent(EmbeddedQueryEngine.class);
if (queryEngine == null) {
throw log.queryModuleNotInitialised();
}
return new EmbeddedQueryFactory(queryEngine);
}
public static ContinuousQuery getContinuousQuery(Cache cache) {
return new ContinuousQueryImpl<>(cache);
}
public static SearchManager getSearchManager(Cache, ?> cache) {
if (cache == null || cache.getAdvancedCache() == null) {
throw new IllegalArgumentException("cache parameter shall not be null");
}
AdvancedCache, ?> advancedCache = cache.getAdvancedCache();
ensureAccessPermissions(advancedCache);
return new SearchManagerImpl(advancedCache);
}
private static void ensureAccessPermissions(final AdvancedCache, ?> cache) {
AuthorizationManager authorizationManager = SecurityActions.getCacheAuthorizationManager(cache);
if (authorizationManager != null) {
authorizationManager.checkPermission(AuthorizationPermission.BULK_READ);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy