/*
* 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.configuration;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.apache.lucene.analysis.core.LowerCaseFilterFactory;
import org.apache.lucene.analysis.standard.StandardTokenizerFactory;
import org.apache.lucene.analysis.core.StopFilterFactory;
import org.hibernate.search.cfg.Environment;
import org.hibernate.search.exception.SearchException;
import org.hibernate.search.annotations.Factory;
import org.hibernate.search.cfg.SearchMapping;
import org.hibernate.search.test.util.FullTextSessionBuilder;
import org.hibernate.search.testsupport.junit.SkipOnElasticsearch;
import org.junit.Assert;
import org.junit.Test;
import org.junit.experimental.categories.Category;
/**
* Verifies a proper message is thrown when a resource is not found
*
* @author Sanne Grinovero (C) 2011 Red Hat Inc.
*/
@Category(SkipOnElasticsearch.class) // This test is specific to Lucene
public class ResourceNotFoundMessageTest {
@Test
public void testIllegalAnalyzerDefinition() {
try {
new FullTextSessionBuilder()
.addAnnotatedClass( SomeHibernateEntity.class )
.setProperty( Environment.MODEL_MAPPING, ResourceNotFoundMessageTest.class.getName() )
.build();
Assert.fail( "should not reach this" );
}
catch (SearchException initException) {
String message = initException.getMessage();
Assert.assertEquals( "HSEARCH000114: Could not load resource: 'non-existent-resourcename.file'", message );
}
}
@Factory
public SearchMapping build() {
SearchMapping mapping = new SearchMapping();
mapping
.analyzerDef( "ngram", StandardTokenizerFactory.class )
.filter( LowerCaseFilterFactory.class )
.filter( StopFilterFactory.class )
.param( "words", "non-existent-resourcename.file" )
// We must mark at least one entity as indexed, otherwise analyzer definitions are not initialized (no need to)
.entity( SomeHibernateEntity.class ).indexed();
return mapping;
}
@Entity
private static class SomeHibernateEntity {
@Id
private Long id;
}
}