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 2013/01/16 22:41:05 UTC

svn commit: r1434417 - in /airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya: interpretor/WorkflowInterpreter.java invoker/EmbeddedGFacInvoker.java jython/lib/NotificationSender.java

Author: lahiru
Date: Wed Jan 16 21:41:05 2013
New Revision: 1434417

URL: http://svn.apache.org/viewvc?rev=1434417&view=rev
Log:
fixing embedded invoker.

Modified:
    airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
    airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
    airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java

Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java?rev=1434417&r1=1434416&r2=1434417&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java Wed Jan 16 21:41:05 2013
@@ -191,14 +191,18 @@ public class WorkflowInterpreter {
                 this.getConfig().getConfiguration().getAiravataAPI().getProvenanceManager().setWorkflowInstanceNodeInput(workflowInstanceNode, keywords[i] + "=" + (String) values[i]);
                 this.getConfig().getConfiguration().getAiravataAPI().getProvenanceManager().setWorkflowNodeType(workflowInstanceNode, workflowNodeType);
 			}
+            System.out.println("********************- 1");
 			this.config.getNotifier().workflowStarted(values, keywords);
 			while (this.getWorkflow().getExecutionState() != WorkflowExecutionState.STOPPED) {
+                System.out.println("********************- 2");
 				if (getRemainNodesDynamically() == 0) {
+                    System.out.println("********************- 3");
 					notifyViaInteractor(WorkflowExecutionMessage.EXECUTION_STATE_CHANGED, WorkflowExecutionState.PAUSED);
 				}
 				// ok we have paused sleep
 				while (this.getWorkflow().getExecutionState() == WorkflowExecutionState.PAUSED) {
 					try {
+                        System.out.println("********************- 4");
 						Thread.sleep(400);
 					} catch (InterruptedException e) {
 						e.printStackTrace();
@@ -207,6 +211,7 @@ public class WorkflowInterpreter {
 				// get task list and execute them
 				ArrayList<Node> readyNodes = this.getReadyNodesDynamically();
 				for (Node node : readyNodes) {
+                    System.out.println("********************- 5");
 					if (node.isBreak()) {
 						this.notifyPause();
 						break;
@@ -214,9 +219,6 @@ public class WorkflowInterpreter {
 					if (this.getWorkflow().getExecutionState() == WorkflowExecutionState.PAUSED
 							|| this.getWorkflow().getExecutionState() == WorkflowExecutionState.STOPPED) {
 						break;
-//						// stop executing and sleep in the outer loop cause we
-//						// want
-//						// recalculate the execution stack
 					}
 					executeDynamically(node);
 					if (this.getWorkflow().getExecutionState() == WorkflowExecutionState.STEP) {
@@ -1131,7 +1133,6 @@ public class WorkflowInterpreter {
 			for (Iterator<String> iterator = listOfValues.iterator(); iterator.hasNext();) {
 				String input = iterator.next();
 				final String gfacURLString = this.getConfig().getConfiguration().getGFacURL().toString();
-
 				WSComponent wsComponent = (WSComponent) middleNode.getComponent();
 				invoker = createInvokerForEachSingleWSNode(middleNode, gfacURLString, wsComponent);
 				invokerList.add(invoker);
@@ -1347,6 +1348,8 @@ public class WorkflowInterpreter {
 		ArrayList<Node> list = new ArrayList<Node>();
 		ArrayList<Node> waiting = InterpreterUtil.getWaitingNodesDynamically(this.getGraph());
 		ArrayList<Node> finishedNodes = InterpreterUtil.getFinishedNodesDynamically(this.getGraph());
+        System.out.println("waiting:" + waiting.size());
+        System.out.println("finishedNodes:" + finishedNodes.size());
 		for (Node node : waiting) {
 			Component component = node.getComponent();
 			if (component instanceof WSComponent
@@ -1382,6 +1385,7 @@ public class WorkflowInterpreter {
 					inputsDone = inputsDone && finishedNodes.contains(dataPort.getFromNode());
 				}
 				if (inputsDone && controlDone) {
+                    System.out.println("***************** Added ************");
 					list.add(node);
 				}
 			} else if (component instanceof EndifComponent) {

Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java?rev=1434417&r1=1434416&r2=1434417&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java Wed Jan 16 21:41:05 2013
@@ -22,13 +22,6 @@ package org.apache.airavata.xbaya.invoke
 
 import java.io.StringReader;
 import java.util.*;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
@@ -37,7 +30,6 @@ import javax.xml.stream.XMLStreamReader;
 
 import org.apache.airavata.client.api.AiravataAPI;
 import org.apache.airavata.client.api.AiravataAPIInvocationException;
-import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.core.gfac.exception.ProviderException;
 import org.apache.airavata.registry.api.exception.RegistryException;
 import org.apache.airavata.common.utils.XMLUtil;
@@ -49,18 +41,15 @@ import org.apache.airavata.core.gfac.con
 import org.apache.airavata.core.gfac.context.invocation.InvocationContext;
 import org.apache.airavata.core.gfac.context.message.impl.ParameterContextImpl;
 import org.apache.airavata.core.gfac.utils.GfacUtils;
-//import org.apache.airavata.registry.api.AiravataRegistry2;
 import org.apache.airavata.schemas.gfac.InputParameterType;
 import org.apache.airavata.schemas.gfac.Parameter;
 import org.apache.airavata.schemas.gfac.ServiceDescriptionType;
 import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
 import org.apache.airavata.xbaya.XBayaConfiguration;
 import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
 import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
 import org.apache.axiom.om.*;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
 import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -92,7 +81,7 @@ public class EmbeddedGFacInvoker impleme
     private XBayaConfiguration configuration;
 
 
-    private Future<Boolean> result;
+    private Boolean result;
 
     private ServiceNotifiable notifier;
 
@@ -232,7 +221,6 @@ public class EmbeddedGFacInvoker impleme
             }
             this.inputNames.add(name);
             this.inputValues.add(value);
-
         } catch (RuntimeException e) {
             logger.error(e.getMessage(), e);
             String message = "Error in setting an input. name: " + name + " value: " + value;
@@ -287,6 +275,7 @@ public class EmbeddedGFacInvoker impleme
                 // Send notification
                 logger.debug("outputMessage: " + outputElement.toString());
                 outPut = new WSIFMessageElement(XMLUtil.stringToXmlElement3(outputElement.toStringWithConsume()));
+                this.result = true;
                 EmbeddedGFacInvoker.this.notifier.serviceFinished(new WSIFMessageElement((XmlElement) outPut));
             } else {
                 // An implementation of WSIFMessage,
@@ -346,7 +335,7 @@ public class EmbeddedGFacInvoker impleme
                 }
             }
             // Wait for the job to finish.
-            Boolean success = this.result.get();
+            Boolean success = this.result;
             if (success == false) {
                 WSIFMessage faultMessage = this.invoker.getFault();
                 String message = "Error in a service: ";
@@ -356,13 +345,6 @@ public class EmbeddedGFacInvoker impleme
                 message += faultMessage.toString();
                 throw new WorkflowException(message);
             }
-        } catch (InterruptedException e) {
-            logger.error(e.getMessage(), e);
-        } catch (ExecutionException e) {
-            // The service-failed notification should have been sent already.
-            logger.error(e.getMessage(), e);
-            String message = "Error in invoking a service: " + this.serviceInformation;
-            throw new WorkflowException(message, e);
         } catch (RuntimeException e) {
             logger.error(e.getMessage(), e);
             String message = "Error while waiting for a service to finish: " + this.serviceInformation;
@@ -384,7 +366,11 @@ public class EmbeddedGFacInvoker impleme
     public Object getOutput(String name) throws WorkflowException {
         try {
             waitToFinish();
-            return outPut;
+            if (outPut instanceof XmlElement) {
+                    return ((XmlElement)((XmlElement)((XmlElement) outPut).children().next()).children().next()).children().next();
+            } else  {
+                return outPut;
+            }
         } catch (WorkflowException e) {
             logger.error(e.getMessage(), e);
             // An appropriate message has been set in the exception.
@@ -442,7 +428,7 @@ public class EmbeddedGFacInvoker impleme
             Object value = this.inputValues.get(index);
             InputParameterType parameter = serviceDescriptionType.getInputParametersArray(index);
             if (value instanceof XmlElement) {
-                omElement.setText((String)((XmlElement) value).children().next());
+                    omElement.setText((String)((XmlElement)((XmlElement)((XmlElement) value).children().next()).children().next()).children().next());
                 XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(XMLUtil.xmlElementToString((XmlElement) value)));
                 StAXOMBuilder builder = new StAXOMBuilder(reader);
                 OMElement input = builder.getDocumentElement();

Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java?rev=1434417&r1=1434416&r2=1434417&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java Wed Jan 16 21:41:05 2013
@@ -244,7 +244,8 @@ public class NotificationSender implemen
      */
     @Override
     public void workflowFailed(String message, Throwable e) {
-        logger.error(e.getMessage(), e);
+        if(e != null)
+            logger.error(e.getMessage(), e);
         if (message == null || "".equals(message)) {
             message = "Error";
         }