CompositeBeanHolder(List<? extends BeanHolder<? extends T>> delegates) { this.delegates = delegates; List<T> tmp = new ArrayList<>( delegates.size() ); for ( BeanHolder<? extends T> delegate : delegates ) { tmp.add( delegate.get() ); } this.instances = CollectionHelper.toImmutableList( tmp ); }
@Override public BeanHolder<T> getBean(BeanProvider beanProvider) { return BeanHolder.of( instance ); }
@Override public void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundBridges ); closer.pushAll( PojoIndexingProcessorPropertyNodeBuilder::closeOnFailure, propertyNodeBuilders.values() ); } }
CompositeBeanHolder(List<? extends BeanHolder<? extends T>> delegates) { this.delegates = delegates; List<T> tmp = new ArrayList<>( delegates.size() ); for ( BeanHolder<? extends T> delegate : delegates ) { tmp.add( delegate.get() ); } this.instances = CollectionHelper.toImmutableList( tmp ); }
@Override public BeanHolder<T> getBean(BeanProvider beanProvider) { return BeanHolder.of( instance ); }
@Override public void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundBridges ); closer.pushAll( PojoIndexingProcessorPropertyNodeBuilder::closeOnFailure, propertyNodeBuilders.values() ); } }
@Override public BeanHolder<? extends B> build(BridgeBuildContext buildContext) { BeanHolder<?> bridgeHolder; try ( BeanHolder<? extends BridgeBuilder> delegateHolder = delegateReference.getBean( buildContext.getBeanProvider() ) ) { bridgeHolder = delegateHolder.get().build( buildContext ); } expectedBridgeType.cast( bridgeHolder.get() ); @SuppressWarnings( "unchecked" ) // The cast above is enough, since BeanHolder must return the same instance for each call to get() BeanHolder<? extends B> castedBridgeHolder = (BeanHolder<? extends B>) bridgeHolder; return castedBridgeHolder; }
@Override public BeanHolder<PropertyBridge> build(BridgeBuildContext buildContext) { if ( fieldName == null || fieldName.isEmpty() ) { throw new IllegalArgumentException( "fieldName is a mandatory parameter" ); } return BeanHolder.of( new MultiKeywordStringBridge( this ) ); } }
@Override void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundBridges ); closer.pushAll( PojoIndexingProcessorTypeNodeBuilder::closeOnFailure, typeNodeBuilders ); } }
@Override public BeanHolder<? extends B> build(BridgeBuildContext buildContext) { BeanHolder<?> bridgeHolder; try ( BeanHolder<? extends BridgeBuilder> delegateHolder = delegateReference.getBean( buildContext.getBeanProvider() ) ) { bridgeHolder = delegateHolder.get().build( buildContext ); } expectedBridgeType.cast( bridgeHolder.get() ); @SuppressWarnings( "unchecked" ) // The cast above is enough, since BeanHolder must return the same instance for each call to get() BeanHolder<? extends B> castedBridgeHolder = (BeanHolder<? extends B>) bridgeHolder; return castedBridgeHolder; }
@Override public <T> BeanHolder<T> resolve(Class<T> typeReference, String implementationFullyQualifiedClassName) { return BeanHolder.of( resolveNoClosingNecessary( typeReference, implementationFullyQualifiedClassName ) ); }
@Override void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundBridges ); closer.pushAll( PojoIndexingProcessorTypeNodeBuilder::closeOnFailure, typeNodeBuilders ); } }
@Override public BeanHolder<? extends B> build(BridgeBuildContext buildContext) { BeanHolder<?> bridgeHolder; try ( BeanHolder<? extends AnnotationBridgeBuilder> delegateHolder = delegateReference.getBean( buildContext.getBeanProvider() ) ) { /* * TODO HSEARCH-3077 make this raw type use safer by checking the generic parameters of delegate.getClass() somehow, * maybe in a similar way to what we do in PojoIndexModelBinderImpl#addValueBridge, * and throwing an exception with a detailed explanation if something is wrong. */ delegateHolder.get().initialize( annotation ); bridgeHolder = delegateHolder.get().build( buildContext ); } expectedBridgeType.cast( bridgeHolder.get() ); @SuppressWarnings( "unchecked" ) // The cast above is enough, since BeanHolder must return the same instance for each call to get() BeanHolder<? extends B> castedBridgeHolder = (BeanHolder<? extends B>) bridgeHolder; return castedBridgeHolder; }
@Override public BeanHolder<? extends GeoPointBridge> build(BridgeBuildContext buildContext) { return BeanHolder.of( new GeoPointBridge( fieldName, projectable, markerSet ) ); } }
@Override void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundPropertyBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundPropertyBridges ); closer.push( PojoIndexingProcessorValueNodeBuilderDelegate::closeOnFailure, valueWithoutExtractorBuilderDelegate ); closer.pushAll( PojoIndexingProcessorContainerElementNodeBuilder::closeOnFailure, containerElementNodeBuilders.values() ); } }
@Override public BeanHolder<? extends B> build(BridgeBuildContext buildContext) { BeanHolder<?> bridgeHolder; try ( BeanHolder<? extends AnnotationBridgeBuilder> delegateHolder = delegateReference.getBean( buildContext.getBeanProvider() ) ) { /* * TODO HSEARCH-3077 make this raw type use safer by checking the generic parameters of delegate.getClass() somehow, * maybe in a similar way to what we do in PojoIndexModelBinderImpl#addValueBridge, * and throwing an exception with a detailed explanation if something is wrong. */ delegateHolder.get().initialize( annotation ); bridgeHolder = delegateHolder.get().build( buildContext ); } expectedBridgeType.cast( bridgeHolder.get() ); @SuppressWarnings( "unchecked" ) // The cast above is enough, since BeanHolder must return the same instance for each call to get() BeanHolder<? extends B> castedBridgeHolder = (BeanHolder<? extends B>) bridgeHolder; return castedBridgeHolder; }
@Override public BeanHolder<? extends GeoPointBridge> build(BridgeBuildContext buildContext) { return BeanHolder.of( new GeoPointBridge( fieldName, projectable, markerSet ) ); } }
@Override void closeOnFailure() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().get().close(), boundPropertyBridges ); closer.pushAll( boundBridge -> boundBridge.getBridgeHolder().close(), boundPropertyBridges ); closer.push( PojoIndexingProcessorValueNodeBuilderDelegate::closeOnFailure, valueWithoutExtractorBuilderDelegate ); closer.pushAll( PojoIndexingProcessorContainerElementNodeBuilder::closeOnFailure, containerElementNodeBuilders.values() ); } }
@Override public Object build(MarkerBuildContext buildContext) { try ( BeanHolder<? extends AnnotationMarkerBuilder> delegateHolder = delegateReference.getBean( buildContext.getBeanProvider() ) ) { /* * TODO HSEARCH-3077 make this raw type use safer by checking the generic parameters of delegate.getClass() somehow, * maybe in a similar way to what we do in PojoIndexModelBinderImpl#addValueBridge, * and throwing an exception with a detailed explanation if something is wrong. */ delegateHolder.get().initialize( annotation ); return delegateHolder.get().build( buildContext ); } }
@Override public <T> BeanHolder<T> resolve(Class<T> typeReference) { return BeanHolder.of( resolveNoClosingNecessary( typeReference ) ); }