This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 738777798b44a3a2d03592379370cfe2633c759a Author: Peter Palaga <ppal...@redhat.com> AuthorDate: Mon Feb 22 17:28:51 2021 +0100 Reactive streams: Prefer SyntheticBeanBuildItem to initializing bean producers via volatile fields #2273 --- .../deployment/ReactiveStreamsProcessor.java | 22 +++++++++------------- .../reactive/streams/ReactiveStreamsProducers.java | 13 ++----------- .../reactive/streams/ReactiveStreamsRecorder.java | 14 -------------- 3 files changed, 11 insertions(+), 38 deletions(-) diff --git a/extensions/reactive-streams/deployment/src/main/java/org/apache/camel/quarkus/component/reactive/streams/deployment/ReactiveStreamsProcessor.java b/extensions/reactive-streams/deployment/src/main/java/org/apache/camel/quarkus/component/reactive/streams/deployment/ReactiveStreamsProcessor.java index acff8ad..b079e70 100644 --- a/extensions/reactive-streams/deployment/src/main/java/org/apache/camel/quarkus/component/reactive/streams/deployment/ReactiveStreamsProcessor.java +++ b/extensions/reactive-streams/deployment/src/main/java/org/apache/camel/quarkus/component/reactive/streams/deployment/ReactiveStreamsProcessor.java @@ -16,18 +16,20 @@ */ package org.apache.camel.quarkus.component.reactive.streams.deployment; +import javax.inject.Singleton; + import io.quarkus.arc.deployment.AdditionalBeanBuildItem; -import io.quarkus.arc.deployment.BeanContainerBuildItem; +import io.quarkus.arc.deployment.SyntheticBeanBuildItem; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Overridable; import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.FeatureBuildItem; +import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory; import org.apache.camel.quarkus.component.reactive.streams.ReactiveStreamsProducers; import org.apache.camel.quarkus.component.reactive.streams.ReactiveStreamsRecorder; import org.apache.camel.quarkus.core.deployment.spi.CamelBeanBuildItem; -import org.apache.camel.quarkus.core.deployment.spi.CamelContextBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelServiceFilter; import org.apache.camel.quarkus.core.deployment.spi.CamelServiceFilterBuildItem; @@ -75,17 +77,11 @@ class ReactiveStreamsProcessor { recorder.createReactiveStreamsComponent(reactiveStreamsServiceFactory.getValue())); } - @Record(ExecutionTime.STATIC_INIT) @BuildStep - void publishCamelReactiveStreamsService( - BeanContainerBuildItem beanContainer, - ReactiveStreamsRecorder recorder, - CamelContextBuildItem camelContext, - ReactiveStreamsServiceFactoryBuildItem reactiveStreamsServiceFactory) { - - recorder.publishCamelReactiveStreamsService( - beanContainer.getValue(), - camelContext.getCamelContext(), - reactiveStreamsServiceFactory.getValue()); + SyntheticBeanBuildItem beans(ReactiveStreamsServiceFactoryBuildItem reactiveStreamsServiceFactory) { + return SyntheticBeanBuildItem.configure(CamelReactiveStreamsServiceFactory.class) + .scope(Singleton.class) + .runtimeValue(reactiveStreamsServiceFactory.getValue()) + .done(); } } diff --git a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsProducers.java b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsProducers.java index 28c217b..baf6fbe 100644 --- a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsProducers.java +++ b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsProducers.java @@ -22,25 +22,16 @@ import javax.inject.Singleton; import org.apache.camel.CamelContext; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreams; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService; -import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory; /** * Producers of CamelReactiveStreams related beans that are injectable via CDI. */ @Singleton public class ReactiveStreamsProducers { - private volatile CamelContext camelContext; - private volatile CamelReactiveStreamsServiceFactory reactiveStreamsServiceFactory; + private final CamelContext camelContext; - public void init(CamelContext camelContext, CamelReactiveStreamsServiceFactory reactiveStreamsServiceFactory) { + public ReactiveStreamsProducers(CamelContext camelContext) { this.camelContext = camelContext; - this.reactiveStreamsServiceFactory = reactiveStreamsServiceFactory; - } - - @Singleton - @Produces - CamelReactiveStreamsServiceFactory camelReactiveStreamsServiceFactory() { - return reactiveStreamsServiceFactory; } @Singleton diff --git a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java index 9b2b597..a43c723 100644 --- a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java +++ b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java @@ -16,10 +16,8 @@ */ package org.apache.camel.quarkus.component.reactive.streams; -import io.quarkus.arc.runtime.BeanContainer; import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.Recorder; -import org.apache.camel.CamelContext; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.reactive.streams.ReactiveStreamsComponent; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService; @@ -39,18 +37,6 @@ public class ReactiveStreamsRecorder { return new RuntimeValue<>(new QuarkusReactiveStreamsComponent(serviceFactory.getValue())); } - @SuppressWarnings("unchecked") - public void publishCamelReactiveStreamsService( - BeanContainer beanContainer, - RuntimeValue<CamelContext> camelContext, - RuntimeValue<CamelReactiveStreamsServiceFactory> serviceFactory) { - - // register to the container - beanContainer.instance(ReactiveStreamsProducers.class).init( - camelContext.getValue(), - serviceFactory.getValue()); - } - private static class QuarkusReactiveStreamsComponent extends ReactiveStreamsComponent { private final CamelReactiveStreamsServiceFactory reactiveStreamServiceFactory; private final Object lock;