Skip to content

Commit

Permalink
HSEARCH-2522 Make it possible to retrieve the IndexManagerType from E…
Browse files Browse the repository at this point in the history
…ntityIndexBinding

This helps when we need the IndexManagerType and we're not sure that
there already is an IndexManager, or we don't want to retrieve index
managers (because of dynamic sharding, they may be lazily initialized).
  • Loading branch information
yrodiere authored and Sanne committed Jan 16, 2017
1 parent 14edddd commit 94811dc
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.apache.lucene.search.similarities.Similarity;
import org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.indexes.spi.IndexManagerType;
import org.hibernate.search.indexes.interceptor.EntityIndexingInterceptor;
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.search.store.ShardIdentifierProvider;
Expand All @@ -23,16 +24,19 @@ public class DefaultMutableEntityIndexBinding implements MutableEntityIndexBindi
private final IndexShardingStrategy shardingStrategy;
private final Similarity similarityInstance;
private DocumentBuilderIndexedEntity documentBuilder;
private final IndexManagerType indexManagerType;
private final IndexManager[] indexManagers;
private final EntityIndexingInterceptor entityIndexingInterceptor;

public DefaultMutableEntityIndexBinding(
IndexShardingStrategy shardingStrategy,
Similarity similarityInstance,
IndexManagerType indexManagerType,
IndexManager[] providers,
EntityIndexingInterceptor entityIndexingInterceptor) {
this.shardingStrategy = shardingStrategy;
this.similarityInstance = similarityInstance;
this.indexManagerType = indexManagerType;
this.indexManagers = providers;
this.entityIndexingInterceptor = entityIndexingInterceptor;
}
Expand Down Expand Up @@ -67,6 +71,11 @@ public void postInitialize(Set<Class<?>> indexedClasses) {
documentBuilder.postInitialize( indexedClasses );
}

@Override
public IndexManagerType getIndexManagerType() {
return indexManagerType;
}

@Override
public IndexManager[] getIndexManagers() {
return indexManagers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.hibernate.search.indexes.impl.IndexManagerHolder;
import org.hibernate.search.indexes.interceptor.EntityIndexingInterceptor;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.indexes.spi.IndexManagerType;
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.search.store.ShardIdentifierProvider;

Expand All @@ -29,6 +30,7 @@ public class DynamicShardingEntityIndexBinding implements MutableEntityIndexBind
private final ShardIdentifierProvider shardIdentityProvider;
private final Properties properties;
private final ExtendedSearchIntegrator extendedIntegrator;
private final IndexManagerType indexManagerType;
private final IndexManagerHolder indexManagerHolder;
private final String rootDirectoryProviderName;
private DocumentBuilderIndexedEntity documentBuilder;
Expand All @@ -41,13 +43,15 @@ public DynamicShardingEntityIndexBinding(
EntityIndexingInterceptor entityIndexingInterceptor,
Properties properties,
ExtendedSearchIntegrator extendedIntegrator,
IndexManagerType indexManagerType,
IndexManagerHolder indexManagerHolder,
String rootDirectoryProviderName) {
this.shardIdentityProvider = shardIdentityProvider;
this.similarityInstance = similarityInstance;
this.entityIndexingInterceptor = entityIndexingInterceptor;
this.properties = properties;
this.extendedIntegrator = extendedIntegrator;
this.indexManagerType = indexManagerType;
// TODO
this.indexManagerFactory = indexManagerFactory;
this.indexManagerHolder = indexManagerHolder;
Expand Down Expand Up @@ -90,6 +94,11 @@ public void postInitialize(Set<Class<?>> indexedClasses) {
documentBuilder.postInitialize( indexedClasses );
}

@Override
public IndexManagerType getIndexManagerType() {
return indexManagerType;
}

@Override
public IndexManager[] getIndexManagers() {
return shardingStrategy.getIndexManagersForAllShards();
Expand Down Expand Up @@ -119,6 +128,7 @@ public MutableEntityIndexBinding cloneWithSimilarity(Similarity entitySimilarity
entityIndexingInterceptor,
properties,
extendedIntegrator,
indexManagerType,
indexManagerHolder,
rootDirectoryProviderName
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.hibernate.search.indexes.impl.IndexManagerHolder;
import org.hibernate.search.indexes.interceptor.EntityIndexingInterceptor;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.indexes.spi.IndexManagerType;
import org.hibernate.search.spi.WorkerBuildContext;
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.search.store.ShardIdentifierProvider;
Expand All @@ -31,8 +32,10 @@ private EntityIndexBindingFactory() {
// not allowed
}

@SuppressWarnings( "unchecked" )
public static MutableEntityIndexBinding buildEntityIndexBinding(Class<?> type, IndexManager[] providers,
public static MutableEntityIndexBinding buildEntityIndexBinding(
Class<?> type,
IndexManagerType indexManagerType,
IndexManager[] providers,
IndexShardingStrategy shardingStrategy,
ShardIdentifierProvider shardIdentifierProvider,
Similarity similarity,
Expand All @@ -52,11 +55,12 @@ public static MutableEntityIndexBinding buildEntityIndexBinding(Class<?> type, I
safeInterceptor,
properties,
context.getUninitializedSearchIntegrator(),
indexManagerType,
indexManagerHolder,
rootDirectoryProviderName );
}
else {
return new DefaultMutableEntityIndexBinding( shardingStrategy, similarity, providers, interceptor );
return new DefaultMutableEntityIndexBinding( shardingStrategy, similarity, indexManagerType, providers, interceptor );
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.apache.lucene.search.similarities.Similarity;
import org.hibernate.search.indexes.interceptor.EntityIndexingInterceptor;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.indexes.spi.IndexManagerType;
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.search.store.ShardIdentifierProvider;

Expand Down Expand Up @@ -49,6 +50,11 @@ public interface EntityIndexBinding {
*/
void postInitialize(Set<Class<?>> indexedClasses);

/**
* @return the type of index managers
*/
IndexManagerType getIndexManagerType();

/**
* @return the array of index managers
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ public synchronized MutableEntityIndexBinding buildEntityIndexBinding(
Similarity similarity = createSimilarity( indexName, cfg, indexProperties[0], entity, buildContext );
boolean isDynamicSharding = isShardingDynamic( indexProperties[0], buildContext );

IndexManagerType indexManagerType = getIndexManagerType( entity, cfg, buildContext );
IndexManager[] indexManagers = new IndexManager[0];
if ( !isDynamicSharding ) {
indexManagers = createIndexManagers(
Expand Down Expand Up @@ -121,6 +122,7 @@ public synchronized MutableEntityIndexBinding buildEntityIndexBinding(

return EntityIndexBindingFactory.buildEntityIndexBinding(
entity.getClass(),
indexManagerType,
indexManagers,
shardingStrategy,
shardIdentifierProvider,
Expand Down

0 comments on commit 94811dc

Please sign in to comment.