You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by rk...@apache.org on 2016/08/04 19:05:23 UTC

[4/4] oozie git commit: OOZIE-2625 Drop workflowgenerator (rkanter)

OOZIE-2625 Drop workflowgenerator (rkanter)


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

Branch: refs/heads/master
Commit: aec39dd2669b22c385961c48759e7e037e15160d
Parents: d03d463
Author: Robert Kanter <rk...@cloudera.com>
Authored: Thu Aug 4 12:05:10 2016 -0700
Committer: Robert Kanter <rk...@cloudera.com>
Committed: Thu Aug 4 12:05:10 2016 -0700

----------------------------------------------------------------------
 distro/pom.xml                                  |  15 -
 distro/src/main/bin/oozie-setup.sh              |   7 -
 pom.xml                                         |  26 -
 release-log.txt                                 |   1 +
 src/main/assemblies/distro.xml                  |   8 -
 workflowgenerator/README.txt                    | 138 ----
 workflowgenerator/pom.xml                       | 185 -----
 .../src/main/assemblies/workflowgenerator.xml   |  30 -
 .../client/OozieDiagramController.java          | 452 -----------
 .../client/OozieWorkflowGenerator.java          | 765 -------------------
 .../client/property/Property.java               |  75 --
 .../client/property/PropertyTable.java          | 620 ---------------
 .../client/property/PropertyTableFactory.java   | 137 ----
 .../property/action/EmailPropertyTable.java     | 114 ---
 .../client/property/action/FSPropertyTable.java | 477 ------------
 .../property/action/JavaPropertyTable.java      | 189 -----
 .../property/action/MapReducePropertyTable.java | 156 ----
 .../property/action/PigPropertyTable.java       | 168 ----
 .../property/action/PipesPropertyTable.java     | 207 -----
 .../property/action/SSHPropertyTable.java       | 234 ------
 .../property/action/ShellPropertyTable.java     | 190 -----
 .../property/action/StreamingPropertyTable.java | 206 -----
 .../property/action/SubWFPropertyTable.java     | 140 ----
 .../property/control/DecisionPropertyTable.java | 423 ----------
 .../property/control/EndPropertyTable.java      |  67 --
 .../property/control/ForkPropertyTable.java     | 237 ------
 .../property/control/JoinPropertyTable.java     |  72 --
 .../property/control/KillPropertyTable.java     |  77 --
 .../property/control/StartPropertyTable.java    |  73 --
 .../property/control/WrkflowPropertyTable.java  | 169 ----
 .../client/widget/NodeWidget.java               | 272 -------
 .../client/widget/action/EmailActionWidget.java |  48 --
 .../client/widget/action/FSActionWidget.java    |  48 --
 .../client/widget/action/JavaActionWidget.java  |  49 --
 .../widget/action/MapReduceActionWidget.java    |  48 --
 .../client/widget/action/PigActionWidget.java   |  49 --
 .../client/widget/action/PipesActionWidget.java |  48 --
 .../client/widget/action/SSHActionWidget.java   |  48 --
 .../client/widget/action/ShellActionWidget.java |  48 --
 .../widget/action/StreamingActionWidget.java    |  48 --
 .../client/widget/action/SubWFActionWidget.java |  48 --
 .../widget/control/DecisionNodeWidget.java      |  49 --
 .../client/widget/control/EndNodeWidget.java    |  56 --
 .../client/widget/control/ForkNodeWidget.java   |  50 --
 .../client/widget/control/JoinNodeWidget.java   |  47 --
 .../client/widget/control/KillNodeWidget.java   |  42 -
 .../client/widget/control/StartNodeWidget.java  |  69 --
 .../workflowgenerator/workflowgenerator.gwt.xml |  43 --
 .../src/main/resources/img/action.png           | Bin 889 -> 0 bytes
 .../src/main/resources/img/add-btn.png          | Bin 1656 -> 0 bytes
 .../src/main/resources/img/decision.png         | Bin 1042 -> 0 bytes
 .../src/main/resources/img/del-btn.png          | Bin 1521 -> 0 bytes
 .../src/main/resources/img/distcp-action.png    | Bin 1584 -> 0 bytes
 .../src/main/resources/img/email-action.png     | Bin 1454 -> 0 bytes
 .../src/main/resources/img/end.png              | Bin 1246 -> 0 bytes
 .../src/main/resources/img/fork-shape.png       | Bin 1591 -> 0 bytes
 .../src/main/resources/img/fork.png             | Bin 2078 -> 0 bytes
 .../src/main/resources/img/fs-action.png        | Bin 1310 -> 0 bytes
 .../src/main/resources/img/hive-action.png      | Bin 1401 -> 0 bytes
 .../src/main/resources/img/java-action.png      | Bin 1428 -> 0 bytes
 .../src/main/resources/img/join-shape.png       | Bin 1609 -> 0 bytes
 .../src/main/resources/img/join.png             | Bin 2141 -> 0 bytes
 .../src/main/resources/img/kill.png             | Bin 2439 -> 0 bytes
 .../src/main/resources/img/mr-action.png        | Bin 1335 -> 0 bytes
 .../src/main/resources/img/pig-action.png       | Bin 1387 -> 0 bytes
 .../src/main/resources/img/pipes-action.png     | Bin 1610 -> 0 bytes
 .../src/main/resources/img/shell-action.png     | Bin 1612 -> 0 bytes
 .../src/main/resources/img/ssh-action.png       | Bin 1346 -> 0 bytes
 .../src/main/resources/img/start-shape.png      | Bin 1513 -> 0 bytes
 .../src/main/resources/img/start.png            | Bin 2368 -> 0 bytes
 .../src/main/resources/img/streaming-action.png | Bin 1566 -> 0 bytes
 .../src/main/resources/img/subwf-action.png     | Bin 1562 -> 0 bytes
 .../workflowgenerator/workflowgenerator.gwt.xml |  43 --
 .../src/main/webapp/WEB-INF/web.xml             |  31 -
 .../src/main/webapp/workflowgenerator.css       | 200 -----
 .../src/main/webapp/workflowgenerator.html      |  66 --
 .../client/OozieWorkflowGeneratorTest.java      |  35 -
 .../workflowgeneratorTest-dev.launch            |  39 -
 .../workflowgeneratorTest-prod.launch           |  39 -
 79 files changed, 1 insertion(+), 7220 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/distro/pom.xml
----------------------------------------------------------------------
diff --git a/distro/pom.xml b/distro/pom.xml
index 73a7d97..7baaff2 100644
--- a/distro/pom.xml
+++ b/distro/pom.xml
@@ -130,21 +130,6 @@
 
     <profiles>
         <profile>
-            <id>wfgen</id>
-            <activation>
-                <activeByDefault>false</activeByDefault>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.oozie</groupId>
-                    <artifactId>oozie-workflowgenerator</artifactId>
-                    <version>${project.version}</version>
-                    <scope>compile</scope>
-                    <type>war</type>
-                </dependency>
-             </dependencies>
-        </profile>
-        <profile>
             <id>loginServerExample</id>
             <activation>
                 <activeByDefault>false</activeByDefault>

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/distro/src/main/bin/oozie-setup.sh
----------------------------------------------------------------------
diff --git a/distro/src/main/bin/oozie-setup.sh b/distro/src/main/bin/oozie-setup.sh
index a41e42d..3b6a643 100644
--- a/distro/src/main/bin/oozie-setup.sh
+++ b/distro/src/main/bin/oozie-setup.sh
@@ -217,13 +217,6 @@ else
       extjsHome=${libext}/ext-2.2.zip
       addExtjs=true
     fi
