/*
* 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.provider;
import static org.fest.assertions.Assertions.assertThat;
import org.apache.lucene.search.Query;
import org.hibernate.Session;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.hibernate.search.query.dsl.QueryBuilder;
import org.hibernate.search.test.SearchTestBase;
import org.junit.Test;
/**
* @author Emmanuel Bernard
*/
public class BridgeProviderTest extends SearchTestBase {
@Test
public void testCustomBridgeProvider() {
Session s = openSession();
s.getTransaction().begin();
Movie laConfidential = new Movie( "LA Confidential" );
Theater legendary = new Theater( "Legendary theater", laConfidential );
s.persist( laConfidential );
s.persist( legendary );
s.getTransaction().commit();
s.clear();
s.getTransaction().begin();
FullTextSession fts = Search.getFullTextSession( s );
QueryBuilder qb = fts.getSearchFactory().buildQueryBuilder().forEntity( Theater.class ).get();
Query query = qb.keyword().onField( "movie" ).matching( laConfidential ).createQuery();
assertThat( fts.createFullTextQuery( query, Theater.class ).list() )
.as( "The SearchFactory should build and find a bridge for Movie in Theater and properly use it for indexing" )
.hasSize( 1 );
s.getTransaction().commit();
s.clear();
}
@Override
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[] {
Movie.class,
Theater.class
};
}
}