Skip to content

Commit

Permalink
HSEARCH-3803 Resolve provided bridge in PojoIdentityMappingCollectorImpl
Browse files Browse the repository at this point in the history
Closing the bean holder in case of failure
  • Loading branch information
fax4ever committed Jan 20, 2020
1 parent 8413082 commit 09f4631
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
Expand Up @@ -9,7 +9,8 @@
import java.lang.invoke.MethodHandles;
import java.util.Optional;

import org.hibernate.search.engine.environment.bean.BeanHolder;
import org.hibernate.search.engine.environment.bean.BeanReference;
import org.hibernate.search.engine.environment.bean.BeanResolver;
import org.hibernate.search.engine.mapper.mapping.building.spi.IndexedEntityBindingContext;
import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.binding.impl.BoundIdentifierBridge;
Expand Down Expand Up @@ -39,7 +40,8 @@ class PojoIdentityMappingCollectorImpl<E> implements PojoIdentityMappingCollecto
private final PojoMappingHelper mappingHelper;
private final IndexedEntityBindingContext bindingContext;

private final BeanHolder<? extends IdentifierBridge<Object>> providedIdentifierBridge;
private final BeanReference<? extends IdentifierBridge<Object>> providedIdentifierBridge;
private final BeanResolver beanResolver;
private final BoundPojoModelPathPropertyNode<?, ?> entityIdPropertyPath;

IdentifierMappingImplementor<?, E> identifierMapping;
Expand All @@ -50,11 +52,13 @@ class PojoIdentityMappingCollectorImpl<E> implements PojoIdentityMappingCollecto
PojoEntityTypeAdditionalMetadata entityTypeMetadata,
PojoMappingHelper mappingHelper,
IndexedEntityBindingContext bindingContext,
BeanHolder<? extends IdentifierBridge<Object>> providedIdentifierBridge) {
BeanReference<? extends IdentifierBridge<Object>> providedIdentifierBridge,
BeanResolver beanResolver) {
this.typeModel = typeModel;
this.mappingHelper = mappingHelper;
this.bindingContext = bindingContext;
this.providedIdentifierBridge = providedIdentifierBridge;
this.beanResolver = beanResolver;

Optional<String> entityIdPropertyName = entityTypeMetadata.getEntityIdPropertyName();
if ( entityIdPropertyName.isPresent() ) {
Expand Down Expand Up @@ -99,7 +103,7 @@ void applyDefaults() {
if ( identifierMapping == null ) {
// Assume a provided ID if requested
if ( providedIdentifierBridge != null ) {
identifierMapping = ProvidedIdentifierMapping.get( providedIdentifierBridge );
identifierMapping = ProvidedIdentifierMapping.get( beanResolver.resolve( providedIdentifierBridge ) );
documentIdSourceProperty = Optional.empty();
}
// Fall back to the entity ID if possible
Expand Down
Expand Up @@ -12,7 +12,8 @@
import java.util.Set;

import org.hibernate.search.engine.backend.document.DocumentElement;
import org.hibernate.search.engine.environment.bean.BeanHolder;
import org.hibernate.search.engine.environment.bean.BeanReference;
import org.hibernate.search.engine.environment.bean.BeanResolver;
import org.hibernate.search.engine.mapper.mapping.building.spi.MappedIndexManagerBuilder;
import org.hibernate.search.mapper.pojo.automaticindexing.building.impl.PojoImplicitReindexingResolverBuildingHelper;
import org.hibernate.search.mapper.pojo.automaticindexing.building.impl.PojoIndexingDependencyCollectorTypeNode;
Expand Down Expand Up @@ -53,7 +54,8 @@ class PojoIndexedTypeManagerBuilder<E, D extends DocumentElement> {
PojoMappingHelper mappingHelper,
MappedIndexManagerBuilder<D> indexManagerBuilder,
PojoIndexedTypeExtendedMappingCollector extendedMappingCollector,
BeanHolder<? extends IdentifierBridge<Object>> providedIdentifierBridge) {
BeanReference<? extends IdentifierBridge<Object>> providedIdentifierBridge,
BeanResolver beanResolver) {
this.typeModel = typeModel;
this.indexManagerBuilder = indexManagerBuilder;
this.extendedMappingCollector = extendedMappingCollector;
Expand All @@ -62,7 +64,7 @@ class PojoIndexedTypeManagerBuilder<E, D extends DocumentElement> {
entityTypeMetadata,
mappingHelper,
indexManagerBuilder.getRootBindingContext(),
providedIdentifierBridge
providedIdentifierBridge, beanResolver
);
this.processorBuilder = new PojoIndexingProcessorTypeNodeBuilder<>(
BoundPojoModelPath.root( typeModel ),
Expand Down
Expand Up @@ -16,8 +16,8 @@
import java.util.function.Consumer;

import org.hibernate.search.engine.backend.document.DocumentElement;
import org.hibernate.search.engine.environment.bean.BeanHolder;
import org.hibernate.search.engine.environment.bean.BeanReference;
import org.hibernate.search.engine.environment.bean.BeanResolver;
import org.hibernate.search.engine.reporting.FailureHandler;
import org.hibernate.search.engine.mapper.mapping.building.spi.IndexedEmbeddedDefinition;
import org.hibernate.search.engine.mapper.mapping.building.spi.IndexedEmbeddedPathTracker;
Expand Down Expand Up @@ -70,7 +70,8 @@ public class PojoMapper<MPBS extends MappingPartialBuildState> implements Mapper

private final ContextualFailureCollector failureCollector;
private final TypeMetadataContributorProvider<PojoTypeMetadataContributor> contributorProvider;
private final BeanHolder<? extends IdentifierBridge<Object>> providedIdentifierBridge;
private final BeanReference<? extends IdentifierBridge<Object>> providedIdentifierBridge;
private final BeanResolver beanResolver;
private final boolean multiTenancyEnabled;

private final FailureHandler failureHandler;
Expand Down Expand Up @@ -108,11 +109,11 @@ public PojoMapper(MappingBuildContext buildContext,

this.delegate = delegate;

this.providedIdentifierBridge = ( providedIdentifierBridge == null ) ? null :
buildContext.getBeanResolver().resolve( providedIdentifierBridge );
this.providedIdentifierBridge = providedIdentifierBridge;
this.beanResolver = buildContext.getBeanResolver();

typeAdditionalMetadataProvider = new PojoTypeAdditionalMetadataProvider(
buildContext.getBeanResolver(), failureCollector, contributorProvider
beanResolver, failureCollector, contributorProvider
);

TypePatternMatcherFactory typePatternMatcherFactory = new TypePatternMatcherFactory( introspector );
Expand Down Expand Up @@ -382,7 +383,7 @@ private <E, D extends DocumentElement> PojoIndexedTypeManagerBuilder<E, D> creat
delegate.createIndexedTypeExtendedMappingCollector(
entityTypeModel, entityTypeMetadata.getEntityName(), indexManagerBuilder.getIndexName()
),
providedIdentifierBridge
providedIdentifierBridge, beanResolver
);
}

Expand Down

0 comments on commit 09f4631

Please sign in to comment.