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