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

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


The following commit(s) were added to refs/heads/main by this push:
     new 96fc274979 Add support for InfinispanRemoteAggregationRepository
96fc274979 is described below

commit 96fc274979685fe5fd71fbb19a768e5c9858ee8b
Author: James Netherton <[email protected]>
AuthorDate: Thu Jul 7 11:09:26 2022 +0100

    Add support for InfinispanRemoteAggregationRepository
    
    Fixes #3657
---
 .../pages/reference/extensions/infinispan.adoc     | 13 ++++----
 extensions/infinispan/runtime/pom.xml              |  6 ----
 .../runtime/src/main/doc/configuration.adoc        |  6 ++++
 .../runtime/src/main/doc/limitations.adoc          |  3 --
 ...anRemoteAggregationRepositorySubstitutions.java | 31 -------------------
 .../component/infinispan/InfinispanRoutes.java     | 35 ++++++++++------------
 .../src/main/resources/application.properties      |  3 ++
 .../component/infinispan/InfinispanTest.java       |  2 --
 8 files changed, 31 insertions(+), 68 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc 
b/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
index 67c5aa5534..b71ecaaecc 100644
--- a/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/infinispan.adoc
@@ -39,15 +39,14 @@ Or add the coordinates to your existing project:
 
 Check the xref:user-guide/index.adoc[User guide] for more information about 
writing Camel Quarkus applications.
 
-== Camel Quarkus limitations
-
-=== InfinispanRemoteAggregationRepository is unsupported
-
-At present the `InfinispanRemoteAggregationRepository` is not supported. The 
are some planned https://github.com/apache/camel-quarkus/issues/3657[future 
enhancements] to make this possible.
-
-
 == Additional Camel Quarkus configuration
 
+=== Infinispan Client Configuration
+
 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].
 
+=== 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/extensions/infinispan/runtime/pom.xml 
b/extensions/infinispan/runtime/pom.xml
index d8bf30cac1..c26a379262 100644
--- a/extensions/infinispan/runtime/pom.xml
+++ b/extensions/infinispan/runtime/pom.xml
@@ -51,12 +51,6 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-infinispan</artifactId>
         </dependency>
-
-        <dependency>
-            <groupId>org.graalvm.nativeimage</groupId>
-            <artifactId>svm</artifactId>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/infinispan/runtime/src/main/doc/configuration.adoc 
b/extensions/infinispan/runtime/src/main/doc/configuration.adoc
index 000b2d0bb4..f4bd4fac58 100644
--- a/extensions/infinispan/runtime/src/main/doc/configuration.adoc
+++ b/extensions/infinispan/runtime/src/main/doc/configuration.adoc
@@ -1,2 +1,8 @@
+=== Infinispan Client Configuration
+
 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].
+
+=== 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/extensions/infinispan/runtime/src/main/doc/limitations.adoc 
b/extensions/infinispan/runtime/src/main/doc/limitations.adoc
deleted file mode 100644
index c404a66ca9..0000000000
--- a/extensions/infinispan/runtime/src/main/doc/limitations.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-=== InfinispanRemoteAggregationRepository is unsupported
-
-At present the `InfinispanRemoteAggregationRepository` is not supported. The 
are some planned https://github.com/apache/camel-quarkus/issues/3657[future 
enhancements] to make this possible.
diff --git 
a/extensions/infinispan/runtime/src/main/java/org/apache/camel/quarkus/component/infinispan/graal/InfinispanRemoteAggregationRepositorySubstitutions.java
 
