Skip to content

Commit

Permalink
HSEARCH-1727 Review API structure of SearchFactory: which methods sho…
Browse files Browse the repository at this point in the history
…uld be exposed on API vs SPI vs hidden as implementation
  • Loading branch information
Sanne committed Nov 20, 2014
1 parent fd034ea commit 30c5146
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

import org.hibernate.cfg.Configuration;
import org.hibernate.search.cfg.Environment;
import org.hibernate.search.engine.spi.SearchFactoryImplementor;
import org.hibernate.search.backend.jgroups.impl.DispatchMessageSender;
import org.hibernate.search.backend.jgroups.impl.MessageSenderService;
import org.hibernate.search.spi.SearchFactoryIntegrator;
import org.hibernate.search.util.configuration.impl.ConfigurationParseHelper;
import org.jgroups.JChannel;
import org.junit.Test;
Expand All @@ -29,7 +29,7 @@ public class InjectedChannelTest extends JGroupsCommonTest {

@Test
public void testInjectionHappened() throws Exception {
SearchFactoryImplementor searchFactory = getSearchFactory().unwrap( SearchFactoryImplementor.class );
SearchFactoryIntegrator searchFactory = getSearchFactory().unwrap( SearchFactoryIntegrator.class );
MessageSenderService sender = searchFactory.getServiceManager().requestService( MessageSenderService.class );
Assert.assertTrue( masterChannel.getAddress().equals( sender.getAddress() ) );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

import org.hibernate.cfg.Configuration;
import org.hibernate.search.cfg.Environment;
import org.hibernate.search.engine.spi.SearchFactoryImplementor;
import org.hibernate.search.backend.jgroups.impl.DispatchMessageSender;
import org.hibernate.search.backend.jgroups.impl.MessageSenderService;
import org.hibernate.search.spi.SearchFactoryIntegrator;
import org.hibernate.search.util.configuration.impl.ConfigurationParseHelper;
import org.jgroups.JChannel;
import org.jgroups.blocks.mux.MuxUpHandler;
Expand All @@ -33,7 +33,7 @@ public abstract class MuxChannelTest extends JGroupsCommonTest {

@Test
public void testMuxDispatcher() throws Exception {
SearchFactoryImplementor searchFactory = getSearchFactory().unwrap( SearchFactoryImplementor.class );
SearchFactoryIntegrator searchFactory = getSearchFactory().unwrap( SearchFactoryIntegrator.class );
MessageSenderService sender = searchFactory.getServiceManager().requestService( MessageSenderService.class );
Assert.assertNotNull( sender );
String className = sender.getClass().getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,6 @@ public interface SearchFactoryImplementor extends SearchFactoryIntegrator {
*/
Properties getConfigurationProperties();

/**
* Returns the service manager.
*
* @return Returns the service manager.
*/
ServiceManager getServiceManager();

/**
* Returns the default {@code DatabaseRetrievalMethod}.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import org.apache.lucene.analysis.Analyzer;
import org.hibernate.search.backend.spi.Worker;
import org.hibernate.search.engine.service.spi.ServiceManager;
import org.hibernate.search.engine.spi.EntityIndexBinding;
import org.hibernate.search.exception.ErrorHandler;
import org.hibernate.search.indexes.IndexReaderAccessor;
Expand Down Expand Up @@ -49,12 +50,6 @@ public interface SearchFactoryIntegrator {
*/
void addClasses(Class<?>... classes);

//TODO consider accepting SearchConfiguration or SearchMapping

Worker getWorker();

void close();

/**
* Return an Hibernate Search query object.
* This object uses fluent APIs to define the query executed.
Expand All @@ -78,10 +73,13 @@ public interface SearchFactoryIntegrator {
*/
ErrorHandler getErrorHandler();

/**
* Useful if you need to create custom exception types to represent query timeouts.
*
* @return the configured TimeoutExceptionFactory
*/
TimeoutExceptionFactory getDefaultTimeoutExceptionFactory();

// Below are copied from SearchFactory:

/**
* Optimize all indexes
*/
Expand All @@ -94,7 +92,6 @@ public interface SearchFactoryIntegrator {
*/
void optimize(Class entityType);


/**
* Retrieve an analyzer instance by its definition name
*
Expand Down Expand Up @@ -162,4 +159,21 @@ public interface SearchFactoryIntegrator {
*/
<T> T unwrap(Class<T> cls);

/**
* Returns the service manager.
*
* @return Returns the service manager.
*/
ServiceManager getServiceManager();

/**
* The Worker is the entry point to apply writes and updates to the indexes.
*/
Worker getWorker();

/**
* Shuts down all workers and releases all resources.
*/
void close();

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

import org.hibernate.search.backend.impl.lucene.LuceneBackendQueueProcessor;
import org.hibernate.search.engine.spi.EntityIndexBinding;
import org.hibernate.search.engine.spi.SearchFactoryImplementor;
import org.hibernate.search.indexes.impl.DirectoryBasedIndexManager;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.spi.SearchFactoryIntegrator;
import org.hibernate.search.test.SearchTestBase;
import org.junit.Test;

Expand All @@ -32,7 +32,7 @@ protected Class<?>[] getAnnotatedClasses() {

@Test
public void testNothingTest() {
SearchFactoryImplementor searchFactory = getSearchFactory().unwrap( SearchFactoryImplementor.class );
SearchFactoryIntegrator searchFactory = getSearchFactory().unwrap( SearchFactoryIntegrator.class );
EntityIndexBinding indexBindingForEntity = searchFactory.getIndexBinding( Clock.class );
IndexManager[] indexManagers = indexBindingForEntity.getIndexManagers();
assertEquals( 1, indexManagers.length );
Expand Down

0 comments on commit 30c5146

Please sign in to comment.