You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/02/05 13:45:19 UTC

[camel] branch ci-fix updated: This should work better

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch ci-fix
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/ci-fix by this push:
     new f449176  This should work better
f449176 is described below

commit f449176e724eff7746eae153a9b0dfb7c2c177b8
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Feb 5 14:42:53 2019 +0100

    This should work better
---
 .../maven/packaging/PackageDataFormatMojo.java     | 120 +++++++---------
 .../camel/maven/packaging/PackageHelper.java       |   7 +-
 .../camel/maven/packaging/PackageLanguageMojo.java | 151 +++++++++------------
 3 files changed, 122 insertions(+), 156 deletions(-)

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 975475c..dd5f62e 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
@@ -21,15 +21,12 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -95,7 +92,7 @@ public class PackageDataFormatMojo extends AbstractMojo {
     }
 
     public static int prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir,
-                                         File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
+                                        File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
 
         File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");
 
@@ -139,55 +136,46 @@ public class PackageDataFormatMojo extends AbstractMojo {
         // and create json schema model file for this data format
         try {
             if (apacheCamel && count > 0) {
-                File core = findCamelCoreJar(project);
+                File core = findCamelCoreDirectory(project.getBasedir());
                 if (core != null) {
-                    URL url = new URL("file", null, core.getAbsolutePath());
-                    try (URLClassLoader loader = new URLClassLoader(new URL[] {url})) {
-                        for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
-                            String name = entry.getKey();
-                            String javaType = entry.getValue();
-                            String modelName = asModelName(name);
-
-                            InputStream is = loader.getResourceAsStream("org/apache/camel/model/dataformat/" + modelName + ".json");
-                            if (is == null) {
-                                // use file input stream if we build
-                                // camel-core itself, and thus do not have a
-                                // JAR which can be loaded by URLClassLoader
-                                is = new FileInputStream(new File(core, "org/apache/camel/model/dataformat/" + modelName + ".json"));
-                            }
-                            String json = loadText(is);
-
-                            DataFormatModel dataFormatModel = extractDataFormatModel(project, json, modelName, name, javaType);
-                            if (log.isDebugEnabled()) {
-                                log.debug("Model: " + dataFormatModel);
-                            }
-
-                            // build json schema for the data format
-                            String properties = after(json, "  \"properties\": {");
-
-                            // special prepare for bindy/json properties
-                            properties = prepareBindyProperties(name, properties);
-                            properties = prepareJsonProperties(name, properties);
-
-                            String schema = createParameterJsonSchema(dataFormatModel, properties);
-                            if (log.isDebugEnabled()) {
-                                log.debug("JSon schema:\n" + schema);
-                            }
-
-                            // write this to the directory
-                            File dir = new File(schemaOutDir, schemaSubDirectory(dataFormatModel.getJavaType()));
-                            dir.mkdirs();
-
-                            File out = new File(dir, name + ".json");
-                            OutputStream fos = buildContext.newFileOutputStream(out);
-                            fos.write(schema.getBytes());
-                            fos.close();
-
-                            buildContext.refresh(out);
-
-                            if (log.isDebugEnabled()) {
-                                log.debug("Generated " + out + " containing JSon schema for " + name + " data format");
-                            }
+                    for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
+                        String name = entry.getKey();
+                        String javaType = entry.getValue();
+                        String modelName = asModelName(name);
+
+                        InputStream is = new FileInputStream(new File(core, "target/classes/org/apache/camel/model/dataformat/" + modelName + ".json"));
+                        String json = loadText(is);
+
+                        DataFormatModel dataFormatModel = extractDataFormatModel(project, json, modelName, name, javaType);
+                        if (log.isDebugEnabled()) {
+                            log.debug("Model: " + dataFormatModel);
+                        }
+
+                        // build json schema for the data format
+                        String properties = after(json, "  \"properties\": {");
+
+                        // special prepare for bindy/json properties
+                        properties = prepareBindyProperties(name, properties);
+                        properties = prepareJsonProperties(name, properties);
+
+                        String schema = createParameterJsonSchema(dataFormatModel, properties);
+                        if (log.isDebugEnabled()) {
+                            log.debug("JSon schema:\n" + schema);
+                        }
+
+                        // write this to the directory
+                        File dir = new File(schemaOutDir, schemaSubDirectory(dataFormatModel.getJavaType()));
+                        dir.mkdirs();
+
+                        File out = new File(dir, name + ".json");
+                        OutputStream fos = buildContext.newFileOutputStream(out);
+                        fos.write(schema.getBytes());
+                        fos.close();
+
+                        buildContext.refresh(out);
+
+                        if (log.isDebugEnabled()) {
+                            log.debug("Generated " + out + " containing JSon schema for " + name + " data format");
                         }
                     }
                 } else {
@@ -426,10 +414,6 @@ public class PackageDataFormatMojo extends AbstractMojo {
         return title;
     }
 
-    private static File findCamelCoreJar(MavenProject project) {
-        return findCamelCoreDirectory(project, project.getBasedir());
-    }
-
     private static String schemaSubDirectory(String javaType) {
         int idx = javaType.lastIndexOf('.');
         String pckName = javaType.substring(0, idx);
@@ -591,18 +575,18 @@ public class PackageDataFormatMojo extends AbstractMojo {
         @Override
         public String toString() {
             return "DataFormatModel["
-                    + "name='" + name + '\''
-                    + ", title='" + title + '\''
-                    + ", modelName='" + modelName + '\''
-                    + ", description='" + description + '\''
-                    + ", label='" + label + '\''
-                    + ", deprecated='" + deprecated + '\''
-                    + ", javaType='" + javaType + '\''
-                    + ", modelJavaType='" + modelJavaType + '\''
-                    + ", groupId='" + groupId + '\''
-                    + ", artifactId='" + artifactId + '\''
-                    + ", version='" + version + '\''
-                    + ']';
+                + "name='" + name + '\''
+                + ", title='" + title + '\''
+                + ", modelName='" + modelName + '\''
+                + ", description='" + description + '\''
+                + ", label='" + label + '\''
+                + ", deprecated='" + deprecated + '\''
+                + ", javaType='" + javaType + '\''
+                + ", modelJavaType='" + modelJavaType + '\''
+                + ", groupId='" + groupId + '\''
+                + ", artifactId='" + artifactId + '\''
+                + ", version='" + version + '\''
+                + ']';
         }
     }
 
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
index fc42d00..0668fc5 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
@@ -186,17 +186,16 @@ public final class PackageHelper {
         }
     }
 
-    public static File findCamelCoreDirectory(MavenProject project, File dir) {
+    public static File findCamelCoreDirectory(File dir) {
         if (dir == null) {
             return null;
         }
         Path p = dir.toPath().resolve("core/camel-core");
         if (Files.isDirectory(p)) {
-            String version = project.getVersion();
-            return p.resolve("target").resolve("camel-core-" + version + ".jar").toFile();
+            return p.toFile();
         } else {
             // okay walk up the parent dir
-            return findCamelCoreDirectory(project, dir.getParentFile());
+            return findCamelCoreDirectory(dir.getParentFile());
         }
     }
 
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 4144823..c3d7f69 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
@@ -5,9 +5,9 @@
  * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.
@@ -21,15 +21,12 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -140,89 +137,79 @@ public class PackageLanguageMojo extends AbstractMojo {
         // and create json schema model file for this language
         try {
             if (apacheCamel && count > 0) {
-                File core = findCamelCoreJar(project);
+                File core = findCamelCoreDirectory(project.getBasedir());
                 if (core != null) {
-                    URL url = new URL("file", null, core.getAbsolutePath());
-                    try (URLClassLoader loader = new URLClassLoader(new URL[] {url})) {
-                        for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
-                            String name = entry.getKey();
-                            String javaType = entry.getValue();
-                            String modelName = asModelName(name);
-
-                            InputStream is = loader.getResourceAsStream("org/apache/camel/model/language/" + modelName + ".json");
-                            if (is == null) {
-                                // use file input stream if we build
-                                // camel-core itself, and thus do not have a
-                                // JAR which can be loaded by URLClassLoader
-                                is = new FileInputStream(new File(core, "org/apache/camel/model/language/" + modelName + ".json"));
+                    for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
+                        String name = entry.getKey();
+                        String javaType = entry.getValue();
+                        String modelName = asModelName(name);
+                        InputStream is = new FileInputStream(new File(core, "target/classes/org/apache/camel/model/language/" + modelName + ".json"));
+                        String json = loadText(is);
+                        LanguageModel languageModel = new LanguageModel();
+                        languageModel.setName(name);
+                        languageModel.setTitle("");
+                        languageModel.setModelName(modelName);
+                        languageModel.setLabel("");
+                        languageModel.setDescription("");
+                        languageModel.setJavaType(javaType);
+                        languageModel.setGroupId(project.getGroupId());
+                        languageModel.setArtifactId(project.getArtifactId());
+                        languageModel.setVersion(project.getVersion());
+
+                        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json, false);
+                        for (Map<String, String> row : rows) {
+                            if (row.containsKey("title")) {
+                                // title may be special for some
+                                // languages
+                                String title = asTitle(name, row.get("title"));
+                                languageModel.setTitle(title);
                             }
-                            String json = loadText(is);
-                            LanguageModel languageModel = new LanguageModel();
-                            languageModel.setName(name);
-                            languageModel.setTitle("");
-                            languageModel.setModelName(modelName);
-                            languageModel.setLabel("");
-                            languageModel.setDescription("");
-                            languageModel.setJavaType(javaType);
-                            languageModel.setGroupId(project.getGroupId());
-                            languageModel.setArtifactId(project.getArtifactId());
-                            languageModel.setVersion(project.getVersion());
-
-                            List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json, false);
-                            for (Map<String, String> row : rows) {
-                                if (row.containsKey("title")) {
-                                    // title may be special for some
-                                    // languages
-                                    String title = asTitle(name, row.get("title"));
-                                    languageModel.setTitle(title);
-                                }
-                                if (row.containsKey("description")) {
-                                    // description may be special for some
-                                    // languages
-                                    String desc = asDescription(name, row.get("description"));
-                                    languageModel.setDescription(desc);
-                                }
-                                if (row.containsKey("label")) {
-                                    languageModel.setLabel(row.get("label"));
-                                }
-                                if (row.containsKey("deprecated")) {
-                                    languageModel.setDeprecated(row.get("deprecated"));
-                                }
-                                if (row.containsKey("deprecationNote")) {
-                                    languageModel.setDeprecationNote(row.get("deprecationNote"));
-                                }
-                                if (row.containsKey("javaType")) {
-                                    languageModel.setModelJavaType(row.get("javaType"));
-                                }
-                                if (row.containsKey("firstVersion")) {
-                                    languageModel.setFirstVersion(row.get("firstVersion"));
-                                }
+                            if (row.containsKey("description")) {
+                                // description may be special for some
+                                // languages
+                                String desc = asDescription(name, row.get("description"));
+                                languageModel.setDescription(desc);
                             }
-                            if (log.isDebugEnabled()) {
-                                log.debug("Model: " + languageModel);
+                            if (row.containsKey("label")) {
+                                languageModel.setLabel(row.get("label"));
                             }
-
-                            // build json schema for the data format
-                            String properties = after(json, "  \"properties\": {");
-                            String schema = createParameterJsonSchema(languageModel, properties);
-                            if (log.isDebugEnabled()) {
-                                log.debug("JSon schema\n" + schema);
+                            if (row.containsKey("deprecated")) {
+                                languageModel.setDeprecated(row.get("deprecated"));
+                            }
+                            if (row.containsKey("deprecationNote")) {
+                                languageModel.setDeprecationNote(row.get("deprecationNote"));
+                            }
+                            if (row.containsKey("javaType")) {
+                                languageModel.setModelJavaType(row.get("javaType"));
                             }
+                            if (row.containsKey("firstVersion")) {
+                                languageModel.setFirstVersion(row.get("firstVersion"));
+                            }
+                        }
+                        if (log.isDebugEnabled()) {
+                            log.debug("Model: " + languageModel);
+                        }
 
-                            // write this to the directory
-                            File dir = new File(schemaOutDir, schemaSubDirectory(languageModel.getJavaType()));
-                            dir.mkdirs();
+                        // build json schema for the data format
+                        String properties = after(json, "  \"properties\": {");
+                        String schema = createParameterJsonSchema(languageModel, properties);
+                        if (log.isDebugEnabled()) {
+                            log.debug("JSon schema\n" + schema);
+                        }
 
-                            File out = new File(dir, name + ".json");
-                            OutputStream fos = buildContext.newFileOutputStream(out);
-                            fos.write(schema.getBytes());
-                            fos.close();
+                        // write this to the directory
+                        File dir = new File(schemaOutDir, schemaSubDirectory(languageModel.getJavaType()));
+                        dir.mkdirs();
 
-                            buildContext.refresh(out);
+                        File out = new File(dir, name + ".json");
+                        OutputStream fos = buildContext.newFileOutputStream(out);
+                        fos.write(schema.getBytes());
+                        fos.close();
 
-                            if (log.isDebugEnabled()) {
-                                log.debug("Generated " + out + " containing JSon schema for " + name + " language");
-                            }
+                        buildContext.refresh(out);
+
+                        if (log.isDebugEnabled()) {
+                            log.debug("Generated " + out + " containing JSon schema for " + name + " language");
                         }
                     }
                 } else {
@@ -344,10 +331,6 @@ public class PackageLanguageMojo extends AbstractMojo {
         return description;
     }
 
-    private static File findCamelCoreJar(MavenProject project) {
-        return findCamelCoreDirectory(project, project.getBasedir());
-    }
-
     private static String schemaSubDirectory(String javaType) {
         int idx = javaType.lastIndexOf('.');
         String pckName = javaType.substring(0, idx);