/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.bridge; import java.util.List; import org.apache.lucene.search.Query; import org.hibernate.search.backend.spi.Work; import org.hibernate.search.backend.spi.WorkType; import org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator; import org.hibernate.search.query.dsl.QueryBuilder; import org.hibernate.search.query.engine.spi.EntityInfo; import org.hibernate.search.testsupport.junit.SearchFactoryHolder; import org.hibernate.search.testsupport.setup.TransactionContextForTest; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; /** * @author Sanne Grinovero (C) 2013 Red Hat Inc. */ public class PropertiesExampleBridgeTest { @Rule public SearchFactoryHolder sfHolder = new SearchFactoryHolder( DynamicIndexedValueHolder.class ) // This property make sense only if you are using elasticsearch .withProperty( "hibernate.search.all.elasticsearch.dynamic_mapping", "true" ); @Test public void testPropertiesIndexing() { ExtendedSearchIntegrator searchFactory = sfHolder.getSearchFactory(); Assert.assertNotNull( searchFactory.getIndexManagerHolder().getIndexManager( "all" ) ); { // Store some test data: DynamicIndexedValueHolder holder = new DynamicIndexedValueHolder( "1" ) .property( "age", "227" ) .property( "name", "Thorin" ) .property( "surname", "Oakenshield" ) .property( "race", "dwarf" ); Work work = new Work( holder, holder.id, WorkType.ADD, false ); TransactionContextForTest tc = new TransactionContextForTest(); searchFactory.getWorker().performWork( work, tc ); tc.end(); } QueryBuilder guestQueryBuilder = searchFactory.buildQueryBuilder().forEntity( DynamicIndexedValueHolder.class ).get(); Query queryAllGuests = guestQueryBuilder.all().createQuery(); List<EntityInfo> queryEntityInfos = searchFactory.createHSQuery( queryAllGuests, DynamicIndexedValueHolder.class ) .projection( "value.surname" ) .queryEntityInfos(); Assert.assertEquals( 1, queryEntityInfos.size() ); EntityInfo entityInfo = queryEntityInfos.get( 0 ); Assert.assertEquals( "Oakenshield", entityInfo.getProjection()[0] ); } }