package org.infinispan.query.dsl.embedded; import static org.testng.Assert.assertEquals; import java.util.List; import org.hibernate.search.annotations.Analyze; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.Store; import org.infinispan.Cache; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.cache.Index; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.query.Search; import org.infinispan.query.dsl.Query; import org.infinispan.query.dsl.QueryFactory; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * @author gustavonalle * @author Tristan Tarrant * @since 8.0 */ @Test(groups = "functional", testName = "query.dsl.embedded.SingleClassDSLQueryTest") public class SingleClassDSLQueryTest extends SingleCacheManagerTest { @Override protected EmbeddedCacheManager createCacheManager() throws Exception { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.indexing().index(Index.ALL) .addIndexedEntity(Person.class) .addProperty("default.directory_provider", "ram") .addProperty("lucene_version", "LUCENE_CURRENT"); return TestCacheManagerFactory.createCacheManager(builder); } /** * Test querying for entities defined as inner classes. */ public void testQuery() throws Exception { Cache<String, Person> cache = cacheManager.getCache(); cache.put("person1", new Person("William", "Shakespeare")); QueryFactory queryFactory = Search.getQueryFactory(cache); Query query = queryFactory.from(Person.class).having("name").eq("William").build(); List<Person> matches = query.list(); assertEquals(1, matches.size()); } @Indexed static class Person { @Field(store = Store.YES, analyze = Analyze.NO) String name; @Field(store = Store.YES, analyze = Analyze.NO, indexNullAs = Field.DEFAULT_NULL_TOKEN) String surname; public Person(String name, String surname) { this.name = name; this.surname = surname; } } }