You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/01/27 15:47:28 UTC
[camel] 07/10: [CAMEL-14437] Move all json mapping to a single class
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit b46b88b3f4bcf9df862260a122cb164f316dad00
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Sat Jan 25 09:51:26 2020 +0100
[CAMEL-14437] Move all json mapping to a single class
---
.../apt/CoreEipAnnotationProcessorHelper.java | 3 +-
.../tools/apt/EndpointAnnotationProcessor.java | 8 +-
.../tools/apt/SpringAnnotationProcessorHelper.java | 3 +-
.../org/apache/camel/tooling/model/BaseModel.java | 95 +----
.../apache/camel/tooling/model/ComponentModel.java | 70 +---
.../camel/tooling/model/DataFormatModel.java | 49 +--
.../org/apache/camel/tooling/model/EipModel.java | 73 +---
.../org/apache/camel/tooling/model/JsonMapper.java | 417 +++++++++++++++++++++
.../apache/camel/tooling/model/LanguageModel.java | 49 +--
.../org/apache/camel/tooling/model/OtherModel.java | 34 +-
.../camel/maven/packaging/EndpointDslMojo.java | 3 +-
.../maven/packaging/PackageDataFormatMojo.java | 6 +-
.../camel/maven/packaging/PackageLanguageMojo.java | 6 +-
.../camel/maven/packaging/PackageOtherMojo.java | 3 +-
.../maven/packaging/PrepareUserGuideMojo.java | 9 +-
.../packaging/UpdateDocComponentListMojo.java | 9 +-
.../camel/maven/packaging/UpdateReadmeMojo.java | 9 +-
17 files changed, 474 insertions(+), 372 deletions(-)
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java
index 08c52ab..7892cb2 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java
@@ -46,6 +46,7 @@ import javax.xml.bind.annotation.XmlValue;
import org.apache.camel.spi.AsPredicate;
import org.apache.camel.spi.Metadata;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.camel.tooling.model.EipModel;
@@ -162,7 +163,7 @@ public class CoreEipAnnotationProcessorHelper {
}
// write json schema file
- String json = EipModel.createParameterJsonSchema(eipModel);
+ String json = JsonMapper.createParameterJsonSchema(eipModel);
writer.println(json);
// generate property placeholder provider java source code
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
index 71c5810..8a76626 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
@@ -54,11 +54,11 @@ import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.spi.UriPath;
import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.tooling.model.BaseModel;
import org.apache.camel.tooling.model.BaseOptionModel;
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.tooling.model.ComponentModel.ComponentOptionModel;
import org.apache.camel.tooling.model.ComponentModel.EndpointOptionModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.camel.tools.apt.helper.EndpointHelper;
@@ -158,7 +158,7 @@ public class EndpointAnnotationProcessor extends AbstractCamelAnnotationProcesso
res = processingEnv.getFiler().getResource(StandardLocation.CLASS_PATH,
packageName, parentScheme + PackageHelper.JSON_SUFIX);
String json = res.getCharContent(false).toString();
- parentData = ComponentModel.generateComponentModel(json);
+ parentData = JsonMapper.generateComponentModel(json);
} catch (Exception e) {
// ignore
if (!Objects.equals(parentScheme, extendsScheme)) {
@@ -184,7 +184,7 @@ public class EndpointAnnotationProcessor extends AbstractCamelAnnotationProcesso
generateComponentConfigurer(roundEnv, uriEndpoint, scheme, schemes, componentModel);
}
- String json = ComponentModel.createParameterJsonSchema(componentModel);
+ String json = JsonMapper.createParameterJsonSchema(componentModel);
writer.println(json);
generateEndpointConfigurer(roundEnv, classElement, uriEndpoint, scheme, schemes, componentModel);
}
@@ -222,7 +222,7 @@ public class EndpointAnnotationProcessor extends AbstractCamelAnnotationProcesso
if (isNullOrEmpty(doc)) {
throw new IllegalStateException("Empty doc for option: " + option.getName() + ", parent options:\n" +
- (parentOptions != null ? Jsoner.serialize(BaseModel.asJsonObject(parentOptions)) : "<null>"));
+ (parentOptions != null ? Jsoner.serialize(JsonMapper.asJsonObject(parentOptions)) : "<null>"));
}
}
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessorHelper.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessorHelper.java
index 88d2012..b09ac90 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessorHelper.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessorHelper.java
@@ -41,6 +41,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.camel.spi.Metadata;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.camel.tooling.model.EipModel;
@@ -95,7 +96,7 @@ public class SpringAnnotationProcessorHelper {
findClassProperties(processingEnv, writer, roundEnv, eipOptions, classElement, classElement, "", modelName);
eipOptions.forEach(eipModel::addOption);
- String json = EipModel.createParameterJsonSchema(eipModel);
+ String json = JsonMapper.createParameterJsonSchema(eipModel);
writer.println(json);
}
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseModel.java
index 2c4ce51..0346790 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseModel.java
@@ -28,7 +28,6 @@ import org.apache.camel.util.json.Jsoner;
public abstract class BaseModel<O extends BaseOptionModel> {
- protected String kind;
protected String name;
protected String title;
protected String description;
@@ -43,13 +42,7 @@ public abstract class BaseModel<O extends BaseOptionModel> {
return (m1, m2) -> m1.getTitle().compareToIgnoreCase(m2.getTitle());
}
- public String getKind() {
- return kind;
- }
-
- public void setKind(String kind) {
- this.kind = kind;
- }
+ public abstract String getKind();
public String getName() {
return name;
@@ -128,91 +121,7 @@ public abstract class BaseModel<O extends BaseOptionModel> {
}
public String getFirstVersionShort() {
- return Strings.cutLastZeroDigit(firstVersion);
- }
-
- public static void parseModel(JsonObject mobj, BaseModel<?> model) {
- model.setTitle(mobj.getString("title"));
- model.setName(mobj.getString("name"));
- model.setDescription(mobj.getString("description"));
- model.setFirstVersion(mobj.getString("firstVersion"));
- model.setLabel(mobj.getString("label"));
- model.setDeprecated(mobj.getBooleanOrDefault("deprecated", false));
- model.setDeprecationNote(mobj.getString("label"));
- model.setJavaType(mobj.getString("javaType"));
- }
-
- public static void parseOption(JsonObject mp, BaseOptionModel option, String name) {
- option.setName(name);
- option.setKind(mp.getString("kind"));
- option.setDisplayName(mp.getString("displayName"));
- option.setGroup(mp.getString("group"));
- option.setLabel(mp.getString("label"));
- option.setRequired(mp.getBooleanOrDefault("required", false));
- option.setType(mp.getString("type"));
- option.setJavaType(mp.getString("javaType"));
- option.setEnums(asStringList(mp.getCollection("enum")));
- option.setOneOfs(asStringList(mp.getCollection("oneOf")));
- option.setPrefix(mp.getString("prefix"));
- option.setOptionalPrefix(mp.getString("optionalPrefix"));
- option.setMultiValue(mp.getBooleanOrDefault("multiValue", false));
- option.setDeprecated(mp.getBooleanOrDefault("deprecated", false));
- option.setDeprecationNote(mp.getString("deprecationNote"));
- option.setSecret(mp.getBooleanOrDefault("secret", false));
- option.setDefaultValue(mp.get("defaultValue"));
- option.setAsPredicate(mp.getBooleanOrDefault("asPredicate", false));
- option.setConfigurationClass(mp.getString("configurationClass"));
- option.setConfigurationField(mp.getString("configurationField"));
- option.setDescription(mp.getString("description"));
- }
-
- public static JsonObject asJsonObject(List<? extends BaseOptionModel> options) {
- JsonObject json = new JsonObject();
- options.forEach(option -> json.put(option.getName(), asJsonObject(option)));
- return json;
- }
-
- public static JsonObject asJsonObject(BaseOptionModel option) {
- JsonObject prop = new JsonObject();
- prop.put("kind", option.getKind());
- prop.put("displayName", option.getDisplayName());
- prop.put("group", option.getGroup());
- prop.put("label", option.getLabel());
- prop.put("required", option.isRequired());
- prop.put("type", option.getType());
- prop.put("javaType", option.getJavaType());
- prop.put("enums", option.getEnums());
- prop.put("oneOfs", option.getOneOfs());
- prop.put("prefix", option.getPrefix());
- prop.put("optionalPrefix", option.getOptionalPrefix());
- prop.put("multiValue", option.isMultiValue());
- prop.put("deprecated", option.isDeprecated());
- prop.put("deprecationNote", option.getDeprecationNote());
- prop.put("secret", option.isSecret());
- prop.put("defaultValue", option.getDefaultValue());
- prop.put("asPredicate", option.isAsPredicate());
- prop.put("configurationClass", option.getConfigurationClass());
- prop.put("configurationField", option.getConfigurationField());
- prop.put("description", option.getDescription());
- prop.entrySet().removeIf(e -> e.getValue() == null);
- return prop;
- }
-
- protected static JsonObject deserialize(String json) {
- try {
- return (JsonObject) Jsoner.deserialize(json);
- } catch (Exception e) {
- // wrap parsing exceptions as runtime
- throw new RuntimeException("Cannot parse json", e);
- }
- }
-
- protected static List<String> asStringList(Collection<?> col) {
- if (col != null) {
- return col.stream().map(Object::toString).collect(Collectors.toList());
- } else {
- return null;
- }
+ return !Strings.isNullOrEmpty(firstVersion) ? Strings.cutLastZeroDigit(firstVersion) : "";
}
}
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
index 5d137fc..3ad47cb 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java
@@ -42,74 +42,12 @@ public class ComponentModel extends BaseModel<ComponentModel.ComponentOptionMode
protected final List<EndpointOptionModel> endpointOptions = new ArrayList<>();
- public static ComponentModel generateComponentModel(String json) {
- JsonObject obj = deserialize(json);
- JsonObject mobj = (JsonObject) obj.get("component");
- ComponentModel model = new ComponentModel();
- parseModel(mobj, model);
- model.setScheme(mobj.getString("scheme"));
- model.setExtendsScheme(mobj.getString("extendsScheme"));
- model.setAlternativeSchemes(mobj.getString("alternativeSchemes"));
- model.setSyntax(mobj.getString("syntax"));
- model.setAlternativeSyntax(mobj.getString("alternativeSyntax"));
- model.setAsync(mobj.getBooleanOrDefault("async", false));
- model.setConsumerOnly(mobj.getBooleanOrDefault("consumerOnly", false));
- model.setProducerOnly(mobj.getBooleanOrDefault("producerOnly", false));
- model.setLenientProperties(mobj.getBooleanOrDefault("lenientProperties", false));
- model.setGroupId(mobj.getString("groupId"));
- model.setArtifactId(mobj.getString("artifactId"));
- model.setVersion(mobj.getString("version"));
- JsonObject mcprp = (JsonObject) obj.get("componentProperties");
- for (Map.Entry<String, Object> entry : mcprp.entrySet()) {
- JsonObject mp = (JsonObject) entry.getValue();
- ComponentOptionModel option = new ComponentOptionModel();
- parseOption(mp, option, entry.getKey());
- model.addComponentOption(option);
- }
- JsonObject mprp = (JsonObject) obj.get("properties");
- for (Map.Entry<String, Object> entry : mprp.entrySet()) {
- JsonObject mp = (JsonObject) entry.getValue();
- EndpointOptionModel option = new EndpointOptionModel();
- parseOption(mp, option, entry.getKey());
- model.addEndpointOption(option);
- }
- return model;
- }
-
- public static String createParameterJsonSchema(ComponentModel model) {
- JsonObject obj = new JsonObject();
- obj.put("kind", model.getKind());
- obj.put("name", model.getName());
- obj.put("scheme", model.getScheme());
- obj.put("extendsScheme", model.getExtendsScheme());
- obj.put("alternativeSchemes", model.getAlternativeSchemes());
- obj.put("syntax", model.getSyntax());
- obj.put("alternativeSyntax", model.getAlternativeSyntax());
- obj.put("title", model.getTitle());
- obj.put("description", model.getDescription());
- obj.put("label", model.getLabel());
- obj.put("deprecated", model.isDeprecated());
- obj.put("deprecationNote", model.getDeprecationNote());
- obj.put("async", model.isAsync());
- obj.put("consumerOnly", model.isConsumerOnly());
- obj.put("producerOnly", model.isProducerOnly());
- obj.put("lenientProperties", model.isLenientProperties());
- obj.put("javaType", model.getJavaType());
- obj.put("firstVersion", model.getFirstVersion());
- obj.put("verifiers", model.getVerifiers());
- obj.put("groupId", model.getGroupId());
- obj.put("artifactId", model.getArtifactId());
- obj.put("version", model.getVersion());
- obj.entrySet().removeIf(e -> e.getValue() == null);
- JsonObject wrapper = new JsonObject();
- wrapper.put("component", obj);
- wrapper.put("componentProperties", asJsonObject(model.getComponentOptions()));
- wrapper.put("properties", asJsonObject(model.getEndpointOptions()));
- return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ public ComponentModel() {
}
- public ComponentModel() {
- setKind("component");
+ @Override
+ public String getKind() {
+ return "component";
}
public String getScheme() {
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DataFormatModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DataFormatModel.java
index cb50eaa..81f5ad8 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DataFormatModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DataFormatModel.java
@@ -29,55 +29,16 @@ public class DataFormatModel extends BaseModel<DataFormatModel.DataFormatOptionM
protected String artifactId;
protected String version;
- public static DataFormatModel generateDataFormatModel(String json) {
- JsonObject obj = deserialize(json);
- JsonObject mobj = (JsonObject) obj.get("dataformat");
- DataFormatModel model = new DataFormatModel();
- parseModel(mobj, model);
- model.setModelName(mobj.getString("modelName"));
- model.setModelJavaType(mobj.getString("modelJavaType"));
- model.setGroupId(mobj.getString("groupId"));
- model.setArtifactId(mobj.getString("artifactId"));
- model.setVersion(mobj.getString("version"));
- JsonObject mprp = (JsonObject) obj.get("properties");
- for (Map.Entry<String, Object> entry : mprp.entrySet()) {
- JsonObject mp = (JsonObject) entry.getValue();
- DataFormatOptionModel option = new DataFormatOptionModel();
- parseOption(mp, option, entry.getKey());
- model.addOption(option);
- }
- return model;
- }
-
- public static String createParameterJsonSchema(DataFormatModel model) {
- JsonObject obj = new JsonObject();
- obj.put("kind", model.getKind());
- obj.put("name", model.getName());
- obj.put("modelName", model.getModelName());
- obj.put("title", model.getTitle());
- obj.put("description", model.getDescription());
- obj.put("deprecated", model.isDeprecated());
- obj.put("deprecationNote", model.getDeprecationNote());
- obj.put("firstVersion", model.getFirstVersion());
- obj.put("label", model.getLabel());
- obj.put("javaType", model.getJavaType());
- obj.put("modelJavaType", model.getModelJavaType());
- obj.put("groupId", model.getGroupId());
- obj.put("artifactId", model.getArtifactId());
- obj.put("version", model.getVersion());
- obj.entrySet().removeIf(e -> e.getValue() == null);
- JsonObject wrapper = new JsonObject();
- wrapper.put("dataformat", obj);
- wrapper.put("properties", asJsonObject(model.getOptions()));
- return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
- }
-
public static class DataFormatOptionModel extends BaseOptionModel {
}
public DataFormatModel() {
- setKind("dataformat");
+ }
+
+ @Override
+ public String getKind() {
+ return "dataformat";
}
public String getModelName() {
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 ebdf0f6..7f23e56 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
@@ -27,77 +27,12 @@ public class EipModel extends BaseModel<EipModel.EipOptionModel> {
protected boolean input; // used in models from camel-core-engine
protected boolean output; // used in models from camel-core-engine
- public static EipModel generateEipModel(String json) {
- JsonObject obj = deserialize(json);
- JsonObject mobj = (JsonObject) obj.get("model");
- EipModel model = new EipModel();
- parseModel(mobj, model);
- model.setInput(mobj.getBooleanOrDefault("input", false));
- model.setOutput(mobj.getBooleanOrDefault("output", false));
- JsonObject mprp = (JsonObject) obj.get("properties");
- for (Map.Entry<String, Object> entry : mprp.entrySet()) {
- JsonObject mp = (JsonObject) entry.getValue();
- EipOptionModel option = new EipOptionModel();
- parseOption(mp, option, entry.getKey());
- model.addOption(option);
- }
- return model;
- }
-
- public static String createParameterJsonSchema(EipModel model) {
- JsonObject obj = new JsonObject();
- obj.put("kind", model.getKind());
- obj.put("name", model.getName());
- obj.put("title", model.getTitle());
- obj.put("description", model.getDescription());
- obj.put("firstVersion", model.getFirstVersion());
- obj.put("javaType", model.getJavaType());
- obj.put("label", model.getLabel());
- obj.put("deprecated", model.isDeprecated());
- obj.put("deprecationNote", model.getDeprecationNote());
- obj.put("input", model.isInput());
- obj.put("output", model.isOutput());
- obj.entrySet().removeIf(e -> e.getValue() == null);
- JsonObject wrapper = new JsonObject();
- wrapper.put("model", obj);
- wrapper.put("properties", asJsonObject(model.getOptions()));
- return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
- }
-
- public static JsonObject asJsonObject(List<? extends BaseOptionModel> options) {
- JsonObject json = new JsonObject();
- options.forEach(option -> json.put(option.getName(), asJsonObject(option)));
- return json;
- }
-
- public static JsonObject asJsonObject(BaseOptionModel option) {
- JsonObject prop = new JsonObject();
- prop.put("kind", option.getKind());
- prop.put("displayName", option.getDisplayName());
- prop.put("group", option.getGroup());
- prop.put("label", option.getLabel());
- prop.put("required", option.isRequired());
- prop.put("type", option.getType());
- prop.put("javaType", option.getJavaType());
- prop.put("enums", option.getEnums());
- prop.put("oneOfs", option.getOneOfs());
- prop.put("prefix", option.getPrefix());
- prop.put("optionalPrefix", option.getOptionalPrefix());
- prop.put("multiValue", option.isMultiValue() ? Boolean.TRUE : null);
- prop.put("deprecated", option.isDeprecated());
- prop.put("deprecationNote", option.getDeprecationNote());
- prop.put("secret", option.isSecret());
- prop.put("defaultValue", option.getDefaultValue());
- prop.put("asPredicate", option.isAsPredicate() ? Boolean.TRUE : null);
- prop.put("configurationClass", option.getConfigurationClass());
- prop.put("configurationField", option.getConfigurationField());
- prop.put("description", option.getDescription());
- prop.entrySet().removeIf(e -> e.getValue() == null);
- return prop;
+ public EipModel() {
}
- public EipModel() {
- setKind("model");
+ @Override
+ public String getKind() {
+ return "model";
}
public boolean isInput() {
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
new file mode 100644
index 0000000..5665758
--- /dev/null
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -0,0 +1,417 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.tooling.model;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.camel.tooling.model.ComponentModel.ComponentOptionModel;
+import org.apache.camel.tooling.model.ComponentModel.EndpointOptionModel;
+import org.apache.camel.tooling.model.DataFormatModel.DataFormatOptionModel;
+import org.apache.camel.tooling.model.EipModel.EipOptionModel;
+import org.apache.camel.tooling.model.LanguageModel.LanguageOptionModel;
+import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
+
+public class JsonMapper {
+
+ public static BaseModel<?> generateModel(Path file) {
+ try {
+ String json = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
+ return generateModel(json);
+ } catch (IOException e) {
+ throw new RuntimeException("Error reading json file: " + file, e);
+ }
+ }
+
+ public static BaseModel<?> generateModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateModel(obj);
+ }
+
+ public static BaseModel<?> generateModel(JsonObject obj) {
+ if (obj.containsKey("component")) {
+ return generateComponentModel(obj);
+ } else if (obj.containsKey("language")) {
+ return generateLanguageModel(obj);
+ } else if (obj.containsKey("dataformat")) {
+ return generateDataFormatModel(obj);
+ } else if (obj.containsKey("other")) {
+ return generateOtherModel(obj);
+ } else if (obj.containsKey("model")) {
+ return generateEipModel(obj);
+ } else {
+ throw new IllegalArgumentException("Unsupported JSON");
+ }
+ }
+
+ public static ComponentModel generateComponentModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateComponentModel(obj);
+ }
+
+ public static ComponentModel generateComponentModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("component");
+ ComponentModel model = new ComponentModel();
+ parseModel(mobj, model);
+ model.setScheme(mobj.getString("scheme"));
+ model.setExtendsScheme(mobj.getString("extendsScheme"));
+ model.setAlternativeSchemes(mobj.getString("alternativeSchemes"));
+ model.setSyntax(mobj.getString("syntax"));
+ model.setAlternativeSyntax(mobj.getString("alternativeSyntax"));
+ model.setAsync(mobj.getBooleanOrDefault("async", false));
+ model.setConsumerOnly(mobj.getBooleanOrDefault("consumerOnly", false));
+ model.setProducerOnly(mobj.getBooleanOrDefault("producerOnly", false));
+ model.setLenientProperties(mobj.getBooleanOrDefault("lenientProperties", false));
+ model.setGroupId(mobj.getString("groupId"));
+ model.setArtifactId(mobj.getString("artifactId"));
+ model.setVersion(mobj.getString("version"));
+ JsonObject mcprp = (JsonObject) obj.get("componentProperties");
+ for (Map.Entry<String, Object> entry : mcprp.entrySet()) {
+ JsonObject mp = (JsonObject) entry.getValue();
+ ComponentOptionModel option = new ComponentOptionModel();
+ parseOption(mp, option, entry.getKey());
+ model.addComponentOption(option);
+ }
+ JsonObject mprp = (JsonObject) obj.get("properties");
+ for (Map.Entry<String, Object> entry : mprp.entrySet()) {
+ JsonObject mp = (JsonObject) entry.getValue();
+ EndpointOptionModel option = new EndpointOptionModel();
+ parseOption(mp, option, entry.getKey());
+ model.addEndpointOption(option);
+ }
+ return model;
+ }
+
+ public static String createParameterJsonSchema(ComponentModel model) {
+ JsonObject wrapper = asJsonObject(model);
+ return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ }
+
+ public static JsonObject asJsonObject(ComponentModel model) {
+ JsonObject obj = new JsonObject();
+ obj.put("kind", model.getKind());
+ obj.put("name", model.getName());
+ obj.put("scheme", model.getScheme());
+ obj.put("extendsScheme", model.getExtendsScheme());
+ obj.put("alternativeSchemes", model.getAlternativeSchemes());
+ obj.put("syntax", model.getSyntax());
+ obj.put("alternativeSyntax", model.getAlternativeSyntax());
+ obj.put("title", model.getTitle());
+ obj.put("description", model.getDescription());
+ obj.put("label", model.getLabel());
+ obj.put("deprecated", model.isDeprecated());
+ obj.put("deprecationNote", model.getDeprecationNote());
+ obj.put("async", model.isAsync());
+ obj.put("consumerOnly", model.isConsumerOnly());
+ obj.put("producerOnly", model.isProducerOnly());
+ obj.put("lenientProperties", model.isLenientProperties());
+ obj.put("javaType", model.getJavaType());
+ obj.put("firstVersion", model.getFirstVersion());
+ obj.put("verifiers", model.getVerifiers());
+ obj.put("groupId", model.getGroupId());
+ obj.put("artifactId", model.getArtifactId());
+ obj.put("version", model.getVersion());
+ obj.entrySet().removeIf(e -> e.getValue() == null);
+ JsonObject wrapper = new JsonObject();
+ wrapper.put("component", obj);
+ wrapper.put("componentProperties", asJsonObject(model.getComponentOptions()));
+ wrapper.put("properties", asJsonObject(model.getEndpointOptions()));
+ return wrapper;
+ }
+
+ public static DataFormatModel generateDataFormatModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateDataFormatModel(obj);
+ }
+
+ public static DataFormatModel generateDataFormatModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("dataformat");
+ DataFormatModel model = new DataFormatModel();
+ parseModel(mobj, model);
+ model.setModelName(mobj.getString("modelName"));
+ model.setModelJavaType(mobj.getString("modelJavaType"));
+ model.setGroupId(mobj.getString("groupId"));
+ model.setArtifactId(mobj.getString("artifactId"));
+ model.setVersion(mobj.getString("version"));
+ JsonObject mprp = (JsonObject) obj.get("properties");
+ for (Map.Entry<String, Object> entry : mprp.entrySet()) {
+ JsonObject mp = (JsonObject) entry.getValue();
+ DataFormatOptionModel option = new DataFormatOptionModel();
+ parseOption(mp, option, entry.getKey());
+ model.addOption(option);
+ }
+ return model;
+ }
+
+ public static String createParameterJsonSchema(DataFormatModel model) {
+ JsonObject wrapper = asJsonObject(model);
+ return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ }
+
+ public static JsonObject asJsonObject(DataFormatModel model) {
+ JsonObject obj = new JsonObject();
+ obj.put("kind", model.getKind());
+ obj.put("name", model.getName());
+ obj.put("modelName", model.getModelName());
+ obj.put("title", model.getTitle());
+ obj.put("description", model.getDescription());
+ obj.put("deprecated", model.isDeprecated());
+ obj.put("deprecationNote", model.getDeprecationNote());
+ obj.put("firstVersion", model.getFirstVersion());
+ obj.put("label", model.getLabel());
+ obj.put("javaType", model.getJavaType());
+ obj.put("modelJavaType", model.getModelJavaType());
+ obj.put("groupId", model.getGroupId());
+ obj.put("artifactId", model.getArtifactId());
+ obj.put("version", model.getVersion());
+ obj.entrySet().removeIf(e -> e.getValue() == null);
+ JsonObject wrapper = new JsonObject();
+ wrapper.put("dataformat", obj);
+ wrapper.put("properties", asJsonObject(model.getOptions()));
+ return wrapper;
+ }
+
+ public static EipModel generateEipModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateEipModel(obj);
+ }
+
+ public static EipModel generateEipModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("model");
+ EipModel model = new EipModel();
+ parseModel(mobj, model);
+ model.setInput(mobj.getBooleanOrDefault("input", false));
+ model.setOutput(mobj.getBooleanOrDefault("output", false));
+ JsonObject mprp = (JsonObject) obj.get("properties");
+ for (Map.Entry<String, Object> entry : mprp.entrySet()) {
+ JsonObject mp = (JsonObject) entry.getValue();
+ EipOptionModel option = new EipOptionModel();
+ parseOption(mp, option, entry.getKey());
+ model.addOption(option);
+ }
+ return model;
+ }
+
+ public static String createParameterJsonSchema(EipModel model) {
+ JsonObject wrapper = asJsonObject(model);
+ return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ }
+
+ public static JsonObject asJsonObject(EipModel model) {
+ JsonObject obj = new JsonObject();
+ obj.put("kind", model.getKind());
+ obj.put("name", model.getName());
+ obj.put("title", model.getTitle());
+ obj.put("description", model.getDescription());
+ obj.put("firstVersion", model.getFirstVersion());
+ obj.put("javaType", model.getJavaType());
+ obj.put("label", model.getLabel());
+ obj.put("deprecated", model.isDeprecated());
+ obj.put("deprecationNote", model.getDeprecationNote());
+ obj.put("input", model.isInput());
+ obj.put("output", model.isOutput());
+ obj.entrySet().removeIf(e -> e.getValue() == null);
+ JsonObject wrapper = new JsonObject();
+ wrapper.put("model", obj);
+ wrapper.put("properties", asJsonObject(model.getOptions()));
+ return wrapper;
+ }
+
+ public static LanguageModel generateLanguageModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateLanguageModel(obj);
+ }
+
+ public static LanguageModel generateLanguageModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("language");
+ LanguageModel model = new LanguageModel();
+ parseModel(mobj, model);
+ model.setModelName(mobj.getString("modelName"));
+ model.setModelJavaType(mobj.getString("modelJavaType"));
+ model.setGroupId(mobj.getString("groupId"));
+ model.setArtifactId(mobj.getString("artifactId"));
+ model.setVersion(mobj.getString("version"));
+ JsonObject mprp = (JsonObject) obj.get("properties");
+ for (Map.Entry<String, Object> entry : mprp.entrySet()) {
+ JsonObject mp = (JsonObject) entry.getValue();
+ LanguageOptionModel option = new LanguageOptionModel();
+ parseOption(mp, option, entry.getKey());
+ model.addOption(option);
+ }
+ return model;
+ }
+
+ public static String createParameterJsonSchema(LanguageModel model) {
+ JsonObject wrapper = asJsonObject(model);
+ return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ }
+
+ public static JsonObject asJsonObject(LanguageModel model) {
+ JsonObject obj = new JsonObject();
+ obj.put("kind", model.getKind());
+ obj.put("name", model.getName());
+ obj.put("modelName", model.getModelName());
+ obj.put("title", model.getTitle());
+ obj.put("description", model.getDescription());
+ obj.put("deprecated", model.isDeprecated());
+ obj.put("deprecationNote", model.getDeprecationNote());
+ obj.put("firstVersion", model.getFirstVersion());
+ obj.put("label", model.getLabel());
+ obj.put("javaType", model.getJavaType());
+ obj.put("modelJavaType", model.getModelJavaType());
+ obj.put("groupId", model.getGroupId());
+ obj.put("artifactId", model.getArtifactId());
+ obj.put("version", model.getVersion());
+ obj.entrySet().removeIf(e -> e.getValue() == null);
+ JsonObject wrapper = new JsonObject();
+ wrapper.put("language", obj);
+ wrapper.put("properties", asJsonObject(model.getOptions()));
+ return wrapper;
+ }
+
+ public static OtherModel generateOtherModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateOtherModel(obj);
+ }
+
+ public static OtherModel generateOtherModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("other");
+ OtherModel model = new OtherModel();
+ parseModel(mobj, model);
+ model.setGroupId(mobj.getString("groupId"));
+ model.setArtifactId(mobj.getString("artifactId"));
+ model.setVersion(mobj.getString("version"));
+ return model;
+ }
+
+ public static String createJsonSchema(OtherModel model) {
+ JsonObject wrapper = asJsonObject(model);
+ return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ }
+
+ public static JsonObject asJsonObject(OtherModel model) {
+ JsonObject obj = new JsonObject();
+ obj.put("kind", model.getKind());
+ obj.put("name", model.getName());
+ obj.put("title", model.getTitle());
+ obj.put("description", model.getDescription());
+ obj.put("deprecated", model.isDeprecated());
+ obj.put("deprecationNote", model.getDeprecationNote());
+ obj.put("firstVersion", model.getFirstVersion());
+ obj.put("label", model.getLabel());
+ obj.put("groupId", model.getGroupId());
+ obj.put("artifactId", model.getArtifactId());
+ obj.put("version", model.getVersion());
+ obj.entrySet().removeIf(e -> e.getValue() == null);
+ JsonObject wrapper = new JsonObject();
+ wrapper.put("other", obj);
+ return wrapper;
+ }
+
+ private static void parseModel(JsonObject mobj, BaseModel<?> model) {
+ model.setTitle(mobj.getString("title"));
+ model.setName(mobj.getString("name"));
+ model.setDescription(mobj.getString("description"));
+ model.setFirstVersion(mobj.getString("firstVersion"));
+ model.setLabel(mobj.getString("label"));
+ model.setDeprecated(mobj.getBooleanOrDefault("deprecated", false));
+ model.setDeprecationNote(mobj.getString("label"));
+ model.setJavaType(mobj.getString("javaType"));
+ }
+
+ private static void parseOption(JsonObject mp, BaseOptionModel option, String name) {
+ option.setName(name);
+ option.setKind(mp.getString("kind"));
+ option.setDisplayName(mp.getString("displayName"));
+ option.setGroup(mp.getString("group"));
+ option.setLabel(mp.getString("label"));
+ option.setRequired(mp.getBooleanOrDefault("required", false));
+ option.setType(mp.getString("type"));
+ option.setJavaType(mp.getString("javaType"));
+ option.setEnums(asStringList(mp.getCollection("enum")));
+ option.setOneOfs(asStringList(mp.getCollection("oneOf")));
+ option.setPrefix(mp.getString("prefix"));
+ option.setOptionalPrefix(mp.getString("optionalPrefix"));
+ option.setMultiValue(mp.getBooleanOrDefault("multiValue", false));
+ option.setDeprecated(mp.getBooleanOrDefault("deprecated", false));
+ option.setDeprecationNote(mp.getString("deprecationNote"));
+ option.setSecret(mp.getBooleanOrDefault("secret", false));
+ option.setDefaultValue(mp.get("defaultValue"));
+ option.setAsPredicate(mp.getBooleanOrDefault("asPredicate", false));
+ option.setConfigurationClass(mp.getString("configurationClass"));
+ option.setConfigurationField(mp.getString("configurationField"));
+ option.setDescription(mp.getString("description"));
+ }
+
+ public static JsonObject asJsonObject(List<? extends BaseOptionModel> options) {
+ JsonObject json = new JsonObject();
+ options.forEach(option -> json.put(option.getName(), asJsonObject(option)));
+ return json;
+ }
+
+ public static JsonObject asJsonObject(BaseOptionModel option) {
+ JsonObject prop = new JsonObject();
+ prop.put("kind", option.getKind());
+ prop.put("displayName", option.getDisplayName());
+ prop.put("group", option.getGroup());
+ prop.put("label", option.getLabel());
+ prop.put("required", option.isRequired());
+ prop.put("type", option.getType());
+ prop.put("javaType", option.getJavaType());
+ prop.put("enums", option.getEnums());
+ prop.put("oneOfs", option.getOneOfs());
+ prop.put("prefix", option.getPrefix());
+ prop.put("optionalPrefix", option.getOptionalPrefix());
+ prop.put("multiValue", option.isMultiValue());
+ prop.put("deprecated", option.isDeprecated());
+ prop.put("deprecationNote", option.getDeprecationNote());
+ prop.put("secret", option.isSecret());
+ prop.put("defaultValue", option.getDefaultValue());
+ prop.put("asPredicate", option.isAsPredicate());
+ prop.put("configurationClass", option.getConfigurationClass());
+ prop.put("configurationField", option.getConfigurationField());
+ prop.put("description", option.getDescription());
+ prop.entrySet().removeIf(e -> e.getValue() == null);
+ prop.remove("multiValue", Boolean.FALSE);
+ prop.remove("asPredicate", Boolean.FALSE);
+ return prop;
+ }
+
+ public static JsonObject deserialize(String json) {
+ try {
+ return (JsonObject) Jsoner.deserialize(json);
+ } catch (Exception e) {
+ // wrap parsing exceptions as runtime
+ throw new RuntimeException("Cannot parse json", e);
+ }
+ }
+
+ protected static List<String> asStringList(Collection<?> col) {
+ if (col != null) {
+ return col.stream().map(Object::toString).collect(Collectors.toList());
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java
index 068ecca..6cb6f83 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java
@@ -29,55 +29,16 @@ public class LanguageModel extends BaseModel<LanguageModel.LanguageOptionModel>
protected String artifactId;
protected String version;
- public static LanguageModel generateLanguageModel(String json) {
- JsonObject obj = deserialize(json);
- JsonObject mobj = (JsonObject) obj.get("language");
- LanguageModel model = new LanguageModel();
- parseModel(mobj, model);
- model.setModelName(mobj.getString("modelName"));
- model.setModelJavaType(mobj.getString("modelJavaType"));
- model.setGroupId(mobj.getString("groupId"));
- model.setArtifactId(mobj.getString("artifactId"));
- model.setVersion(mobj.getString("version"));
- JsonObject mprp = (JsonObject) obj.get("properties");
- for (Map.Entry<String, Object> entry : mprp.entrySet()) {
- JsonObject mp = (JsonObject) entry.getValue();
- LanguageOptionModel option = new LanguageOptionModel();
- parseOption(mp, option, entry.getKey());
- model.addOption(option);
- }
- return model;
- }
-
- public static String createParameterJsonSchema(LanguageModel model) {
- JsonObject obj = new JsonObject();
- obj.put("kind", model.getKind());
- obj.put("name", model.getName());
- obj.put("modelName", model.getModelName());
- obj.put("title", model.getTitle());
- obj.put("description", model.getDescription());
- obj.put("deprecated", model.isDeprecated());
- obj.put("deprecationNote", model.getDeprecationNote());
- obj.put("firstVersion", model.getFirstVersion());
- obj.put("label", model.getLabel());
- obj.put("javaType", model.getJavaType());
- obj.put("modelJavaType", model.getModelJavaType());
- obj.put("groupId", model.getGroupId());
- obj.put("artifactId", model.getArtifactId());
- obj.put("version", model.getVersion());
- obj.entrySet().removeIf(e -> e.getValue() == null);
- JsonObject wrapper = new JsonObject();
- wrapper.put("language", obj);
- wrapper.put("properties", asJsonObject(model.getOptions()));
- return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
- }
-
public static class LanguageOptionModel extends BaseOptionModel {
}
public LanguageModel() {
- setKind("language");
+ }
+
+ @Override
+ public String getKind() {
+ return "language";
}
public String getModelName() {
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/OtherModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/OtherModel.java
index db3398f..9730781 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/OtherModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/OtherModel.java
@@ -25,38 +25,12 @@ public class OtherModel extends BaseModel<BaseOptionModel> {
protected String artifactId;
protected String version;
- public static OtherModel generateOtherModel(String json) {
- JsonObject obj = deserialize(json);
- JsonObject mobj = (JsonObject) obj.get("other");
- OtherModel model = new OtherModel();
- parseModel(mobj, model);
- model.setGroupId(mobj.getString("groupId"));
- model.setArtifactId(mobj.getString("artifactId"));
- model.setVersion(mobj.getString("version"));
- return model;
- }
-
- public static String createJsonSchema(OtherModel model) {
- JsonObject obj = new JsonObject();
- obj.put("kind", "other");
- obj.put("name", model.getName());
- obj.put("title", model.getTitle());
- obj.put("description", model.getDescription());
- obj.put("deprecated", model.isDeprecated());
- obj.put("deprecationNote", model.getDeprecationNote());
- obj.put("firstVersion", model.getFirstVersion());
- obj.put("label", model.getLabel());
- obj.put("groupId", model.getGroupId());
- obj.put("artifactId", model.getArtifactId());
- obj.put("version", model.getVersion());
- obj.entrySet().removeIf(e -> e.getValue() == null);
- JsonObject wrapper = new JsonObject();
- wrapper.put("other", obj);
- return Jsoner.prettyPrint(Jsoner.serialize(wrapper), 2, 2);
+ public OtherModel() {
}
- public OtherModel() {
- setKind("other");
+ @Override
+ public String getKind() {
+ return "other";
}
public String getGroupId() {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
index 41e2226..1a92a62 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
@@ -45,6 +45,7 @@ import org.apache.camel.spi.UriParams;
import org.apache.camel.spi.UriPath;
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.tooling.model.ComponentModel.EndpointOptionModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.camel.tooling.util.srcgen.GenericType;
@@ -211,7 +212,7 @@ public class EndpointDslMojo extends AbstractMojo {
for (String componentName : componentNames) {
String json = loadComponentJson(jsonFiles, componentName);
if (json != null) {
- ComponentModel model = ComponentModel.generateComponentModel(json);
+ ComponentModel model = JsonMapper.generateComponentModel(json);
allModels.add(model);
}
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
index e5bca21..7e7bcbb 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
@@ -29,6 +29,7 @@ import org.apache.camel.tooling.model.DataFormatModel;
import org.apache.camel.tooling.model.DataFormatModel.DataFormatOptionModel;
import org.apache.camel.tooling.model.EipModel;
import org.apache.camel.tooling.model.EipModel.EipOptionModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.maven.plugin.MojoExecutionException;
@@ -140,7 +141,7 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo {
if (log.isDebugEnabled()) {
log.debug("Model: " + dataFormatModel);
}
- String schema = DataFormatModel.createParameterJsonSchema(dataFormatModel);
+ String schema = JsonMapper.createParameterJsonSchema(dataFormatModel);
if (log.isDebugEnabled()) {
log.debug("JSon schema:\n" + schema);
}
@@ -187,9 +188,8 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo {
}
private static DataFormatModel extractDataFormatModel(MavenProject project, String json, String name, String javaType) {
- EipModel def = EipModel.generateEipModel(json);
+ EipModel def = JsonMapper.generateEipModel(json);
DataFormatModel model = new DataFormatModel();
- model.setKind("dataformat");
model.setName(name);
model.setTitle(asModelTitle(name, def.getTitle()));
model.setDescription(def.getDescription());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
index 2343814..bdc2622 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.camel.tooling.model.EipModel;
import org.apache.camel.tooling.model.EipModel.EipOptionModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.LanguageModel.LanguageOptionModel;
import org.apache.camel.tooling.util.PackageHelper;
@@ -138,7 +139,7 @@ public class PackageLanguageMojo extends AbstractGeneratorMojo {
}
// build json schema for the data format
- String schema = LanguageModel.createParameterJsonSchema(languageModel);
+ String schema = JsonMapper.createParameterJsonSchema(languageModel);
if (log.isDebugEnabled()) {
log.debug("JSon schema\n" + schema);
}
@@ -174,9 +175,8 @@ public class PackageLanguageMojo extends AbstractGeneratorMojo {
}
protected static LanguageModel extractLanguageModel(MavenProject project, String json, String name, String javaType) {
- EipModel def = EipModel.generateEipModel(json);
+ EipModel def = JsonMapper.generateEipModel(json);
LanguageModel model = new LanguageModel();
- model.setKind("language");
model.setName(name);
model.setTitle(asTitle(name, def.getTitle()));
model.setDescription(asDescription(name, def.getDescription()));
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java
index bf1e5da..c7f8850 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.nio.file.Path;
import java.util.Collections;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.OtherModel;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
@@ -114,7 +115,7 @@ public class PackageOtherMojo extends AbstractGeneratorMojo {
log.debug("Model: " + otherModel);
}
- String schema = OtherModel.createJsonSchema(otherModel);
+ String schema = JsonMapper.createJsonSchema(otherModel);
// write this to the directory
Path out = schemaOutDir.toPath().resolve(name + PackageHelper.JSON_SUFIX);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
index 2f25e7f..ef66838 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
@@ -27,6 +27,7 @@ import java.util.TreeSet;
import org.apache.camel.tooling.model.BaseModel;
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.OtherModel;
import org.apache.camel.tooling.util.PackageHelper;
@@ -118,7 +119,7 @@ public class PrepareUserGuideMojo extends AbstractMojo {
List<ComponentModel> models = new ArrayList<>();
for (File file : componentFiles) {
String json = PackageHelper.loadText(file);
- ComponentModel model = ComponentModel.generateComponentModel(json);
+ ComponentModel model = JsonMapper.generateComponentModel(json);
// filter out alternative schemas which reuses documentation
boolean add = true;
@@ -186,7 +187,7 @@ public class PrepareUserGuideMojo extends AbstractMojo {
List<OtherModel> models = new ArrayList<>();
for (File file : otherFiles) {
String json = PackageHelper.loadText(file);
- OtherModel model = OtherModel.generateOtherModel(json);
+ OtherModel model = JsonMapper.generateOtherModel(json);
models.add(model);
}
@@ -230,7 +231,7 @@ public class PrepareUserGuideMojo extends AbstractMojo {
List<DataFormatModel> models = new ArrayList<>();
for (File file : dataFormatFiles) {
String json = PackageHelper.loadText(file);
- DataFormatModel model = DataFormatModel.generateDataFormatModel(json);
+ DataFormatModel model = JsonMapper.generateDataFormatModel(json);
models.add(model);
}
@@ -274,7 +275,7 @@ public class PrepareUserGuideMojo extends AbstractMojo {
List<LanguageModel> models = new ArrayList<>();
for (File file : languageFiles) {
String json = PackageHelper.loadText(file);
- LanguageModel model = LanguageModel.generateLanguageModel(json);
+ LanguageModel model = JsonMapper.generateLanguageModel(json);
models.add(model);
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
index ba6951e..c6fd072 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
@@ -30,6 +30,7 @@ import java.util.TreeSet;
import org.apache.camel.tooling.model.BaseModel;
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.OtherModel;
import org.apache.camel.tooling.util.PackageHelper;
@@ -122,7 +123,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
List<ComponentModel> models = new ArrayList<>();
for (File file : componentFiles) {
String json = PackageHelper.loadText(file);
- ComponentModel model = ComponentModel.generateComponentModel(json);
+ ComponentModel model = JsonMapper.generateComponentModel(json);
// filter out alternative schemas which reuses documentation
boolean add = true;
@@ -184,7 +185,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
List<OtherModel> models = new ArrayList<>();
for (File file : otherFiles) {
String json = PackageHelper.loadText(file);
- OtherModel model = OtherModel.generateOtherModel(json);
+ OtherModel model = JsonMapper.generateOtherModel(json);
models.add(model);
}
@@ -229,7 +230,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
List<DataFormatModel> models = new ArrayList<>();
for (File file : dataFormatFiles) {
String json = PackageHelper.loadText(file);
- DataFormatModel model = DataFormatModel.generateDataFormatModel(json);
+ DataFormatModel model = JsonMapper.generateDataFormatModel(json);
// special for bindy as we have one common file
if (model.getName().startsWith("bindy")) {
@@ -280,7 +281,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
List<LanguageModel> models = new ArrayList<>();
for (File file : languageFiles) {
String json = PackageHelper.loadText(file);
- LanguageModel model = LanguageModel.generateLanguageModel(json);
+ LanguageModel model = JsonMapper.generateLanguageModel(json);
models.add(model);
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
index e1f3078..483173c 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
@@ -35,6 +35,7 @@ import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.tooling.model.DataFormatModel;
import org.apache.camel.tooling.model.EipModel;
import org.apache.camel.tooling.model.EipModel.EipOptionModel;
+import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
@@ -256,7 +257,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
if (json != null) {
File file = new File(docDir, languageName + "-language.adoc");
- LanguageModel model = LanguageModel.generateLanguageModel(json);
+ LanguageModel model = JsonMapper.generateLanguageModel(json);
// skip option named id
model.getOptions().removeIf(opt -> Objects.equals(opt.getName(), "id")
|| Objects.equals(opt.getName(), "expression"));
@@ -327,7 +328,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
for (File jsonFile : jsonFiles) {
String json = loadEipJson(jsonFile);
if (json != null) {
- EipModel model = EipModel.generateEipModel(json);
+ EipModel model = JsonMapper.generateEipModel(json);
// skip option named id/description/expression/outputs
model.getOptions().removeIf(option -> "id".equals(option.getName())
|| "description".equals(option.getName())
@@ -722,7 +723,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
}
private static ComponentModel generateComponentModel(String json) {
- ComponentModel component = ComponentModel.generateComponentModel(json);
+ ComponentModel component = JsonMapper.generateComponentModel(json);
Stream.concat(component.getComponentOptions().stream(),
component.getEndpointOptions().stream())
.filter(BaseOptionModel::isRequired)
@@ -747,7 +748,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
}
private static DataFormatModel generateDataFormatModel(String json) {
- DataFormatModel model = DataFormatModel.generateDataFormatModel(json);
+ DataFormatModel model = JsonMapper.generateDataFormatModel(json);
// skip option named id
model.getOptions().removeIf(opt -> Objects.equals(opt.getName(), "id"));
// enhance description for deprecated options