@Override public void addClasses(Class<?>... classes) { final SearchIntegratorBuilder builder = new SearchIntegratorBuilder().currentSearchIntegrator( this ); for ( Class<?> type : classes ) { builder.addClass( type ); } try { mutating.lock(); builder.buildSearchIntegrator(); } finally { mutating.unlock(); } }
@Override public void addClasses(Class<?>... classes) { final SearchIntegratorBuilder builder = new SearchIntegratorBuilder().currentSearchIntegrator( this ); for ( Class<?> type : classes ) { builder.addClass( type ); } try { mutating.lock(); builder.buildSearchIntegrator(); } finally { mutating.unlock(); } }
public ExtendedSearchIntegrator create(SearchConfiguration configuration) { SearchIntegrator integrator = new SearchIntegratorBuilder().configuration( configuration ).buildSearchIntegrator(); searchIntegrators.add( integrator ); return integrator.unwrap( ExtendedSearchIntegrator.class ); }
private SearchIntegrator createSearchIntegrator(IndexingConfiguration indexingConfiguration, ComponentRegistry cr, ClassLoader aggregatedClassLoader) { SearchIntegrator searchIntegrator = cr.getComponent(SearchIntegrator.class); if (searchIntegrator != null && !searchIntegrator.isStopped()) { // a paranoid check against an unlikely failure throw new IllegalStateException("SearchIntegrator already initialized!"); } // load ProgrammaticSearchMappingProviders from classpath Collection<ProgrammaticSearchMappingProvider> programmaticSearchMappingProviders = new LinkedHashSet<>(); programmaticSearchMappingProviders.add(new DefaultSearchMappingProvider()); // make sure our DefaultSearchMappingProvider is first programmaticSearchMappingProviders.addAll(ServiceFinder.load(ProgrammaticSearchMappingProvider.class, aggregatedClassLoader)); // load LuceneAnalysisDefinitionProvider from classpath Collection<LuceneAnalysisDefinitionProvider> analyzerDefProviders = ServiceFinder.load(LuceneAnalysisDefinitionProvider.class, aggregatedClassLoader); // Set up the search factory for Hibernate Search first. SearchConfiguration config = new SearchableCacheConfiguration(indexingConfiguration.indexedEntities(), indexingConfiguration.properties(), programmaticSearchMappingProviders, analyzerDefProviders, cr, aggregatedClassLoader); searchIntegrator = new SearchIntegratorBuilder().configuration(config).buildSearchIntegrator(); cr.registerComponent(searchIntegrator, SearchIntegrator.class); return searchIntegrator; }
public ExtendedSearchIntegrator create(SearchIntegrator current, Class<?> ... addedClasses) { SearchIntegratorBuilder builder = new SearchIntegratorBuilder() .currentSearchIntegrator( current ); for ( Class<?> clazz : addedClasses ) { builder.addClass( clazz ); } SearchIntegrator integrator = builder.buildSearchIntegrator(); searchIntegrators.add( integrator ); /* * Avoid closing both the incremented and non-incremented factory: * this is likely to fail. */ searchIntegrators.remove( current ); return integrator.unwrap( ExtendedSearchIntegrator.class ); }
metadata, configurationService, classLoaderService, managedBeanRegistry, sessionService, namingService ) ) .buildSearchIntegrator(); ExtendedSearchIntegrator extendedIntegrator = searchIntegrator.unwrap( ExtendedSearchIntegrator.class );
private SearchIntegrator getSearchFactory(String cacheName, IndexingConfiguration indexingConfiguration, ComponentRegistry cr) { Object component = cr.getComponent(SearchIntegrator.class); SearchIntegrator searchFactory = null; if (component instanceof SearchIntegrator) { //could be the placeholder Object REMOVED_REGISTRY_COMPONENT searchFactory = (SearchIntegrator) component; } //defend against multiple initialization: if (searchFactory == null) { GlobalComponentRegistry globalComponentRegistry = cr.getGlobalComponentRegistry(); EmbeddedCacheManager uninitializedCacheManager = globalComponentRegistry.getComponent(EmbeddedCacheManager.class); Properties indexingProperties = addProgrammaticMappings(indexingConfiguration.properties(), cr); Class<?>[] indexedEntities = indexingConfiguration.indexedEntities().toArray(new Class<?>[indexingConfiguration.indexedEntities().size()]); if (indexedEntities.length > 0 && hasInfinispanDirectory(indexingProperties)) { String metadataCacheName = getMetadataCacheName(indexingProperties); String lockingCacheName = getLockingCacheName(indexingProperties); String dataCacheName = getDataCacheName(indexingProperties); if (cacheName.equals(dataCacheName) || cacheName.equals(metadataCacheName) || cacheName.equals(lockingCacheName)) { // Infinispan Directory causes runtime circular dependencies so we need to postpone creation of indexes until all components are initialised indexedEntities = new Class[0]; } } allowDynamicSortingByDefault(indexingProperties); // Set up the search factory for Hibernate Search first. SearchConfiguration config = new SearchableCacheConfiguration(indexedEntities, indexingProperties, uninitializedCacheManager, cr); searchFactory = new SearchIntegratorBuilder().configuration(config).buildSearchIntegrator(); cr.registerComponent(searchFactory, SearchIntegrator.class); } return searchFactory; }
cfg.addClass( BookEntity3.class ); return new SearchIntegratorBuilder().configuration( cfg ).buildSearchIntegrator();
return new SearchIntegratorBuilder().configuration( cfg ).buildSearchIntegrator();
private SearchIntegrator createSearchFactory() { SearchConfigurationForTest cfg = new SearchConfigurationForTest(); cfg.setProgrammaticMapping( buildMappingDefinition ); for ( Entry<Class<? extends Service>, Service> entry : providedServices.entrySet() ) { cfg.addProvidedService( entry.getKey(), entry.getValue() ); } for ( String key : configuration.stringPropertyNames() ) { cfg.addProperty( key, configuration.getProperty( key ) ); } for ( Class<?> c : entities ) { cfg.addClass( c ); } cfg.setIdProvidedImplicit( idProvidedImplicit ); cfg.setMultitenancyEnabled( multitenancyEnabled ); cfg.setEnableJPAAnnotationsProcessing( enableJPAAnnotationsProcessing ); return new SearchIntegratorBuilder().configuration( cfg ).buildSearchIntegrator(); }
private void buildSearchFactoryWithAsyncOption(Boolean backendAsync, Boolean async) { SearchConfigurationForTest configuration = new HibernateManualConfiguration() .addClass(SimpleEmail.class) .addProperty("hibernate.search.default.directory_provider", "infinispan") .addProperty("hibernate.search.infinispan.configuration_resourcename", "localonly-infinispan.xml"); if (backendAsync != null) { configuration.addProperty("hibernate.search.default.worker.execution", backendAsync ? "async" : "sync"); } if (async != null) { configuration.addProperty("hibernate.search.default.write_metadata_async", async.toString()); } new SearchIntegratorBuilder().configuration(configuration).buildSearchIntegrator(); assertEquals("The directory provider was not started", 1, byteman.getAndResetInvocationCount()); } }
@Test public void testOverrideOptionGetsApplied() throws IOException { SearchConfigurationForTest cfg = new SearchConfigurationForTest() .addProperty("hibernate.search.default.directory_provider", "infinispan") .addProperty(DefaultCacheManagerService.INFINISPAN_TRANSPORT_OVERRIDE_RESOURCENAME, "not existing") .addClass(Dvd.class); //The most practical way to figure out if the property was applied is to provide it with //an illegal value to then verify the failure. exceptions.expect(SearchException.class); exceptions.expectMessage("HSEARCH000103"); new SearchIntegratorBuilder().configuration(cfg).buildSearchIntegrator(); }