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 <[email protected]> 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) {
