You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/02/22 20:52:16 UTC

[camel-quarkus] 04/04: Reactive streams: Prefer SyntheticBeanBuildItem to initializing bean producers via volatile fields #2273

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 <pp...@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;