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 0fca0b6bce39f10cf36cbf2be6e42ce9ee26b735
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Mar 14 15:42:43 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.
---
 .../apache/camel/{beans.properties => bean.properties}    |  2 +-
 .../apache/camel/bean/UseOriginalAggregationStrategy.json | 15 +++++++++++++++
 .../META-INF/services/org/apache/camel/beans.properties   |  2 +-
 .../processor/aggregate/UseLatestAggregationStrategy.java |  2 +-
 .../aggregate/UseOriginalAggregationStrategy.java         |  5 +++++
 .../camel/maven/packaging/GeneratePojoBeanMojo.java       | 11 ++++++-----
 6 files changed, 29 insertions(+), 8 deletions(-)

diff --git 
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.properties
 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
similarity index 74%
copy from 
core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.properties
copy to 
core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean.properties
index a4277ba5e66..348c3b28c96 100644
--- 
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.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!
-beans=org.apache.camel.processor.aggregate.UseLatestAggregationStrategy
+bean=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/UseOriginalAggregationStrategy.json
 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/UseOriginalAggregationStrategy.json
new file mode 100644
index 00000000000..7ab066f5d79
--- /dev/null
+++ 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/bean/UseOriginalAggregationStrategy.json
@@ -0,0 +1,15 @@
+{
+  "bean": {
+    "kind": "bean",
+    "name": "UseOriginalAggregationStrategy",
+    "javaType": 
"org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy",
+    "interfaceType": "org.apache.camel.AggregationStrategy",
+    "title": "Use Original Aggregation Strategy",
+    "description": "An AggregationStrategy which just uses the original 
exchange which can be needed when you want to preserve the original Exchange. 
For example when splitting an Exchange and then you may want to keep routing 
using the original Exchange.",
+    "deprecated": false,
+    "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/beans.properties
 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.properties
index a4277ba5e66..c8e1f79c503 100644
--- 
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.properties
+++ 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/beans.properties
@@ -1,5 +1,5 @@
 # Generated by camel build tools - do NOT edit this file!
-beans=org.apache.camel.processor.aggregate.UseLatestAggregationStrategy
+beans=UseLatestAggregationStrategy UseOriginalAggregationStrategy
 groupId=org.apache.camel
 artifactId=camel-core-processor
 version=4.5.0-SNAPSHOT
diff --git 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
index 0b94b2b7441..d4ba479d3a7 100644
--- 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
+++ 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
@@ -26,7 +26,7 @@ import org.apache.camel.spi.Metadata;
  * status messages have no real value. Another example is things like market 
data prices, where old stock prices are not
  * that relevant, only the current price is.
  */
-@Metadata(label = "bean", title = "Use Latest",
+@Metadata(label = "bean",
           description = "An AggregationStrategy which just uses the latest 
exchange which is useful for status messages where old"
                         + " status messages have no real value. Another 
example is things like market data prices, where old stock prices are not"
                         + " that relevant, only the current price is.")
diff --git 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseOriginalAggregationStrategy.java
 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseOriginalAggregationStrategy.java
index 4fa8dc75f57..40689d482ab 100644
--- 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseOriginalAggregationStrategy.java
+++ 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/UseOriginalAggregationStrategy.java
@@ -18,6 +18,7 @@ package org.apache.camel.processor.aggregate;
 
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.Metadata;
 
 /**
  * An {@link AggregationStrategy} which just uses the original exchange which 
can be needed when you want to preserve
@@ -26,6 +27,10 @@ import org.apache.camel.Exchange;
  *
  * @see org.apache.camel.processor.Splitter
  */
+@Metadata(label = "bean",
+          description = "An AggregationStrategy which just uses the original 
exchange which can be needed when you want to preserve"
+                        + " the original Exchange. For example when splitting 
an Exchange and then you may want to keep routing using the"
+                        + " original Exchange.")
 public class UseOriginalAggregationStrategy implements AggregationStrategy {
 
     private final Exchange original;
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GeneratePojoBeanMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GeneratePojoBeanMojo.java
index 879fe0df8a7..438b0de9744 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GeneratePojoBeanMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GeneratePojoBeanMojo.java
@@ -160,17 +160,18 @@ public class GeneratePojoBeanMojo extends 
AbstractGeneratorMojo {
                         break;
                     }
                 }
+
                 // TODO: getter/setter for options ala EIP/components
                 models.add(model);
             }
         });
-        models.sort(Comparator.comparing(BeanPojoModel::getClassName));
+        models.sort(Comparator.comparing(BeanPojoModel::getName));
 
         if (!models.isEmpty()) {
             try {
                 StringJoiner names = new StringJoiner(" ");
                 for (var model : models) {
-                    names.add(model.getClassName());
+                    names.add(model.getName());
                     JsonObject jo = asJsonObject(model);
                     String json = jo.toJson();
                     json = Jsoner.prettyPrint(json, 2);
@@ -186,9 +187,9 @@ public class GeneratePojoBeanMojo extends 
AbstractGeneratorMojo {
                 // generate marker file
                 File camelMetaDir = new File(resourcesOutputDir, 
"META-INF/services/org/apache/camel/");
                 int count = models.size();
-                String properties = createProperties(project, "beans", 
names.toString());
-                updateResource(camelMetaDir.toPath(), "beans.properties", 
properties);
-                getLog().info("Generated beans.properties containing " + count 
+ " Camel "
+                String properties = createProperties(project, "bean", 
names.toString());
+                updateResource(camelMetaDir.toPath(), "bean.properties", 
properties);
+                getLog().info("Generated bean.properties containing " + count 
+ " Camel "
                               + (count > 1 ? "beans: " : "bean: ") + names);
             } catch (Exception e) {
                 throw new MojoExecutionException(e);

Reply via email to