package org.radargun.service;
import org.infinispan.AdvancedCache;
import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;
import org.infinispan.query.dsl.QueryFactory;
import org.radargun.traits.Query;
/**
* Queryable implementation for embedded mode.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
public class InfinispanEmbeddedQueryable extends AbstractInfinispanQueryable {
protected Infinispan52EmbeddedService service;
public InfinispanEmbeddedQueryable(Infinispan52EmbeddedService service) {
this.service = service;
}
@Override
public Query.Builder getBuilder(String containerName, Class<?> clazz) {
SearchManager searchManager = Search.getSearchManager(service.getCache(containerName));
QueryFactory factory = searchManager.getQueryFactory();
return new QueryBuilderImpl(factory, clazz);
}
@Override
public Query.Context createContext(String containerName) {
return new EmbeddedQueryContext(service.getCache(containerName).getAdvancedCache());
}
@Override
public void reindex(String containerName) {
SearchManager searchManager = Search.getSearchManager(service.getCache(containerName));
searchManager.getMassIndexer().start();
}
private class EmbeddedQueryContext implements Query.Context, AdvancedCacheHolder {
private final AdvancedCache cache;
public EmbeddedQueryContext(AdvancedCache cache) {
this.cache = cache;
}
@Override
public AdvancedCache getAdvancedCache() {
return cache;
}
@Override
public void close() {
}
}
}