You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2011/09/15 22:49:47 UTC

Maven plugin to generate SCA composite diagrams

FYI:

I have moved the composite diagram generator into trunk under java-2.x/trunk/modules/composite-diagram/. I also created a maven plugin to generate the diagrams during the build. It's under sca-java-2.x/trunk/maven/tuscany-diagram-plugin.

Thanks,
Raymond
________________________________________________________________ 
Raymond Feng
rfeng@apache.org
Apache Tuscany PMC member and committer: tuscany.apache.org
Co-author of Tuscany SCA In Action book: www.tuscanyinaction.com
Personal Web Site: www.enjoyjava.com
________________________________________________________________

Begin forwarded message:

> From: rfeng@apache.org
> Date: September 15, 2011 11:53:59 AM PDT
> To: commits@tuscany.apache.org
> Subject: svn commit: r1171222 - in /tuscany/sca-java-2.x/trunk/modules/composite-diagram: ./ META-INF/ src/main/java/org/apache/tuscany/sca/diagram/generator/ src/main/java/org/apache/tuscany/sca/diagram/io/ src/main/java/org/apache/tuscany/sca/diagram/main/ sr...
> Reply-To: dev@tuscany.apache.org
> 
> Author: rfeng
> Date: Thu Sep 15 18:53:59 2011
> New Revision: 1171222
> 
> URL: http://svn.apache.org/viewvc?rev=1171222&view=rev
> Log:
> Copy the composite diagram generator into modules
> 
> Added:
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/
>      - copied from r1164134, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF   (with props)
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/pom.xml
>      - copied, changed from r1171217, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/pom.xml
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java
>      - copied unchanged from r1166477, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/generator/DiagramGenerator.java
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java
>      - copied unchanged from r1171217, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/main/java/org/apache/tuscany/sca/diagram/main/Main.java
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/src/test/java/org/apache/tuscany/sca/diagram/layout/DiagramGeneratorTestCase.java
>      - copied unchanged from r1171217, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/src/test/java/org/apache/tuscany/sca/diagram/layout/DiagramGeneratorTestCase.java
> Modified:
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/src/main/java/org/apache/tuscany/sca/diagram/io/
>    tuscany/sca-java-2.x/trunk/modules/composite-diagram/src/main/java/org/apache/tuscany/sca/impl/
> 
> Added: tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF?rev=1171222&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF (added)
> +++ tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF Thu Sep 15 18:53:59 2011
> @@ -0,0 +1,23 @@
> +Manifest-Version: 1.0
> +Export-Package: org.apache.tuscany.sca.diagram.artifacts;version="2.0.0",
> + org.apache.tuscany.sca.diagram.generator;version="2.0.0",
> + org.apache.tuscany.sca.diagram.html;version="2.0.0",
> + org.apache.tuscany.sca.diagram.layout;version="2.0.0",
> + org.apache.tuscany.sca.diagram.main;version="2.0.0"
> +SCA-Version: 1.1
> +Bundle-Name: Apache Tuscany SCA Composite Diagram
> +Bundle-Vendor: The Apache Software Foundation
> +Bundle-Version: 2.0.0
> +Bundle-ManifestVersion: 2
> +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
> +Bundle-Description: Apache Tuscany SCA Composite Diagram
> +Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0"
> + javax.xml.namespace,
> + javax.xml.parsers,
> + javax.xml.transform,
> + javax.xml.transform.dom,
> + javax.xml.transform.stream,
> + org.w3c.dom
> +Bundle-SymbolicName: org.apache.tuscany.sca.diagram
> +Bundle-DocURL: http://www.apache.org/
> +Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/composite-diagram/META-INF/MANIFEST.MF
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Copied: tuscany/sca-java-2.x/trunk/modules/composite-diagram/pom.xml (from r1171217, tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/pom.xml)
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/composite-diagram/pom.xml?p2=tuscany/sca-java-2.x/trunk/modules/composite-diagram/pom.xml&p1=tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/pom.xml&r1=1171217&r2=1171222&rev=1171222&view=diff
> ==============================================================================
> --- tuscany/collaboration/GSoC-2011-Nirmal/CompositeDiagramGeneratorUsingBatik/pom.xml (original)
> +++ tuscany/sca-java-2.x/trunk/modules/composite-diagram/pom.xml Thu Sep 15 18:53:59 2011
> @@ -18,7 +18,15 @@
>     * under the License.    <groupId>org.apache.tuscany.sca</groupId>
> -->
> <project>
> +
>     <modelVersion>4.0.0</modelVersion>
> +    <parent>
> +        <groupId>org.apache.tuscany.sca</groupId>
> +        <artifactId>tuscany-modules</artifactId>
> +        <version>2.0-SNAPSHOT</version>
> +        <relativePath>../pom.xml</relativePath>
> +    </parent>
> +
>     <groupId>org.apache.tuscany.sca</groupId>
>     <artifactId>tuscany-composite-diagram</artifactId>
>     <version>2.0-SNAPSHOT</version>
> @@ -116,7 +124,7 @@
> 
>         <dependency>
>             <groupId>org.apache.tuscany.sca</groupId>
> -            <artifactId>tuscany-base-runtime</artifactId>
> +            <artifactId>tuscany-assembly</artifactId>
>             <version>2.0-SNAPSHOT</version>
>         </dependency>
> 
> 
> 
Begin forwarded message:

