You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2011/09/09 01:39:24 UTC

svn commit: r1166942 - in /incubator/airavata/trunk/modules/xbaya-gui/src: main/java/org/apache/airavata/xbaya/interpretor/ main/java/org/apache/airavata/xbaya/invoker/ main/java/org/apache/airavata/xbaya/jython/lib/ main/java/org/apache/airavata/xbaya...

Author: chathura
Date: Thu Sep  8 23:39:23 2011
New Revision: 1166942

URL: http://svn.apache.org/viewvc?rev=1166942&view=rev
Log:
Adding workflow test case and adding capability for engine to run without the notification system

Added:
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/StandaloneNotificationSender.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java
    incubator/airavata/trunk/modules/xbaya-gui/src/test/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/WorkflowTest.java
    incubator/airavata/trunk/modules/xbaya-gui/src/test/java/test.xwf
    incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/
    incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/test.xwf
Modified:
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/TestWorkflowInterpreter.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/test/jython/JythonLibraryTest.java

Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/StandaloneNotificationSender.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/StandaloneNotificationSender.java?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/StandaloneNotificationSender.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/StandaloneNotificationSender.java Thu Sep  8 23:39:23 2011
@@ -0,0 +1,107 @@
+package org.apache.airavata.xbaya.interpretor;
+
+import java.net.URI;
+import java.util.List;
+
+import org.apache.airavata.xbaya.XBayaConstants;
+import org.apache.airavata.xbaya.graph.system.InputNode;
+import org.apache.airavata.xbaya.graph.system.OutputNode;
+import org.apache.airavata.xbaya.graph.util.GraphUtil;
+import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
+import org.apache.airavata.xbaya.jython.lib.StandaloneServiceNotificationSender;
+import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
+import org.apache.airavata.xbaya.monitor.gui.MonitorEventHandler.NodeState;
+import org.apache.airavata.xbaya.util.StringUtil;
+import org.apache.airavata.xbaya.wf.Workflow;
+import org.apache.axis2.addressing.EndpointReference;
+import org.python.core.PyObject;
+
+public class StandaloneNotificationSender implements WorkflowNotifiable {
+	
+	
+
+	private Workflow workflow;
+	private URI workflowID;
+
+	public StandaloneNotificationSender(String topic,
+			Workflow workflow) {
+		this.workflow = workflow;
+		this.workflowID = URI.create(StringUtil.convertToJavaIdentifier(topic));
+	}
+
+	@Override
+	public EndpointReference getEventSink() {
+		return new EndpointReference(XBayaConstants.DEFAULT_BROKER_URL.toString());
+	}
+
+	@Override
+	public void workflowStarted(PyObject[] args, String[] keywords) {
+		List<InputNode> inputs = GraphUtil.getInputNodes(this.workflow.getGraph());
+		for (InputNode inputNode : inputs) {
+			inputNode.getGUI().setBodyColor(NodeState.FINISHED.color);
+		}
+		
+	}
+
+	@Override
+	public void workflowStarted(Object[] args, String[] keywords) {
+		List<InputNode> inputs = GraphUtil.getInputNodes(this.workflow.getGraph());
+		for (InputNode inputNode : inputs) {
+			inputNode.getGUI().setBodyColor(NodeState.FINISHED.color);
+		}
+	}
+
+	@Override
+	public void workflowFinished(Object[] args, String[] keywords) {
+		List<OutputNode> outputs = GraphUtil.getOutputNodes(this.workflow.getGraph());
+		for (OutputNode outputNode : outputs) {
+			outputNode.getGUI().setBodyColor(NodeState.EXECUTING.color);
+		}
+
+	}
+
+	@Override
+	public void sendingPartialResults(Object[] args, String[] keywords) {
+		// noop
+
+	}
+
+	@Override
+	public void workflowFinished(PyObject[] args, String[] keywords) {
+		List<OutputNode> outputs = GraphUtil.getOutputNodes(this.workflow.getGraph());
+		for (OutputNode outputNode : outputs) {
+			outputNode.getGUI().setBodyColor(NodeState.EXECUTING.color);
+		}
+
+	}
+
+	@Override
+	public void workflowTerminated() {
+		// noop
+
+	}
+
+	@Override
+	public void workflowFailed(String message) {
+		// noop
+
+	}
+
+	@Override
+	public void workflowFailed(Throwable e) {
+		//noop
+
+	}
+
+	@Override
+	public void workflowFailed(String message, Throwable e) {
+		//noop
+
+	}
+
+	@Override
+	public ServiceNotifiable createServiceNotificationSender(String nodeID) {
+		return new StandaloneServiceNotificationSender(this.workflow, this.workflowID);
+	}
+
+}

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/TestWorkflowInterpreter.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/TestWorkflowInterpreter.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/TestWorkflowInterpreter.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/TestWorkflowInterpreter.java Thu Sep  8 23:39:23 2011
@@ -101,8 +101,8 @@ public class TestWorkflowInterpreter {
 
         }
 
-        String userName = "chathura";
-        String password = "changeme";
+        String userName = "??";
+        String password = "??";
         SecurityUtil.getGSSCredential(userName, password, XBayaConstants.DEFAULT_MYPROXY_SERVER);
 
         invoker(userName, password, workflowAsString, in, workflow);

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java Thu Sep  8 23:39:23 2011
@@ -40,6 +40,7 @@ import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import org.apache.airavata.common.utils.WSDLUtil;
 import org.apache.airavata.xbaya.XBayaConfiguration;
 import org.apache.airavata.xbaya.XBayaEngine;
 import org.apache.airavata.xbaya.XBayaException;
@@ -90,6 +91,7 @@ import org.apache.airavata.xbaya.invoker
 import org.apache.airavata.xbaya.invoker.Invoker;
 import org.apache.airavata.xbaya.invoker.WorkflowInvokerWrapperForGFacInvoker;
 import org.apache.airavata.xbaya.jython.lib.NotificationSender;
+import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
 import org.apache.airavata.xbaya.monitor.MonitorConfiguration;
 import org.apache.airavata.xbaya.monitor.MonitorException;
 import org.apache.airavata.xbaya.monitor.gui.MonitorEventHandler.NodeState;
@@ -99,7 +101,6 @@ import org.apache.airavata.xbaya.ode.ODE
 import org.apache.airavata.xbaya.security.SecurityUtil;
 import org.apache.airavata.xbaya.security.XBayaSecurity;
 import org.apache.airavata.xbaya.util.AmazonUtil;
-import org.apache.airavata.common.utils.WSDLUtil;
 import org.apache.airavata.xbaya.util.XBayaUtil;
 import org.apache.airavata.xbaya.wf.Workflow;
 import org.ietf.jgss.GSSCredential;
