You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/05/14 22:50:30 UTC

svn commit: r1338396 - in /incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya: experiment/gui/WorkflowInterpreterLaunchWindow.java interpretor/WorkflowInterpretorSkeleton.java invoker/GenericInvoker.java

Author: lahiru
Date: Mon May 14 20:50:29 2012
New Revision: 1338396

URL: http://svn.apache.org/viewvc?rev=1338396&view=rev
Log:
supporting ContextHeader to parse to WokflowInterpreter from the client code.

Modified:
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/experiment/gui/WorkflowInterpreterLaunchWindow.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

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/experiment/gui/WorkflowInterpreterLaunchWindow.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/experiment/gui/WorkflowInterpreterLaunchWindow.java?rev=1338396&r1=1338395&r2=1338396&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/experiment/gui/WorkflowInterpreterLaunchWindow.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/experiment/gui/WorkflowInterpreterLaunchWindow.java Mon May 14 20:50:29 2012
@@ -35,8 +35,10 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.xml.namespace.QName;
 
+import com.sun.tools.internal.ws.util.xml.XmlUtil;
 import org.apache.airavata.common.utils.StringUtil;
 import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.xbaya.XBayaConfiguration;
 import org.apache.airavata.xbaya.XBayaConstants;
 import org.apache.airavata.xbaya.XBayaEngine;
@@ -58,6 +60,7 @@ import org.apache.airavata.xbaya.monitor
 import org.apache.airavata.xbaya.ode.ODEClient;
 import org.apache.airavata.xbaya.util.XBayaUtil;
 import org.apache.airavata.xbaya.wf.Workflow;
+import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xmlpull.infoset.XmlElement;
@@ -337,11 +340,15 @@ public class WorkflowInterpreterLaunchWi
                         inputNameVals[i].setName(id);
                         inputNameVals[i].setValue(value);
                     }
-
-                    String myProxyUsername = engine.getConfiguration().getRegistryUserName();
-                    String myProxyPass = engine.getConfiguration().getRegistryPassphrase();
+                    XBayaConfiguration configuration = engine.getConfiguration();
+                    String myProxyUsername = configuration.getRegistryUserName();
+                    String myProxyPass = configuration.getRegistryPassphrase();
                     //todo we need to add the workflowContext header in the message
-                    stub.launchWorkflow(workflow.toXMLText(), topicString, inputNameVals);
+                    WorkflowContextHeaderBuilder builder = new WorkflowContextHeaderBuilder(configuration.getBrokerURL().toASCIIString(),
+                            configuration.getGFacURL().toASCIIString(),configuration.getRegistryURL().toASCIIString(),configuration.getTopic()
+                            ,null,configuration.getMessageBoxURL().toASCIIString());
+                    stub._getServiceClient().addHeader(AXIOMUtil.stringToOM(XMLUtil.xmlElementToString(builder.getXml())));
+                    stub.launchWorkflow(workflow.toXMLText(), topicString,inputNameVals);
                 } catch (Exception e) {
                     WorkflowInterpreterLaunchWindow.this.engine.getErrorWindow().error(e);
                 }

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=1338396&r1=1338395&r2=1338396&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 Mon May 14 20:50:29 2012
@@ -29,7 +29,6 @@ import java.util.*;
 
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 import org.apache.airavata.common.registry.api.impl.JCRRegistry;
-import org.apache.airavata.common.utils.XMLUtil;
 import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.schemas.gfac.GlobusHostType;
@@ -47,6 +46,7 @@ import org.apache.airavata.xbaya.graph.s
 import org.apache.airavata.xbaya.monitor.MonitorException;
 import org.apache.airavata.xbaya.ode.ODEClient;
 import org.apache.airavata.xbaya.wf.Workflow;
+import org.apache.airavata.xbaya.workflow.proxy.WorkflowContext;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
@@ -108,6 +108,7 @@ public class WorkflowInterpretorSkeleton
     public static final String GFAC_EMBEDDED = "gfac.embedded";
     public static  ConfigurationContext configurationContext;
     public static final String WITH_LISTENER = "with.Listener";
+    public static final String OUTPUT_DATA_PATH = "outputDataPath";
 
     public void startUp(final ConfigurationContext configctx, AxisService service) {
     	new Thread(){
@@ -176,31 +177,35 @@ public class WorkflowInterpretorSkeleton
     	}.start();
 
     }
