CAMEL-7999: Maven plugin to generate a list of all Camel components.

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

Branch: refs/heads/master
Commit: fa6e03be5d1577a1c8a4666fdb978f2181714d63
Parents: 28c27b3
Author: Claus Ibsen <[email protected]>
Authored: Thu Nov 13 15:21:40 2014 +0100
Committer: Claus Ibsen <[email protected]>
Committed: Thu Nov 13 15:21:40 2014 +0100

----------------------------------------------------------------------
 .../maven/camel-package-maven-plugin/pom.xml    |  53 ++-
 .../camel/maven/packaging/EndpointMojo.java     | 471 -------------------
 .../camel-package-maven-plugin.properties       |   3 -
 3 files changed, 27 insertions(+), 500 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fa6e03be/tooling/maven/camel-package-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/pom.xml 
b/tooling/maven/camel-package-maven-plugin/pom.xml
index 026c1dc..75cf39f 100644
--- a/tooling/maven/camel-package-maven-plugin/pom.xml
+++ b/tooling/maven/camel-package-maven-plugin/pom.xml
@@ -15,7 +15,8 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -34,30 +35,30 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-core</artifactId>
-            <scope>provided</scope>
-            <version>2.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-artifact</artifactId>
-            <scope>provided</scope>
-            <version>2.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <scope>provided</scope>
-            <version>2.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-project</artifactId>
-            <scope>provided</scope>
-            <version>2.2.1</version>
-        </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <scope>provided</scope>
+      <version>2.2.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <scope>provided</scope>
+      <version>2.2.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <scope>provided</scope>
+      <version>2.2.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <scope>provided</scope>
+      <version>2.2.1</version>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
@@ -67,7 +68,6 @@
       <artifactId>maven-reporting-impl</artifactId>
     </dependency>
 
-
     <!-- add some logging to the classpath -->
     <dependency>
       <groupId>log4j</groupId>
@@ -78,4 +78,5 @@
       <artifactId>slf4j-log4j12</artifactId>
     </dependency>
   </dependencies>
+
 </project>

