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-quarkus.git
The following commit(s) were added to refs/heads/master by this push: new c00d493 Reuse camel package maven plugin to avoid duplicating code, fixes #336 new 74099a2 Merge pull request #375 from gnodet/issue-336 c00d493 is described below commit c00d4932de8cc8c1ab80e50cd3044e425dbc59cb Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Mon Nov 4 17:20:54 2019 +0100 Reuse camel package maven plugin to avoid duplicating code, fixes #336 --- tooling/maven/package-maven-plugin/pom.xml | 23 ++- .../apache/camel/quarkus/maven/ExtMvelHelper.java | 78 ++++++++ .../camel/quarkus/maven/JSonSchemaHelper.java | 222 --------------------- .../org/apache/camel/quarkus/maven/MvelHelper.java | 46 ----- .../apache/camel/quarkus/maven/PackageHelper.java | 72 ------- .../quarkus/maven/PrepareCatalogQuarkusMojo.java | 7 +- .../apache/camel/quarkus/maven/StringHelper.java | 100 ---------- .../quarkus/maven/UpdateDocExtensionsListMojo.java | 31 +-- .../camel/quarkus/maven/model/AbstractModel.java | 184 ----------------- .../camel/quarkus/maven/model/ComponentModel.java | 86 -------- .../camel/quarkus/maven/model/DataFormatModel.java | 31 --- .../camel/quarkus/maven/model/LanguageModel.java | 31 --- .../camel/quarkus/maven/model/OtherModel.java | 34 ---- .../src/main/resources/readme-components.mvel | 4 +- .../src/main/resources/readme-dataformats.mvel | 2 +- .../src/main/resources/readme-languages.mvel | 2 +- .../src/main/resources/readme-others.mvel | 2 +- 17 files changed, 122 insertions(+), 833 deletions(-) diff --git a/tooling/maven/package-maven-plugin/pom.xml b/tooling/maven/package-maven-plugin/pom.xml index 2dfb81a..9fba797 100644 --- a/tooling/maven/package-maven-plugin/pom.xml +++ b/tooling/maven/package-maven-plugin/pom.xml @@ -46,6 +46,17 @@ <dependencies> <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-package-maven-plugin</artifactId> + <version>${camel.version}</version> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <exclusions> @@ -57,6 +68,14 @@ <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-annotations</artifactId> </exclusion> + <exclusion> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </exclusion> + <exclusion> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </exclusion> </exclusions> </dependency> <dependency> @@ -73,10 +92,6 @@ </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-container-default</artifactId> - </dependency> - <dependency> - <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> </dependency> <dependency> diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java new file mode 100644 index 0000000..ccb5af5 --- /dev/null +++ b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java @@ -0,0 +1,78 @@ +/* + * 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.quarkus.maven; + +import java.nio.file.Path; + +import org.apache.camel.maven.packaging.MvelHelper; +import org.apache.camel.maven.packaging.StringHelper; +import org.apache.camel.maven.packaging.model.ComponentModel; +import org.apache.camel.maven.packaging.model.DataFormatModel; +import org.apache.camel.maven.packaging.model.LanguageModel; + +public class ExtMvelHelper { + + private final Path extensionsDocPath; + + public ExtMvelHelper(Path extensionsDocPath) { + this.extensionsDocPath = extensionsDocPath; + } + + public static String escape(final String raw) { + return MvelHelper.escape(raw); + } + + public String getFirstVersionShort(Object model) { + return StringHelper.cutLastZeroDigit((String) invokeGetter(model, "getFirstVersion")); + } + + public String getDocLink(Object model) { + if (localDocExists(model)) { + return getLocalDocLink(model); + } else if (model instanceof ComponentModel) { + return String.format("link:https://camel.apache.org/%s/latest/%s", "components", invokeGetter(model, "getScheme") + "-component.html"); + } else if (model instanceof DataFormatModel) { + return String.format("link:https://camel.apache.org/%s/latest/%s", "components", invokeGetter(model, "getName") + "-dataformat.html"); + } else if (model instanceof LanguageModel) { + return String.format("link:https://camel.apache.org/%s/latest/%s", "components", invokeGetter(model, "getName") + "-language.html"); + } else { + return null; + } + } + + private Object invokeGetter(Object model, String method) { + try { + return model.getClass().getMethod(method) + .invoke(model); + } catch (Exception e) { + throw new RuntimeException("Unable to access " + method + " from " + model, e); + } + } + + private boolean localDocExists(Object model) { + Path path = extensionsDocPath.resolve(getExtensionDocName(model)); + return path.toFile().exists(); + } + + private String getLocalDocLink(Object model) { + return "xref:extensions/" + getExtensionDocName(model); + } + + private String getExtensionDocName(Object model) { + return StringHelper.after((String) invokeGetter(model, "getArtifactId"), "camel-quarkus-") + ".adoc"; + } +} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java deleted file mode 100644 index 417aa09..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * 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.quarkus.maven; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.apache.camel.util.json.JsonObject; -import org.apache.camel.util.json.Jsoner; - - -public final class JSonSchemaHelper { - - private 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 - * @param parseProperties parse properties or not - * @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<>(); - if (json == null) { - return answer; - } - - // convert into a List<Map<String, String>> structure which is expected as output from this parser - try { - JsonObject output = (JsonObject) Jsoner.deserialize(json); - for (String key : output.keySet()) { - Map<?, ?> row = output.getMap(key); - if (key.equals(group)) { - if (parseProperties) { - // flattern each entry in the row with name as they key, and its value as the content (its a map also) - for (Object obj : row.entrySet()) { - Map.Entry<?, ?> entry = (Map.Entry<?, ?>) obj; - Map<String, String> newRow = new LinkedHashMap<>(); - newRow.put("name", entry.getKey().toString()); - - Map<String, String> newData = transformMap((Map<?, ?>) entry.getValue()); - newRow.putAll(newData); - answer.add(newRow); - } - } else { - // flattern each entry in the row as a list of single Map<key, value> elements - Map<?, ?> newData = transformMap(row); - for (Object obj : newData.entrySet()) { - Map.Entry<?, ?> entry = (Map.Entry<?, ?>) obj; - Map<String, String> newRow = new LinkedHashMap<>(); - newRow.put(entry.getKey().toString(), entry.getValue().toString()); - answer.add(newRow); - } - } - } - } - } catch (Exception e) { - // wrap parsing exceptions as runtime - throw new RuntimeException("Cannot parse json", e); - } - - return answer; - } - - private static Map<String, String> transformMap(Map<?, ?> jsonMap) { - Map<String, String> answer = new LinkedHashMap<>(); - - for (Object rowObj : jsonMap.entrySet()) { - Map.Entry<?, ?> rowEntry = (Map.Entry<?, ?>) rowObj; - // if its a list type then its an enum, and we need to parse it as a single line separated with comma - // to be backwards compatible - Object newValue = rowEntry.getValue(); - if (newValue instanceof List) { - List<?> list = (List<?>) newValue; - newValue = list.stream().map(Object::toString) - .collect(Collectors.joining(",")); - } - // ensure value is escaped - String value = escapeJson(newValue.toString()); - answer.put(rowEntry.getKey().toString(), value); - } - - return answer; - } - - private static String escapeJson(String value) { - // need to safe encode \r as \\r so its escaped - // need to safe encode \n as \\n so its escaped - // need to safe encode \t as \\t so its escaped - return value - .replaceAll("\\\\r", "\\\\\\r") - .replaceAll("\\\\n", "\\\\\\n") - .replaceAll("\\\\t", "\\\\\\t"); - } - - /** - * Gets the value with the key in a safe way, eg returning an empty string if there was no value for the key. - * - * @param key the key to search for - * @param rows the rows to search in - * @return the value found or empty string - */ - public static String getSafeValue(String key, List<Map<String, String>> rows) { - for (Map<String, String> row : rows) { - String value = row.get(key); - if (value != null) { - return value; - } - } - return ""; - } - - /** - * Gets the value with the key in a safe way, eg returning an empty string if there was no value for the key. - * - * @param key the key to search for - * @param rows the rows to search in - * @return the value found or empty string - */ - public static String getSafeValue(String key, Map<String, String> rows) { - String value = rows.get(key); - if (value != null) { - return value; - } - return ""; - } - - /** - * - * @param rows the rows to search in - * @param name the name to search for - * @return the value found or null - */ - public static String getPropertyDefaultValue(List<Map<String, String>> rows, String name) { - for (Map<String, String> row : rows) { - String defaultValue = null; - boolean found = false; - if (row.containsKey("name")) { - found = name.equals(row.get("name")); - } - if (row.containsKey("defaultValue")) { - defaultValue = row.get("defaultValue"); - } - if (found) { - return defaultValue; - } - } - return null; - } - - public static String getPropertyDescriptionValue(List<Map<String, String>> rows, String name) { - for (Map<String, String> row : rows) { - String description = null; - boolean found = false; - if (row.containsKey("name")) { - found = name.equals(row.get("name")); - } - if (row.containsKey("description")) { - description = row.get("description"); - } - if (found) { - return description; - } - } - return null; - } - - public static String getPropertyJavaType(List<Map<String, String>> rows, String name) { - for (Map<String, String> row : rows) { - String javaType = null; - boolean found = false; - if (row.containsKey("name")) { - found = name.equals(row.get("name")); - } - if (row.containsKey("javaType")) { - javaType = row.get("javaType"); - } - if (found) { - return javaType; - } - } - return null; - } - - public static String getPropertyType(List<Map<String, String>> rows, String name) { - for (Map<String, String> row : rows) { - String type = null; - boolean found = false; - if (row.containsKey("name")) { - found = name.equals(row.get("name")); - } - if (row.containsKey("type")) { - type = row.get("type"); - } - if (found) { - return type; - } - } - return null; - } - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/MvelHelper.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/MvelHelper.java deleted file mode 100644 index 6ecb3fc..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/MvelHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.quarkus.maven; - -import java.util.regex.Pattern; - -public final class MvelHelper { - - public static final MvelHelper INSTANCE = new MvelHelper(); - - private static final Pattern DOLLAR_ESCAPE = Pattern.compile("\\$"); - - private static final Pattern CURLY_BRACKET_ESCAPE = Pattern.compile("(\\{[a-zA-Z0-9]+?)\\}"); - - private static final Pattern URL_ESCAPE = Pattern.compile("(?<!href=\")(http(:?s)?://|(:?s)?ftp(?:s)?)"); - - private MvelHelper() { - // utility class - } - - public static String escape(final String raw) { - if (raw == null) { - return null; - } - - final String escapedDollars = DOLLAR_ESCAPE.matcher(raw).replaceAll("\\\\\\$"); - final String escapedCurlyBrackets = CURLY_BRACKET_ESCAPE.matcher(escapedDollars).replaceAll("\\\\$1\\\\}"); - final String escapedUrls = URL_ESCAPE.matcher(escapedCurlyBrackets).replaceAll("\\\\$1"); - - return escapedUrls; - } -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PackageHelper.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PackageHelper.java deleted file mode 100644 index 3f34ad5..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PackageHelper.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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.quarkus.maven; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.LineNumberReader; - -public final class PackageHelper { - - private PackageHelper() { - } - - /** - * Loads the entire stream into memory as a String and returns it. - * Notice: This implementation appends a <tt>\n</tt> as line - * terminator at the of the text. - * Warning, don't use for crazy big streams :) - * - * @param in the inputStream - * @return the text String - * @throws IOException InputOutputException - */ - public static String loadText(InputStream in) throws IOException { - StringBuilder builder = new StringBuilder(); - InputStreamReader isr = new InputStreamReader(in); - try { - BufferedReader reader = new LineNumberReader(isr); - while (true) { - String line = reader.readLine(); - if (line != null) { - builder.append(line); - builder.append("\n"); - } else { - break; - } - } - return builder.toString(); - } finally { - isr.close(); - in.close(); - } - } - - public static void writeText(File file, String text) throws IOException { - FileOutputStream fos = new FileOutputStream(file, false); - try { - fos.write(text.getBytes()); - } finally { - fos.close(); - } - } - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java index e167d1b..c59e0c8 100644 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java +++ b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java @@ -50,9 +50,10 @@ import org.apache.maven.project.ProjectBuildingResult; import org.apache.maven.repository.RepositorySystem; import org.mvel2.templates.TemplateRuntime; -import static org.apache.camel.quarkus.maven.PackageHelper.loadText; -import static org.apache.camel.quarkus.maven.PackageHelper.writeText; -import static org.apache.camel.quarkus.maven.StringHelper.camelDashToTitle; +import static org.apache.camel.maven.packaging.PackageHelper.loadText; +import static org.apache.camel.maven.packaging.PackageHelper.writeText; +import static org.apache.camel.maven.packaging.StringHelper.camelDashToTitle; + /** * Prepares the Quarkus provider camel catalog to include component it supports diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/StringHelper.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/StringHelper.java deleted file mode 100644 index bcc16a7..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/StringHelper.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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.quarkus.maven; - -public final class StringHelper { - - private StringHelper() { - // Utils Class - } - - public static String after(String text, String after) { - if (!text.contains(after)) { - return null; - } - return text.substring(text.indexOf(after) + after.length()); - } - - public static String before(String text, String before) { - if (!text.contains(before)) { - return null; - } - return text.substring(0, text.indexOf(before)); - } - - public static String between(String text, String after, String before) { - text = after(text, after); - if (text == null) { - return null; - } - return before(text, before); - } - - public static String cutLastZeroDigit(String version) { - String answer = version; - // cut last digit so its not 2.18.0 but 2.18 - String[] parts = version.split("\\."); - if (parts.length == 3 && parts[2].equals("0")) { - answer = parts[0] + "." + parts[1]; - } - return answer; - } - - /** - * Returns the base class name, i.e. without package and generic related - * information. - * - * @param className The class name which base class is to be computed. - * @return the base class name, i.e. without package and generic related - * information. - */ - public static String getClassShortName(String className) { - if (className != null) { - return className.replaceAll("<.*>", "").replaceAll(".*[.]([^.]+)", "$1"); - } - return className; - } - - /** - * Converts the value to use title style instead of dash cased - */ - public static String camelDashToTitle(String value) { - StringBuilder sb = new StringBuilder(value.length()); - boolean dash = false; - - for (char c : value.toCharArray()) { - if ('-' == c) { - dash = true; - continue; - } - - if (dash) { - sb.append(' '); - sb.append(Character.toUpperCase(c)); - } else { - // upper case first - if (sb.length() == 0) { - sb.append(Character.toUpperCase(c)); - } else { - sb.append(c); - } - } - dash = false; - } - return sb.toString(); - } -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java index fbc058d..7069242 100644 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java +++ b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java @@ -19,6 +19,8 @@ package org.apache.camel.quarkus.maven; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -31,10 +33,13 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; -import org.apache.camel.quarkus.maven.model.ComponentModel; -import org.apache.camel.quarkus.maven.model.DataFormatModel; -import org.apache.camel.quarkus.maven.model.LanguageModel; -import org.apache.camel.quarkus.maven.model.OtherModel; +import org.apache.camel.maven.packaging.JSonSchemaHelper; +import org.apache.camel.maven.packaging.MvelHelper; +import org.apache.camel.maven.packaging.StringHelper; +import org.apache.camel.maven.packaging.model.ComponentModel; +import org.apache.camel.maven.packaging.model.DataFormatModel; +import org.apache.camel.maven.packaging.model.LanguageModel; +import org.apache.camel.maven.packaging.model.OtherModel; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -46,8 +51,8 @@ import org.apache.maven.project.MavenProjectHelper; import org.mvel2.templates.TemplateRuntime; import static java.util.stream.Collectors.toSet; -import static org.apache.camel.quarkus.maven.PackageHelper.loadText; -import static org.apache.camel.quarkus.maven.PackageHelper.writeText; +import static org.apache.camel.maven.packaging.PackageHelper.loadText; +import static org.apache.camel.maven.packaging.PackageHelper.writeText; /** * Updates the documentation in: @@ -425,7 +430,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { map.put("components", models); map.put("numberOfArtifacts", artifacts); map.put("numberOfDeprecated", deprecated); - String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", MvelHelper.INSTANCE)); + String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", new ExtMvelHelper(getExtensionsDocPath()))); return out; } catch (Exception e) { throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e); @@ -439,7 +444,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { map.put("dataformats", models); map.put("numberOfArtifacts", artifacts); map.put("numberOfDeprecated", deprecated); - String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", MvelHelper.INSTANCE)); + String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", new ExtMvelHelper(getExtensionsDocPath()))); return out; } catch (Exception e) { throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e); @@ -453,7 +458,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { map.put("languages", models); map.put("numberOfArtifacts", artifacts); map.put("numberOfDeprecated", deprecated); - String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", MvelHelper.INSTANCE)); + String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", new ExtMvelHelper(getExtensionsDocPath()))); return out; } catch (Exception e) { throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e); @@ -467,7 +472,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { map.put("others", models); map.put("numberOfArtifacts", artifacts); map.put("numberOfDeprecated", deprecated); - String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", MvelHelper.INSTANCE)); + String out = (String) TemplateRuntime.eval(template, map, Collections.singletonMap("util", new ExtMvelHelper(getExtensionsDocPath()))); return out; } catch (Exception e) { throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e); @@ -651,7 +656,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { private ComponentModel generateComponentModel(String json) { List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false); - ComponentModel component = new ComponentModel(); + ComponentModel component = new ComponentModel(false); component.setScheme(JSonSchemaHelper.getSafeValue("scheme", rows)); component.setSyntax(JSonSchemaHelper.getSafeValue("syntax", rows)); component.setAlternativeSyntax(JSonSchemaHelper.getSafeValue("alternativeSyntax", rows)); @@ -668,7 +673,6 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { component.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows)); component.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows)); component.setVersion(JSonSchemaHelper.getSafeValue("version", rows)); - component.setExtensionsDocPath(getExtensionsDocPath()); return component; } @@ -689,7 +693,6 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { dataFormat.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows)); dataFormat.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows)); dataFormat.setVersion(JSonSchemaHelper.getSafeValue("version", rows)); - dataFormat.setExtensionsDocPath(getExtensionsDocPath()); return dataFormat; } @@ -710,7 +713,6 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { language.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows)); language.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows)); language.setVersion(JSonSchemaHelper.getSafeValue("version", rows)); - language.setExtensionsDocPath(getExtensionsDocPath()); return language; } @@ -729,7 +731,6 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo { other.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows)); other.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows)); other.setVersion(JSonSchemaHelper.getSafeValue("version", rows)); - other.setExtensionsDocPath(getExtensionsDocPath()); return other; } diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/AbstractModel.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/AbstractModel.java deleted file mode 100644 index aadcf82..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/AbstractModel.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * 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.quarkus.maven.model; - -import java.nio.file.Path; - -import org.apache.camel.quarkus.maven.StringHelper; -import static org.apache.camel.quarkus.maven.StringHelper.cutLastZeroDigit; - -public abstract class AbstractModel { - - private String kind; - private String name; - private String modelName; - private String title; - private String description; - private String firstVersion; - private String label; - private String deprecated; - private String deprecationNote; - private String javaType; - private String groupId; - private String artifactId; - private String version; - private Path extensionsDocPath; - - public String getKind() { - return kind; - } - - public void setKind(String kind) { - this.kind = kind; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getModelName() { - return modelName; - } - - public void setModelName(String modelName) { - this.modelName = modelName; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getFirstVersion() { - return firstVersion; - } - - public void setFirstVersion(String firstVersion) { - this.firstVersion = firstVersion; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public String getDeprecated() { - return deprecated; - } - - public void setDeprecated(String deprecated) { - this.deprecated = deprecated; - } - - public String getDeprecationNote() { - return deprecationNote; - } - - public void setDeprecationNote(String deprecationNote) { - this.deprecationNote = deprecationNote; - } - - public String getJavaType() { - return javaType; - } - - public void setJavaType(String javaType) { - this.javaType = javaType; - } - - public String getGroupId() { - return groupId; - } - - public void setGroupId(String groupId) { - this.groupId = groupId; - } - - public String getArtifactId() { - return artifactId; - } - - public void setArtifactId(String artifactId) { - this.artifactId = artifactId; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getShortJavaType() { - return StringHelper.getClassShortName(javaType); - } - - public boolean localDocExists() { - Path path = extensionsDocPath.resolve(getExtensionDocName()); - return path.toFile().exists(); - } - - public Path getExtensionsDocPath() { - return extensionsDocPath; - } - - public void setExtensionsDocPath(Path extensionsDocPath) { - this.extensionsDocPath = extensionsDocPath; - } - - public String getLocalDocLink() { - return "xref:extensions/" + getExtensionDocName(); - } - - public String getExtensionDocName() { - return StringHelper.after(artifactId, "camel-quarkus-") + ".adoc"; - } - - public String getDocLink() { - if (localDocExists()) { - return getLocalDocLink(); - } - return String.format("link:https://camel.apache.org/%s/latest/%s", getDocLinkSection(), getDocLinkDocument()); - } - - public String getFirstVersionShort() { - return cutLastZeroDigit(firstVersion); - } - - abstract String getDocLinkSection(); - abstract String getDocLinkDocument(); - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/ComponentModel.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/ComponentModel.java deleted file mode 100644 index ca52b64..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/ComponentModel.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.quarkus.maven.model; - -public class ComponentModel extends AbstractModel { - - private String scheme; - private String syntax; - private String alternativeSyntax; - private String alternativeSchemes; - private String consumerOnly; - private String producerOnly; - - public String getScheme() { - return scheme; - } - - public void setScheme(String scheme) { - this.scheme = scheme; - } - - public String getSyntax() { - return syntax; - } - - public void setSyntax(String syntax) { - this.syntax = syntax; - } - - public String getAlternativeSyntax() { - return alternativeSyntax; - } - - public void setAlternativeSyntax(String alternativeSyntax) { - this.alternativeSyntax = alternativeSyntax; - } - - public String getAlternativeSchemes() { - return alternativeSchemes; - } - - public void setAlternativeSchemes(String alternativeSchemes) { - this.alternativeSchemes = alternativeSchemes; - } - - public String getConsumerOnly() { - return consumerOnly; - } - - public void setConsumerOnly(String consumerOnly) { - this.consumerOnly = consumerOnly; - } - - public String getProducerOnly() { - return producerOnly; - } - - public void setProducerOnly(String producerOnly) { - this.producerOnly = producerOnly; - } - - @Override - String getDocLinkSection() { - return "components"; - } - - @Override - String getDocLinkDocument() { - return scheme + "-component.html"; - } - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/DataFormatModel.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/DataFormatModel.java deleted file mode 100644 index 16d83d2..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/DataFormatModel.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.quarkus.maven.model; - -public class DataFormatModel extends AbstractModel { - - @Override - String getDocLinkSection() { - return "components"; - } - - @Override - String getDocLinkDocument() { - return getName() + "-dataformat.html"; - } - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/LanguageModel.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/LanguageModel.java deleted file mode 100644 index c72dfab..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/LanguageModel.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.quarkus.maven.model; - -public class LanguageModel extends AbstractModel { - - @Override - String getDocLinkSection() { - return "components"; - } - - @Override - String getDocLinkDocument() { - return getName() + "-language.html"; - } - -} diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/OtherModel.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/OtherModel.java deleted file mode 100644 index ea213da..0000000 --- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/model/OtherModel.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.quarkus.maven.model; - -public class OtherModel extends AbstractModel { - - public String getDocLink() { - return localDocExists() ? getLocalDocLink() : null; - } - - @Override - String getDocLinkSection() { - return null; - } - - @Override - String getDocLinkDocument() { - return null; - } -} diff --git a/tooling/maven/package-maven-plugin/src/main/resources/readme-components.mvel b/tooling/maven/package-maven-plugin/src/main/resources/readme-components.mvel index 4904ef1..fe78049 100644 --- a/tooling/maven/package-maven-plugin/src/main/resources/readme-components.mvel +++ b/tooling/maven/package-maven-plugin/src/main/resources/readme-components.mvel @@ -6,8 +6,8 @@ Number of Camel components: @{components.size} in @{numberOfArtifacts} JAR artif |=== | Component | Since | Description @foreach{row : components} -| @{row.docLink}[@{row.title}] (@{row.artifactId}) + -`@{row.syntax}` | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} +| @{util.getDocLink(row)}[@{row.title}] (@{row.artifactId}) + +`@{row.syntax}` | @{util.getFirstVersionShort(row)} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} @end{} |=== diff --git a/tooling/maven/package-maven-plugin/src/main/resources/readme-dataformats.mvel b/tooling/maven/package-maven-plugin/src/main/resources/readme-dataformats.mvel index e436114..e721ce1 100644 --- a/tooling/maven/package-maven-plugin/src/main/resources/readme-dataformats.mvel +++ b/tooling/maven/package-maven-plugin/src/main/resources/readme-dataformats.mvel @@ -6,7 +6,7 @@ Number of Camel data formats: @{dataformats.size} in @{numberOfArtifacts} JAR ar |=== | Data Format | Since | Description @foreach{row : dataformats} -| @{row.docLink}[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} +| @{util.getDocLink(row)}[@{row.title}] (@{row.artifactId}) | @{util.getFirstVersionShort(row)} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} @end{}|=== @end{} \ No newline at end of file diff --git a/tooling/maven/package-maven-plugin/src/main/resources/readme-languages.mvel b/tooling/maven/package-maven-plugin/src/main/resources/readme-languages.mvel index 28df02b..b63e42a 100644 --- a/tooling/maven/package-maven-plugin/src/main/resources/readme-languages.mvel +++ b/tooling/maven/package-maven-plugin/src/main/resources/readme-languages.mvel @@ -6,7 +6,7 @@ Number of Camel languages: @{languages.size} in @{numberOfArtifacts} JAR artifac |=== | Language | Since | Description @foreach{row : languages} -| @{row.docLink}[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} +| @{util.getDocLink(row)}[@{row.title}] (@{row.artifactId}) | @{util.getFirstVersionShort(row)} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} @end{}|=== @end{} \ No newline at end of file diff --git a/tooling/maven/package-maven-plugin/src/main/resources/readme-others.mvel b/tooling/maven/package-maven-plugin/src/main/resources/readme-others.mvel index e873d89..a948973 100644 --- a/tooling/maven/package-maven-plugin/src/main/resources/readme-others.mvel +++ b/tooling/maven/package-maven-plugin/src/main/resources/readme-others.mvel @@ -6,7 +6,7 @@ Number of miscellaneous extensions: @{others.size} in @{numberOfArtifacts} JAR a |=== | Extension | Since | Description @foreach{row : others} -|@if{row.docLink != null} @{row.docLink}[@{row.artifactId}] @else{} (@{row.artifactId})@end{} | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} +|@if{util.getDocLink(row) != null} @{util.getDocLink(row)}[@{row.artifactId}] @else{} (@{row.artifactId})@end{} | @{util.getFirstVersionShort(row)} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)} @end{}|=== @end{} \ No newline at end of file