/* * 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 java.util.Map; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search; import org.hibernate.search.backend.configuration.impl.IndexWriterSetting; import org.hibernate.search.backend.spi.LuceneIndexingParameters; import org.hibernate.search.engine.spi.EntityIndexBinding; import org.hibernate.search.exception.SearchException; import org.hibernate.search.indexes.spi.DirectoryBasedIndexManager; import org.hibernate.search.test.SearchTestBase; import org.junit.Before; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** * Contains some utility methods to simplify coding of test cases about configuration parsing. * * @author Sanne Grinovero */ public abstract class ConfigurationReadTestCase extends SearchTestBase { public ConfigurationReadTestCase() { } @Override @Before public void setUp() throws Exception { super.setUp(); FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); fullTextSession.close(); } protected final void assertValueIsDefault(Class testEntity, IndexWriterSetting setting) { assertValueIsDefault( testEntity, 0, setting ); } protected final void assertValueIsDefault(Class testEntity, int shard, IndexWriterSetting setting) { assertNull( "shard:" + shard + " setting:" + setting.getKey() + " : value was expected unset!", getParameter( shard, setting, testEntity ) ); } protected final void assertValueIsSet(Class testEntity, IndexWriterSetting setting, int expectedValue) { assertValueIsSet( testEntity, 0, setting, expectedValue ); } protected final void assertValueIsSet(Class testEntity, int shard, IndexWriterSetting setting, int expectedValue) { assertNotNull( "shard:" + shard + " setting:" + setting.getKey(), getParameter( shard, setting, testEntity ) ); assertEquals( "shard:" + shard + " setting:" + setting.getKey(), expectedValue, (int) getParameter( shard, setting, testEntity ) ); } private Integer getParameter(int shard, IndexWriterSetting setting, Class testEntity) { EntityIndexBinding mappingForEntity = getExtendedSearchIntegrator().getIndexBinding( testEntity ); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) mappingForEntity.getIndexManagers()[shard]; LuceneIndexingParameters luceneIndexingParameters = indexManager.getIndexingParameters(); return luceneIndexingParameters.getIndexParameters().getCurrentValueFor( setting ); } @Override public void configure(Map<String,Object> cfg) { cfg.put( "hibernate.search.default.indexBase", getBaseIndexDir().toAbsolutePath().toString() ); } public static void assertCfgIsInvalid(Configuration configuration, Class[] mapping) { try { for ( Class annotated : mapping ) { ( configuration ).addAnnotatedClass( annotated ); } configuration.setProperty( "hibernate.search.default.directory_provider", "ram" ); configuration.buildSessionFactory(); fail(); } catch (HibernateException e) { //thrown exceptions means the test is ok when caused by a SearchException Throwable cause = e.getCause(); assertTrue( cause instanceof SearchException ); } } }