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 ); }
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<? 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<? 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 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 String toRoutingKey(Object identifier, Supplier<E> entitySupplier, AbstractPojoSessionContextImplementor context) { return bridgeHolder.get().toRoutingKey( context.getTenantIdentifier(), identifier, new PojoElementImpl( entitySupplier.get() ), context.getRoutingKeyBridgeToRoutingKeyContext() ); } }
@Override public String toRoutingKey(Object identifier, Supplier<E> entitySupplier, AbstractPojoSessionContextImplementor context) { return bridgeHolder.get().toRoutingKey( context.getTenantIdentifier(), identifier, new PojoElementImpl( entitySupplier.get() ), context.getRoutingKeyBridgeToRoutingKeyContext() ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void process(DocumentElement target, V source, AbstractPojoSessionContextImplementor sessionContext) { F indexFieldValue = bridgeHolder.get().toIndexedValue( source, sessionContext.getMappingContext().getToIndexedValueContext() ); indexFieldAccessor.write( target, indexFieldValue ); }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.push( holder -> holder.get().close(), bridgeHolder ); closer.push( BeanHolder::close, bridgeHolder ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( holder -> holder.get().close(), propertyBridgeHolders ); closer.pushAll( BeanHolder::close, propertyBridgeHolders ); closer.pushAll( PojoIndexingProcessor::close, nestedNodes ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( holder -> holder.get().close(), bridgeHolders ); closer.pushAll( BeanHolder::close, bridgeHolders ); closer.pushAll( PojoIndexingProcessor::close, propertyNodes ); } }
@Override public void close() { try ( Closer<RuntimeException> closer = new Closer<>() ) { closer.pushAll( holder -> holder.get().close(), propertyBridgeHolders ); closer.pushAll( BeanHolder::close, propertyBridgeHolders ); closer.pushAll( PojoIndexingProcessor::close, nestedNodes ); } }
@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 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 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 ); } }