b/extensions/infinispan/runtime/src/main/java/org/apache/camel/quarkus/component/infinispan/graal/InfinispanRemoteAggregationRepositorySubstitutions.java
deleted file mode 100644
index 0d162a6a8f..0000000000
--- 
a/extensions/infinispan/runtime/src/main/java/org/apache/camel/quarkus/component/infinispan/graal/InfinispanRemoteAggregationRepositorySubstitutions.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.infinispan.graal;
-
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-import 
org.apache.camel.component.infinispan.remote.InfinispanRemoteAggregationRepository;
-
-// TODO: Remove this when https://github.com/apache/camel-quarkus/issues/3657 
is solved
-@TargetClass(InfinispanRemoteAggregationRepository.class)
-final class InfinispanRemoteAggregationRepositorySubstitutions {
-
-    @Substitute
-    public void doStart() {
-        throw new 
UnsupportedOperationException("InfinispanRemoteAggregationRepository is not 
supported");
-    }
-}
diff --git 
a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
 
b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
index 8c1171c739..5b0b5797f6 100644
--- 
a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
+++ 
b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
@@ -166,20 +166,19 @@ public class InfinispanRoutes extends RouteBuilder {
                 .autoStartup(false)
                 .to("mock:camelResultCreated");
 
-        // TODO: Reinstate aggregationRepository routes this 
https://github.com/apache/camel-quarkus/issues/3657
-        //from("direct:camelAggregation")
-        //        .aggregate(header(CORRELATOR_HEADER))
-        //        
.aggregationRepository(createAggregationRepository("infinispan"))
-        //        .aggregationStrategy(createAggregationStrategy())
-        //        .completionSize(COMPLETION_SIZE)
-        //        .to("mock:camelAggregationResult");
-
-        //from("direct:quarkusAggregation")
-        //        .aggregate(header(CORRELATOR_HEADER))
-        //        
.aggregationRepository(createAggregationRepository("infinispan-quarkus"))
-        //        .aggregationStrategy(createAggregationStrategy())
-        //        .completionSize(COMPLETION_SIZE)
-        //        .to("mock:quarkusAggregationResult");
+        from("direct:camelAggregation")
+                .aggregate(header(CORRELATOR_HEADER))
+                
.aggregationRepository(createAggregationRepository("infinispan"))
+                .aggregationStrategy(createAggregationStrategy())
+                .completionSize(COMPLETION_SIZE)
+                .to("mock:camelAggregationResult");
+
+        from("direct:quarkusAggregation")
+                .aggregate(header(CORRELATOR_HEADER))
+                
.aggregationRepository(createAggregationRepository("infinispan-quarkus"))
+                .aggregationStrategy(createAggregationStrategy())
+                .completionSize(COMPLETION_SIZE)
+                .to("mock:quarkusAggregationResult");
 
         from("direct:camelIdempotent")
                 .idempotentConsumer(header("MessageID"), 
createIdempotentRepository("infinispan"))
@@ -247,11 +246,9 @@ public class InfinispanRoutes extends RouteBuilder {
         InfinispanRemoteComponent component = 
camelContext.getComponent(componentName, InfinispanRemoteComponent.class);
         InfinispanRemoteConfiguration configuration = 
component.getConfiguration().clone();
         
configuration.setCacheContainerConfiguration(getConfigurationBuilder());
-        if (componentName.equals("infinispan-quarkus")) {
-            Set<RemoteCacheManager> beans = 
camelContext.getRegistry().findByType(RemoteCacheManager.class);
-            RemoteCacheManager cacheManager = beans.iterator().next();
-            configuration.setCacheContainer(cacheManager);
-        }
+        Set<RemoteCacheManager> beans = 
camelContext.getRegistry().findByType(RemoteCacheManager.class);
+        RemoteCacheManager cacheManager = beans.iterator().next();
+        configuration.setCacheContainer(cacheManager);
         return configuration;
     }
 
diff --git 
a/integration-tests/infinispan/src/main/resources/application.properties 
b/integration-tests/infinispan/src/main/resources/application.properties
index 5c1d502480..d07b4f4fef 100644
--- a/integration-tests/infinispan/src/main/resources/application.properties
+++ b/integration-tests/infinispan/src/main/resources/application.properties
@@ -15,3 +15,6 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 quarkus.infinispan-client.devservices.enabled=false
+
+# Required by InfinispanRemoteAggregationRepository
+quarkus.camel.native.reflection.serialization-enabled=true
diff --git 
a/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanTest.java
 
b/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanTest.java
index 34aff1e430..4e27f05239 100644
--- 
a/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanTest.java
+++ 
b/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanTest.java
@@ -22,7 +22,6 @@ import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -52,7 +51,6 @@ public class InfinispanTest {
         }
     }
 
-    @Disabled("https://github.com/apache/camel-quarkus/issues/3657";)
     @ParameterizedTest
     @MethodSource("componentNames")
     public void aggregate(String componentName) {

Reply via email to