-	/**
-	 * Auto generated method signature
-	 *
-	 * @param workflowAsString
-	 * @param topic
-	 * @param password
-	 * @param username
-	 * @param inputs
-	 * @param configurations
-	 */
+
+    /**
+     *
+     * @param workflowAsString
+     * @param topic
+     * @param inputs
+     * @return
+     * @throws XMLStreamException
+     */
 
 	public java.lang.String launchWorkflow(java.lang.String workflowAsString, java.lang.String topic, NameValue[] inputs) throws XMLStreamException {
-        MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
-        SOAPHeader header = currentMessageContext.getEnvelope().getHeader();
-        Iterator childrenWithName = header.getChildrenWithName(new QName("http://schemas.airavata.apache.org/workflow-execution-context", "context-header"));
-        OMElement workflowContext = (OMElement)childrenWithName.next();
+        OMElement workflowContext = getWorkflowContextHeader();
         Map<String, String> configuration = new HashMap<String, String>();
-        parseContextHeader(workflowContext, configuration);
+        WorkflowContextHeaderBuilder workflowContextHeaderBuilder = parseContextHeader(workflowContext, configuration);
         return setupAndLaunch(workflowAsString, topic,
-                (String)configurationContext.getProperty(MYPROXY_USER),(String)configurationContext.getProperty(MYPROXY_PASS),inputs,configuration,runInThread);
+                (String)configurationContext.getProperty(MYPROXY_USER),(String)configurationContext.getProperty(MYPROXY_PASS),inputs,configuration,runInThread,workflowContextHeaderBuilder);
 	}
 
