/** * Checks if an index exists for the given class. This is not intended to test whether the entity class is indexable * (via annotations or programmatically). * * @param c the class to check * @return true if an index exists, false otherwise */ boolean hasIndex(final Class<?> c) { return searchFactory.getIndexBindings().get(c) != null; }
/** * Checks if an index exists for the given class. This is not intended to test whether the entity class is indexable * (via annotations or programmatically). * * @param c the class to check * @return true if an index exists, false otherwise */ boolean hasIndex(final Class<?> c) { return searchFactory.getIndexBindings().get(c) != null; }
private EntityIndexBinding getEntityIndexBinding(Class<?> entityType) { EntityIndexBinding indexBinding = searchFactory.getIndexBindings().get(entityType); if (indexBinding == null) { throw log.getNoIndexedEntityException(entityType.getCanonicalName()); } return indexBinding; }
private EntityIndexBinding getEntityIndexBinding(Class<?> entityType) { EntityIndexBinding indexBinding = searchFactory.getIndexBindings().get(entityType); if (indexBinding == null) { throw log.getNoIndexedEntityException(entityType.getCanonicalName()); } return indexBinding; }
@Override public IndexedFieldProvider<Class<?>> getIndexedFieldProvider() { return type -> { EntityIndexBinding entityIndexBinding = searchFactory.getIndexBindings().get(type); if (entityIndexBinding == null) { return IndexedFieldProvider.NO_INDEXING; } return new HibernateSearchFieldIndexingMetadata(entityIndexBinding); }; }
@Override public boolean hasProperty(Class<?> entityType, String[] propertyPath) { EntityIndexBinding indexBinding = searchFactory.getIndexBindings().get(entityType); if (indexBinding != null) { ResolvedProperty resolvedProperty = resolveProperty(indexBinding, propertyPath); if (resolvedProperty != null) { return true; } } return super.hasProperty(entityType, propertyPath); }
@Override public boolean hasProperty(Class<?> entityType, String[] propertyPath) { EntityIndexBinding indexBinding = searchFactory.getIndexBindings().get(entityType); if (indexBinding != null) { ResolvedProperty resolvedProperty = resolveProperty(indexBinding, propertyPath); if (resolvedProperty != null) { return true; } } return super.hasProperty(entityType, propertyPath); }
private DirectoryBasedIndexManager getSingleIndexManager(Class<?> clazz) { SearchIntegrator searchIntegrator = getSearchFactory().unwrap( SearchIntegrator.class ); EntityIndexBinding indexBindingForEntity = searchIntegrator.getIndexBindings().get( clazz ); Set<IndexManager> indexManagers = indexBindingForEntity.getIndexManagerSelector().all(); assertEquals( 1, indexManagers.size() ); return (DirectoryBasedIndexManager) indexManagers.iterator().next(); }
private void assertCorrectDirectoryType(SessionFactory factory, String className) { Session session = factory.openSession(); FullTextSession fullTextSession = Search.getFullTextSession( session ); SearchIntegrator integrator = fullTextSession.getSearchFactory().unwrap( SearchIntegrator.class ); EntityIndexBinding snowIndexBinder = integrator.getIndexBindings().get( SnowStorm.class ); Set<IndexManager> indexManagers = snowIndexBinder.getIndexManagerSelector().all(); assertTrue( "Wrong number of directory providers", indexManagers.size() == 1 ); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers.iterator().next(); Directory directory = indexManager.getDirectoryProvider().getDirectory(); assertEquals( "Wrong directory provider type", className, directory.getClass().getName() ); session.close(); }
private void assertEfficientIndexingUsed(SearchIntegrator searchIntegrator, Class<?> clazz) { DirectoryBasedIndexManager im = (DirectoryBasedIndexManager) searchIntegrator.getIndexBindings().get(clazz) .getIndexManagerSelector().all().iterator().next(); WorkspaceHolder workspaceHolder = im.getWorkspaceHolder(); LuceneBackendResources indexResources = workspaceHolder.getIndexResources(); IndexWorkVisitor<Void, LuceneWorkExecutor> visitor = indexResources.getWorkVisitor(); assertTrue(TestingUtil.extractField(visitor, "updateExecutor") instanceof ByTermUpdateWorkExecutor); } }
private Directory initializeAndExtractDirectory(Cache cache) { SearchIntegrator searchFactory = ComponentRegistryUtils.getSearchIntegrator(cache); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) searchFactory.getIndexBindings().get(Entity1.class) .getIndexManagerSelector().all().iterator().next(); return indexManager.getDirectoryProvider().getDirectory(); }
@Test(dependsOnMethods="simpleIndexTest") //depends as otherwise the Person index is not initialized yet public void testPropertiesWhereRead() { SearchIntegrator searchFactory = TestQueryHelperFactory.extractSearchFactory(cache); EntityIndexBinding indexBindingForEntity = searchFactory.getIndexBindings().get(Person.class); Set<IndexManager> managers = indexBindingForEntity.getIndexManagerSelector().all(); assertEquals(1, managers.size()); IndexManager manager = managers.iterator().next(); assertNotNull(manager); assertTrue(manager instanceof DirectoryBasedIndexManager); DirectoryBasedIndexManager dbim = (DirectoryBasedIndexManager) manager; assertTrue(dbim.getDirectoryProvider() instanceof RAMDirectoryProvider); }
private void verifyClassIsNotIndexed(SearchIntegrator searchIntegrator, Class<?> type) { assertFalse(searchIntegrator.getIndexBindings().containsKey(PojoIndexedTypeIdentifier.convertFromLegacy(type))); assertNull(searchIntegrator.getIndexManager(type.getName())); }
private void verifyClassIsIndexed(SearchIntegrator searchIntegrator, Class<?> type) { assertTrue(searchIntegrator.getIndexBindings().containsKey(PojoIndexedTypeIdentifier.convertFromLegacy(type))); assertNotNull(searchIntegrator.getIndexManager(type.getName())); } }
private void verifyClassIsNotIndexed(SearchIntegrator searchIntegrator, Class<?> type) { assertFalse(searchIntegrator.getIndexBindings().containsKey(PojoIndexedTypeIdentifier.convertFromLegacy(type))); assertNull(searchIntegrator.getIndexManager(type.getName())); }
private void verifyClassIsIndexed(SearchIntegrator searchIntegrator, Class<?> type) { assertTrue(searchIntegrator.getIndexBindings().containsKey(PojoIndexedTypeIdentifier.convertFromLegacy(type))); assertNotNull(searchIntegrator.getIndexManager(type.getName())); }
@Test public void testNothingTest() { SearchIntegrator searchFactory = getSearchFactory().unwrap( SearchIntegrator.class ); EntityIndexBinding indexBindingForEntity = searchFactory.getIndexBindings().get( Clock.class ); Set<IndexManager> indexManagers = indexBindingForEntity.getIndexManagerSelector().all(); assertEquals( 1, indexManagers.size() ); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers.iterator().next(); WorkspaceHolder backend = (WorkspaceHolder) indexManager.getWorkspaceHolder(); assertEquals( 5, backend.getIndexResources().getMaxQueueLength() ); }
private void verifyIndexIsLocked(boolean isLocked, Class type) throws IOException { SearchIntegrator searchIntegrator = builder.getSearchFactory().unwrap( SearchIntegrator.class ); IndexManager indexManager = searchIntegrator.getIndexBindings().get( type ) .getIndexManagerSelector().all().iterator().next(); // No need to check for alternative implementations such as ES if ( indexManager instanceof DirectoryBasedIndexManager ) { Directory directory = ( (DirectoryBasedIndexManager) indexManager ).getDirectoryProvider().getDirectory(); Assert.assertEquals( isLocked, LuceneBackendTestHelpers.isLocked( directory ) ); } }
@Test public void noOverride() throws Exception { SearchConfigurationForTest cfg = new SearchConfigurationForTest(); cfg.addClass( NoAnnotationIndexNameOverrideEntity.class ); integrator = init( cfg ); assertThat( integrator.getIndexBindings().get( NoAnnotationIndexNameOverrideEntity.class ) .getIndexManagerSelector().all() ) .extracting( "indexName" ) .as( "Index names for entity " + NoAnnotationIndexNameOverrideEntity.class ) .containsExactlyInAnyOrder( NoAnnotationIndexNameOverrideEntity.class.getName() ); NoAnnotationIndexNameOverrideEntity entity = new NoAnnotationIndexNameOverrideEntity(); entity.id = 1L; assertIndexingWorksProperly( entity, entity.id ); }
@Test public void annotationOverride() throws Exception { SearchConfigurationForTest cfg = new SearchConfigurationForTest(); cfg.addClass( IndexedAnnotationIndexNameOverriddeEntity.class ); integrator = init( cfg ); assertThat( integrator.getIndexBindings().get( IndexedAnnotationIndexNameOverriddeEntity.class ) .getIndexManagerSelector().all() ) .extracting( "indexName" ) .as( "Index names for entity " + IndexedAnnotationIndexNameOverriddeEntity.class ) .containsExactlyInAnyOrder( INDEXED_ANNOTATION_OVERRIDDEN_INDEX_NAME ); IndexedAnnotationIndexNameOverriddeEntity entity = new IndexedAnnotationIndexNameOverriddeEntity(); entity.id = 1L; assertIndexingWorksProperly( entity, entity.id ); }