-  # find war files (e.g., workflowgenerator) under /libext and deploy
-    if [ `ls ${libext} | grep \.war\$ | wc -c` != 0 ]; then
-      for i in "${libext}/"*.war; do
-        echo "INFO: Deploying extention: $i"
-        cp $i ${CATALINA_BASE}/webapps/
-      done
-    fi
   fi
 
   prepare

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 27a3098..a1c9357 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1746,32 +1746,6 @@
             </properties>
         </profile>
         <profile>
-            <id>wfgen</id>
-            <activation>
-                <activeByDefault>false</activeByDefault>
-            </activation>
-            <modules>
-                <module>workflowgenerator</module>
-            </modules>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <configuration>
-                            <fork>true</fork>
-                            <source>1.6</source>
-                            <target>1.6</target>
-                            <compilerArguments>
-                                <Xlint/>
-                                <Xmaxwarns>9999</Xmaxwarns>
-                            </compilerArguments>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <profile>
             <id>hadoop-1</id>
             <activation>
                 <activeByDefault>true</activeByDefault>

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 810330d..7df9643 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.3.0 release (trunk - unreleased)
 
+OOZIE-2625 Drop workflowgenerator (rkanter)
 OOZIE-2602 Upgrade oozie to pig 0.16.0 (nperiwal via jaydeepvishwakarma)
 OOZIE-2493 TestDistcpMain deletes action.xml from wrong filesystem (abhishekbafna via rkanter)
 OOZIE-2496 Testcase failure due to environment specific line.separator value (abhishekbafna via rkanter)

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/src/main/assemblies/distro.xml
----------------------------------------------------------------------
diff --git a/src/main/assemblies/distro.xml b/src/main/assemblies/distro.xml
index bdb5351..1ffbfd6 100644
--- a/src/main/assemblies/distro.xml
+++ b/src/main/assemblies/distro.xml
@@ -92,14 +92,6 @@
             </includes>
             <fileMode>0555</fileMode>
         </fileSet>
