You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2023/04/27 10:04:10 UTC

[camel-quarkus] 03/03: Add workaround for RemoteCacheManager bean discovery #4841

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 255cf9c76223b1996990e707fb3f00e28ffdb33f
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Apr 27 11:03:48 2023 +0100

    Add workaround for RemoteCacheManager bean discovery #4841
---
 .../pages/reference/extensions/infinispan.adoc     | 23 ++++++++++++++++++++++
 .../runtime/src/main/doc/configuration.adoc        | 23 ++++++++++++++++++++++
 .../infinispan/InfinispanQuarkusClientRoutes.java  |  7 +++++++
 3 files changed, 53 insertions(+)

diff --git a/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc b/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
index 20cfea3021..8df287b537 100644
--- a/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
@@ -54,6 +54,29 @@ endif::[]
 You can either configure the Infinispan client via the relevant Camel Infinispan component & endpoint options, or you
 may use the https://quarkus.io/guides/infinispan-client#configuration-reference[Quarkus Infinispan extension configuration properties].
 
+Note that if you choose to use Quarkus Infinispan configuration properties, you *must* add an injection point for the `RemoteCacheClient` in order for it to be discoverable by the Camel Infinispan component. For example:
+
+[source,java]
+----
+public class Routes extends RouteBuilder {
+    // Injects the default unnamed RemoteCacheManager
+    @Inject
+    RemoteCacheManager cacheManager;
+
+    // If configured, injects an optional named RemoteCacheManager
+    @Inject
+    @InfinispanClientName("myNamedClient")
+    RemoteCacheManager namedCacheManager;
+
+    @Override
+    public void configure() {
+        // Route configuration here...
+    }
+}
+
+----
+
+
 [id="extensions-infinispan-configuration-camel-infinispan-infinispanremoteaggregationrepository-in-native-mode"]
 === Camel Infinispan `InfinispanRemoteAggregationRepository` in native mode
 
diff --git a/extensions/infinispan/runtime/src/main/doc/configuration.adoc b/extensions/infinispan/runtime/src/main/doc/configuration.adoc
index f4bd4fac58..d30b5b4108 100644
--- a/extensions/infinispan/runtime/src/main/doc/configuration.adoc
+++ b/extensions/infinispan/runtime/src/main/doc/configuration.adoc
@@ -3,6 +3,29 @@
 You can either configure the Infinispan client via the relevant Camel Infinispan component & endpoint options, or you
 may use the https://quarkus.io/guides/infinispan-client#configuration-reference[Quarkus Infinispan extension configuration properties].
 
+Note that if you choose to use Quarkus Infinispan configuration properties, you *must* add an injection point for the `RemoteCacheClient` in order for it to be discoverable by the Camel Infinispan component. For example:
+
+[source,java]
+----
+public class Routes extends RouteBuilder {
+    // Injects the default unnamed RemoteCacheManager
+    @Inject
+    RemoteCacheManager cacheManager;
+
+    // If configured, injects an optional named RemoteCacheManager
+    @Inject
+    @InfinispanClientName("myNamedClient")
+    RemoteCacheManager namedCacheManager;
+
+    @Override
+    public void configure() {
+        // Route configuration here...
+    }
+}
+
+----
+
+
 === Camel Infinispan `InfinispanRemoteAggregationRepository` in native mode
 
 If you chose to use the `InfinispanRemoteAggregationRepository` in native mode, then you must xref:extensions/core.adoc#quarkus.camel.native.reflection.serialization-enabled[enable native serialization support].
diff --git a/integration-tests/infinispan-quarkus-client/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanQuarkusClientRoutes.java b/integration-tests/infinispan-quarkus-client/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanQuarkusClientRoutes.java
index 7f4c291606..4baa067bf7 100644
--- a/integration-tests/infinispan-quarkus-client/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanQuarkusClientRoutes.java
+++ b/integration-tests/infinispan-quarkus-client/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanQuarkusClientRoutes.java
@@ -18,6 +18,8 @@ package org.apache.camel.quarkus.component.infinispan;
 
 import java.util.Set;
 
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.infinispan.remote.InfinispanRemoteComponent;
 import org.apache.camel.component.infinispan.remote.InfinispanRemoteConfiguration;
@@ -29,8 +31,13 @@ import org.infinispan.client.hotrod.configuration.Configuration;
 import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
 import org.infinispan.commons.marshall.ProtoStreamMarshaller;
 
+@ApplicationScoped
 public class InfinispanQuarkusClientRoutes extends InfinispanCommonRoutes {
 
+    // TODO: This should not be required: https://github.com/apache/camel-quarkus/issues/4841
+    @Inject
+    RemoteCacheManager cacheManager;
+
     @Override
     protected Configuration getConfigurationBuilder() {
         Config config = ConfigProvider.getConfig();