http://git-wip-us.apache.org/repos/asf/camel/blob/fa6e03be/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointMojo.java
deleted file mode 100644
index 4c63ac1..0000000
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointMojo.java
+++ /dev/null
@@ -1,471 +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.maven.packaging;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.siterenderer.Renderer;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.AbstractMavenReport;
-import org.apache.maven.reporting.MavenReportException;
-import org.codehaus.plexus.util.IOUtil;
-
-/**
- * Generates a HTML report for all the Camel endpoints and their configuration 
parameters
- *
- * @goal endpoints
- * @phase site
- */
-public class EndpointMojo extends AbstractMavenReport {
-
-    /**
-     * Reference to Maven Project.
-     *
-     * @parameter property="project"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * @component
-     * @required
-     * @readonly
-     */
-    private Renderer renderer;
-
-    /**
-     * Base output directory for reports.
-     *
-     * @parameter default-value="${project.build.directory}/site"
-     * @required
-     */
-    private File outputDirectory;
-
-
-    protected void executeReport(final Locale locale) throws 
MavenReportException {
-        try {
-            File dir = new File(project.getBuild().getOutputDirectory(), 
"org/apache/camel/component");
-            getLog().info("Looking into directory " + dir.getAbsolutePath());
-            if (dir.exists() && dir.isDirectory()) {
-                File[] files = dir.listFiles(new FilenameFilter() {
-                    @Override
-                    public boolean accept(File dir, String name) {
-                        return name.toLowerCase().endsWith(".html");
-                    }
-                });
-                if (files != null && files.length > 0) {
-                    boolean showIndex = files.length > 1;
-                    Sink sink = getSink();
-                    if (sink != null) {
-                        StringBuilder buffer = new StringBuilder();
-                        sink.head();
-                        sink.title();
-                        sink.text("Camel Endpoints");
-                        sink.title_();
-                        sink.rawText("<style>\n"
-                                + "th, td {\n"
-                                + "  text-align:left;\n\n"
-                                + "}\n"
-                                + "</style>\n");
-                        sink.head_();
-
-                        sink.body();
-                        sink.section1();
-                        sink.sectionTitle1();
-                        sink.text("Camel Endpoints");
-                        sink.sectionTitle1_();
-
-                        if (showIndex) {
-                            sink.list();
-                        }
-                        for (File file : files) {
-                            getLog().info("found " + file.getAbsolutePath());
-
-                            String linkName = file.getName();
-                            if (linkName.endsWith(".html")) {
-                                linkName = linkName.substring(0, 
linkName.length() - 5);
-                            }
-                            String endpointHtml = IOUtil.toString(new 
FileInputStream(file));
-                            endpointHtml = extractBodyContents(endpointHtml);
-
-                            if (showIndex) {
-                                sink.listItem();
-                                sink.link("#" + linkName);
-                                sink.text(linkName);
-                                sink.link_();
-                                sink.listItem_();
-
-                                buffer.append("<a name='" + linkName + "'>\n");
-                                buffer.append(endpointHtml);
-                                buffer.append("</a>\n");
-                            } else {
-                                sink.section1_();
-
-                                sink.section2();
-                                sink.rawText(endpointHtml);
-                                sink.section2_();
-                            }
-                        }
-                        if (showIndex) {
-                            sink.list_();
-                            sink.section1_();
-
-                            sink.section2();
-                            sink.rawText(buffer.toString());
-                            sink.section2_();
-                        }
-                        sink.body_();
-                        sink.flush();
-                        sink.close();
-                    }
-                }
-            }
-        } catch (Exception e) {
-            final MavenReportException ex = new 
MavenReportException(e.getMessage());
-            ex.initCause(e.getCause());
-            throw ex;
-        }
-    }
-
-    /**
-     * Extracts the content between <body> and </body>
-     */
-    protected String extractBodyContents(String html) {
-        String body = "<body>";
-        int idx = html.indexOf(body);
-        if (idx > 0) {
-            html = html.substring(idx + body.length());
-        }
-        idx = html.lastIndexOf("</body>");
-        if (idx > 0) {
-            html = html.substring(0, idx);
-        }
-        return html;
-    }
-
-
-/*
-    public void execute() throws MojoExecutionException {
-        this.execute(this.buildDirectory, Locale.getDefault());
-        try {
-            writeIndexHtmlFile(outputDirectory, "index.html", 
indexHtmlContent);
-        } catch (IOException e) {
-            throw new MojoExecutionException("Failed: " + e, e);
-        }
-    }
-
-    */
-/**
- * Executes DOT generator.
- *
- * @param outputDir report output directory.
- * @param locale report locale.
- * @throws org.apache.maven.plugin.MojoExecutionException if there were any 
execution errors.
- *//*
-
-    protected void execute(final File outputDir, final Locale locale) throws 
MojoExecutionException {
-        outputDir.mkdirs();
-
-        List<File> files = new ArrayList<File>();
-        appendFiles(files, outputDirectory);
-
-        try {
-            Set<String> contextNames = new HashSet<String>();
-            for (File file : files) {
-                String contextName = file.getParentFile().getName();
-                contextNames.add(contextName);
-            }
-
-            boolean multipleCamelContexts = contextNames.size() > 1;
-            int size = files.size();
-            for (int i = 0; i < size; i++) {
-                File file = files.get(i);
-                String contextName = null;
-                if (multipleCamelContexts) {
-                    contextName = file.getParentFile().getName();
-                }
-
-                getLog().info("Generating contextName: " + contextName + " 
file: " + file + "");
-
-                generate(i, file, contextName);
-            }
-
-            if (multipleCamelContexts) {
-                // lets generate an index page which lists each indiviual
-                // CamelContext file
-                StringWriter buffer = new StringWriter();
-                PrintWriter out = new PrintWriter(buffer);
-
-                out.println("<h1>Camel Contexts</h1>");
-                out.println();
-
-                out.println("<ul>");
-                for (String contextName : contextNames) {
-                    out.print("  <li><a href='");
-                    out.print(contextName);
-                    out.print("/routes.html'>");
-                    out.print(contextName);
-                    out.println("</a></li>");
-                }
-                out.println("</ul>");
-                indexHtmlContent = buffer.toString();
-            }
-        } catch (CommandLineException e) {
-            throw new MojoExecutionException("Failed: " + e, e);
-        } catch (IOException e) {
-            throw new MojoExecutionException("Failed: " + e, e);
-        }
-    }
-
-    private void generate(int index, File file, String contextName) throws 
CommandLineException,
-        MojoExecutionException, IOException {
-
-        StringWriter buffer = new StringWriter();
-        PrintWriter out = new PrintWriter(buffer);
-        printHtmlHeader(out, contextName);
-        printHtmlFileHeader(out, file);
-        for (String format : graphvizOutputTypes) {
-            String generated = convertFile(file, format);
-
-            if (format.equals("cmapx") && generated != null) {
-                // lets include the generated file inside the html
-                addFileToBuffer(out, new File(generated));
-            }
-        }
-        printHtmlFileFooter(out, file);
-        printHtmlFooter(out);
-
-        String content = buffer.toString();
-        String name = file.getName();
-        if (name.equalsIgnoreCase("routes.dot") || index == 0) {
-            indexHtmlContent = content;
-        }
-        int idx = name.lastIndexOf(".");
-        if (idx >= 0) {
-            name = name.substring(0, idx);
-            name += ".html";
-        }
-        writeIndexHtmlFile(file.getParentFile(), name, content);
-    }
-
-    protected void writeIndexHtmlFile(File dir, String fileName, String 
content) throws IOException {
-        // File dir = outputDirectory;
-        dir.mkdirs();
-        File html = new File(dir, fileName);
-        PrintWriter out = null;
-        try {
-            out = new PrintWriter(new FileWriter(html));
-            out.println("<html>");
-            out.println("<head>");
-            out.println("</head>");
-            out.println("<body>");
-            out.println();
-            if (content == null) {
-                out.write("<p>No EIP diagrams available</p>");
-            } else {
-                out.write(content);
-            }
-            out.println("</body>");
-            out.println("</html>");
-        } finally {
-            String description = "Failed to close html output file";
-            close(out, description);
-        }
-    }
-
-    protected void printHtmlHeader(PrintWriter out, String contextName) {
-        if (contextName != null) {
-            out.println("<h1>EIP Patterns for CamelContext: " + contextName + 
"</h1>");
-        } else {
-            out.println("<h1>Camel EIP Patterns</h1>");
-        }
-        out.println();
-    }
-
-    protected void printHtmlFileHeader(PrintWriter out, File file) {
-        out.println("<p>");
-        out.println("  <img src='" + removeFileExtension(file.getName()) + 
".png' usemap='#CamelRoutes'>");
-    }
-
-    protected void printHtmlFileFooter(PrintWriter out, File file) {
-        out.println("  </img>");
-        out.println("</p>");
-        out.println();
-    }
-
-    protected void printHtmlFooter(PrintWriter out) {
-        out.println();
-    }
-
-    protected void close(Closeable closeable, String description) {
-        if (closeable != null) {
-            try {
-                closeable.close();
-            } catch (IOException e) {
-                getLog().warn(description + ": " + e);
-            }
-        }
-    }
-
-    protected String convertFile(File file, String format) throws 
CommandLineException {
-        Log log = getLog();
-        if (!useDot) {
-            log.info("DOT generation disabled.");
-            return null;
-        } else {
-            if (dotHelpExitCode() != 0) {
-                log.info("'dot -?' execution failed so DOT generation 
disabled.");
-                return null;
-            }
-        }
-        if (this.executable == null || this.executable.length() == 0) {
-            log.warn("Parameter <executable/> was not set in the pom.xml.  
Skipping conversion.");
-            return null;
-        }
-
-        String generatedFileName = removeFileExtension(file.getAbsolutePath()) 
+ "." + format;
-        Commandline cl = new Commandline();
-        cl.setExecutable(executable);
-        cl.createArg().setValue("-T" + format);
-        cl.createArg().setValue("-o");
-        cl.createArg().setValue(generatedFileName);
-        cl.createArg().setValue(file.getAbsolutePath());
-
-        log.debug("executing: " + cl.toString());
-
-        CommandLineUtils.StringStreamConsumer stdout = new 
CommandLineUtils.StringStreamConsumer();
-        CommandLineUtils.StringStreamConsumer stderr = new 
CommandLineUtils.StringStreamConsumer();
-
-        CommandLineUtils.executeCommandLine(cl, stdout, stderr);
-
-        String output = stdout.getOutput();
-        if (output.length() > 0) {
-            log.debug(output);
-        }
-        String errOutput = stderr.getOutput();
-        if (errOutput.length() > 0) {
-            log.warn(errOutput);
-        }
-        return generatedFileName;
-    }
-
-    private int dotHelpExitCode() throws CommandLineException {
-        Commandline cl = new Commandline();
-        cl.setExecutable(executable);
-        cl.createArg().setValue("-?");
-
-        CommandLineUtils.StringStreamConsumer stdout = new 
CommandLineUtils.StringStreamConsumer();
-        CommandLineUtils.StringStreamConsumer stderr = new 
CommandLineUtils.StringStreamConsumer();
-
-        return CommandLineUtils.executeCommandLine(cl, stdout, stderr);
-    }
-
-    protected String removeFileExtension(String name) {
-        int idx = name.lastIndexOf(".");
-        if (idx > 0) {
-            return name.substring(0, idx);
-        } else {
-            return name;
-        }
-    }
-
-    private void appendFiles(List<File> output, File file) {
-        if (file.isDirectory()) {
-            appendDirectory(output, file);
-        } else {
-            if (isValid(file)) {
-                output.add(file);
-            }
-        }
-    }
-
-    private void appendDirectory(List<File> output, File dir) {
-        File[] files = dir.listFiles();
-        for (File file : files) {
-            appendFiles(output, file);
-        }
-    }
-
-    private boolean isValid(File file) {
-        String name = file.getName().toLowerCase();
-        return name.endsWith(".dot");
-    }
-
-    private void addFileToBuffer(PrintWriter out, File file) throws 
MojoExecutionException {
-        BufferedReader reader = null;
-        try {
-            reader = IOHelper.buffered(new FileReader(file));
-            while (true) {
-                String line = reader.readLine();
-                if (line == null) {
-                    break;
-                } else {
-                    out.println(line);
-                }
-            }
-        } catch (IOException e) {
-            throw new MojoExecutionException("Failed: " + e, e);
-        } finally {
-            close(reader, "cmapx file");
-        }
-    }
-*/
-
-    /**
-     * Gets resource bundle for given locale.
-     *
-     * @param locale locale
-     * @return resource bundle
-     */
-    protected ResourceBundle getBundle(final Locale locale) {
-        return ResourceBundle
-                .getBundle("camel-package-maven-plugin", locale, 
this.getClass().getClassLoader());
-    }
-
-    protected Renderer getSiteRenderer() {
-        return this.renderer;
-    }
-
-    protected String getOutputDirectory() {
-        return this.outputDirectory.getAbsolutePath();
-    }
-
-    protected MavenProject getProject() {
-        return this.project;
-    }
-
-    public String getDescription(final Locale locale) {
-        return getBundle(locale).getString("report.endpoint.description");
-    }
-
-    /**
-     * @see org.apache.maven.reporting.MavenReport#getName(java.util.Locale)
-     */
-    public String getName(final Locale locale) {
-        return getBundle(locale).getString("report.endpoint.name");
-    }
-
-    public String getOutputName() {
-        return "camelEndpoints";
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/fa6e03be/tooling/maven/camel-package-maven-plugin/src/main/resources/camel-package-maven-plugin.properties
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/camel-package-maven-plugin.properties
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/camel-package-maven-plugin.properties
index f266148..c992900 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/camel-package-maven-plugin.properties
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/camel-package-maven-plugin.properties
@@ -15,7 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-report.endpoint.name = Camel Endpoints
-report.endpoint.description = The reference documentation for the Camel 
Endpoints
-report.endpoint.header = Camel Endpoints
 

Reply via email to