package org.infinispan.all.embeddedquery;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Arrays;
import java.util.HashSet;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.search.Query;
import org.apache.lucene.util.QueryBuilder;
import org.hibernate.search.spi.SearchIntegrator;
import org.infinispan.Cache;
import org.infinispan.all.embeddedquery.testdomain.Car;
import org.infinispan.all.embeddedquery.testdomain.NumericType;
import org.infinispan.all.embeddedquery.testdomain.Person;
import org.infinispan.commons.api.BasicCache;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.Index;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.factories.ComponentRegistry;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.query.CacheQuery;
import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;
import org.infinispan.transaction.TransactionMode;
/**
* Abstract class for query tests for uber jars.
*
* @author Jiri Holusa (jholusa@redhat.com)
*/
public abstract class AbstractQueryTest {
protected static Cache<Object, Object> cache;
protected static final Analyzer STANDARD_ANALYZER = new StandardAnalyzer();
protected static EmbeddedCacheManager createCacheManager() throws Exception {
GlobalConfigurationBuilder gcfg = new GlobalConfigurationBuilder();
gcfg.globalJmxStatistics().allowDuplicateDomains(true);
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.transaction()
.transactionMode(TransactionMode.TRANSACTIONAL)
.indexing()
.index(Index.ALL)
.addIndexedEntity(NumericType.class)
.addIndexedEntity(Person.class)
.addIndexedEntity(Car.class)
.addProperty("default.directory_provider", "ram")
.addProperty("error_handler", "org.infinispan.all.embeddedquery.testdomain.StaticTestingErrorHandler")
.addProperty("lucene_version", "LUCENE_CURRENT");
EmbeddedCacheManager cm = new DefaultCacheManager(gcfg.build(), cfg.build());
return cm;
}
protected <E> CacheQuery<E> createCacheQuery(Cache m_cache, String fieldName, String searchString) {
QueryBuilder queryBuilder = new QueryBuilder(STANDARD_ANALYZER);
Query query = queryBuilder.createBooleanQuery(fieldName, searchString);
SearchManager queryFactory = Search.getSearchManager(m_cache);
return queryFactory.getQuery(query);
}
protected void assertIndexingKnows(BasicCache<?, ?> cache, Class<?>... types) {
ComponentRegistry cr = ((Cache) cache).getAdvancedCache().getComponentRegistry();
SearchIntegrator searchIntegrator = cr.getComponent(SearchIntegrator.class);
assertNotNull(searchIntegrator);
HashSet<Class<?>> expectedTypes = new HashSet<>(Arrays.asList(types));
HashSet<Class<?>> indexedTypes = new HashSet<>(searchIntegrator.getIndexedTypes());
assertEquals(expectedTypes, indexedTypes);
}
}