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 2015/05/26 14:12:18 UTC

[2/3] camel git commit: More m2e improvements for camel-package-maven-plugin

More m2e improvements for camel-package-maven-plugin

 - Make generated folder visible in Eclipse
 - Uses build context output stream for better integration
 - Avoid generating json files when input is unchanged


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa88e170
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa88e170
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa88e170

Branch: refs/heads/master
Commit: fa88e17088d521e50712ccf3a837ee3c61821d12
Parents: ef99689
Author: Victor Noël <vi...@linagora.com>
Authored: Fri May 22 15:36:51 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue May 26 11:35:02 2015 +0200

----------------------------------------------------------------------
 .../maven/packaging/PackageComponentMojo.java   | 26 ++++++-----
 .../maven/packaging/PackageDataFormatMojo.java  | 48 ++++++++++++--------
 .../maven/packaging/PackageLanguageMojo.java    | 40 ++++++++++------
 3 files changed, 70 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
index 92ed09d..b3d8207 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
@@ -17,10 +17,9 @@
 package org.apache.camel.maven.packaging;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.OutputStream;
+import java.util.Collections;
 import java.util.Properties;
 
 import org.apache.maven.model.Resource;
@@ -84,13 +83,19 @@ public class PackageComponentMojo extends AbstractMojo {
     }
 
     public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File componentOutDir, BuildContext buildContext) throws MojoExecutionException {
-        
+
+        File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");
+
+        // first we need to setup the output directory because the next check
+        // can stop the build before the end and eclipse always needs to know about that directory 
+        if (projectHelper != null) {
+            projectHelper.addResource(project, componentOutDir.getPath(), Collections.singletonList("**/component.properties"), Collections.emptyList());
+        }
+
         if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/component")) {
             return;
         }
 
-        File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");
-
         StringBuilder buffer = new StringBuilder();
         int count = 0;
         for (Resource r : project.getBuild().getResources()) {
@@ -136,14 +141,13 @@ public class PackageComponentMojo extends AbstractMojo {
             camelMetaDir.mkdirs();
             File outFile = new File(camelMetaDir, "component.properties");
             try {
-                properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
-                buildContext.refresh(outFile);
+                try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+                    properties.store(os, "Generated by camel-package-maven-plugin");
+                }
+
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "components: " : "component: ") + names);
 
                 if (projectHelper != null) {
-                    List<String> includes = new ArrayList<String>();
-                    includes.add("**/component.properties");
-                    projectHelper.addResource(project, componentOutDir.getPath(), includes, new ArrayList<String>());
                     projectHelper.attachArtifact(project, "properties", "camelComponent", outFile);
                 }
             } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
----------------------------------------------------------------------
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 9ddfe28..b398787 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
@@ -16,15 +16,18 @@
  */
 package org.apache.camel.maven.packaging;
 
+import static org.apache.camel.maven.packaging.PackageHelper.after;
+import static org.apache.camel.maven.packaging.PackageHelper.loadText;
+import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
+
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -41,10 +44,6 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
-import static org.apache.camel.maven.packaging.PackageHelper.after;
-import static org.apache.camel.maven.packaging.PackageHelper.loadText;
-import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
-
 /**
  * Analyses the Camel plugins in a project and generates extra descriptor information for easier auto-discovery in Camel.
  *
@@ -105,12 +104,18 @@ public class PackageDataFormatMojo extends AbstractMojo {
 
     public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
 
+        File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");
+
+        // first we need to setup the output directory because the next check
+        // can stop the build before the end and eclipse always needs to know about that directory 
+        if (projectHelper != null) {
+            projectHelper.addResource(project, dataFormatOutDir.getPath(), Collections.singletonList("**/dataformat.properties"), Collections.emptyList());
+        }
+
         if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/dataformat")) {
             return;
         }
 
-        File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");
-
         Map<String, String> javaTypes = new HashMap<String, String>();
 
         StringBuilder buffer = new StringBuilder();
@@ -139,6 +144,14 @@ public class PackageDataFormatMojo extends AbstractMojo {
                             buffer.append(name);
                         }
 