@@ -126,7 +127,7 @@ public class WorkflowInterpreter {
 
     private Map<Node, Invoker> invokerMap = new HashMap<Node, Invoker>();
 
-    private NotificationSender notifier;
+    private WorkflowNotifiable notifier;
 
     private boolean retryFailed = true;
 
@@ -148,73 +149,95 @@ public class WorkflowInterpreter {
 
     private LeadResourceMapping resourceMapping;
 
-    /**
-     * 
-     * Constructs a WorkflowInterpreter.
-     * 
-     * @param configuration
-     * @param topic
-     * @param workflow
-     * @param username
-     * @param password
-     */
-    public WorkflowInterpreter(XBayaConfiguration configuration, String topic, Workflow workflow, String username,
-            String password) {
-        this.configuration = configuration;
-
-        this.username = username;
-        this.password = password;
-        this.topic = topic;
-        this.workflow = workflow;
-        this.notifier = new NotificationSender(this.configuration.getBrokerURL(), topic);
-        this.mode = SERVER_MODE;
-        this.retryFailed = false;
+private boolean isoffline = false;
+	
+	
+	public WorkflowInterpreter(XBayaConfiguration configuration, String topic,
+			Workflow workflow, String username, String password) {
+		this(configuration, topic, workflow, username, password, false);
+	}
 
-    }
+	/**
+	 * 
+	 * Constructs a WorkflowInterpreter.
+	 * 
+	 * @param configuration
+	 * @param topic
+	 * @param workflow
+	 * @param username
+	 * @param password
+	 */
+	public WorkflowInterpreter(XBayaConfiguration configuration, String topic,
+			Workflow workflow, String username, String password, boolean offline) {
+		this.isoffline = offline;
+		this.configuration = configuration;
+
+		this.username = username;
+		this.password = password;
+		this.topic = topic;
+		this.workflow = workflow;
+		if (this.isoffline) {
+			this.notifier = new StandaloneNotificationSender(topic, this.workflow);
+		} else {
+			this.notifier = new NotificationSender(this.engine.getMonitor()
+					.getConfiguration().getBrokerURL(), topic);
+		}
+		this.mode = SERVER_MODE;
+		this.retryFailed = false;
 
-    /**
-     * 
-     * Constructs a WorkflowInterpreter.
-     * 
-     * @param engine
-     * @param topic
-     */
-    public WorkflowInterpreter(XBayaEngine engine, String topic) {
-        this(engine, topic, engine.getWorkflow());
-    }
+	}
 
-    /**
-     * 
-     * Constructs a WorkflowInterpreter.
-     * 
-     * @param engine
-     * @param topic
-     * @param workflow
-     */
-    public WorkflowInterpreter(XBayaEngine engine, String topic, Workflow workflow) {
-        this(engine, topic, workflow, false);
-    }
+	/**
+	 * 
+	 * Constructs a WorkflowInterpreter.
+	 * 
+	 * @param engine
+	 * @param topic
+	 */
+	public WorkflowInterpreter(XBayaEngine engine, String topic) {
+		this(engine, topic, engine.getWorkflow());
+	}
 
-    /**
-     * 
-     * Constructs a WorkflowInterpreter.
-     * 
-     * @param engine
-     * @param topic
-     * @param workflow
-     * @param subWorkflow
-     */
-    public WorkflowInterpreter(XBayaEngine engine, String topic, Workflow workflow, boolean subWorkflow) {
-        this.engine = engine;
-        this.configuration = engine.getConfiguration();
-        this.myProxyChecker = new MyProxyChecker(this.engine);
-        this.workflow = workflow;
-        this.isSubWorkflow = subWorkflow;
-        this.mode = GUI_MODE;
-        this.notifier = new NotificationSender(this.engine.getMonitor().getConfiguration().getBrokerURL(), topic);
-        this.topic = topic;
+	/**
+	 * 
+	 * Constructs a WorkflowInterpreter.
+	 * 
+	 * @param engine
+	 * @param topic
+	 * @param workflow
+	 */
+	public WorkflowInterpreter(XBayaEngine engine, String topic,
+			Workflow workflow) {
+		this(engine, topic, workflow, false);
+	}
+
+	/**
+	 * 
+	 * Constructs a WorkflowInterpreter.
+	 * 
+	 * @param engine
+	 * @param topic
+	 * @param workflow
+	 * @param subWorkflow
+	 */
+	public WorkflowInterpreter(XBayaEngine engine, String topic,
+			Workflow workflow, boolean subWorkflow) {
+		this.engine = engine;
+		this.configuration = engine.getConfiguration();
+		this.myProxyChecker = new MyProxyChecker(this.engine);
+		this.workflow = workflow;
+		this.isSubWorkflow = subWorkflow;
+		this.mode = GUI_MODE;
+		if (this.isoffline) {
+			this.notifier = new StandaloneNotificationSender(topic, this.workflow);
+		} else {
+			this.notifier = new NotificationSender(this.engine.getMonitor()
+					.getConfiguration().getBrokerURL(), topic);
+		}
+		this.topic = topic;
+
+	}
 
-    }
 
     public void setResourceMapping(LeadResourceMapping resourceMapping) {
         this.resourceMapping = resourceMapping;

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java Thu Sep  8 23:39:23 2011
@@ -123,7 +123,7 @@ public class WorkflowInterpretorSkeleton
         return topic;
     }
 
-    private XBayaConfiguration getConfiguration(NameValue[] vals) throws URISyntaxException {
+    public static XBayaConfiguration getConfiguration(NameValue[] vals) throws URISyntaxException {
         XBayaConfiguration configuration = new XBayaConfiguration();
         configuration.setBrokerURL(new URI(findValue(vals, BROKER, XBayaConstants.DEFAULT_BROKER_URL.toString())));
         configuration.setDSCURL(new URI(findValue(vals, DSC, XBayaConstants.DEFAULT_DSC_URL.toString())));
@@ -138,7 +138,7 @@ public class WorkflowInterpretorSkeleton
         return configuration;
     }
 
-    public String findValue(NameValue[] vals, String key, String defaultVal) {
+    public static String findValue(NameValue[] vals, String key, String defaultVal) {
         for (int i = 0; i < vals.length; i++) {
             if (key.equals(vals[i].getName()) && !"".equals(vals[i].getValue())) {
                 return vals[i].getValue();

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java Thu Sep  8 23:39:23 2011
@@ -39,8 +39,9 @@ import javax.xml.namespace.QName;
 import org.apache.airavata.xbaya.XBayaException;
 import org.apache.airavata.xbaya.XBayaRuntimeException;
 import org.apache.airavata.xbaya.invoker.factory.InvokerFactory;
-import org.apache.airavata.xbaya.jython.lib.NotificationSender;
+import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
 import org.apache.airavata.xbaya.jython.lib.ServiceNotificationSender;
+import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
 import org.apache.airavata.xbaya.lead.LeadContextHeaderHelper;
 import org.apache.airavata.xbaya.util.XMLUtil;
 import org.xmlpull.v1.builder.XmlElement;
@@ -75,7 +76,7 @@ public class GenericInvoker implements I
 
     private Future<Boolean> result;
 
-    private ServiceNotificationSender notifier;
+    private ServiceNotifiable notifier;
 
     /**
      * used for notification
@@ -105,7 +106,7 @@ public class GenericInvoker implements I
      * @param notifier
      *            The notification sender
      */
-    public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, NotificationSender notifier) {
+    public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, WorkflowNotifiable notifier) {
         this(portTypeQName, wsdlLocation, nodeID, null, notifier);
     }
 
@@ -124,7 +125,7 @@ public class GenericInvoker implements I
      *            The notification sender
      */
     public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String gfacURL,
-            NotificationSender notifier) {
+            WorkflowNotifiable notifier) {
         this(portTypeQName, wsdlLocation, nodeID, null, gfacURL, notifier);
     }
 
@@ -144,7 +145,7 @@ public class GenericInvoker implements I
      *            The notification sender
      */
     public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String messageBoxURL,
-            String gfacURL, NotificationSender notifier) {
+            String gfacURL, WorkflowNotifiable notifier) {
         logger.entering(new Object[] { portTypeQName, wsdlLocation, nodeID, notifier });
         this.nodeID = nodeID;
         this.portTypeQName = portTypeQName;
@@ -170,7 +171,7 @@ public class GenericInvoker implements I
      * @param notifier2
      */
     public GenericInvoker(QName portTypeQName, WsdlDefinitions wsdl, String nodeID, String messageBoxURL,
-            String gfacURL, NotificationSender notifier) {
+            String gfacURL, WorkflowNotifiable notifier) {
         final String wsdlStr = xsul.XmlConstants.BUILDER.serializeToString(wsdl);
         logger.entering(new Object[] { portTypeQName, wsdlStr, nodeID, notifier });
         this.nodeID = nodeID;
@@ -255,12 +256,14 @@ public class GenericInvoker implements I
         WsdlResolver resolver = WsdlResolver.getInstance();
         // Get the concrete WSDL from invoker.setup() and set it to the
         // notifier.
-        if (this.wsdlLocation != null) {
-            this.notifier.setServiceID(this.wsdlLocation);
-        } else {
-            String name = this.portTypeQName.getLocalPart();
-            this.notifier.setServiceID(name);
-        }
+        
+        this.notifier.setServiceID(this.nodeID);
+//        if (this.wsdlLocation != null) {
+//            this.notifier.setServiceID(this.nodeID);
+//        } else {
+//            String name = this.portTypeQName.getLocalPart();
+//            this.notifier.setServiceID(name);
+//        }
     }
 
     /**

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java Thu Sep  8 23:39:23 2011
@@ -33,7 +33,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.airavata.xbaya.XBayaException;
 import org.apache.airavata.xbaya.XBayaRuntimeException;
-import org.apache.airavata.xbaya.jython.lib.ServiceNotificationSender;
+import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
 import org.apache.airavata.xbaya.util.XMLUtil;
 import org.xmlpull.v1.builder.XmlElement;
 
@@ -45,7 +45,7 @@ public class WorkflowInvokerWrapperForGF
 
     private static final MLogger logger = MLogger.getLogger();
 
-    private ServiceNotificationSender notifier;
+    private ServiceNotifiable notifier;
 
     private String serviceInformation;
 
@@ -54,7 +54,7 @@ public class WorkflowInvokerWrapperForGF
     protected boolean failerSent = false;
 
     public WorkflowInvokerWrapperForGFacInvoker(QName portTypeQName, String gfacURL, String messageBoxURL,
-            LeadContextHeader leadcontext, ServiceNotificationSender serviceNotificationSender) {
+            LeadContextHeader leadcontext, ServiceNotifiable serviceNotificationSender) {
         super(portTypeQName, gfacURL, messageBoxURL, leadcontext);
         this.notifier = serviceNotificationSender;
         this.serviceInformation = portTypeQName.toString();

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java Thu Sep  8 23:39:23 2011
@@ -29,6 +29,7 @@ import org.apache.airavata.workflow.trac
 import org.apache.airavata.workflow.tracking.common.*;
 import org.apache.airavata.xbaya.util.StringUtil;
 import org.apache.airavata.xbaya.util.XMLUtil;
+import org.apache.airavata.xbaya.wf.Workflow;
 import org.apache.axis2.addressing.EndpointReference;
 import org.python.core.PyObject;
 import org.xmlpull.infoset.XmlElement;
@@ -36,7 +37,7 @@ import org.xmlpull.infoset.XmlElement;
 import xsul.ws_addressing.WsaEndpointReference;
 import xsul5.MLogger;
 
-public class NotificationSender {
+public class NotificationSender implements WorkflowNotifiable {
 
     protected static final MLogger logger = MLogger.getLogger();
 
@@ -58,6 +59,7 @@ public class NotificationSender {
 
     protected WorkflowTrackingContext context;
 
+
     /**
      * Constructs a NotificationSender.
      * 
@@ -103,18 +105,19 @@ public class NotificationSender {
                 receiverWorkflowTimeStep);
     }
 
-    /**
-     * @return The event sink EPR.
-     */
-    public EndpointReference getEventSink() {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#getEventSink()
+	 */
+    @Override
+	public EndpointReference getEventSink() {
         return this.eventSink;
     }
 
-    /**
-     * @param args
-     * @param keywords
-     */
-    public void workflowStarted(PyObject[] args, String[] keywords) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowStarted(org.python.core.PyObject[], java.lang.String[])
+	 */
+    @Override
+	public void workflowStarted(PyObject[] args, String[] keywords) {
         logger.entering(new Object[] { args, keywords });
         String message = "";
         for (int i = 0; i < args.length; i++) {
@@ -126,7 +129,11 @@ public class NotificationSender {
         this.invocationContext = this.notifier.workflowInvoked(this.context,this.initiator, message);
     }
 
-    public void workflowStarted(Object[] args, String[] keywords) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowStarted(java.lang.Object[], java.lang.String[])
+	 */
+    @Override
+	public void workflowStarted(Object[] args, String[] keywords) {
         logger.entering(new Object[] { args, keywords });
         String message = "";
         for (int i = 0; i < args.length; i++) {
@@ -138,11 +145,11 @@ public class NotificationSender {
         this.invocationContext = this.notifier.workflowInvoked(this.context,this.initiator, message);
     }
 
-    /**
-     * @param args
-     * @param keywords
-     */
-    public void workflowFinished(Object[] args, String[] keywords) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFinished(java.lang.Object[], java.lang.String[])
+	 */
+    @Override
+	public void workflowFinished(Object[] args, String[] keywords) {
         logger.entering(new Object[] { args, keywords });
         String message = "";
         for (int i = 0; i < args.length; i++) {
@@ -155,7 +162,11 @@ public class NotificationSender {
         this.notifier.workflowTerminated(context,this.workflowID, "Workflow finished successfully.");
     }
 
-    public void sendingPartialResults(Object[] args, String[] keywords) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#sendingPartialResults(java.lang.Object[], java.lang.String[])
+	 */
+    @Override
+	public void sendingPartialResults(Object[] args, String[] keywords) {
         logger.entering(new Object[] { args, keywords });
         String message = "";
         for (int i = 0; i < args.length; i++) {
@@ -167,11 +178,11 @@ public class NotificationSender {
         this.notifier.sendingResult(context,this.invocationContext, message);
     }
 
-    /**
-     * @param args
-     * @param keywords
-     */
-    public void workflowFinished(PyObject[] args, String[] keywords) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFinished(org.python.core.PyObject[], java.lang.String[])
+	 */
+    @Override
+	public void workflowFinished(PyObject[] args, String[] keywords) {
         logger.entering(new Object[] { args, keywords });
         String message = "";
         for (int i = 0; i < args.length; i++) {
@@ -184,37 +195,35 @@ public class NotificationSender {
         this.notifier.workflowTerminated(context,this.workflowID, "Workflow finished successfully.");
     }
 
-    public void workflowTerminated() {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowTerminated()
+	 */
+    @Override
+	public void workflowTerminated() {
         this.notifier.workflowTerminated(context,this.workflowID, "Workflow finished successfully.");
     }
 
-    /**
-     * Sends a START_INCOMPLETED notification message.
-     * 
-     * @param message
-     *            The message to send
-     */
-    public void workflowFailed(String message) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFailed(java.lang.String)
+	 */
+    @Override
+	public void workflowFailed(String message) {
         workflowFailed(message, null);
     }
 
-    /**
-     * Sends a START_INCOMPLETED notification message.
-     * 
-     * @param e
-     */
-    public void workflowFailed(Throwable e) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFailed(java.lang.Throwable)
+	 */
+    @Override
+	public void workflowFailed(Throwable e) {
         workflowFailed(null, e);
     }
 
-    /**
-     * Sends a START_INCOMPLETED notification message.
-     * 
-     * @param message
-     *            The message to send
-     * @param e
-     */
-    public void workflowFailed(String message, Throwable e) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFailed(java.lang.String, java.lang.Throwable)
+	 */
+    @Override
+	public void workflowFailed(String message, Throwable e) {
         logger.entering(new Object[] { message, e });
         logger.caught(e);
         if (message == null || "".equals(message)) {
@@ -237,12 +246,12 @@ public class NotificationSender {
         this.notifier.info(context,message);
     }
 
-    /**
-     * @param nodeID
-     * @return The ServiceNoficationSender created.
-     */
-    public ServiceNotificationSender createServiceNotificationSender(String nodeID) {
-        return new ServiceNotificationSender(this.notifier, this.eventSink, this.initiator, this.workflowID, nodeID,
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#createServiceNotificationSender(java.lang.String)
+	 */
+    @Override
+	public ServiceNotifiable createServiceNotificationSender(String nodeID) {
+    	return new ServiceNotificationSender(this.notifier, this.eventSink, this.initiator, this.workflowID, nodeID,
                 this.context);
     }
 }
\ No newline at end of file

Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java Thu Sep  8 23:39:23 2011
@@ -0,0 +1,61 @@
+package org.apache.airavata.xbaya.jython.lib;
+
+import java.net.URI;
+
+import org.apache.axis2.addressing.EndpointReference;
+
+import xsul.wsif.WSIFMessage;
+
+public interface ServiceNotifiable {
+
+	/**
+	 * @param serviceID
+	 */
+	public abstract void setServiceID(String serviceID);
+
+	/**
+	 * @return The event sink.
+	 */
+	public abstract EndpointReference getEventSink();
+
+	/**
+	 * @return The workflow ID.
+	 */
+	public abstract URI getWorkflowID();
+
+	/**
+	 * @param inputs
+	 */
+	public abstract void invokingService(WSIFMessage inputs);
+
+	/**
+	 * @param outputs
+	 */
+	public abstract void serviceFinished(WSIFMessage outputs);
+
+	/**
+	 * Sends an InvokeServiceFinishedFailed notification message.
+	 * 
+	 * @param message
+	 *            The message to send
+	 * @param e
+	 */
+	public abstract void invocationFailed(String message, Throwable e);
+
+	/**
+	 * Sends a receivedFault notification message.
+	 * 
+	 * @param message
+	 *            The message to send
+	 */
+	@Deprecated
+	public abstract void receivedFault(String message);
+
+	/**
+	 * Sends a receivedFault notification message.
+	 * 
+	 * @param fault
+	 */
+	public abstract void receivedFault(WSIFMessage fault);
+
+}
\ No newline at end of file

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java Thu Sep  8 23:39:23 2011
@@ -40,7 +40,7 @@ import xsul.ws_addressing.WsaEndpointRef
 import xsul.wsif.WSIFMessage;
 import xsul5.MLogger;
 
-public class ServiceNotificationSender {
+public class ServiceNotificationSender implements ServiceNotifiable {
 
     private static final MLogger logger = MLogger.getLogger();
 
@@ -91,10 +91,11 @@ public class ServiceNotificationSender {
                 workflowTimeStep);
     }
 
-    /**
-     * @param serviceID
-     */
-    public void setServiceID(String serviceID) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#setServiceID(java.lang.String)
+	 */
+    @Override
+	public void setServiceID(String serviceID) {
         logger.entering(new Object[] { serviceID });
         this.serviceID = serviceID;
 
@@ -106,24 +107,27 @@ public class ServiceNotificationSender {
                 workflowTimeStep);
     }
 
-    /**
-     * @return The event sink.
-     */
-    public EndpointReference getEventSink() {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#getEventSink()
+	 */
+    @Override
+	public EndpointReference getEventSink() {
         return this.eventSink;
     }
 
-    /**
-     * @return The workflow ID.
-     */
-    public URI getWorkflowID() {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#getWorkflowID()
+	 */
+    @Override
+	public URI getWorkflowID() {
         return this.workflowID;
     }
 
-    /**
-     * @param inputs
-     */
-    public void invokingService(WSIFMessage inputs) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#invokingService(xsul.wsif.WSIFMessage)
+	 */
+    @Override
+	public void invokingService(WSIFMessage inputs) {
         String message = "";
         Iterator partIt = inputs.partNames().iterator();
         boolean first = true;
@@ -148,10 +152,11 @@ public class ServiceNotificationSender {
         this.invocationContext = this.notifier.invokingService(this.context,this.initiator, header, body, message);
     }
 
-    /**
-     * @param outputs
-     */
-    public void serviceFinished(WSIFMessage outputs) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#serviceFinished(xsul.wsif.WSIFMessage)
+	 */
+    @Override
+	public void serviceFinished(WSIFMessage outputs) {
         String message = "";
         Iterator partIt = outputs.partNames().iterator();
         boolean first = true;
@@ -176,14 +181,11 @@ public class ServiceNotificationSender {
         this.notifier.receivedResult(this.context,this.invocationContext,header, body, message);
     }
 
-    /**
-     * Sends an InvokeServiceFinishedFailed notification message.
-     * 
-     * @param message
-     *            The message to send
-     * @param e
-     */
-    public void invocationFailed(String message, Throwable e) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#invocationFailed(java.lang.String, java.lang.Throwable)
+	 */
+    @Override
+	public void invocationFailed(String message, Throwable e) {
 
         // TODO there are two types of error messages.
         // The first one is while creating a service. (No API)
@@ -215,13 +217,11 @@ public class ServiceNotificationSender {
         }
     }
 
-    /**
-     * Sends a receivedFault notification message.
-     * 
-     * @param message
-     *            The message to send
-     */
-    @Deprecated
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#receivedFault(java.lang.String)
+	 */
+    @Override
+	@Deprecated
     public void receivedFault(String message) {
         // XXX If error occurs before invoking a service, create a fake
         // invocation context.
@@ -235,12 +235,11 @@ public class ServiceNotificationSender {
         this.notifier.receivedFault(this.context,this.invocationContext, message);
     }
 
-    /**
-     * Sends a receivedFault notification message.
-     * 
-     * @param fault
-     */
-    public void receivedFault(WSIFMessage fault) {
+    /* (non-Javadoc)
+	 * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#receivedFault(xsul.wsif.WSIFMessage)
+	 */
+    @Override
+	public void receivedFault(WSIFMessage fault) {
         // XXX If error occurs before invoking a service, create a fake
         // invocation context.
         if (this.invocationContext == null) {

Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java Thu Sep  8 23:39:23 2011
@@ -0,0 +1,72 @@
+package org.apache.airavata.xbaya.jython.lib;
+
+import java.awt.Color;
+import java.net.URI;
+
+import org.apache.airavata.xbaya.XBayaConstants;
+import org.apache.airavata.xbaya.graph.Node;
+import org.apache.airavata.xbaya.graph.gui.NodeGUI;
+import org.apache.airavata.xbaya.monitor.gui.MonitorEventHandler.NodeState;
+import org.apache.airavata.xbaya.wf.Workflow;
+import org.apache.axis2.addressing.EndpointReference;
+
+import xsul.wsif.WSIFMessage;
+
+public class StandaloneServiceNotificationSender implements ServiceNotifiable {
+
+	private Workflow workflow;
+	private String serviceID;
+	private URI workflowID;
+
+	public StandaloneServiceNotificationSender(Workflow workflow, URI workflowID) {
+		this.workflow = workflow;
+		this.workflowID = workflowID;
+	}
+
+	@Override
+	public void setServiceID(String serviceID) {
+		this.serviceID = serviceID;
+		System.out.println(serviceID);
+
+	}
+
+	@Override
+	public EndpointReference getEventSink() {
+		return new EndpointReference(XBayaConstants.DEFAULT_BROKER_URL.toString());
+	}
+
+	@Override
+	public URI getWorkflowID() {
+		return this.workflowID;
+	}
+
+	@Override
+	public void invokingService(WSIFMessage inputs) {
+		this.workflow.getGraph().getNode(this.serviceID).getGUI().setBodyColor(NodeState.EXECUTING.color);
+	}
+
+	@Override
+	public void serviceFinished(WSIFMessage outputs) {
+		this.workflow.getGraph().getNode(this.serviceID).getGUI().setBodyColor(NodeState.FINISHED.color);
+
+	}
+
+	@Override
+	public void invocationFailed(String message, Throwable e) {
+		this.workflow.getGraph().getNode(this.serviceID).getGUI().setBodyColor(NodeState.FAILED.color);
+
+	}
+
+	@Override
+	public void receivedFault(String message) {
+		this.workflow.getGraph().getNode(this.serviceID).getGUI().setBodyColor(NodeState.FAILED.color);
+
+	}
+
+	@Override
+	public void receivedFault(WSIFMessage fault) {
+		this.workflow.getGraph().getNode(this.serviceID).getGUI().setBodyColor(NodeState.FAILED.color);
+
+	}
+
+}

Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java Thu Sep  8 23:39:23 2011
@@ -0,0 +1,68 @@
+package org.apache.airavata.xbaya.jython.lib;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.python.core.PyObject;
+
+public interface WorkflowNotifiable {
+
+	/**
+	 * @return The event sink EPR.
+	 */
+	public abstract EndpointReference getEventSink();
+
+	/**
+	 * @param args
+	 * @param keywords
+	 */
+	public abstract void workflowStarted(PyObject[] args, String[] keywords);
+
+	public abstract void workflowStarted(Object[] args, String[] keywords);
+
+	/**
+	 * @param args
+	 * @param keywords
+	 */
+	public abstract void workflowFinished(Object[] args, String[] keywords);
+
+	public abstract void sendingPartialResults(Object[] args, String[] keywords);
+
+	/**
+	 * @param args
+	 * @param keywords
+	 */
+	public abstract void workflowFinished(PyObject[] args, String[] keywords);
+
+	public abstract void workflowTerminated();
+
+	/**
+	 * Sends a START_INCOMPLETED notification message.
+	 * 
+	 * @param message
+	 *            The message to send
+	 */
+	public abstract void workflowFailed(String message);
+
+	/**
+	 * Sends a START_INCOMPLETED notification message.
+	 * 
+	 * @param e
+	 */
+	public abstract void workflowFailed(Throwable e);
+
+	/**
+	 * Sends a START_INCOMPLETED notification message.
+	 * 
+	 * @param message
+	 *            The message to send
+	 * @param e
+	 */
+	public abstract void workflowFailed(String message, Throwable e);
+
+	/**
+	 * @param nodeID
+	 * @return The ServiceNoficationSender created.
+	 */
+	public abstract ServiceNotifiable createServiceNotificationSender(
+			String nodeID);
+
+}
\ No newline at end of file

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/test/jython/JythonLibraryTest.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/test/jython/JythonLibraryTest.java?rev=1166942&r1=1166941&r2=1166942&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/test/jython/JythonLibraryTest.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/test/jython/JythonLibraryTest.java Thu Sep  8 23:39:23 2011
@@ -28,6 +28,7 @@ import org.apache.airavata.xbaya.XBayaEx
 import org.apache.airavata.xbaya.invoker.GenericInvoker;
 import org.apache.airavata.xbaya.invoker.Invoker;
 import org.apache.airavata.xbaya.jython.lib.NotificationSender;
+import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
 import org.apache.airavata.xbaya.test.service.adder.AdderService;
 import org.apache.airavata.xbaya.test.service.multiplier.MultiplierService;
 
@@ -47,7 +48,7 @@ public class JythonLibraryTest extends T
         service.run();
         String adderWSDLLoc = service.getServiceWsdlLocation();
 
-        NotificationSender notifier = new NotificationSender(XBayaConstants.DEFAULT_BROKER_URL.toString(), "test-topic");
+        WorkflowNotifiable notifier = new NotificationSender(XBayaConstants.DEFAULT_BROKER_URL.toString(), "test-topic");
 
         Invoker invoker = new GenericInvoker(null, adderWSDLLoc, "adder", null, null, notifier);
         invoker.setup();
@@ -76,7 +77,7 @@ public class JythonLibraryTest extends T
         multiplier.run();
         String multiplierWSDLLoc = multiplier.getServiceWsdlLocation();
 
-        NotificationSender notifier = new NotificationSender(XBayaConstants.DEFAULT_BROKER_URL.toString(), "test-topic");
+        WorkflowNotifiable notifier = new NotificationSender(XBayaConstants.DEFAULT_BROKER_URL.toString(), "test-topic");
 
         Invoker adderInvoker1 = new GenericInvoker(null, adderWSDLLoc, "adder", null, null, notifier);
         adderInvoker1.setup();

Added: incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/WorkflowTest.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/WorkflowTest.java?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/WorkflowTest.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/test/java/org/apache/airavata/xbaya/interpreter/WorkflowTest.java Thu Sep  8 23:39:23 2011
@@ -0,0 +1,83 @@
+package org.apache.airavata.xbaya.interpreter;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.util.UUID;
+
+import org.apache.airavata.xbaya.XBayaConfiguration;
+import org.apache.airavata.xbaya.XBayaConstants;
+import org.apache.airavata.xbaya.XBayaException;
+import org.apache.airavata.xbaya.graph.system.InputNode;
+import org.apache.airavata.xbaya.interpretor.HeaderConstants;
+import org.apache.airavata.xbaya.interpretor.WorkflowInterpreter;
+import org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton;
+import org.apache.airavata.xbaya.interpretor.WorkflowInterpretorStub.NameValue;
+import org.apache.airavata.xbaya.wf.Workflow;
+import org.junit.Test;
+import org.python.antlr.PythonParser.classdef_return;
+
+public class WorkflowTest implements HeaderConstants {
+
+	@Test
+	public void testScheduleDynamically() throws IOException, URISyntaxException, XBayaException {
+		
+		Workflow workflow = new Workflow(readWorkflow());
+		((InputNode)workflow.getGraph().getNode("before")).setDefaultValue("1");
+		WorkflowInterpreter interpretor = new WorkflowInterpreter(getConfiguration(), UUID.randomUUID().toString(), workflow, "NA", "NA", true);
+		interpretor.scheduleDynamically();
+	}
+	
+	
+	
+	private XBayaConfiguration getConfiguration() throws URISyntaxException {
+		NameValue[] configurations = new NameValue[6];
+        configurations[0] = new NameValue();
+        configurations[0].setName(HEADER_ELEMENT_GFAC);
+        configurations[0].setValue(XBayaConstants.DEFAULT_GFAC_URL.toString());
+        configurations[1] = new NameValue();
+        configurations[1].setName(HEADER_ELEMENT_XREGISTRY);
+        configurations[1].setValue(XBayaConstants.DEFAULT_XREGISTRY_URL.toString());
+        configurations[2] = new NameValue();
+        configurations[2].setName(HEADER_ELEMENT_PROXYSERVER);
+        configurations[2].setValue(XBayaConstants.DEFAULT_MYPROXY_SERVER);
+
+        configurations[3] = new NameValue();
+        configurations[3].setName(HEADER_ELEMENT_MSGBOX);
+        configurations[3].setValue(XBayaConstants.DEFAULT_MESSAGE_BOX_URL.toString());
+
+        configurations[4] = new NameValue();
+        configurations[4].setName(HEADER_ELEMENT_DSC);
+        configurations[4].setValue(XBayaConstants.DEFAULT_DSC_URL.toString());
+
+        configurations[5] = new NameValue();
+        configurations[5].setName(HEADER_ELEMENT_BROKER);
+        configurations[5].setValue(XBayaConstants.DEFAULT_BROKER_URL.toString());
+		return WorkflowInterpretorSkeleton.getConfiguration(configurations);
+	}
+
+
+
+	private String readWorkflow() throws IOException, URISyntaxException{
+		
+		URL url = this.getClass().getClassLoader().getSystemResource("test.xwf");
+		FileInputStream stream = new FileInputStream(new File(url.toURI()));
+		  try {
+		    FileChannel fc = stream.getChannel();
+		    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
+		    /* Instead of using default, pass in a decoder. */
+		    return Charset.defaultCharset().decode(bb).toString();
+		  }
+		  finally {
+		    stream.close();
+		  }
+
+	}
+
+}

Added: incubator/airavata/trunk/modules/xbaya-gui/src/test/java/test.xwf
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/test/java/test.xwf?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/test/java/test.xwf (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/test/java/test.xwf Thu Sep  8 23:39:23 2011
@@ -0,0 +1,242 @@
+<?xml version="1.0"?><xwf:workflow xwf:version="3.8.8" xmlns:xwf="http://www.extreme.indiana.edu/xbaya/xwf">
+  <xgr:graph xgr:version="3.8.8" xgr:type="ws"
+    xmlns:xgr="http://www.extreme.indiana.edu/xbaya/graph">
+    <xgr:id>test3</xgr:id>
+    <xgr:name>test3</xgr:name>
+    <xgr:description></xgr:description>
+    <xgr:metadata>
+      <appinfo xmlns="http://www.w3.org/2001/XMLSchema">
+
+</appinfo>
+    </xgr:metadata>
+    <xgr:node xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp</xgr:id>
+      <xgr:name>TimestampServicePortType:appendTimeStamp</xgr:name>
+      <xgr:outputPort>TimestampServicePortType_appendTimeStamp_out_0</xgr:outputPort>
+      <xgr:inputPort>TimestampServicePortType_appendTimeStamp_in_0</xgr:inputPort>
+      <xgr:controlInPort>TimestampServicePortType_appendTimeStamp_ctrl_in_0</xgr:controlInPort>
+      <xgr:controlOutPort>TimestampServicePortType_appendTimeStamp_ctrl_out_0</xgr:controlOutPort>
+      <xgr:x>35</xgr:x>
+      <xgr:y>122</xgr:y>
+      <xgr:wsdl>_</xgr:wsdl>
+      <xgr:portType>{http://indiana.edu}TimestampServicePortType</xgr:portType>
+      <xgr:operation>appendTimeStamp</xgr:operation>
+    </xgr:node>
+    <xgr:node xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2</xgr:id>
+      <xgr:name>TimestampServicePortType:appendTimeStamp</xgr:name>
+      <xgr:outputPort>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:outputPort>
+      <xgr:inputPort>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:inputPort>
+      <xgr:controlInPort>TimestampServicePortType_appendTimeStamp_2_ctrl_in_0</xgr:controlInPort>
+      <xgr:controlOutPort>TimestampServicePortType_appendTimeStamp_2_ctrl_out_0</xgr:controlOutPort>
+      <xgr:x>179</xgr:x>
+      <xgr:y>228</xgr:y>
+      <xgr:wsdl>_</xgr:wsdl>
+      <xgr:portType>{http://indiana.edu}TimestampServicePortType</xgr:portType>
+      <xgr:operation>appendTimeStamp</xgr:operation>
+    </xgr:node>
+    <xgr:node xgr:type="input">
+      <xgr:id>before</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:outputPort>before_out_0</xgr:outputPort>
+      <xgr:x>24</xgr:x>
+      <xgr:y>47</xgr:y>
+      <xgr:config>
+        <xgr:description></xgr:description>
+        <xgr:dataType>{http://www.w3.org/2001/XMLSchema}string</xgr:dataType>
+      </xgr:config>
+    </xgr:node>
+    <xgr:node xgr:type="output">
+      <xgr:id>return</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:inputPort>return_in_0</xgr:inputPort>
+      <xgr:x>552</xgr:x>
+      <xgr:y>216</xgr:y>
+      <xgr:config>
+        <xgr:description></xgr:description>
+        <xgr:dataType>{http://www.w3.org/2001/XMLSchema}string</xgr:dataType>
+      </xgr:config>
+    </xgr:node>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_in_0</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_out_0</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_ctrl_in_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_ctrl_out_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_ctrl_in_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_ctrl_out_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="systemData">
+      <xgr:id>before_out_0</xgr:id>
+      <xgr:name>Parameter</xgr:name>
+      <xgr:node>before</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="systemData">
+      <xgr:id>return_in_0</xgr:id>
+      <xgr:name>Parameter</xgr:name>
+      <xgr:node>return</xgr:node>
+    </xgr:port>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>before_out_0</xgr:fromPort>
+      <xgr:toPort>TimestampServicePortType_appendTimeStamp_in_0</xgr:toPort>
+    </xgr:edge>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>TimestampServicePortType_appendTimeStamp_out_0</xgr:fromPort>
+      <xgr:toPort>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:toPort>
+    </xgr:edge>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:fromPort>
+      <xgr:toPort>return_in_0</xgr:toPort>
+    </xgr:edge>
+  </xgr:graph>
+  <xwf:wsdls>
+    <xwf:wsdl xwf:id="_">&lt;wsdl:definitions targetNamespace="http://indiana.edu" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://indiana.edu"
+  xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  &lt;wsdl:types>
+    &lt;xs:schema targetNamespace="http://indiana.edu">
+            &lt;xs:element name="appendTimeStamp">
+                &lt;xs:complexType>
+                    &lt;xs:sequence>
+                        &lt;xs:element minOccurs="0" name="before" nillable="true" type="xs:string" />
+                    &lt;/xs:sequence>
+                &lt;/xs:complexType>
+            &lt;/xs:element>
+            &lt;xs:element name="appendTimeStampResponse">
+                &lt;xs:complexType>
+                    &lt;xs:sequence>
+                        &lt;xs:element minOccurs="0" name="return" nillable="true" type="xs:string" />
+                    &lt;/xs:sequence>
+                &lt;/xs:complexType>
+            &lt;/xs:element>
+        &lt;/xs:schema>
+  &lt;/wsdl:types>
+  &lt;wsdl:message name="appendTimeStampResponse">
+    &lt;wsdl:part name="parameters" element="ns:appendTimeStampResponse">
+    &lt;/wsdl:part>
+  &lt;/wsdl:message>
+  &lt;wsdl:message name="appendTimeStampRequest">
+    &lt;wsdl:part name="parameters" element="ns:appendTimeStamp">
+    &lt;/wsdl:part>
+  &lt;/wsdl:message>
+  &lt;wsdl:portType name="TimestampServicePortType">
+    &lt;wsdl:operation name="appendTimeStamp">
+      &lt;wsdl:input wsaw:Action="urn:appendTimeStamp" message="ns:appendTimeStampRequest">
+    &lt;/wsdl:input>
+      &lt;wsdl:output wsaw:Action="urn:appendTimeStampResponse" message="ns:appendTimeStampResponse">
+    &lt;/wsdl:output>
+    &lt;/wsdl:operation>
+  &lt;/wsdl:portType>
+  &lt;wsdl:binding name="TimestampServiceSoap11Binding" type="ns:TimestampServicePortType">
+    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+    &lt;wsdl:operation name="appendTimeStamp">
+      &lt;soap:operation soapAction="urn:appendTimeStamp" style="document" />
+      &lt;wsdl:input>
+        &lt;soap:body use="literal" />
+      &lt;/wsdl:input>
+      &lt;wsdl:output>
+        &lt;soap:body use="literal" />
+      &lt;/wsdl:output>
+    &lt;/wsdl:operation>
+  &lt;/wsdl:binding>
+  &lt;wsdl:service name="TimestampService">
+    &lt;wsdl:port name="TimestampServiceHttpSoap11Endpoint" binding="ns:TimestampServiceSoap11Binding">
+      &lt;soap:address location="http://pagodatree.cs.indiana.edu:8081/axis2/services/TimestampService" />
+    &lt;/wsdl:port>
+  &lt;/wsdl:service>
+&lt;/wsdl:definitions></xwf:wsdl>
+  </xwf:wsdls>
+  <xwf:image>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
+AQDgd/8B2MLNSngBKtIAAAAASUVORK5CYII=
+</xwf:image>
+</xwf:workflow>
\ No newline at end of file

Added: incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/test.xwf
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/test.xwf?rev=1166942&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/test.xwf (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/test/resources/test.xwf Thu Sep  8 23:39:23 2011
@@ -0,0 +1,242 @@
+<?xml version="1.0"?><xwf:workflow xwf:version="3.8.8" xmlns:xwf="http://www.extreme.indiana.edu/xbaya/xwf">
+  <xgr:graph xgr:version="3.8.8" xgr:type="ws"
+    xmlns:xgr="http://www.extreme.indiana.edu/xbaya/graph">
+    <xgr:id>test3</xgr:id>
+    <xgr:name>test3</xgr:name>
+    <xgr:description></xgr:description>
+    <xgr:metadata>
+      <appinfo xmlns="http://www.w3.org/2001/XMLSchema">
+
+</appinfo>
+    </xgr:metadata>
+    <xgr:node xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp</xgr:id>
+      <xgr:name>TimestampServicePortType:appendTimeStamp</xgr:name>
+      <xgr:outputPort>TimestampServicePortType_appendTimeStamp_out_0</xgr:outputPort>
+      <xgr:inputPort>TimestampServicePortType_appendTimeStamp_in_0</xgr:inputPort>
+      <xgr:controlInPort>TimestampServicePortType_appendTimeStamp_ctrl_in_0</xgr:controlInPort>
+      <xgr:controlOutPort>TimestampServicePortType_appendTimeStamp_ctrl_out_0</xgr:controlOutPort>
+      <xgr:x>35</xgr:x>
+      <xgr:y>122</xgr:y>
+      <xgr:wsdl>_</xgr:wsdl>
+      <xgr:portType>{http://indiana.edu}TimestampServicePortType</xgr:portType>
+      <xgr:operation>appendTimeStamp</xgr:operation>
+    </xgr:node>
+    <xgr:node xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2</xgr:id>
+      <xgr:name>TimestampServicePortType:appendTimeStamp</xgr:name>
+      <xgr:outputPort>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:outputPort>
+      <xgr:inputPort>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:inputPort>
+      <xgr:controlInPort>TimestampServicePortType_appendTimeStamp_2_ctrl_in_0</xgr:controlInPort>
+      <xgr:controlOutPort>TimestampServicePortType_appendTimeStamp_2_ctrl_out_0</xgr:controlOutPort>
+      <xgr:x>179</xgr:x>
+      <xgr:y>228</xgr:y>
+      <xgr:wsdl>_</xgr:wsdl>
+      <xgr:portType>{http://indiana.edu}TimestampServicePortType</xgr:portType>
+      <xgr:operation>appendTimeStamp</xgr:operation>
+    </xgr:node>
+    <xgr:node xgr:type="input">
+      <xgr:id>before</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:outputPort>before_out_0</xgr:outputPort>
+      <xgr:x>24</xgr:x>
+      <xgr:y>47</xgr:y>
+      <xgr:config>
+        <xgr:description></xgr:description>
+        <xgr:dataType>{http://www.w3.org/2001/XMLSchema}string</xgr:dataType>
+      </xgr:config>
+    </xgr:node>
+    <xgr:node xgr:type="output">
+      <xgr:id>return</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:inputPort>return_in_0</xgr:inputPort>
+      <xgr:x>552</xgr:x>
+      <xgr:y>216</xgr:y>
+      <xgr:config>
+        <xgr:description></xgr:description>
+        <xgr:dataType>{http://www.w3.org/2001/XMLSchema}string</xgr:dataType>
+      </xgr:config>
+    </xgr:node>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_in_0</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_out_0</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_ctrl_in_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_ctrl_out_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:id>
+      <xgr:name>before</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="ws">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:id>
+      <xgr:name>return</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_ctrl_in_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="control">
+      <xgr:id>TimestampServicePortType_appendTimeStamp_2_ctrl_out_0</xgr:id>
+      <xgr:name>control</xgr:name>
+      <xgr:node>TimestampServicePortType_appendTimeStamp_2</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="systemData">
+      <xgr:id>before_out_0</xgr:id>
+      <xgr:name>Parameter</xgr:name>
+      <xgr:node>before</xgr:node>
+    </xgr:port>
+    <xgr:port xgr:type="systemData">
+      <xgr:id>return_in_0</xgr:id>
+      <xgr:name>Parameter</xgr:name>
+      <xgr:node>return</xgr:node>
+    </xgr:port>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>before_out_0</xgr:fromPort>
+      <xgr:toPort>TimestampServicePortType_appendTimeStamp_in_0</xgr:toPort>
+    </xgr:edge>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>TimestampServicePortType_appendTimeStamp_out_0</xgr:fromPort>
+      <xgr:toPort>TimestampServicePortType_appendTimeStamp_2_in_0</xgr:toPort>
+    </xgr:edge>
+    <xgr:edge xgr:type="data">
+      <xgr:fromPort>TimestampServicePortType_appendTimeStamp_2_out_0</xgr:fromPort>
+      <xgr:toPort>return_in_0</xgr:toPort>
+    </xgr:edge>
+  </xgr:graph>
+  <xwf:wsdls>
+    <xwf:wsdl xwf:id="_">&lt;wsdl:definitions targetNamespace="http://indiana.edu" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://indiana.edu"
+  xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  &lt;wsdl:types>
+    &lt;xs:schema targetNamespace="http://indiana.edu">
+            &lt;xs:element name="appendTimeStamp">
+                &lt;xs:complexType>
+                    &lt;xs:sequence>
+                        &lt;xs:element minOccurs="0" name="before" nillable="true" type="xs:string" />
+                    &lt;/xs:sequence>
+                &lt;/xs:complexType>
+            &lt;/xs:element>
+            &lt;xs:element name="appendTimeStampResponse">
+                &lt;xs:complexType>
+                    &lt;xs:sequence>
+                        &lt;xs:element minOccurs="0" name="return" nillable="true" type="xs:string" />
+                    &lt;/xs:sequence>
+                &lt;/xs:complexType>
+            &lt;/xs:element>
+        &lt;/xs:schema>
+  &lt;/wsdl:types>
+  &lt;wsdl:message name="appendTimeStampResponse">
+    &lt;wsdl:part name="parameters" element="ns:appendTimeStampResponse">
+    &lt;/wsdl:part>
+  &lt;/wsdl:message>
+  &lt;wsdl:message name="appendTimeStampRequest">
+    &lt;wsdl:part name="parameters" element="ns:appendTimeStamp">
+    &lt;/wsdl:part>
+  &lt;/wsdl:message>
+  &lt;wsdl:portType name="TimestampServicePortType">
+    &lt;wsdl:operation name="appendTimeStamp">
+      &lt;wsdl:input wsaw:Action="urn:appendTimeStamp" message="ns:appendTimeStampRequest">
+    &lt;/wsdl:input>
+      &lt;wsdl:output wsaw:Action="urn:appendTimeStampResponse" message="ns:appendTimeStampResponse">
+    &lt;/wsdl:output>
+    &lt;/wsdl:operation>
+  &lt;/wsdl:portType>
+  &lt;wsdl:binding name="TimestampServiceSoap11Binding" type="ns:TimestampServicePortType">
+    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+    &lt;wsdl:operation name="appendTimeStamp">
+      &lt;soap:operation soapAction="urn:appendTimeStamp" style="document" />
+      &lt;wsdl:input>
+        &lt;soap:body use="literal" />
+      &lt;/wsdl:input>
+      &lt;wsdl:output>
+        &lt;soap:body use="literal" />
+      &lt;/wsdl:output>
+    &lt;/wsdl:operation>
+  &lt;/wsdl:binding>
+  &lt;wsdl:service name="TimestampService">
+    &lt;wsdl:port name="TimestampServiceHttpSoap11Endpoint" binding="ns:TimestampServiceSoap11Binding">
+      &lt;soap:address location="http://pagodatree.cs.indiana.edu:8081/axis2/services/TimestampService" />
+    &lt;/wsdl:port>
+  &lt;/wsdl:service>
+&lt;/wsdl:definitions></xwf:wsdl>
+  </xwf:wsdls>
+  <xwf:image>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
+AQDgd/8B2MLNSngBKtIAAAAASUVORK5CYII=
+</xwf:image>
+</xwf:workflow>
\ No newline at end of file