CAMEL-10969: Use json-simple as json parser in JSonSchemaHelper instead of our own home-ground parser.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/372f327d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/372f327d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/372f327d Branch: refs/heads/json-simple Commit: 372f327d7cd4388340b5c6b1bb9240bc74308b5d Parents: 6208158 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Sep 24 11:20:04 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Sep 24 11:20:04 2017 +0200 ---------------------------------------------------------------------- .../camel/maven/connector/ConnectorMojo.java | 8 +- .../SpringBootAutoConfigurationMojo.java | 2 +- .../maven/connector/util/JSonSchemaHelper.java | 105 ------------------- 3 files changed, 5 insertions(+), 110 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/372f327d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java index 2d0fcc4..f03fa71 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java @@ -118,15 +118,15 @@ public class ConnectorMojo extends AbstractJarMojo { if (schema != null) { String json = FileHelper.loadText(new FileInputStream(schema)); - List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false); + List<Map<String, String>> rows = org.apache.camel.catalog.JSonSchemaHelper.parseJsonSchema("component", json, false); String header = buildComponentHeaderSchema(rows, dto, gitUrl); getLog().debug(header); - rows = JSonSchemaHelper.parseJsonSchema("componentProperties", json, true); + rows = org.apache.camel.catalog.JSonSchemaHelper.parseJsonSchema("componentProperties", json, true); String componentOptions = buildComponentOptionsSchema(rows, dto); getLog().debug(componentOptions); - rows = JSonSchemaHelper.parseJsonSchema("properties", json, true); + rows = org.apache.camel.catalog.JSonSchemaHelper.parseJsonSchema("properties", json, true); String endpointOptions = buildEndpointOptionsSchema(rows, dto); getLog().debug(endpointOptions); @@ -145,7 +145,7 @@ public class ConnectorMojo extends AbstractJarMojo { String newJson = jsonSchema.toString(); // parse ourselves - rows = JSonSchemaHelper.parseJsonSchema("component", newJson, false); + rows = org.apache.camel.catalog.JSonSchemaHelper.parseJsonSchema("component", newJson, false); String newScheme = getOption(rows, "scheme"); checkConnectorScheme(newScheme); http://git-wip-us.apache.org/repos/asf/camel/blob/372f327d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/SpringBootAutoConfigurationMojo.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/SpringBootAutoConfigurationMojo.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/SpringBootAutoConfigurationMojo.java index c629271..9b1bd24 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/SpringBootAutoConfigurationMojo.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/SpringBootAutoConfigurationMojo.java @@ -29,12 +29,12 @@ import javax.annotation.Generated; import javax.annotation.PostConstruct; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.camel.catalog.JSonSchemaHelper; import org.apache.camel.maven.connector.model.ComponentModel; import org.apache.camel.maven.connector.model.ComponentOptionModel; import org.apache.camel.maven.connector.model.ConnectorOptionModel; import org.apache.camel.maven.connector.model.EndpointOptionModel; import org.apache.camel.maven.connector.model.OptionModel; -import org.apache.camel.maven.connector.util.JSonSchemaHelper; import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; http://git-wip-us.apache.org/repos/asf/camel/blob/372f327d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/util/JSonSchemaHelper.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/util/JSonSchemaHelper.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/util/JSonSchemaHelper.java index 2bc95b7..a4b04ef 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/util/JSonSchemaHelper.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/util/JSonSchemaHelper.java @@ -19,14 +19,8 @@ package org.apache.camel.maven.connector.util; import java.io.File; import java.net.URI; import java.net.URL; -import java.util.ArrayList; import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * A helper class for <a href="http://json-schema.org/">JSON schema</a>. @@ -34,9 +28,6 @@ import java.util.regex.Pattern; public final class JSonSchemaHelper { private static final String VALID_CHARS = ".-='/\\!&():;"; - // 0 = text, 1 = enum, 2 = boolean, 3 = integer or number - private static final Pattern PATTERN = Pattern.compile("\"(.+?)\"|\\[(.+)\\]|(true|false)|(-?\\d+\\.?\\d*)"); - private static final String QUOT = """; private JSonSchemaHelper() { } @@ -316,102 +307,6 @@ public final class JSonSchemaHelper { } /** - * Parses the json schema to split it into a list or rows, where each row contains key value pairs with the metadata - * - * @param group the group to parse from such as <tt>component</tt>, <tt>componentProperties</tt>, or <tt>properties</tt>. - * @param json the json - * @return a list of all the rows, where each row is a set of key value pairs with metadata - */ - public static List<Map<String, String>> parseJsonSchema(String group, String json, boolean parseProperties) { - List<Map<String, String>> answer = new ArrayList<Map<String, String>>(); - if (json == null) { - return answer; - } - - boolean found = false; - - // parse line by line - String[] lines = json.split("\n"); - for (String line : lines) { - // we need to find the group first - if (!found) { - String s = line.trim(); - found = s.startsWith("\"" + group + "\":") && s.endsWith("{"); - continue; - } - - // we should stop when we end the group - if (line.equals(" },") || line.equals(" }")) { - break; - } - - // need to safe encode \" so we can parse the line - line = line.replaceAll("\"\\\\\"\"", '"' + QUOT + '"'); - - Map<String, String> row = new LinkedHashMap<String, String>(); - Matcher matcher = PATTERN.matcher(line); - - String key; - if (parseProperties) { - // when parsing properties the first key is given as name, so the first parsed token is the value of the name - key = "name"; - } else { - key = null; - } - while (matcher.find()) { - if (key == null) { - key = matcher.group(1); - } else { - String value = matcher.group(1); - if (value != null) { - // its text based - value = value.trim(); - // decode - value = value.replaceAll(QUOT, "\""); - value = decodeJson(value); - } - if (value == null) { - // not text then its maybe an enum? - value = matcher.group(2); - if (value != null) { - // its an enum so strip out " and trim spaces after comma - value = value.replaceAll("\"", ""); - value = value.replaceAll(", ", ","); - value = value.trim(); - } - } - if (value == null) { - // not text then its maybe a boolean? - value = matcher.group(3); - } - if (value == null) { - // not text then its maybe a integer? - value = matcher.group(4); - } - if (value != null) { - row.put(key, value); - } - // reset - key = null; - } - } - if (!row.isEmpty()) { - answer.add(row); - } - } - - return answer; - } - - private static String decodeJson(String value) { - // json encodes a \ as \\ so we need to decode from \\ back to \ - if ("\\\\".equals(value)) { - value = "\\"; - } - return value; - } - - /** * The default value may need to be escaped to be safe for json */ private static String safeDefaultValue(String value) {