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
>
>