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;