+                        if (!buildContext.hasDelta(file)) {
+                            // if this file has not changed,
+                            // then no need to store the javatype
+                            // for the json file to be generated again
+                            // (but we do need the name above!)
+                            continue;
+                        }
+
                         // find out the javaType for each data format
                         try {
                             String text = loadText(new FileInputStream(file));
@@ -219,11 +232,9 @@ public class PackageDataFormatMojo extends AbstractMojo {
                                 dir.mkdirs();
 
                                 File out = new File(dir, name + ".json");
-                                FileOutputStream fos = new FileOutputStream(out, false);
-                                fos.write(schema.getBytes());
-                                fos.close();
-                                
-                                buildContext.refresh(out);
+                                try (OutputStream fos = buildContext.newFileOutputStream(out)) {
+                                    fos.write(schema.getBytes());
+                                }
 
                                 log.debug("Generated " + out + " containing JSon schema for " + name + " data format");
                             }
@@ -250,14 +261,13 @@ public class PackageDataFormatMojo extends AbstractMojo {
             camelMetaDir.mkdirs();
             File outFile = new File(camelMetaDir, "dataformat.properties");
             try {
-                properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
-                buildContext.refresh(outFile);
+                try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+                    properties.store(os, "Generated by camel-package-maven-plugin");
+                }
+
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "dataformats: " : "dataformat: ") + names);
 
                 if (projectHelper != null) {
-                    List<String> includes = new ArrayList<String>();
-                    includes.add("**/dataformat.properties");
-                    projectHelper.addResource(project, dataFormatOutDir.getPath(), includes, new ArrayList<String>());
                     projectHelper.attachArtifact(project, "properties", "camelDataFormat", outFile);
                 }
             } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
----------------------------------------------------------------------
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 8af508d..6a932cd 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
@@ -22,13 +22,12 @@ import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -105,12 +104,18 @@ public class PackageLanguageMojo extends AbstractMojo {
 
     public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper, File languageOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
 
+        File camelMetaDir = new File(languageOutDir, "META-INF/services/org/apache/camel/");
+
+        // first we need to setup the output directory because the next check
+        // can stop the build before the end and eclipse always needs to know about that directory 
+        if (projectHelper != null) {
+            projectHelper.addResource(project, languageOutDir.getPath(), Collections.singletonList("**/dataformat.properties"), Collections.emptyList());
+        }
+
         if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/language")) {
             return;
         }
 
-        File camelMetaDir = new File(languageOutDir, "META-INF/services/org/apache/camel/");
-
         Map<String, String> javaTypes = new HashMap<String, String>();
 
         StringBuilder buffer = new StringBuilder();
@@ -139,6 +144,14 @@ public class PackageLanguageMojo extends AbstractMojo {
                             buffer.append(name);
                         }
 
+                        if (!buildContext.hasDelta(file)) {
+                            // if this file has not changed,
+                            // then no need to store the javatype
+                            // for the json file to be generated again
+                            // (but we do need the name above!)
+                            continue;
+                        }
+
                         // find out the javaType for each data format
                         try {
                             String text = loadText(new FileInputStream(file));
@@ -215,10 +228,10 @@ public class PackageLanguageMojo extends AbstractMojo {
                                 dir.mkdirs();
 
                                 File out = new File(dir, name + ".json");
-                                FileOutputStream fos = new FileOutputStream(out, false);
-                                fos.write(schema.getBytes());
-                                fos.close();
-                                
+                                try (OutputStream fos = buildContext.newFileOutputStream(out)) {
+                                    fos.write(schema.getBytes());
+                                }
+
                                 buildContext.refresh(out);
 
                                 log.debug("Generated " + out + " containing JSon schema for " + name + " language");
@@ -246,14 +259,13 @@ public class PackageLanguageMojo extends AbstractMojo {
             camelMetaDir.mkdirs();
             File outFile = new File(camelMetaDir, "language.properties");
             try {
-                properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
-                buildContext.refresh(outFile);
+                try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+                    properties.store(os, "Generated by camel-package-maven-plugin");
+                }
+
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "languages: " : "language: ") + names);
 
                 if (projectHelper != null) {
-                    List<String> includes = new ArrayList<String>();
-                    includes.add("**/language.properties");
-                    projectHelper.addResource(project, languageOutDir.getPath(), includes, new ArrayList<String>());
                     projectHelper.attachArtifact(project, "properties", "camelLanguage", outFile);
                 }
             } catch (IOException e) {