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 <[email protected]> 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
