package org.hibernate.search.test.service; import java.util.Properties; import org.hibernate.search.engine.ServiceManager; import org.hibernate.search.indexes.impl.DirectoryBasedIndexManager; import org.hibernate.search.spi.BuildContext; import org.hibernate.search.store.impl.RAMDirectoryProvider; /** * @author Emmanuel Bernard */ public class ProvidedServiceDirectoryProvider extends RAMDirectoryProvider { private ServiceManager serviceManager; private ProvidedService foo; @Override public void initialize(String directoryProviderName, Properties properties, BuildContext context) { super.initialize( directoryProviderName, properties, context ); serviceManager = context.getServiceManager(); foo = serviceManager.requestService( ProvidedServiceProvider.class, context ); } @Override public void start(DirectoryBasedIndexManager indexManager) { if (foo == null) throw new RuntimeException( "service should be started" ); if ( ! foo.isProvided() ) throw new RuntimeException( "provided service should be used" ); super.start( indexManager ); } @Override public void stop() { super.stop(); serviceManager.releaseService( ProvidedServiceProvider.class ); } }