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);