/*
* 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.lang.annotation.ElementType;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.backend.impl.lucene.AbstractWorkspaceImpl;
import org.hibernate.search.backend.impl.lucene.WorkspaceHolder;
import org.hibernate.search.cfg.SearchMapping;
import org.hibernate.search.engine.impl.MutableSearchFactory;
import org.hibernate.search.engine.spi.EntityIndexBinding;
import org.hibernate.search.indexes.spi.DirectoryBasedIndexManager;
import org.hibernate.search.spi.SearchIntegratorBuilder;
import org.hibernate.search.testsupport.setup.SearchConfigurationForTest;
/**
* @author gustavonalle
*/
public class BaseConfigurationTest {
protected static AbstractWorkspaceImpl extractWorkspace(MutableSearchFactory sf, Class<?> type) {
EntityIndexBinding indexBindingForEntity = sf.getIndexBinding( type );
DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexBindingForEntity.getIndexManagers()[0];
WorkspaceHolder backend = (WorkspaceHolder) indexManager.getWorkspaceHolder();
return backend.getIndexResources().getWorkspace();
}
protected MutableSearchFactory getMutableSearchFactoryWithSingleEntity(SearchConfigurationForTest cfg) {
SearchMapping mapping = new SearchMapping();
mapping
.entity( Document.class ).indexed().indexName( "index1" )
.property( "id", ElementType.FIELD ).documentId()
.property( "title", ElementType.FIELD ).field()
;
cfg.setProgrammaticMapping( mapping );
cfg.addClass( Document.class );
return (MutableSearchFactory) new SearchIntegratorBuilder().configuration( cfg )
.buildSearchIntegrator();
}
public static final class Document {
long id;
String title;
}
@Indexed(index = "index1")
public static final class Dvd {
@DocumentId
long id;
@Field
String title;
}
@Indexed(index = "index2")
public static final class Book {
@DocumentId
long id;
@Field
String title;
}
}