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="_"><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/">
+ <wsdl:types>
+ <xs:schema targetNamespace="http://indiana.edu">
+ <xs:element name="appendTimeStamp">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="before" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="appendTimeStampResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="appendTimeStampResponse">
+ <wsdl:part name="parameters" element="ns:appendTimeStampResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="appendTimeStampRequest">
+ <wsdl:part name="parameters" element="ns:appendTimeStamp">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="TimestampServicePortType">
+ <wsdl:operation name="appendTimeStamp">
+ <wsdl:input wsaw:Action="urn:appendTimeStamp" message="ns:appendTimeStampRequest">
+ </wsdl:input>
+ <wsdl:output wsaw:Action="urn:appendTimeStampResponse" message="ns:appendTimeStampResponse">
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TimestampServiceSoap11Binding" type="ns:TimestampServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="appendTimeStamp">
+ <soap:operation soapAction="urn:appendTimeStamp" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TimestampService">
+ <wsdl:port name="TimestampServiceHttpSoap11Endpoint" binding="ns:TimestampServiceSoap11Binding">
+ <soap:address location="http://pagodatree.cs.indiana.edu:8081/axis2/services/TimestampService" />
+ </wsdl:port>
+ </wsdl:service>
+</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="_"><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/">
+ <wsdl:types>
+ <xs:schema targetNamespace="http://indiana.edu">
+ <xs:element name="appendTimeStamp">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="before" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="appendTimeStampResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="appendTimeStampResponse">
+ <wsdl:part name="parameters" element="ns:appendTimeStampResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="appendTimeStampRequest">
+ <wsdl:part name="parameters" element="ns:appendTimeStamp">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="TimestampServicePortType">
+ <wsdl:operation name="appendTimeStamp">
+ <wsdl:input wsaw:Action="urn:appendTimeStamp" message="ns:appendTimeStampRequest">
+ </wsdl:input>
+ <wsdl:output wsaw:Action="urn:appendTimeStampResponse" message="ns:appendTimeStampResponse">
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TimestampServiceSoap11Binding" type="ns:TimestampServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="appendTimeStamp">
+ <soap:operation soapAction="urn:appendTimeStamp" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TimestampService">
+ <wsdl:port name="TimestampServiceHttpSoap11Endpoint" binding="ns:TimestampServiceSoap11Binding">
+ <soap:address location="http://pagodatree.cs.indiana.edu:8081/axis2/services/TimestampService" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions></xwf:wsdl>
+ </xwf:wsdls>
+ <xwf:image>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
+AQDgd/8B2MLNSngBKtIAAAAASUVORK5CYII=
+</xwf:image>
+</xwf:workflow>
\ No newline at end of file