> From: rfeng@apache.org
> Date: September 15, 2011 11:36:03 AM PDT
> To: commits@tuscany.apache.org
> Subject: svn commit: r1171218 - in /tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin: ./ src/main/java/org/apache/tuscany/maven/plugin/ src/main/java/org/apache/tuscany/sca/ src/main/java/org/apache/tuscany/sca/diagram/ src/main/java/org/apache/tuscany/s...
> Reply-To: dev@tuscany.apache.org
> 
> Author: rfeng
> Date: Thu Sep 15 18:36:02 2011
> New Revision: 1171218
> 
> URL: http://svn.apache.org/viewvc?rev=1171218&view=rev
> Log:
> Add a maven plugin to generate SCA diagrams
> 
> Added:
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/
>      - copied from r1157914, tuscany/sca-java-2.x/trunk/maven/tuscany-maven-plugin/
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java   (with props)
> Modified:
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/README
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/pom.xml
>    tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/maven/plugin/
> 
> Modified: tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/README
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/README?rev=1171218&r1=1157914&r2=1171218&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/README (original)
> +++ tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/README Thu Sep 15 18:36:02 2011
> @@ -1,21 +1,20 @@
> -This module is a Maven plugin for starting a Tuscany runtime which runs the project as an SCA contribution.
> +This module is a Maven plugin for generating diagrams for SCA composites.
> 
> -To configure the project add the following to the SCA contribution's pom.xml:
> +To configure the project add the following to the pom.xml:
> 
>    <build>
>       ...
>       <plugins>
>          <plugin>
>             <groupId>org.apache.tuscany.sca</groupId>
> -            <artifactId>tuscany-maven-plugin</artifactId>
> +            <artifactId>tuscany-diagram-plugin</artifactId>
>          </plugin>
>       ...
>       </plugins>
>    </build>
> 
> -To run the contribution in Tuscany use "mvn tuscany:run"
> 
> Optional parameters are:
> -  config - uri string to configure the Tuscany runtime
> -  contributions - additional SCA contributions to install along with the project contribution
> +  outputDirectory - The output directory for the generated diagrams, default to ${project.build.directory}/composite-diagrams
> +  composites - A list of composite files
> 
> 
> Modified: tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/pom.xml
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/pom.xml?rev=1171218&r1=1157914&r2=1171218&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/pom.xml (original)
> +++ tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/pom.xml Thu Sep 15 18:36:02 2011
> @@ -26,83 +26,32 @@
>         <version>2.0-SNAPSHOT</version>
>     </parent>
> 
> -    <artifactId>tuscany-maven-plugin</artifactId>
> +    <artifactId>tuscany-diagram-plugin</artifactId>
>     <packaging>maven-plugin</packaging>
> -    <name>Apache Tuscany Maven Tuscany Plugin</name>
> +    <name>Apache Tuscany Maven SCA Composite Diagram Plugin</name>
>     <version>2.0-SNAPSHOT</version>
> 
>     <dependencies>
>        <dependency>
>           <groupId>org.apache.maven</groupId>
>           <artifactId>maven-project</artifactId>
> -          <version>2.0.3</version>
> +          <version>2.1.0</version>
>        </dependency>
>        <dependency>
>           <groupId>org.apache.maven</groupId>
>           <artifactId>maven-plugin-api</artifactId>
> -          <version>2.0.3</version>
> +          <version>2.1.0</version>
>        </dependency>
>           <dependency>
>           <groupId>org.apache.maven</groupId>
>           <artifactId>maven-artifact</artifactId>
> -          <version>2.0.3</version>
> +          <version>2.1.0</version>
>        </dependency>
>        <dependency>
>           <groupId>org.apache.tuscany.sca</groupId>
> -          <artifactId>tuscany-base-runtime</artifactId>
> +          <artifactId>tuscany-composite-diagram</artifactId>
>           <version>2.0-SNAPSHOT</version>
>        </dependency>
> -       <dependency>
> -          <groupId>org.apache.tuscany.sca</groupId>
> -          <artifactId>tuscany-domain-hazelcast</artifactId>
> -          <version>2.0-SNAPSHOT</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>jline</groupId>
> -          <artifactId>jline</artifactId>
> -          <version>0.9.95-huynhjl</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.mortbay.jetty</groupId>
> -          <artifactId>jetty</artifactId>
> -          <version>6.1.19</version>
> -          <exclusions>
> -             <exclusion>
> -                <groupId>org.mortbay.jetty</groupId>
> -	            <artifactId>servlet-api</artifactId>
> -              </exclusion>
> -          </exclusions>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.apache.tomcat</groupId>
> -          <artifactId>tomcat-servlet-api</artifactId>
> -          <version>7.0.8</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.apache.tomcat.embed</groupId>
> -          <artifactId>tomcat-embed-core</artifactId>
> -          <version>7.0.8</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.apache.tomcat.embed</groupId>
> -          <artifactId>tomcat-embed-logging-juli</artifactId>
> -          <version>7.0.8</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.apache.tomcat.embed</groupId>
> -          <artifactId>tomcat-embed-jasper</artifactId>
> -          <version>7.0.8</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.apache.tomcat</groupId>
> -          <artifactId>tomcat-jasper-el</artifactId>
> -          <version>7.0.8</version>
> -       </dependency>
> -       <dependency>
> -          <groupId>org.eclipse.jdt.core.compiler</groupId>
> -          <artifactId>ecj</artifactId>
> -          <version>3.5.1</version>
> -       </dependency>
> 
>     </dependencies>
> 
> 
> Added: tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java?rev=1171218&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java (added)
> +++ tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java Thu Sep 15 18:36:02 2011
> @@ -0,0 +1,140 @@
> +/*
> + * 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.tuscany.sca.diagram.maven.plugin;
> +
> +import java.io.File;
> +import java.io.FileFilter;
> +import java.util.ArrayList;
> +import java.util.Arrays;
> +import java.util.List;
> +
> +import org.apache.maven.plugin.AbstractMojo;
> +import org.apache.maven.plugin.MojoExecutionException;
> +import org.apache.maven.plugin.MojoFailureException;
> +import org.apache.maven.project.MavenProject;
> +
> +/**
> + * Maven Mojo to generate the diagrams for SCA composites 
> + * 
> + * 
> + * @goal generate
> + * @requiresDependencyResolution runtime
> + * @phase generate-sources
> + * @description 
> + */
> +public class TuscanyDiagramMojo extends AbstractMojo {
> +
> +    /**
> +     * The maven project.
> +     *
> +     * @parameter expression="${project}"
> +     * @required
> +     * @readonly
> +     */
> +    private MavenProject project;
> +
> +    /**
> +     * @parameter expression="${contributions}" 
> +     */
> +    private File[] contributions;
> +
> +    /**
> +     * @parameter expression="${composites}" 
> +     */
> +    private File[] composites;
> +
> +    /**
> +     * @parameter expression="${project.basedir}/src/main/resources"
> +     */
> +    private File compositeDirectory;
> +
> +    /**
> +     * @parameter expression="${project.build.directory}/composite-diagrams"
> +     */
> +    private File outputDirectory;
> +
> +    /**
> +     * @parameter
> +     */
> +    private boolean generateSVG = true;
> +
> +    /**
> +     * @parameter 
> +     */
> +    private boolean generateJPG = false;
> +
> +    /**
> +     * @parameter 
> +     */
> +    private boolean generateHTML = false;
> +
> +    public void execute() throws MojoExecutionException, MojoFailureException {
> +        List<File> compositeFiles = null;
> +        if (composites == null || composites.length == 0) {
> +            compositeFiles = listCompositeFiles();
> +        } else {
> +            compositeFiles = Arrays.asList(composites);
> +        }
> +
> +        outputDirectory.mkdirs();
> +        for (File f : compositeFiles) {
> +            try {
> +                getLog().info("Generating diagram for " + f);
> +                org.apache.tuscany.sca.diagram.main.Main.generate(outputDirectory,
> +                                                                  generateSVG,
> +                                                                  generateHTML,
> +                                                                  generateJPG,
> +                                                                  f.getAbsolutePath());
> +            } catch (Exception e) {
> +                throw new MojoExecutionException(e.getMessage(), e);
> +            }
> +        }
> +
> +    }
> +
> +    private List<File> listCompositeFiles() {
> +        List<File> compositeFiles = new ArrayList<File>();
> +        // getLog().info(compositeDirectory.getAbsolutePath());
> +        listCompositeFiles(compositeDirectory, compositeFiles);
> +        return compositeFiles;
> +    }
> +
> +    private void listCompositeFiles(File dir, List<File> files) {
> +
> +        if (!dir.isDirectory()) {
> +            return;
> +        }
> +        File[] list = dir.listFiles(new FileFilter() {
> +
> +            @Override
> +            public boolean accept(File pathname) {
> +                return pathname.getName().endsWith(".composite") || pathname.isDirectory();
> +            }
> +        });
> +
> +        for (File f : list) {
> +            if (f.isFile()) {
> +                files.add(f);
> +            } else {
> +                listCompositeFiles(f, files);
> +            }
> +        }
> +    }
> +
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/maven/tuscany-diagram-plugin/src/main/java/org/apache/tuscany/sca/diagram/maven/plugin/TuscanyDiagramMojo.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
>