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:10 UTC

(camel) 10/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 79d5117eeacd5163b5852dbc83c9288b86501e72
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 14 19:47:37 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.
---
 .../org/apache/camel/catalog/beans.properties      |  1 +
 .../catalog/beans/ZipAggregationStrategy.json      | 16 +++++++++++++
 .../services/org/apache/camel/bean.properties      |  7 ++++++
 .../apache/camel/bean/ZipAggregationStrategy.json  | 16 +++++++++++++
 .../aggregate/zipfile/ZipAggregationStrategy.java  | 28 ++++++++++++++++++++++
 5 files changed, 68 insertions(+)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans.properties
index 682e217224d..d3d0542f64e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans.properties
@@ -8,3 +8,4 @@ MemoryIdempotentRepository
 StringAggregationStrategy
 UseLatestAggregationStrategy
 UseOriginalAggregationStrategy
+ZipAggregationStrategy
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/ZipAggregationStrategy.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/ZipAggregationStrategy.json
new file mode 100644
index 00000000000..edd5aa7271d
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/ZipAggregationStrategy.json
@@ -0,0 +1,16 @@
+{
+  "bean": {
+    "kind": "bean",
+    "name": "ZipAggregationStrategy",
+    "javaType": "org.apache.camel.processor.aggregate.zipfile.ZipAggregationStrategy",
+    "interfaceType": "org.apache.camel.AggregationStrategy",
+    "title": "Zip Aggregation Strategy",
+    "description": "AggregationStrategy to zip together incoming messages into a zip file. Please note that this aggregation strategy requires eager completion check to work properly.",
+    "deprecated": false,
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-zipfile",
+    "version": "4.5.0-SNAPSHOT",
+    "properties": { "filePrefix": { "index": 0, "kind": "property", "displayName": "File Prefix", "required": false, "type": "object", "javaType": "org.apache.camel.processor.aggregate.zipfile.ZipAggregationStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the prefix that will be used when creating the ZIP filename." }, "fileSuffix": { "index": 1, "kind": "property", "displayName": "File Suffix", "required": false, "type": "object", "javaType": "or [...]
+  }
+}
+
diff --git a/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean.properties b/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
new file mode 100644
index 00000000000..625e9734846
--- /dev/null
+++ b/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+bean=ZipAggregationStrategy
+groupId=org.apache.camel
+artifactId=camel-zipfile
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Zip File
+projectDescription=Camel Zip file support
diff --git a/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean/ZipAggregationStrategy.json b/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean/ZipAggregationStrategy.json
new file mode 100644
index 00000000000..edd5aa7271d
--- /dev/null
+++ b/components/camel-zipfile/src/generated/resources/META-INF/services/org/apache/camel/bean/ZipAggregationStrategy.json
@@ -0,0 +1,16 @@
+{
+  "bean": {
+    "kind": "bean",
+    "name": "ZipAggregationStrategy",
+    "javaType": "org.apache.camel.processor.aggregate.zipfile.ZipAggregationStrategy",
+    "interfaceType": "org.apache.camel.AggregationStrategy",
+    "title": "Zip Aggregation Strategy",
+    "description": "AggregationStrategy to zip together incoming messages into a zip file. Please note that this aggregation strategy requires eager completion check to work properly.",
+    "deprecated": false,
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-zipfile",
+    "version": "4.5.0-SNAPSHOT",
+    "properties": { "filePrefix": { "index": 0, "kind": "property", "displayName": "File Prefix", "required": false, "type": "object", "javaType": "org.apache.camel.processor.aggregate.zipfile.ZipAggregationStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the prefix that will be used when creating the ZIP filename." }, "fileSuffix": { "index": 1, "kind": "property", "displayName": "File Suffix", "required": false, "type": "object", "javaType": "or [...]
+  }
+}
+
diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/processor/aggregate/zipfile/ZipAggregationStrategy.java b/components/camel-zipfile/src/main/java/org/apache/camel/processor/aggregate/zipfile/ZipAggregationStrategy.java
index 5b59f2eee7b..8e8467fe71e 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/processor/aggregate/zipfile/ZipAggregationStrategy.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/processor/aggregate/zipfile/ZipAggregationStrategy.java
@@ -36,6 +36,7 @@ import org.apache.camel.component.file.FileConsumer;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileMessage;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.FileUtil;
@@ -51,13 +52,24 @@ import org.apache.camel.util.FileUtil;
  * <b>Note:</b> Please note that this aggregation strategy requires eager completion check to work properly.
  * </p>
  */
+@Metadata(label = "bean",
+          description = "AggregationStrategy to zip together incoming messages into a zip file."
+                        + " Please note that this aggregation strategy requires eager completion check to work properly.")
 public class ZipAggregationStrategy implements AggregationStrategy {
 
+    @Metadata(description = "Sets the prefix that will be used when creating the ZIP filename.")
     private String filePrefix;
+    @Metadata(description = "Sets the suffix that will be used when creating the ZIP filename.", defaultValue = "zip")
     private String fileSuffix = ".zip";
+    @Metadata(label = "advanced",
+              description = "If the incoming message is from a file, then the folder structure of said file can be preserved")
     private boolean preserveFolderStructure;
+    @Metadata(label = "advanced",
+              description = "Whether to use CamelFileName header for the filename instead of using unique message id")
     private boolean useFilenameHeader;
+    @Metadata(label = "advanced", description = "Whether to use temporary files for zip manipulations instead of memory.")
     private boolean useTempFile;
+    @Metadata(label = "advanced", description = "Sets the parent directory to use for writing temporary files")
     private File parentDir = new File(System.getProperty("java.io.tmpdir"));
 
     public ZipAggregationStrategy() {
@@ -150,6 +162,22 @@ public class ZipAggregationStrategy implements AggregationStrategy {
         this.parentDir = new File(parentDir);
     }
 
+    public boolean isPreserveFolderStructure() {
+        return preserveFolderStructure;
+    }
+
+    public void setPreserveFolderStructure(boolean preserveFolderStructure) {
+        this.preserveFolderStructure = preserveFolderStructure;
+    }
+
+    public boolean isUseTempFile() {
+        return useTempFile;
+    }
+
+    public void setUseTempFile(boolean useTempFile) {
+        this.useTempFile = useTempFile;
+    }
+
     @Override
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
         File zipFile;