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