-        <fileSet>
-            <directory>${basedir}/../workflowgenerator/target</directory>
-            <outputDirectory>/</outputDirectory>
-            <includes>
-                <include>oozie-wfgen.war</include>
-            </includes>
-            <fileMode>0555</fileMode>
-        </fileSet>
         <!--  Oozie Login Server Example war and jar -->
          <fileSet>
             <directory>${basedir}/../login/target</directory>

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/README.txt
----------------------------------------------------------------------
diff --git a/workflowgenerator/README.txt b/workflowgenerator/README.txt
deleted file mode 100644
index 61e2102..0000000
--- a/workflowgenerator/README.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-
-Workflow Generator Tool
-=========================
-
------------------------------------------------
-What is Workflow Generator Tool
------------------------------------------------
-Workflow generator tool is a web application where a user can construct Oozie workflow through GUI.
-Since it is based on html and javascript, a user needs only browser to access the tool. (major browsers such as Chrome, Firefox, IE supported)
-It is developed using Google Web Toolkit ( https://developers.google.com/web-toolkit/ ), which provides functionality to compile java code into javascript.
-Therefore, although final product is in javascript, development process is performed in java.
-
-
--------------------------------------------------------------------------------------
-How to build and launch Workflow Generator Tool as part of entire oozie package build
--------------------------------------------------------------------------------------
-
-1. run mkdistro.sh on top-level directory
----------------------
-bin/mkdistro.sh -P wfgen
----------------------
-[NOTE]
-currently workflow generator is not included in build as default, thus need to specify maven profile (-P wfgen)
-
-2. move to output directory
---------------------
-cd distro/target/oozie-<version>-distro/oozie-<version>
---------------------
-
-3-(a). copy the war file to oozie-server/webapps/
---------------------
-cp oozie-wfgen.war ./oozie-server/webapps
---------------------
-
-or
-
-3-(b). create /libext and copy the war file to it
---------------------
-mkdir libext
-cp oozie-wfgen.war ./libext
---------------------
-[NOTE]
-bin/oozie-setup.sh is implemented such that wfgen.war is automatically picked up and deployed to oozie server
-
-4. start oozie server (using bin/oozie-setup.sh and bin/oozie-start.sh) and check through browser
----------------------
-http://localhost:11000/oozie-wfgen
----------------------
-[NOTE]
-using default port number, which is 11000. tomcat server may fail to start if other application already using the same port. please make sure the port is not used.
-
-
-
-----------------------------------------------------------------------------------------
-How to build and launch Workflow Generator Tool only (not whole package build)
-----------------------------------------------------------------------------------------
-
-There are two possible options
-Option-A) launch app using web server that you are already running (without using bundled tomcat)
-Option-B) launch app in dev mode using bundled internal web server provided by GWT.
-
-Option-A would be suitable when you want to host this application on the existing tomcat instance. You need to copy war file into webapp directory of existing tomcat.
-Option-B would be suitable for development of the tool since you can see error messages for debugging, and don't need to create and copy war file every time
-
-Option-B internally using java class (servlet), not javascript.
-On browser UI, therefore, DOM operation (e.g., creating/deleting nodewidget) might be slower than using pure javascript (Option-A)
-
-===============================================
-<Option-A>
-
-1. build workflowgenerator and create war file
----------------------
-cd workflowgenerator // assuming you are on top directory
-mvn clean package
----------------------
-[NOTE]
-test case not implemented yet
-
-2. copy war file to webapps directory of web server
----------------------
-cp target/oozie-wfgen.war <webserver-installed-directory>/webapps/
----------------------
-
-3. start web server
----------------------
-<webserver-installed-directory>/bin/startup.sh
----------------------
-[NOTE]
-name of start script might be different in your web-server, please change accordingly
-
-4. check through browser
----------------------
-http://localhost:8080/oozie-wfgen
----------------------
-[NOTE]
-port number might not be 8080 in your web-server setting (usually it's default in tomcat), please change accordingly
-
-5. stop web server
----------------------
-<webserver-installed-directory>/bin/shutdown.sh
----------------------
-[NOTE] name of shutdown script might be different in your web-server, please change accordingly
-
-===============================================
-<Option-B>
-
-1. compile and start GWT launcher
----------------------
-cd workflowgenerator // assuming you are on top directory
-mvn clean gwt:run
----------------------
-you will see GWT launcher program automatically starts
-
-2. launch app on browser from GWT launcher
----------------------
-press button either "Launch Default Browser" or "Copy to Clipboard"
-
-"Launcher Default Browser"
-  --> automatically open application on default browser
-  --> First time, you will be asked to install plug-in on browser, (also take few mins to launch app, pls be patient)
-
-"Copy to Clipboard"
-  --> you can copy this link to browser that you like and open it
-  --> First time, you will be asked to install plug-in on browser (also take few mins to launch app, pls be patient)
----------------------
-
-if you want to kill process, Ctrl-C in console
-
-
-=====================================================================
-
-If you have any questions/issues, please send an email to:
-
-user@oozie.apache.org
-
-Subscribe using the link:
-
-http://oozie.apache.org/mail-lists.html

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/pom.xml
----------------------------------------------------------------------
diff --git a/workflowgenerator/pom.xml b/workflowgenerator/pom.xml
deleted file mode 100644
index 38e918c..0000000
--- a/workflowgenerator/pom.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<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">
-
-  <parent>
-    <groupId>org.apache.oozie</groupId>
-    <artifactId>oozie-main</artifactId>
-    <version>4.3.0-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.oozie</groupId>
-  <artifactId>oozie-workflowgenerator</artifactId>
-  <version>4.3.0-SNAPSHOT</version>
-  <packaging>war</packaging>
-  <description>Apache Oozie WorkflowGenerator</description>
-  <name>Apache Oozie WorkflowGenerator</name>
-
-  <properties>
-    <!-- Convenience property to set the GWT version -->
-    <gwtVersion>2.5.0-rc1</gwtVersion>
-    <!-- GWT needs at least java 1.5 -->
-    <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>com.google.gwt</groupId>
-      <artifactId>gwt-servlet</artifactId>
-      <version>${gwtVersion}</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.gwt</groupId>
-      <artifactId>gwt-user</artifactId>
-      <version>${gwtVersion}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.validation</groupId>
-      <artifactId>validation-api</artifactId>
-      <version>1.0.0.GA</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.validation</groupId>
-      <artifactId>validation-api</artifactId>
-      <version>1.0.0.GA</version>
-      <classifier>sources</classifier>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.allen-sauer.gwt.dnd</groupId>
-      <artifactId>gwt-dnd</artifactId>
-      <version>3.1.2</version>
-   </dependency>
-   <dependency>
-      <groupId>com.orange.links</groupId>
-      <artifactId>gwt-links</artifactId>
-      <version>1.3-SNAPSHOT</version>
-    </dependency>
-
-   <dependency>
-       <groupId>com.google.gwt</groupId>
-       <artifactId>gwt-incubator</artifactId>
-       <version>2.0.1</version>
-    </dependency>
-   </dependencies>
-   <build>
-    <!-- Generate compiled stuff in the folder used for developing mode -->
-    <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
-    <finalName>oozie-wfgen</finalName>
-
-    <plugins>
-
-      <!-- GWT Maven Plugin -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>gwt-maven-plugin</artifactId>
-        <version>2.5.0-rc1</version>
-        <executions>
-          <execution>
-             <configuration>
-                <module>org.apache.oozie.tools.workflowgenerator.workflowgenerator</module>
-             </configuration>
-           <goals>
-              <goal>compile</goal>
-              <goal>test</goal>
-            </goals>
-          </execution>
-        </executions>
-        <!-- Plugin configuration. There are many available options, see
-        gwt-maven-plugin documentation at codehaus.org -->
-        <configuration>
-          <runTarget>workflowgenerator.html</runTarget>
-          <hostedWebapp>${webappDirectory}</hostedWebapp>
-        </configuration>
-      </plugin>
-
-      <!-- Copy static web files before executing gwt:run -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>2.1.1</version>
-        <executions>
-          <execution>
-            <phase>compile</phase>
-            <goals>
-              <goal>exploded</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <webappDirectory>${webappDirectory}</webappDirectory>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.3.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.8.1</version>
-        <configuration>
-             <linksource>true</linksource>
-             <quiet>true</quiet>
-             <verbose>false</verbose>
-             <source>${maven.compile.source}</source>
-             <charset>${maven.compile.encoding}</charset>
-         </configuration>
-         <executions>
-             <execution>
-                 <goals>
-                     <goal>javadoc</goal>
-                 </goals>
-                 <phase>package</phase>
-             </execution>
-         </executions>
-      </plugin>
-    </plugins>
-    <resources>
-        <resource>
-              <directory>src/main/resources/img</directory>
-              <targetPath>../../img</targetPath>
-        </resource>
-    </resources>
-  </build>
-  <repositories>
-    <repository>
-     <id>gwt-links</id>
-     <url>http://gwt-links.googlecode.com/svn/repository</url>
-    </repository>
-  </repositories>
-</project>

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/assemblies/workflowgenerator.xml
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/assemblies/workflowgenerator.xml b/workflowgenerator/src/main/assemblies/workflowgenerator.xml
deleted file mode 100644
index 3b780b0..0000000
--- a/workflowgenerator/src/main/assemblies/workflowgenerator.xml
+++ /dev/null
@@ -1,30 +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.
--->
-<assembly>
-    <id>tomcat</id>
-    <formats>
-        <format>tar.gz</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            <directory>${basedir}/target/${project.artifactId}-${project.version}-tomcat</directory>
-            <outputDirectory>${project.artifactId}-${project.version}</outputDirectory>
-        </fileSet>
-    </fileSets>
-</assembly>

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieDiagramController.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieDiagramController.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieDiagramController.java
deleted file mode 100644
index 4e8c8cf..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieDiagramController.java
+++ /dev/null
@@ -1,452 +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.oozie.tools.workflowgenerator.client;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.oozie.tools.workflowgenerator.client.property.control.WrkflowPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.KillNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.StartNodeWidget;
-
-import com.google.gwt.dom.client.Style.Cursor;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.ui.MenuItem;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.RootPanel;
-import com.google.gwt.user.client.ui.TextArea;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Element;
-import com.google.gwt.xml.client.Node;
-import com.google.gwt.xml.client.XMLParser;
-import com.orange.links.client.DiagramController;
-import com.orange.links.client.connection.Connection;
-import com.orange.links.client.event.TieLinkEvent;
-import com.orange.links.client.menu.ContextMenu;
-import com.orange.links.client.shapes.FunctionShape;
-
-/**
- * Class to provide a panel where users create node widget or draw a line to
- * construct a workflow
- */
-public class OozieDiagramController extends DiagramController {
-
-    private Panel xmlpanel;
-    private WrkflowPropertyTable wrkflowtable;
-
-    /**
-     * Constructor which records canvas size
-     *
-     * @param canvasWidth width of canvas
-     * @param canvasHeight height of canvas
-     */
-    public OozieDiagramController(int canvasWidth, int canvasHeight) {
-        super(canvasWidth, canvasHeight);
-    }
-
-    /**
-     * Constructor which records canvas size and frame size
-     *
-     * @param canvasWidth width of canvas
-     * @param canvasHeight height of canvas
-     * @param frameWidth width of frame
-     * @param frameHeight height of frame
-     */
-    public OozieDiagramController(int canvasWidth, int canvasHeight, int frameWidth, int frameHeight) {
-        super(canvasWidth, canvasHeight, frameWidth, frameHeight);
-    }
-
-    /**
-     * Initialize right-click context menu
-     */
-    public void initMenu() {
-        canvasMenu = new ContextMenu();
-        canvasMenu.addItem(new MenuItem("Generate XML", new Command() {
-            @Override
-            public void execute() {
-                generateXml();
-            }
-        }));
-
-    }
-
-    /**
-     * Return a list of neighboring node widgets which the specified node widget
-     * has connection to
-     *
-     * @param w node widget
-     * @return
-     */
-    public List<NodeWidget> getCurrentNeighbor(NodeWidget w) {
-        List<NodeWidget> current = new ArrayList<NodeWidget>();
-        FunctionShape s = widgetShapeMap.get(w);
-        Map<Widget, Connection> connectMap = functionsMap.get(w);
-        if (connectMap == null) {
-            return null;
-        }
-        for (Iterator<Map.Entry<Widget, Connection>> it = connectMap.entrySet().iterator(); it.hasNext();) {
-            Map.Entry<Widget, Connection> entry = it.next();
-            Connection c = entry.getValue();
-            if (c.getStartShape() == s) {
-                FunctionShape e = (FunctionShape) c.getEndShape();
-                current.add((NodeWidget) e.asWidget());
-            }
-        }
-
-        return current;
-    }
-
-    /**
-     * Return a list of connections that the specified node widget has
-     *
-     * @param w node widget
-     * @return
-     */
-    public List<Connection> getConnection(NodeWidget w) {
-        List<Connection> li = new ArrayList<Connection>();
-        FunctionShape shape = widgetShapeMap.get(w);
-        for (Connection c : shape.getConnections()) {
-            li.add(c);
-        }
-        return li;
-    }
-
-    /**
-     * Add a new connection from one node widget to the other, while deleting
-     * existing connection that the start node widget has if any
-     *
-     * @param start start node widget
-     * @param end end node widget
-     */
-    public void addConnection(NodeWidget start, NodeWidget end) {
-        boolean exists = false;
-        FunctionShape s1 = widgetShapeMap.get(start);
-        FunctionShape s2 = widgetShapeMap.get(end);
-        Connection current = null;
-        for (Connection c : s1.getConnections()) {
-            if (c.getStartShape() == s1) {
-                current = c;
-            }
-            if (c.getEndShape() == s2) {
-                exists = true;
-                break;
-            }
-        }
-        if (!exists) {
-            if (current != null) {
-                this.deleteConnection(current);
-                s1.removeConnection(current);
-                s2.removeConnection(current);
-            }
-            Connection c = drawStraightArrowConnection(start, end);
-            fireEvent(new TieLinkEvent(start, end, c));
-        }
-    }
-
-    /**
-     * Add a new connection from one node widget to the other without deleting
-     * existing connection that the starting node widget has
-     *
-     * @param start start node widget
-     * @param end end node widget
-     * @return
-     */
-    public Connection addMultiConnection(NodeWidget start, NodeWidget end) {
-        boolean exists = false;
-        FunctionShape s1 = widgetShapeMap.get(start);
-        FunctionShape s2 = widgetShapeMap.get(end);
-        Connection conn = null;
-
-        for (Connection c : s1.getConnections()) {
-            if (c.getEndShape() == s2) {
-                exists = true;
-                break;
-            }
-        }
-        if (!exists) {
-            conn = drawStraightArrowConnection(start, end);
-            fireEvent(new TieLinkEvent(start, end, conn));
-        }
-
-        return conn;
-    }
-
-    /**
-     * Return a connection between node widgets
-     *
-     * @param start start node widget
-     * @param end end node widget
-     * @return
-     */
-    public Connection getConnection(NodeWidget start, NodeWidget end) {
-
-        Connection conn = null;
-        Map<Widget, Connection> m = (Map<Widget, Connection>) functionsMap.get(start);
-        if (m != null) {
-            conn = (Connection) m.get(end);
-        }
-        return conn;
-    }
-
-    /**
-     * Return if there is a connection between node widgets
-     *
-     * @param start start node widget
-     * @param end end node widget
-     * @return
-     */
-    public boolean isConnected(NodeWidget start, NodeWidget end) {
-        return functionsMap.get(start).containsKey(end);
-    }
-
-    /**
-     * Remove a connection between node widgets
-     *
-     * @param start start node widget
-     * @param end end node widget
-     */
-    public void removeConnection(NodeWidget start, NodeWidget end) {
-
-        FunctionShape s1 = widgetShapeMap.get(start);
-        FunctionShape s2 = widgetShapeMap.get(end);
-
-        if (functionsMap.get(start).containsKey(end)) {
-            Connection c = functionsMap.get(start).get(end);
-            this.deleteConnection(c);
-            s1.removeConnection(c);
-            s2.removeConnection(c);
-            functionsMap.get(start).remove(end);
-        }
-    }
-
-    /**
-     * Set a panel to display generated xml
-     *
-     * @param w
-     */
-    public void setXmlPanel(Panel w) {
-        this.xmlpanel = w;
-    }
-
-    /**
-     * Generate a xml document of the current workflow
-     */
-    public void generateXml() {
-
-        Document xmldoc = null;
-        xmldoc = (Document) XMLParser.createDocument();
-
-        // initialize visit-flag of all widgets
-        for (Widget w : widgetShapeMap.keySet()) {
-            ((NodeWidget) w).unvisit();
-        }
-
-        NodeWidget current = null;
-        NodeWidget next = null;
-        LinkedList<NodeWidget> queue = new LinkedList<NodeWidget>();
-
-        String appname = "visualizationApp";
-        if (wrkflowtable != null) {
-            appname = wrkflowtable.getName();
-        }
-        Element root = xmldoc.createElement("workflow-app");
-        root.setAttribute("xmlns", wrkflowtable.getNameSpace());
-        root.setAttribute("name", appname);
-        xmldoc.appendChild(root);
-
-        wrkflowtable.generateXML(xmldoc, root, null);
-
-        for (Connection c : this.connections) {
-            FunctionShape startShape = (FunctionShape) c.getStartShape();
-            NodeWidget w = (NodeWidget) startShape.asWidget();
-            if (w instanceof StartNodeWidget) {
-                queue.add(w);
-                break;
-            }
-        }
-
-        while ((current = queue.poll()) != null) {
-
-            if (current.isVisited()) {
-                continue;
-            }
-            Map<Widget, Connection> nextMap = this.functionsMap.get(current);
-            if (nextMap == null) {
-                next = null;
-            }
-            else {
-                for (Iterator itr = nextMap.keySet().iterator(); itr.hasNext();) {
-                    next = (NodeWidget) itr.next();
-                    queue.add(next);
-                }
-            }
-            current.generateXML(xmldoc, root, next);
-            current.visit();
-        }
-
-        // Adding Kill Node
-        for (Widget w : this.widgetShapeMap.keySet()) {
-            if (w instanceof KillNodeWidget) {
-                ((KillNodeWidget) w).generateXML(xmldoc, root, null);
-            }
-        }
-
-        xmlpanel.clear();
-        TextArea xml = new TextArea();
-        xml.getElement().setScrollTop(xml.getElement().getScrollHeight());
-        xml.setCharacterWidth(80);
-        xml.setVisibleLines(30);
-        xml.setText(formatXML(root, "  "));
-        xmlpanel.add(xml);
-
-    }
-
-    /**
-     * Format generated xml doc by indentation
-     *
-     * @param node
-     * @param indent
-     * @return
-     */
-    protected String formatXML(Node node, String indent) {
-        StringBuilder formatted = new StringBuilder();
-
-        if (node.getNodeType() == Node.ELEMENT_NODE) {
-            StringBuilder attributes = new StringBuilder();
-            for (int k = 0; k < node.getAttributes().getLength(); k++) {
-                attributes.append(" ");
-                attributes.append(node.getAttributes().item(k).getNodeName());
-                attributes.append("=\"");
-                attributes.append(node.getAttributes().item(k).getNodeValue());
-                attributes.append("\"");
-            }
-
-            formatted.append(indent);
-            formatted.append("<");
-            formatted.append(node.getNodeName());
-            formatted.append(attributes.toString());
-            if (!node.hasChildNodes() || (node.hasChildNodes() && node.getFirstChild().getNodeType() == Node.TEXT_NODE)) {
-                formatted.append(">");
-            }
-            else {
-                formatted.append(">\n");
-            }
-
-            for (int i = 0; i < node.getChildNodes().getLength(); i++) {
-                formatted.append(formatXML(node.getChildNodes().item(i), indent + "   "));
-            }
-
-            if (node.hasChildNodes() && node.getFirstChild().getNodeType() != Node.TEXT_NODE) {
-                formatted.append(indent);
-            }
-            formatted.append("</");
-            formatted.append(node.getNodeName());
-            formatted.append(">\n");
-        }
-        else {
-            if (node.toString().trim().length() > 0) {
-                formatted.append(node.toString());
-            }
-        }
-
-        return formatted.toString();
-    }
-
-    /**
-     * Update a diagram controller
-     */
-    @Override
-    public void update() {
-        redrawConnections();
-
-        // If the user is dragging widgets, do nothing
-        if (inDragWidget) {
-            return;
-        }
-        topCanvas.clear();
-
-        // Search for selectable area
-        if (!inDragBuildArrow) {
-            for (FunctionShape s : shapes) {
-                if (s.isMouseNearSelectableArea(mousePoint)) {
-                    s.highlightSelectableArea(mousePoint);
-                    inEditionSelectableShapeToDrawConnection = true;
-                    startFunctionWidget = s.asWidget();
-                    RootPanel.getBodyElement().getStyle().setCursor(Cursor.POINTER);
-                    return;
-                }
-                inEditionSelectableShapeToDrawConnection = false;
-            }
-        }
-        else {
-            // Don't go deeper if in edition mode
-            // If mouse over a widget, highlight it
-            FunctionShape s = getShapeUnderMouse();
-            if (s != null) {
-                s.drawHighlight();
-                highlightFunctionShape = s;
-            }
-            else if (highlightFunctionShape != null) {
-                highlightFunctionShape.draw();
-                highlightFunctionShape = null;
-            }
-            clearAnimationsOnCanvas();
-        }
-
-        // Test if in Drag Movable Point
-        if (!inDragMovablePoint && !inDragBuildArrow) {
-            for (Connection c : connections) {
-                if (c.isMouseNearConnection(mousePoint)) {
-                    highlightPoint = c.highlightMovablePoint(mousePoint);
-                    highlightConnection = getConnectionNearMouse();
-                    inEditionDragMovablePoint = true;
-                    RootPanel.getBodyElement().getStyle().setCursor(Cursor.POINTER);
-                    return;
-                }
-                inEditionDragMovablePoint = false;
-            }
-        }
-
-        clearAnimationsOnCanvas();
-    }
-
-    /**
-     * Return a workflow property table
-     *
-     * @return
-     */
-    public WrkflowPropertyTable getWrkflowPropertyTable() {
-        return wrkflowtable;
-    }
-
-    /**
-     * Set a workflow property table
-     *
-     * @param t Workflow property table
-     */
-    public void setWrkflowPropertyTable(WrkflowPropertyTable t) {
-        this.wrkflowtable = t;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieWorkflowGenerator.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieWorkflowGenerator.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieWorkflowGenerator.java
deleted file mode 100644
index 113a401..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/OozieWorkflowGenerator.java
+++ /dev/null
@@ -1,765 +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.oozie.tools.workflowgenerator.client;
-
-import java.util.ArrayList;
-import java.util.EnumMap;
-import java.util.List;
-
-import org.apache.oozie.tools.workflowgenerator.client.OozieDiagramController;
-import org.apache.oozie.tools.workflowgenerator.client.property.PropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.property.control.WrkflowPropertyTable;
-import org.apache.oozie.tools.workflowgenerator.client.widget.NodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.EmailActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.FSActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.JavaActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.MapReduceActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PigActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.PipesActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SSHActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.ShellActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.StreamingActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.action.SubWFActionWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.DecisionNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.EndNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.ForkNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.JoinNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.KillNodeWidget;
-import org.apache.oozie.tools.workflowgenerator.client.widget.control.StartNodeWidget;
-
-import com.allen_sauer.gwt.dnd.client.PickupDragController;
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.logical.shared.SelectionEvent;
-import com.google.gwt.event.logical.shared.SelectionHandler;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.Random;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.*;
-
-/**
- * Main class of application
- * <p>
- * implements EntryPoint class which defines <code>onModuleLoad()</code>.
- */
-public class OozieWorkflowGenerator implements EntryPoint {
-
-    private static final int ZINDEX_FRONT_OF_GRID = 10;
-
-    private PickupDragController dragController;
-    private OozieDiagramController controller;
-    private Panel propPanel;
-    private List<NodeWidget> widgets;
-    private StartNodeWidget start;
-    private EndNodeWidget end;
-    private KillNodeWidget kill;
-    private WrkflowPropertyTable wrkflowtable;
-    private NodeWidget node;
-    private EnumMap<NodeType, Integer> nodeCount;
-
-    enum NodeType {
-        START, END, KILL, FORK, JOIN, DECISION, MAPREDUCE, PIG, FS, JAVA, PIPES, STREAMING, SHELL, SSH, EMAIL, SUBWF
-    };
-
-    /**
-     * Return a set of created node widgets in a workflow design panel
-     *
-     * @return
-     */
-    public List<NodeWidget> getWidgets() {
-        return this.widgets;
-    }
-
-    /**
-     * Set and display the property table of a selected node widget
-     *
-     * @param table
-     */
-    public void setPropertyTable(PropertyTable table) {
-        propPanel.clear();
-        propPanel.add(table);
-    }
-
-    /**
-     * Return an instance of current diagram controller
-     *
-     * @return
-     */
-    public OozieDiagramController getDiagramController() {
-        return this.controller;
-    }
-
-    /**
-     * Return the currently selected node widget
-     *
-     * @return
-     */
-    public NodeWidget getNodeWidget() {
-        return this.node;
-    }
-
-    /**
-     * Set the current node widget
-     *
-     * @param n node widget
-     */
-    protected void setNodeWidget(NodeWidget n) {
-        this.node = n;
-    }
-
-    /**
-     * onModuleLoad is the entry point method.
-     */
-    @SuppressWarnings("deprecation")
-    public void onModuleLoad() {
-
-        widgets = new ArrayList<NodeWidget>();
-        nodeCount = new EnumMap<OozieWorkflowGenerator.NodeType, Integer>(NodeType.class);
-
-        // start DiagramController (gwt-links library)
-        controller = new OozieDiagramController(1200, 600);
-        controller.showGrid(true); // Display a background grid
-
-        // start PickUpDragContoller (gwt-Drag-and-Drop library)
-        dragController = new PickupDragController(controller.getView(), true);
-
-        // register the dragController in GWT-Links
-        controller.registerDragController(dragController);
-
-        // panel for Property Table
-        propPanel = new AbsolutePanel();
-
-        // stack Layout for left-side tree-view
-        StackLayoutPanel stack = new StackLayoutPanel(Unit.EM);
-
-        // create left tree-view panel
-        stack.add(initNodeTree(), new HTML("Nodes"), 2);
-        stack.add(initWrkflowTree(), new HTML("Workflow"), 2);
-
-        initWidget();
-
-        // Create a three-pane layout with splitters.
-        SplitLayoutPanel p = new SplitLayoutPanel();
-
-        Panel east = new AbsolutePanel();
-
-        // Create a top panel under menu to hold button (e.g, generate xml)
-        AbsolutePanel btnpanl = new AbsolutePanel();
-        Button btn = createXMLButton();
-        btnpanl.add(btn);
-
-        p.addNorth(initMenu(), 30);
-        p.addEast(east, 250);
-        p.addSouth(propPanel, 300);
-        p.addWest(stack, 150);
-        p.addNorth(btnpanl, 30);
-        ((OozieDiagramController) controller).setXmlPanel(east);
-        p.add(controller.getView());
-
-        // Attach the LayoutPanel to the RootLayoutPanel.
-        RootLayoutPanel rp = RootLayoutPanel.get();
-        rp.add(p);
-
-    }
-
-    /**
-     * Create a "Generate XML" button
-     *
-     * @return
-     */
-    public Button createXMLButton() {
-        Button btn = new Button("Generate XML");
-        btn.addClickHandler(new ClickHandler() {
-
-            @Override
-            public void onClick(ClickEvent event) {
-                ((OozieDiagramController) controller).generateXml();
-            }
-        });
-        return btn;
-    }
-
-    /**
-     * Initialize a default set of node widgets shown in a workflow design
-     * panel, such as start, end, kill nodes
-     */
-    public void initWidget() {
-
-        if (wrkflowtable == null) {
-            wrkflowtable = new WrkflowPropertyTable(null);
-            ((OozieDiagramController) controller).setWrkflowPropertyTable(wrkflowtable);
-        }
-
-        // display Start/End/Kill Nodes as default
-        if (start == null) {
-            start = new StartNodeWidget(this);
-            controller.addWidget(start, 30, 100);
-            dragController.makeDraggable(start);
-            widgets.add(start);
-        }
-
-        if (end == null) {
-            end = new EndNodeWidget(this);
-            end.setName("End");
-            controller.addWidget(end, 600, 100);
-            dragController.makeDraggable(end);
-            widgets.add(end);
-        }
-
-        if (kill == null) {
-            kill = new KillNodeWidget(this);
-            kill.setName("Kill");
-            controller.addWidget(kill, 700, 100);
-            dragController.makeDraggable(kill);
-            widgets.add(kill);
-        }
-    }
-
-    /**
-     * Initialize workflow tree-view menu on left side
-     *
-     * @return
-     */
-    public Tree initWrkflowTree() {
-        Tree t = new Tree();
-        TreeItem actionTree = new TreeItem("Property");
-        t.addItem(actionTree);
-        t.addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-            @Override
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                TreeItem item = event.getSelectedItem();
-                String name = item.getText();
-                if (name.equals("Property") && wrkflowtable != null) {
-                    setPropertyTable(wrkflowtable);
-                }
-            }
-        });
-
-        return t;
-    }
-
-    /**
-     * Initialize node tree-view menu on left side
-     *
-     * @return
-     */
-    public Tree initNodeTree() {
-
-        Tree t = new Tree();
-
-        // Action Node Tree
-        TreeItem actionTree = new TreeItem("Action Node");
-        TreeItem mrTree = new TreeItem("MapReduce");
-        mrTree.addItem("Streaming");
-        mrTree.addItem("Pipes");
-        actionTree.addItem(mrTree);
-        actionTree.addItem("Pig");
-        actionTree.addItem("Java");
-        actionTree.addItem("FS");
-        actionTree.addItem("Subworkflow");
-        actionTree.addItem("SSH");
-        actionTree.addItem("Shell");
-        actionTree.addItem("Email");
-
-        // Control Node Tree
-        TreeItem controlTree = new TreeItem("Control Node");
-        controlTree.addItem("Start");
-        controlTree.addItem("End");
-        controlTree.addItem("Kill");
-        controlTree.addItem("Fork/Join");
-        controlTree.addItem("Decision");
-
-        t.addItem(actionTree);
-        t.addItem(controlTree);
-
-        // Event Handler
-        t.addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-            @Override
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                TreeItem item = event.getSelectedItem();
-                String name = item.getText();
-                if (name.equals("MapReduce")) {
-                    MapReduceActionWidget w = new MapReduceActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("MR_".concat(nodeCount.get(NodeType.MAPREDUCE) != null ? nodeCount
-                            .get(NodeType.MAPREDUCE).toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("Streaming")) {
-                    StreamingActionWidget w = new StreamingActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Streaming_".concat(nodeCount.get(NodeType.STREAMING) != null ? nodeCount.get(
-                            NodeType.STREAMING).toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("Pipes")) {
-                    PipesActionWidget w = new PipesActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Pipes_".concat(nodeCount.get(NodeType.PIPES) != null ? nodeCount.get(NodeType.PIPES)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("Pig")) {
-                    PigActionWidget w = new PigActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Pig_".concat(nodeCount.get(NodeType.PIG) != null ? nodeCount.get(NodeType.PIG)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("Java")) {
-                    JavaActionWidget w = new JavaActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Java_".concat(nodeCount.get(NodeType.JAVA) != null ? nodeCount.get(NodeType.JAVA)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("FS")) {
-                    FSActionWidget w = new FSActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("FS_".concat(nodeCount.get(NodeType.FS) != null ? nodeCount.get(NodeType.FS).toString()
-                            : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-                else if (name.equals("SSH")) {
-                    SSHActionWidget w = new SSHActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("SSH_".concat(nodeCount.get(NodeType.SSH) != null ? nodeCount.get(NodeType.SSH)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                }
-                else if (name.equals("Email")) {
-                    EmailActionWidget w = new EmailActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Email_".concat(nodeCount.get(NodeType.EMAIL) != null ? nodeCount.get(NodeType.EMAIL)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                }
-                else if (name.equals("Shell")) {
-                    ShellActionWidget w = new ShellActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("Shell_".concat(nodeCount.get(NodeType.SHELL) != null ? nodeCount.get(NodeType.SHELL)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                }
-                else if (name.equals("Subworkflow")) {
-                    SubWFActionWidget w = new SubWFActionWidget(OozieWorkflowGenerator.this);
-                    w.setName("SubWF_".concat(nodeCount.get(NodeType.SUBWF) != null ? nodeCount.get(NodeType.SUBWF)
-                            .toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                }
-                else if (name.equals("Start")) {
-                    if (start == null) {
-                        StartNodeWidget w = new StartNodeWidget(OozieWorkflowGenerator.this);
-                        start = w;
-                        addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                    }
-                }
-                else if (name.equals("End")) {
-                    if (end == null) {
-                        EndNodeWidget w = new EndNodeWidget(OozieWorkflowGenerator.this);
-                        w.setName("End");
-                        end = w;
-                        addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                    }
-                }
-                else if (name.equals("Kill")) {
-                    if (kill == null) {
-                        KillNodeWidget w = new KillNodeWidget(OozieWorkflowGenerator.this);
-                        w.setName("Kill");
-                        kill = w;
-                        addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                    }
-                }
-                else if (name.equals("Fork/Join")) {
-                    ForkNodeWidget fork = new ForkNodeWidget(OozieWorkflowGenerator.this);
-                    fork.setName("Fork_".concat(nodeCount.get(NodeType.FORK) != null ? nodeCount.get(NodeType.FORK)
-                            .toString() : "0"));
-                    addWidget(fork, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                    JoinNodeWidget join = new JoinNodeWidget(OozieWorkflowGenerator.this);
-                    join.setName("Join_".concat(nodeCount.get(NodeType.JOIN) != null ? nodeCount.get(NodeType.JOIN)
-                            .toString() : "0"));
-                    addWidget(join, 90 + Random.nextInt(30), 30 + Random.nextInt(30));
-
-                }
-                else if (name.equals("Decision")) {
-                    DecisionNodeWidget w = new DecisionNodeWidget(OozieWorkflowGenerator.this);
-                    w.setName("Decision_".concat(nodeCount.get(NodeType.DECISION) != null ? nodeCount.get(
-                            NodeType.DECISION).toString() : "0"));
-                    addWidget(w, 30 + Random.nextInt(30), 30 + Random.nextInt(30));
-                }
-            }
-        });
-
-        return t;
-    }
-
-    /**
-     * Initialize menu panel on top
-     *
-     * @return
-     */
-    public MenuBar initMenu() {
-
-        // Menu bar
-        Command cmd = new Command() {
-            public void execute() {
-                Window.alert("To be implemented soon");
-            }
-        };
-
-        Command mr_cmd = new Command() {
-            public void execute() {
-                initWidget();
-                MapReduceActionWidget mr = new MapReduceActionWidget(OozieWorkflowGenerator.this);
-                mr.setName("MR_0");
-                addWidget(mr, 300, 100);
-                ((OozieDiagramController) controller).addConnection(start, mr);
-                ((OozieDiagramController) controller).addConnection(mr, end);
-                mr.updateOnSelection();
-            }
-        };
-
-        Command pig_cmd = new Command() {
-
-            public void execute() {
-                clear();
-                initWidget();
-                PigActionWidget pig = new PigActionWidget(OozieWorkflowGenerator.this);
-                pig.setName("Pig_0");
-                addWidget(pig, 300, 100);
-                ((OozieDiagramController) controller).addConnection(start, pig);
-                ((OozieDiagramController) controller).addConnection(pig, end);
-                pig.updateOnSelection();
-            }
-        };
-
-        Command java_cmd = new Command() {
-
-            public void execute() {
-                clear();
-                initWidget();
-                JavaActionWidget java = new JavaActionWidget(OozieWorkflowGenerator.this);
-                java.setName("Java_0");
-                addWidget(java, 300, 100);
-                ((OozieDiagramController) controller).addConnection(start, java);
-                ((OozieDiagramController) controller).addConnection(java, end);
-                java.updateOnSelection();
-            }
-        };
-
-        Command forkjoin_cmd = new Command() {
-
-            public void execute() {
-                clear();
-                initWidget();
-                ForkNodeWidget fork = new ForkNodeWidget(OozieWorkflowGenerator.this);
-                fork.setName("Fork_0");
-                addWidget(fork, 150, 100);
-                ((OozieDiagramController) controller).addConnection(start, fork);
-
-                MapReduceActionWidget mr = new MapReduceActionWidget(OozieWorkflowGenerator.this);
-                mr.setName("MR_0");
-                addWidget(mr, 300, 30);
-                ((OozieDiagramController) controller).addMultiConnection(fork, mr);
-
-                PigActionWidget pig = new PigActionWidget(OozieWorkflowGenerator.this);
-                pig.setName("Pig_0");
-                addWidget(pig, 300, 200);
-                ((OozieDiagramController) controller).addMultiConnection(fork, pig);
-
-                JoinNodeWidget join = new JoinNodeWidget(OozieWorkflowGenerator.this);
-                join.setName("Join_0");
-                addWidget(join, 450, 100);
-                ((OozieDiagramController) controller).addConnection(mr, join);
-                ((OozieDiagramController) controller).addConnection(pig, join);
-                ((OozieDiagramController) controller).addConnection(join, end);
-
-                fork.updateOnSelection();
-                join.updateOnSelection();
-                mr.updateOnSelection();
-                pig.updateOnSelection();
-            }
-        };
-
-        Command clear_cmd = new Command() {
-
-            public void execute() {
-                clear();
-            }
-
-        };
-
-        MenuBar fileMenu = new MenuBar(true);
-        fileMenu.setAutoOpen(true);
-        fileMenu.setAnimationEnabled(true);
-        fileMenu.addItem("New", cmd);
-        fileMenu.addItem("Open", cmd);
-        fileMenu.addItem("Load XML", cmd);
-        fileMenu.addItem("Save", cmd);
-        fileMenu.addItem("Save As..", cmd);
-        fileMenu.addItem("Generate XML", cmd);
-        fileMenu.addItem("Print", cmd);
-        fileMenu.addItem("Quit", cmd);
-
-        MenuBar editMenu = new MenuBar(true);
-        editMenu.setAutoOpen(true);
-        editMenu.setAnimationEnabled(true);
-        editMenu.addItem("Undo", cmd);
-        editMenu.addItem("Redo", cmd);
-        editMenu.addItem("Copy", cmd);
-        editMenu.addItem("Cut", cmd);
-        editMenu.addItem("Paste", cmd);
-        editMenu.addItem("Duplicate", cmd);
-        editMenu.addItem("Delete", cmd);
-        editMenu.addItem("Clear Diagram", clear_cmd);
-
-        MenuBar examples = new MenuBar(true);
-        examples.setAutoOpen(true);
-        examples.setAnimationEnabled(true);
-        examples.addItem("wrkflow with MR action", mr_cmd);
-        examples.addItem("wrkflow with Pig action", pig_cmd);
-        examples.addItem("wrkflow with Java action", java_cmd);
-        examples.addItem("wrkflow with Fork/Join ", forkjoin_cmd);
-
-        MenuBar helpMenu = new MenuBar(true);
-        helpMenu.setAutoOpen(true);
-        helpMenu.setAnimationEnabled(true);
-
-        // TODO this should point to a workflowgenerator's maven site, however there is no maven site available. (Not even in
-        // Workspace of the jenkins job at https://builds.apache.org/job/oozie-trunk-precommit-build/ws/workflowgenerator/target/)
-        // where client, for example, has target/site/apidocs
-        // The ideal place is somewhere under http://oozie.apache.org/docs/ once it is generated.
-        Command openOozieTopPageComman = new Command() {
-            @Override
-            public void execute() {
-                Window.open("http://oozie.apache.org/", "_blank", "");
-            }
-        };
-        helpMenu.addItem("Documentation", openOozieTopPageComman);
-        helpMenu.addItem("Online Help", openOozieTopPageComman);
-
-
-        Command aboutCommand = new Command() {
-            @Override
-            public void execute() {
-                // Dialogbox
-                final DialogBox d = new DialogBox(false, true);
-                d.setGlassEnabled(true);
-                d.setText("About Oozie Workflow Generator");
-                d.center();
-
-                // Set this to workaround the grid z-index issue https://issues.apache.org/jira/browse/OOZIE-1081
-                d.getElement().getStyle().setZIndex(ZINDEX_FRONT_OF_GRID);
-
-                // About text
-                VerticalPanel vpanel = new VerticalPanel();
-                vpanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
-                vpanel.setSpacing(10);
-                vpanel.setWidth("150");
-                vpanel.add(new Label("Oozie Workflow Generator"));
-                vpanel.add(new Label("Version 3.4.0-SNAPSHOT")); // TODO how to get a version number from pom?
-
-                // OK button to close
-                Button ok = new Button("OK");
-                ok.addClickHandler(new ClickHandler(){
-                    @Override
-                    public void onClick(ClickEvent event) {
-                        d.hide();
-                    }
-
-                });
-
-                vpanel.add(ok);
-                d.setWidget(vpanel);
-                d.show();
-
-            }
-        };
-        helpMenu.addItem("About", aboutCommand);
-
-        MenuBar menu = new MenuBar();
-        menu.addItem("File", fileMenu);
-        menu.addItem("Edit", editMenu);
-        menu.addItem("Example", examples);
-        menu.addItem("Help", helpMenu);
-
-        return menu;
-    }
-
-    /**
-     * Add a new node widget
-     *
-     * @param w node widget
-     * @param x x-coordinate
-     * @param y y-coordinate
-     */
-    public void addWidget(NodeWidget w, int x, int y) {
-        controller.addWidget(w, x, y);
-        changeNodeCount(w, true);
-        dragController.makeDraggable(w);
-        widgets.add(w);
-    }
-
-    /**
-     * Remove a node widget
-     *
-     * @param w node widget
-     */
-    public void removeWidget(NodeWidget w) {
-        controller.deleteWidget(w);
-        widgets.remove(w);
-        if (w instanceof StartNodeWidget) {
-            start = null;
-        }
-        else if (w instanceof EndNodeWidget) {
-            end = null;
-        }
-        else if (w instanceof KillNodeWidget) {
-            kill = null;
-        }
-        changeNodeCount(w, false);
-    }
-
-    /**
-     * Increment/Decrement count of node widget type
-     *
-     * @param w nodeWidget
-     * @param increment true: increment, false: decrement
-     */
-    protected void changeNodeCount(NodeWidget w, boolean increment) {
-        int i = 0;
-        if (w instanceof MapReduceActionWidget) {
-            if (nodeCount.containsKey(NodeType.MAPREDUCE)) {
-                i = nodeCount.get(NodeType.MAPREDUCE);
-            }
-            updateNodeCountMap(NodeType.MAPREDUCE, increment, i);
-        }
-        else if (w instanceof PigActionWidget) {
-            if (nodeCount.containsKey(NodeType.PIG)) {
-                i = nodeCount.get(NodeType.PIG);
-            }
-            updateNodeCountMap(NodeType.PIG, increment, i);
-        }
-        else if (w instanceof JavaActionWidget) {
-            if (nodeCount.containsKey(NodeType.JAVA)) {
-                i = nodeCount.get(NodeType.JAVA);
-            }
-            updateNodeCountMap(NodeType.JAVA, increment, i);
-        }
-        else if (w instanceof FSActionWidget) {
-            if (nodeCount.containsKey(NodeType.FS)) {
-                i = nodeCount.get(NodeType.FS);
-            }
-            updateNodeCountMap(NodeType.FS, increment, i);
-        }
-        else if (w instanceof PipesActionWidget) {
-            if (nodeCount.containsKey(NodeType.PIPES)) {
-                i = nodeCount.get(NodeType.PIPES);
-            }
-            updateNodeCountMap(NodeType.PIPES, increment, i);
-        }
-        else if (w instanceof StreamingActionWidget) {
-            if (nodeCount.containsKey(NodeType.STREAMING)) {
-                i = nodeCount.get(NodeType.STREAMING);
-            }
-            updateNodeCountMap(NodeType.STREAMING, increment, i);
-        }
-        else if (w instanceof ShellActionWidget) {
-            if (nodeCount.containsKey(NodeType.SHELL)) {
-                i = nodeCount.get(NodeType.SHELL);
-            }
-            updateNodeCountMap(NodeType.SHELL, increment, i);
-        }
-        else if (w instanceof SSHActionWidget) {
-            if (nodeCount.containsKey(NodeType.SSH)) {
-                i = nodeCount.get(NodeType.SSH);
-            }
-            updateNodeCountMap(NodeType.SSH, increment, i);
-        }
-        else if (w instanceof EmailActionWidget) {
-            if (nodeCount.containsKey(NodeType.EMAIL)) {
-                i = nodeCount.get(NodeType.EMAIL);
-            }
-            updateNodeCountMap(NodeType.EMAIL, increment, i);
-        }
-        else if (w instanceof SubWFActionWidget) {
-            if (nodeCount.containsKey(NodeType.SUBWF)) {
-                i = nodeCount.get(NodeType.SUBWF);
-            }
-            updateNodeCountMap(NodeType.SUBWF, increment, i);
-        }
-        else if (w instanceof StartNodeWidget) {
-            if (nodeCount.containsKey(NodeType.START)) {
-                i = nodeCount.get(NodeType.START);
-            }
-            updateNodeCountMap(NodeType.START, increment, i);
-        }
-        else if (w instanceof EndNodeWidget) {
-            if (nodeCount.containsKey(NodeType.END)) {
-                i = nodeCount.get(NodeType.END);
-            }
-            updateNodeCountMap(NodeType.END, increment, i);
-        }
-        else if (w instanceof KillNodeWidget) {
-            if (nodeCount.containsKey(NodeType.KILL)) {
-                i = nodeCount.get(NodeType.KILL);
-            }
-            updateNodeCountMap(NodeType.KILL, increment, i);
-        }
-        else if (w instanceof ForkNodeWidget) {
-            if (nodeCount.containsKey(NodeType.FORK)) {
-                i = nodeCount.get(NodeType.FORK);
-            }
-            updateNodeCountMap(NodeType.FORK, increment, i);
-        }
-        else if (w instanceof JoinNodeWidget) {
-            if (nodeCount.containsKey(NodeType.JOIN)) {
-                i = nodeCount.get(NodeType.JOIN);
-            }
-            updateNodeCountMap(NodeType.JOIN, increment, i);
-        }
-        else if (w instanceof DecisionNodeWidget) {
-            if (nodeCount.containsKey(NodeType.DECISION)) {
-                i = nodeCount.get(NodeType.DECISION);
-            }
-            updateNodeCountMap(NodeType.DECISION, increment, i);
-        }
-    }
-
-    private void updateNodeCountMap(NodeType type, boolean increment, int i) {
-        if (increment) {
-            nodeCount.put(type, i + 1);
-        }
-        else {
-            nodeCount.put(type, i - 1);
-        }
-    }
-
-    /**
-     * Remove all node widgets in a workflow design panel
-     */
-    public void clear() {
-        controller.clearDiagram();
-        widgets.clear();
-        nodeCount.clear();
-        start = null;
-        end = null;
-        kill = null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/oozie/blob/aec39dd2/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/Property.java
----------------------------------------------------------------------
diff --git a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/Property.java b/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/Property.java
deleted file mode 100644
index 925befc..0000000
--- a/workflowgenerator/src/main/java/org/apache/oozie/tools/workflowgenerator/client/property/Property.java
+++ /dev/null
@@ -1,75 +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.oozie.tools.workflowgenerator.client.property;
-
-/**
- * class to provide key-value pair for property, mostly used in property table
- */
-public class Property {
-
-    private String name;
-    private String value;
-
-    /**
-     * Constructor which records name and value
-     *
-     * @param name name
-     * @param value value
-     */
-    public Property(String name, String value) {
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Return a name of property
-     *
-     * @return
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Set a name of property
-     *
-     * @param name
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Return a value of property
-     *
-     * @return
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * Set a value of property
-     *
-     * @param value
-     */
-    public void setValue(String value) {
-        this.value = value;
-    }
-}