-    private void parseContextHeader(OMElement workflowContext, Map<String, String> configuration) throws XMLStreamException {
+    private OMElement getWorkflowContextHeader() {
+        MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
+        SOAPHeader header = currentMessageContext.getEnvelope().getHeader();
+        Iterator childrenWithName = header.getChildrenWithName(new QName("http://schemas.airavata.apache.org/workflow-execution-context", "context-header"));
+        return (OMElement)childrenWithName.next();
+    }
+
+    private WorkflowContextHeaderBuilder parseContextHeader(OMElement workflowContext, Map<String, String> configuration) throws XMLStreamException {
+        ContextHeaderDocument parse = null;
         try {
-            ContextHeaderDocument parse = ContextHeaderDocument.Factory.parse(workflowContext.toStringWithConsume());
+            parse = ContextHeaderDocument.Factory.parse(workflowContext.toStringWithConsume());
             configuration.put(GFAC,parse.getContextHeader().getWorkflowMonitoringContext().getEventPublishEpr());
             configuration.put(BROKER, parse.getContextHeader().getWorkflowMonitoringContext().getEventPublishEpr());
             configuration.put(GFAC, parse.getContextHeader().getSoaServiceEprs().getGfacUrl());
@@ -208,9 +213,11 @@ public class WorkflowInterpretorSkeleton
         } catch (XmlException e) {
             e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
+        return new WorkflowContextHeaderBuilder(parse.getContextHeader());
     }
 
-    private String setupAndLaunch(String workflowAsString, String topic, String password, String username, NameValue[] inputs,Map<String,String>configurations,boolean inNewThread) {
+    private String setupAndLaunch(String workflowAsString, String topic, String password, String username,
+                                  NameValue[] inputs,Map<String,String>configurations,boolean inNewThread,WorkflowContextHeaderBuilder builder) throws XMLStreamException {
         System.err.println("Launch is called for topi:");
 
         Workflow workflow = null;
@@ -251,6 +258,7 @@ public class WorkflowInterpretorSkeleton
         if (Boolean.parseBoolean(configurations.get(WITH_LISTENER))) {
             listener = new WorkflowInterpretorEventListener(workflow, conf);
             interpreter = new WorkflowInterpreter(conf, topic, workflow, username, password);
+
             try {
                 System.err.println("start listener set");
                 listener.start();
@@ -261,6 +269,9 @@ public class WorkflowInterpretorSkeleton
             interpreter = new WorkflowInterpreter(conf, topic, workflow, username, password, true);
         }
 
+//        interpreter.setBuilder(builder);
+        WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
+
         final WorkflowInterpretorEventListener finalListener = listener;
         conf.setJcrComponentRegistry(jcrComponentRegistry);
 
@@ -272,19 +283,20 @@ public class WorkflowInterpretorSkeleton
         final String experimentId = topic;
         System.err.println("Created the interpreter");
         if(inNewThread){
-            runInThread(finalInterpreter,finalListener,experimentId);
+            runInThread(finalInterpreter,finalListener,experimentId,builder);
         }else{
-            executeWorkflow(finalInterpreter,finalListener,experimentId);
+            executeWorkflow(finalInterpreter, finalListener, experimentId);
         }
         System.err.println("topic return:" + topic);
         return topic;
     }
 
-    private void runInThread(final WorkflowInterpreter interpreter,final WorkflowInterpretorEventListener listener,final String experimentId) {
+    private void runInThread(final WorkflowInterpreter interpreter,final WorkflowInterpretorEventListener listener,final String experimentId,final WorkflowContextHeaderBuilder builder) {
         new Thread(new Runnable() {
 
             public void run() {
-                executeWorkflow(interpreter, listener,experimentId);
+                WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
+                executeWorkflow(interpreter, listener, experimentId);
             }
         }).start();
     }

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=1338396&r1=1338395&r2=1338396&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 Mon May 14 20:50:29 2012
@@ -38,6 +38,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument;
 import org.apache.airavata.xbaya.XBayaException;
 import org.apache.airavata.xbaya.XBayaRuntimeException;
 import org.apache.airavata.xbaya.invoker.factory.InvokerFactory;
@@ -76,6 +77,8 @@ public class GenericInvoker implements I
 
     private ServiceNotifiable notifier;
 
+    private ContextHeaderDocument.ContextHeader contextHeader;
+
     /**
      * used for notification
      */
@@ -150,6 +153,7 @@ public class GenericInvoker implements I
         this.gfacURL = gfacURL;
         this.notifier = notifier.createServiceNotificationSender(nodeID);
         this.failerSent = false;
+        this.contextHeader = WorkflowContextHeaderBuilder.getCurrentContextHeader();
     }
 
     /**
@@ -172,6 +176,7 @@ public class GenericInvoker implements I
         this.gfacURL = gfacURL;
         this.notifier = notifier.createServiceNotificationSender(nodeID);
         this.failerSent = false;
+        this.contextHeader = WorkflowContextHeaderBuilder.getCurrentContextHeader();
     }
 
     /**
@@ -221,12 +226,22 @@ public class GenericInvoker implements I
     private void setup(WsdlDefinitions definitions) throws XBayaException {
 
         // Set LEAD context header.
-        WorkflowContextHeaderBuilder builder = new WorkflowContextHeaderBuilder(this.notifier.getEventSink()
+        WorkflowContextHeaderBuilder builder;
+        if(contextHeader == null){
+            builder = new WorkflowContextHeaderBuilder(this.notifier.getEventSink()
                 .getAddress(), this.gfacURL, null, this.notifier.getWorkflowID().toASCIIString(),
                 "xbaya-experiment", this.messageBoxURL);
-        builder.getWorkflowMonitoringContext().setServiceInstanceId(this.nodeID);
+        }else{
+             builder = new WorkflowContextHeaderBuilder(contextHeader);
+        }
+        if(builder.getWorkflowMonitoringContext() == null){
+            builder.addWorkflowMonitoringContext(this.notifier.getEventSink().getAddress(),
+                    this.notifier.getWorkflowID().toASCIIString(),this.nodeID,this.messageBoxURL);
+        } else {
+            builder.getWorkflowMonitoringContext().setWorkflowInstanceId(this.notifier.getWorkflowID().toASCIIString());
+        }
         builder.getWorkflowMonitoringContext().setWorkflowNodeId(this.nodeID);
-        builder.getWorkflowMonitoringContext().setWorkflowInstanceId(this.notifier.getWorkflowID().toASCIIString());
+        builder.getWorkflowMonitoringContext().setServiceInstanceId(this.nodeID);
         builder.getWorkflowMonitoringContext().setWorkflowTimeStep(1);
         builder.setUserIdentifier("xbaya-user");
         //todo write a UI component to collect this information and pass it through Header