You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/14 18:49:06 UTC

(camel) 06/10: CAMEL-17641: Generate json metadata for pojo beans in camel-core that end users can use such as AggregationStrategy implementations. And have that information in camel-catalog for tooling assistance.

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

davsclaus pushed a commit to branch pojo-beans
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4506f0d543a0806b54071fe3f29620a90e30fb69
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 14 17:24:54 2024 +0100

    CAMEL-17641: Generate json metadata for pojo beans in camel-core that end users can use such as AggregationStrategy implementations. And have that information in camel-catalog for tooling assistance.
---
 .../META-INF/services/org/apache/camel/bean.properties   |  2 +-
 .../apache/camel/bean/MemoryAggregationRepository.json   | 16 ++++++++++++++++
 .../processor/aggregate/MemoryAggregationRepository.java | 15 ++++++++++++++-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
index 80e93133b3c..08e572c6577 100644
--- a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
+++ b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
@@ -1,5 +1,5 @@
 # Generated by camel build tools - do NOT edit this file!
-bean=GroupedBodyAggregationStrategy GroupedExchangeAggregationStrategy GroupedMessageAggregationStrategy StringAggregationStrategy UseLatestAggregationStrategy UseOriginalAggregationStrategy
+bean=GroupedBodyAggregationStrategy GroupedExchangeAggregationStrategy GroupedMessageAggregationStrategy MemoryAggregationRepository StringAggregationStrategy UseLatestAggregationStrategy UseOriginalAggregationStrategy
 groupId=org.apache.camel
 artifactId=camel-core-processor
 version=4.5.0-SNAPSHOT
diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
new file mode 100644
index 00000000000..4e2092ec9fc
--- /dev/null
+++ b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryAggregationRepository.json
@@ -0,0 +1,16 @@
+{
+  "bean": {
+    "kind": "bean",
+    "name": "MemoryAggregationRepository",
+    "javaType": "org.apache.camel.processor.aggregate.MemoryAggregationRepository",
+    "interfaceType": "org.apache.camel.spi.OptimisticLockingAggregationRepository",
+    "title": "Memory Aggregation Repository",
+    "description": "A memory based AggregationRepository which stores Exchange in memory only.",
+    "deprecated": false,
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-core-processor",
+    "version": "4.5.0-SNAPSHOT",
+    "options": { "optimisticLocking": { "index": 0, "kind": "property", "displayName": "Optimistic Locking", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether to use optimistic locking" } }
+  }
+}
+
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
index f2c594486ba..3e49428fd0a 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/MemoryAggregationRepository.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentMap;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.OptimisticLockingAggregationRepository;
 import org.apache.camel.support.service.ServiceSupport;
 
@@ -31,9 +32,13 @@ import org.apache.camel.support.service.ServiceSupport;
  *
  * Supports both optimistic locking and non-optimistic locking modes. Defaults to non-optimistic locking mode.
  */
+@Metadata(label = "bean",
+          description = "A memory based AggregationRepository which stores Exchange in memory only.")
 public class MemoryAggregationRepository extends ServiceSupport implements OptimisticLockingAggregationRepository {
     private final ConcurrentMap<String, Exchange> cache = new ConcurrentHashMap<>();
-    private final boolean optimisticLocking;
+
+    @Metadata(description = "Whether to use optimistic locking")
+    private boolean optimisticLocking;
 
     public MemoryAggregationRepository() {
         this(false);
@@ -43,6 +48,14 @@ public class MemoryAggregationRepository extends ServiceSupport implements Optim
         this.optimisticLocking = optimisticLocking;
     }
 
+    public boolean isOptimisticLocking() {
+        return optimisticLocking;
+    }
+
+    public void setOptimisticLocking(boolean optimisticLocking) {
+        this.optimisticLocking = optimisticLocking;
+    }
+
     @Override
     public Exchange add(CamelContext camelContext, String key, Exchange oldExchange, Exchange newExchange) {
         if (!optimisticLocking) {