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 2022/01/03 14:40:36 UTC

[camel] 01/04: CAMEL-17421: camel-catalog - EIPs should include if they are abstract in the metadata

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d01e8007a1637dcec1018b5ae2ecd0e2cec3c270
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jan 3 15:29:27 2022 +0100

    CAMEL-17421: camel-catalog - EIPs should include if they are abstract in the metadata
---
 .../java/org/apache/camel/tooling/model/EipModel.java |  9 +++++++++
 .../org/apache/camel/tooling/model/JsonMapper.java    |  1 +
 .../camel/maven/packaging/SchemaGeneratorMojo.java    | 19 +++++++++++++++++++
 3 files changed, 29 insertions(+)

diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/EipModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/EipModel.java
index cf7422a..256eb5e 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/EipModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/EipModel.java
@@ -18,6 +18,7 @@ package org.apache.camel.tooling.model;
 
 public class EipModel extends BaseModel<EipModel.EipOptionModel> {
 
+    protected boolean abstractModel;  // used in models from camel-core-engine
     protected boolean input;          // used in models from camel-core-engine
     protected boolean output;         // used in models from camel-core-engine
 
@@ -29,6 +30,14 @@ public class EipModel extends BaseModel<EipModel.EipOptionModel> {
         return "model";
     }
 
+    public boolean isAbstractModel() {
+        return abstractModel;
+    }
+
+    public void setAbstractModel(boolean abstractModel) {
+        this.abstractModel = abstractModel;
+    }
+
     public boolean isInput() {
         return input;
     }
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index d7223ce..ef9c504 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -271,6 +271,7 @@ public final class JsonMapper {
         JsonObject mobj = (JsonObject) obj.get("model");
         EipModel model = new EipModel();
         parseModel(mobj, model);
+        model.setAbstractModel(mobj.getBooleanOrDefault("abstract", false));
         model.setInput(mobj.getBooleanOrDefault("input", false));
         model.setOutput(mobj.getBooleanOrDefault("output", false));
         JsonObject mprp = (JsonObject) obj.get("properties");
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
index 4efe0f8..6f15960 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
@@ -99,6 +99,15 @@ public class SchemaGeneratorMojo extends AbstractGeneratorMojo {
             "org.apache.camel.model.ToDynamicDefinition" };
     // special for verbs (these classes have sub classes, so we use this to find all classes)
     private static final String[] ONE_OF_VERBS = new String[] { "org.apache.camel.model.rest.VerbDefinition" };
+    private static final String[] ONE_OF_ABSTRACTS = new String[] {
+            "org.apache.camel.model.InterceptDefinition",
+            "org.apache.camel.model.InterceptFromDefinition",
+            "org.apache.camel.model.InterceptSendToEndpointDefinition",
+            "org.apache.camel.model.OnCompletionDefinition",
+            "org.apache.camel.model.OnExceptionDefinition",
+            "org.apache.camel.model.PolicyDefinition",
+            "org.apache.camel.model.SagaDefinition",
+            "org.apache.camel.model.TransactedDefinition" };
 
     @Parameter(defaultValue = "${project.build.outputDirectory}")
     protected File classesDirectory;
@@ -211,6 +220,7 @@ public class SchemaGeneratorMojo extends AbstractGeneratorMojo {
 
         // after we have found all the options then figure out if the model
         // accepts input/output
+        eipModel.setAbstractModel(hasAbstract(classElement));
         eipModel.setInput(hasInput(classElement));
         eipModel.setOutput(hasOutput(eipModel));
 
@@ -1026,6 +1036,15 @@ public class SchemaGeneratorMojo extends AbstractGeneratorMojo {
         return defaultValue;
     }
 
+    private boolean hasAbstract(Class<?> classElement) {
+        for (String name : ONE_OF_ABSTRACTS) {
+            if (hasSuperClass(classElement, name)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private boolean hasInput(Class<?> classElement) {
         for (String name : ONE_OF_INPUTS) {
             if (hasSuperClass(classElement, name)) {