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;