You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2014/04/14 20:30:15 UTC

[13/90] [abbrv] [partial] AIRAVATA-1124

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java
deleted file mode 100644
index 9ca5669..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInvokerWrapperForGFacInvoker.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.invoker;
-
-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 org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.v1.builder.XmlElement;
-
-import xsul.lead.LeadContextHeader;
-import xsul.wsif.WSIFMessage;
-
-public class WorkflowInvokerWrapperForGFacInvoker extends GFacInvoker {
-
-    private static final Logger logger = LoggerFactory.getLogger(WorkflowInvokerWrapperForGFacInvoker.class);
-
-    private ServiceNotifiable notifier;
-
-    private String serviceInformation;
-
-    private Future<Boolean> result;
-
-    protected boolean failerSent = false;
-
-    public WorkflowInvokerWrapperForGFacInvoker(QName portTypeQName, String gfacURL, String messageBoxURL,
-            LeadContextHeader leadcontext, ServiceNotifiable serviceNotificationSender) {
-        super(portTypeQName, gfacURL, messageBoxURL, leadcontext);
-        this.notifier = serviceNotificationSender;
-        this.serviceInformation = portTypeQName.toString();
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.WorkflowInvoker#invoke()
-     */
-    public synchronized boolean invoke() throws WorkflowException {
-
-        try {
-            WSIFMessage inputMessage = super.getInputs();
-            logger.debug("inputMessage: " + XMLUtil.xmlElementToString((XmlElement) inputMessage));
-            this.notifier.invokingService(inputMessage);
-
-            ExecutorService executor = Executors.newSingleThreadExecutor();
-            this.result = executor.submit(new Callable<Boolean>() {
-                @SuppressWarnings("boxing")
-                public Boolean call() {
-                    try {
-                        boolean success = WorkflowInvokerWrapperForGFacInvoker.super.invoke();
-                        if (success) {
-                            // Send notification
-                            WSIFMessage outputMessage = WorkflowInvokerWrapperForGFacInvoker.super.getOutputs();
-                            // An implementation of WSIFMessage,
-                            // WSIFMessageElement, implements toString(), which
-                            // serialize the message XML.
-                            logger.debug("outputMessage: " + outputMessage);
-                            WorkflowInvokerWrapperForGFacInvoker.this.notifier.serviceFinished(outputMessage);
-                        } else {
-                            WSIFMessage faultMessage = WorkflowInvokerWrapperForGFacInvoker.super.getFault();
-                            // An implementation of WSIFMessage,
-                            // WSIFMessageElement, implements toString(), which
-                            // serialize the message XML.
-                            logger.debug("received fault: " + faultMessage);
-                            WorkflowInvokerWrapperForGFacInvoker.this.notifier.receivedFault(faultMessage);
-                            WorkflowInvokerWrapperForGFacInvoker.this.failerSent = true;
-                        }
-                        return success;
-                    } catch (WorkflowException e) {
-                        logger.error(e.getMessage(), e);
-                        // An appropriate message has been set in the exception.
-                        WorkflowInvokerWrapperForGFacInvoker.this.notifier.invocationFailed(e.getMessage(), e);
-                        WorkflowInvokerWrapperForGFacInvoker.this.failerSent = true;
-                        throw new WorkflowRuntimeException(e);
-                    } catch (RuntimeException e) {
-                        logger.error(e.getMessage(), e);
-                        String message = "Error in invoking a service: "
-                                + WorkflowInvokerWrapperForGFacInvoker.this.serviceInformation;
-                        WorkflowInvokerWrapperForGFacInvoker.this.notifier.invocationFailed(message, e);
-                        WorkflowInvokerWrapperForGFacInvoker.this.failerSent = true;
-                        throw e;
-                    }
-                }
-            });
-
-            // Kill the thread inside of executor. This is necessary for Jython
-            // script to finish.
-            executor.shutdown();
-
-            // Let other threads know that job has been submitted.
-            notifyAll();
-
-            // Check if the invocation itself fails. This happens immediately.
-            try {
-                this.result.get(100, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                logger.error(e.getMessage(), e);
-            } catch (TimeoutException e) {
-                // The job is probably running fine.
-                // The normal case.
-                return true;
-            } 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 in invoking a service: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        } catch (Error e) {
-            logger.error(e.getMessage(), e);
-            String message = "Unexpected error: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        }
-
-        boolean success = super.invoke();
-        if (!success) {
-            try {
-                throw new Exception("Failed invoking GFac");
-            } catch (Exception e) {
-                notifier.invocationFailed(super.getFault().toString(), e);
-            }
-
-        } else {
-            notifier.serviceFinished(super.getOutputs());
-        }
-        return success;
-    }
-
-    public synchronized void waitToFinish() throws WorkflowException {
-        try {
-            while (this.result == null) {
-                // The job is not submitted yet.
-                try {
-                    wait();
-                } catch (InterruptedException e) {
-                    logger.error(e.getMessage(), e);
-                }
-            }
-            // Wait for the job to finish.
-            Boolean success = this.result.get();
-            if (success == false) {
-                WSIFMessage faultMessage = super.getFault();
-                String message = "Error in a service: ";
-                // An implementation of WSIFMessage,
-                // WSIFMessageElement, implements toString(), which
-                // serialize the message XML.
-                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;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        } catch (Error e) {
-            logger.error(e.getMessage(), e);
-            String message = "Unexpected error: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    public Object getOutput(String name) throws WorkflowException {
-        try {
-            waitToFinish();
-            Object output = super.getOutput(name);
-            if (output instanceof XmlElement) {
-                logger.debug("output: " + XMLUtil.xmlElementToString((XmlElement) output));
-            }
-            return output;
-        } catch (WorkflowException e) {
-            logger.error(e.getMessage(), e);
-            // An appropriate message has been set in the exception.
-            if (!this.failerSent) {
-                this.notifier.invocationFailed(e.getMessage(), e);
-            }
-            throw e;
-        } catch (RuntimeException e) {
-            logger.error(e.getMessage(), e);
-            String message = "Error while waiting for a output: " + name;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        } catch (Error e) {
-            logger.error(e.getMessage(), e);
-            String message = "Unexpected error: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/factory/InvokerFactory.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/factory/InvokerFactory.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/factory/InvokerFactory.java
deleted file mode 100644
index 75d5677..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/factory/InvokerFactory.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.invoker.factory;
-
-import javax.xml.namespace.QName;
-
-import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
-import org.apache.airavata.common.utils.WSDLUtil;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.xbaya.invoker.AsynchronousInvoker;
-import org.apache.airavata.xbaya.invoker.GFacInvoker;
-import org.apache.airavata.xbaya.invoker.Invoker;
-import org.apache.airavata.xbaya.invoker.SimpleInvoker;
-
-import xsul.lead.LeadContextHeader;
-import xsul.wsdl.WsdlDefinitions;
-
-public class InvokerFactory {
-
-    /**
-     * @param portTypeQName
-     * @param definitions
-     * @param gfacURL
-     * @param messageBoxURL
-     * @return The invoker
-     * @throws WorkflowException
-     */
-    public static Invoker createInvoker(QName portTypeQName, WsdlDefinitions definitions, String gfacURL,
-            String messageBoxURL, LeadContextHeader leadContext) throws WorkflowException {
-        Invoker invoker = null;
-
-        if (definitions != null && definitions.getServices().iterator().hasNext()) {
-            // check if this web service supports asynchronous invocation
-            if (WSDLUtil.isAsynchronousSupported(WSDLUtil.wsdlDefinitions3ToWsdlDefintions5(definitions))) {
-                invoker = new AsynchronousInvoker(definitions, messageBoxURL);
-            } else {
-                invoker = new SimpleInvoker(definitions);
-            }
-        } else if (gfacURL != null && gfacURL.length() != 0) {
-            invoker = new GFacInvoker(portTypeQName, gfacURL, messageBoxURL, leadContext);
-        }
-
-        if (invoker == null) {
-            String message = "Cannot find an appropriate way to invoke the service";
-            throw new WorkflowException(message);
-        }
-        return invoker;
-    }
-
-    public static Invoker createInvoker(QName portTypeQName, WsdlDefinitions definitions, String gfacURL,
-            String messageBoxURL, WorkflowContextHeaderBuilder builder, boolean differ) throws WorkflowException {
-        Invoker invoker = null;
-
-        if (definitions != null && definitions.getServices().iterator().hasNext()) {
-            // check if this web service supports asynchronous invocation
-            if (WSDLUtil.isAsynchronousSupported(WSDLUtil.wsdlDefinitions3ToWsdlDefintions5(definitions))) {
-                invoker = new AsynchronousInvoker(definitions, messageBoxURL);
-            } else {
-                invoker = new SimpleInvoker(definitions);
-            }
-        } else if (gfacURL != null && gfacURL.length() != 0) {
-            invoker = new GFacInvoker(portTypeQName, gfacURL, messageBoxURL, builder);
-        }
-
-        if (invoker == null) {
-            String message = "Cannot find an appropriate way to invoke the service";
-            throw new WorkflowException(message);
-        }
-        return invoker;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/GFacServiceCreator.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/GFacServiceCreator.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/GFacServiceCreator.java
deleted file mode 100644
index 66685ba..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/GFacServiceCreator.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.lib;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import javax.xml.namespace.QName;
-
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.v1.builder.XmlElement;
-
-import xsul.wsdl.WsdlDefinitions;
-import xsul.wsdl.WsdlResolver;
-import xsul.wsif.WSIFMessage;
-import xsul.wsif.WSIFOperation;
-import xsul.wsif.WSIFPort;
-import xsul.wsif.WSIFService;
-import xsul.wsif.WSIFServiceFactory;
-import xsul.wsif.spi.WSIFProviderManager;
-
-public class GFacServiceCreator {
-
-    private static final String CREATE_SERVICE_OPERATION = "CreateService";
-
-    private static final String SHUTDOWN_OPERATION = "Shutdown";
-
-    private static final String SERVICE_QNAME_PART = "serviceQName";
-
-    private static final String SECURITY_PART = "security";
-
-    private static final String WSDL_PART = "WSDL";
-
-    private static final String SECURITY_NONE = "None";
-
-    private static final Logger logger = LoggerFactory.getLogger(GFacServiceCreator.class);
-
-    private WSIFOperation gFacOperation;
-
-    private WsdlDefinitions serviceDefinitions;
-
-    static {
-        WSIFProviderManager.getInstance().addProvider(new xsul.wsif_xsul_soap_http.Provider());
-    }
-
-    /**
-     * Constructs a GFacServiceCreater.
-     * 
-     * @param wsdlURL
-     *            The URL of the GFac service
-     * @throws URISyntaxException
-     * @throws WorkflowException
-     */
-    public GFacServiceCreator(String wsdlURL) throws URISyntaxException, WorkflowException {
-        this(new URI(wsdlURL));
-    }
-
-    /**
-     * Constructs a GFacServiceCreater.
-     * 
-     * @param wsdlURI
-     *            The URI of the GFac service
-     * @throws WorkflowException
-     */
-    public GFacServiceCreator(URI wsdlURI) throws WorkflowException {
-        try {
-            WsdlDefinitions definitions = WsdlResolver.getInstance().loadWsdl(wsdlURI);
-            WSIFService service = WSIFServiceFactory.newInstance().getService(definitions);
-            WSIFPort port = service.getPort();
-            this.gFacOperation = port.createOperation(CREATE_SERVICE_OPERATION);
-        } catch (RuntimeException e) {
-            String message = "Failed to connect to the Generic Factory: " + wsdlURI;
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @param serviceQName
-     * @return The WSDL definitions of the service created.
-     * @throws WorkflowException
-     */
-    public WsdlDefinitions createService(QName serviceQName) throws WorkflowException {
-        return createService(serviceQName.toString());
-    }
-
-    /**
-     * @param serviceQName
-     * @return The WSDL definitions of the service created.
-     * @throws WorkflowException
-     */
-    public WsdlDefinitions createService(String serviceQName) throws WorkflowException {
-        logger.debug(serviceQName);
-        try {
-            WSIFMessage inputMessage = this.gFacOperation.createInputMessage();
-            WSIFMessage outputMessage = this.gFacOperation.createOutputMessage();
-            WSIFMessage faultMessage = this.gFacOperation.createFaultMessage();
-
-            inputMessage.setObjectPart(SERVICE_QNAME_PART, serviceQName);
-            inputMessage.setObjectPart(SECURITY_PART, SECURITY_NONE);
-
-            logger.debug("inputMessage: " + inputMessage);
-            boolean success = this.gFacOperation.executeRequestResponseOperation(inputMessage, outputMessage,
-                    faultMessage);
-            if (!success) {
-                // An implementation of WSIFMessage, WSIFMessageElement,
-                // implements toString(), which serialize the message XML.
-                String message = "Failed to create a service: " + faultMessage.toString();
-                throw new WorkflowException(message);
-            }
-
-            String wsdl = (String) outputMessage.getObjectPart(WSDL_PART);
-            logger.debug("WSDL: " + wsdl);
-
-            XmlElement definitionsElement = XMLUtil.stringToXmlElement3(wsdl);
-
-            this.serviceDefinitions = new WsdlDefinitions(definitionsElement);
-            return this.serviceDefinitions;
-        } catch (RuntimeException e) {
-            String message = "Failed to create a service";
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * Shutdowns the service created.
-     * 
-     * @throws WorkflowException
-     */
-    public void shutdownService() throws WorkflowException {
-        WSIFService service = WSIFServiceFactory.newInstance().getService(this.serviceDefinitions);
-        WSIFPort port = service.getPort();
-        WSIFOperation operation = port.createOperation(SHUTDOWN_OPERATION);
-
-        WSIFMessage inputMessage = operation.createInputMessage();
-        WSIFMessage outputMessage = operation.createOutputMessage();
-        WSIFMessage faultMessage = operation.createFaultMessage();
-
-        boolean success = operation.executeRequestResponseOperation(inputMessage, outputMessage, faultMessage);
-        if (!success) {
-            // An implementation of WSIFMessage, WSIFMessageElement,
-            // implements toString(), which serialize the message XML.
-            String message = "Failed to shutdown the service: " + faultMessage.toString();
-            throw new WorkflowException(message);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
deleted file mode 100644
index f478e18..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/NotificationSender.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.lib;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.apache.airavata.common.utils.StringUtil;
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.workflow.tracking.NotifierFactory;
-import org.apache.airavata.workflow.tracking.WorkflowNotifier;
-import org.apache.airavata.workflow.tracking.common.InvocationContext;
-import org.apache.airavata.workflow.tracking.common.InvocationEntity;
-import org.apache.airavata.workflow.tracking.common.WorkflowTrackingContext;
-import org.apache.axis2.addressing.EndpointReference;
-import org.python.core.PyObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.infoset.XmlElement;
-
-public class NotificationSender implements WorkflowNotifiable {
-
-    protected static final Logger logger = LoggerFactory.getLogger(NotificationSender.class);
-
-    protected WorkflowNotifier notifier;
-
-    protected String brokerURL;
-
-    protected String topic;
-
-    protected URI workflowID;
-
-    protected InvocationEntity initiator;
-
-    protected InvocationEntity receiver;
-
-    protected InvocationContext invocationContext;
-
-    protected EndpointReference eventSink;
-
-    protected WorkflowTrackingContext context;
-
-    /**
-     * Constructs a NotificationSender.
-     * 
-     * @param brokerURL
-     * @param topic
-     */
-    public NotificationSender(URI brokerURL, String topic) {
-        this(brokerURL.toString(), topic);
-    }
-
-    /**
-     * Creates a NotificationSender.
-     * 
-     * @param brokerURL
-     *            The location of notification brokerUrl.
-     * @param topic
-     *            The notification topic.
-     */
-    public NotificationSender(String brokerURL, String topic) {
-        logger.debug("brokerURL:" + brokerURL + "topic:" + topic);
-        this.topic = topic;
-        this.brokerURL = brokerURL;
-        this.workflowID = URI.create(StringUtil.convertToJavaIdentifier(this.topic));
-        this.eventSink = new EndpointReference(this.brokerURL);
-        Properties props = new Properties();
-
-        this.notifier = NotifierFactory.createNotifier();
-        URI initiatorWorkflowID = null;
-        URI initiatorServiceID = URI.create(StringUtil.convertToJavaIdentifier(topic));
-        String initiatorWorkflowNodeID = null;
-        Integer initiatorWorkflowTimeStep = null;
-        this.context = this.notifier.createTrackingContext(props, brokerURL, initiatorWorkflowID, initiatorServiceID,
-                initiatorWorkflowNodeID, initiatorWorkflowTimeStep);
-        this.context.setTopic(topic);
-        this.initiator = this.notifier.createEntity(initiatorWorkflowID, initiatorServiceID, initiatorWorkflowNodeID,
-                initiatorWorkflowTimeStep);
-
-        URI receiverWorkflowID = this.workflowID;
-        URI receiverServiceID = this.workflowID;
-        String receiverWorkflowNodeID = null;
-        Integer receiverWorkflowTimeStep = null;
-        this.receiver = this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
-                receiverWorkflowTimeStep);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#getEventSink()
-     */
-    @Override
-    public EndpointReference getEventSink() {
-        return this.eventSink;
-    }
-
-    /*
-     * (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) {
-        String message = "";
-        for (int i = 0; i < args.length; i++) {
-            if (i != 0) {
-                message += ", ";
-            }
-            message += keywords[i] + "=" + args[i];
-        }
-        this.invocationContext = this.notifier.workflowInvoked(this.context, this.initiator, message);
-    }
-
-    /*
-     * (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) {
-        String message = "";
-        for (int i = 0; i < args.length; i++) {
-            if (i != 0) {
-                message += ", ";
-            }
-            message += keywords[i] + "=" + args[i];
-        }
-        this.invocationContext = this.notifier.workflowInvoked(this.context, this.initiator, message);
-    }
-
-    /*
-     * (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) {
-        String message = "";
-        for (int i = 0; i < args.length; i++) {
-            if (i != 0) {
-                message += ", ";
-            }
-            message += keywords[i] + "=" + args[i];
-        }
-        this.notifier.sendingResult(context, this.invocationContext, message);
-        this.notifier.workflowTerminated(context, this.workflowID, "Workflow finished successfully.");
-    }
-
-    /*
-     * (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) {
-        String message = "";
-        for (int i = 0; i < args.length; i++) {
-            if (i != 0) {
-                message += ", ";
-            }
-            message += keywords[i] + "=" + args[i];
-        }
-        this.notifier.sendingResult(context, this.invocationContext, message);
-    }
-
-    /*
-     * (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) {
-        String message = "";
-        for (int i = 0; i < args.length; i++) {
-            if (i != 0) {
-                message += ", ";
-            }
-            message += keywords[i] + "=" + args[i];
-        }
-        this.notifier.sendingResult(context, this.invocationContext, message);
-        this.notifier.workflowTerminated(context, this.workflowID, "Workflow Execution Finished.");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowTerminated()
-     */
-    @Override
-    public void workflowTerminated() {
-        this.notifier.workflowTerminated(context, this.workflowID, "Workflow Execution Finished.");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFailed(java.lang.String)
-     */
-    @Override
-    public void workflowFailed(String message) {
-        workflowFailed(message, null);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable#workflowFailed(java.lang.Throwable)
-     */
-    @Override
-    public void workflowFailed(Throwable e) {
-        workflowFailed(null, 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) {
-        if(e != null)
-            logger.error(e.getMessage(), e);
-        if (message == null || "".equals(message)) {
-            message = "Error";
-        }
-        if (e != null) {
-            message += ": " + e.toString();
-        }
-        if (e != null) {
-            String stackTrace = StringUtil.getStackTraceInString(e);
-            XmlElement stackTraceElement = XMLUtil.BUILDER.newFragment("stackTrace");
-            stackTraceElement.addChild(stackTrace);
-            this.notifier.sendingFault(context, this.invocationContext, message,
-                    XMLUtil.xmlElementToString(stackTraceElement));
-        } else {
-            this.notifier.sendingFault(context, this.invocationContext, message);
-        }
-    }
-
-    public void info(String message) {
-        this.notifier.info(context, message);
-    }
-
-    /*
-     * (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,this.invocationContext);
-    }
-
-    @Override
-    public void cleanup(){
-        this.notifier.delete();
-    }
-
-    public String getTopic() {
-        return topic;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java
deleted file mode 100644
index 1865d9c..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotifiable.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-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

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java
deleted file mode 100644
index 36b79bf..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/ServiceNotificationSender.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.lib;
-
-import java.net.URI;
-import java.util.Iterator;
-
-import org.apache.airavata.common.utils.StringUtil;
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.workflow.tracking.WorkflowNotifier;
-import org.apache.airavata.workflow.tracking.common.InvocationContext;
-import org.apache.airavata.workflow.tracking.common.InvocationEntity;
-import org.apache.airavata.workflow.tracking.common.WorkflowTrackingContext;
-import org.apache.airavata.workflow.tracking.impl.state.InvocationContextImpl;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.infoset.XmlElement;
-
-import xsul.wsif.WSIFMessage;
-
-public class ServiceNotificationSender implements ServiceNotifiable {
-
-    private static final Logger logger = LoggerFactory.getLogger(ServiceNotificationSender.class);
-
-    private WorkflowNotifier notifier;
-
-    private URI workflowID;
-
-    private String nodeID;
-
-    private String serviceID;
-
-    private InvocationEntity receiver;
-
-    private InvocationEntity initiator;
-
-    private InvocationContext invocationContext;
-
-    private WorkflowTrackingContext context;
-
-    private EndpointReference eventSink;
-
-    /**
-     * Constructs a ServiceNotificationSender.
-     * 
-     * @param notifier
-     * @param eventSink
-     * @param initiator
-     * @param workflowID
-     * @param nodeID
-     */
-    protected ServiceNotificationSender(WorkflowNotifier notifier, EndpointReference eventSink,
-            InvocationEntity initiator, URI workflowID, String nodeID, WorkflowTrackingContext context, InvocationContext invocationContext) {
-        this.notifier = notifier;
-        this.eventSink = eventSink;
-        this.initiator = initiator;
-        this.workflowID = workflowID;
-        this.nodeID = nodeID;
-        this.context = context;
-        // In case of creating a service on the fly, there is no serviceID at
-        // the beginning.
-        this.serviceID = "";
-        this.invocationContext = invocationContext;
-        URI receiverWorkflowID = this.workflowID;
-        URI receiverServiceID = URI.create(this.serviceID);
-        String receiverWorkflowNodeID = this.nodeID;
-        Integer workflowTimeStep = new Integer(0);
-        this.receiver = this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
-                workflowTimeStep);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#setServiceID(java.lang.String)
-     */
-    @Override
-    public void setServiceID(String serviceID) {
-        logger.debug("SerivceID:" + serviceID);
-        this.serviceID = serviceID;
-
-        URI receiverWorkflowID = this.workflowID;
-        URI receiverServiceID = URI.create(this.serviceID);
-        String receiverWorkflowNodeID = this.nodeID;
-        Integer workflowTimeStep = new Integer(0);
-        this.receiver = this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
-                workflowTimeStep);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#getEventSink()
-     */
-    @Override
-    public EndpointReference getEventSink() {
-        return this.eventSink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.airavata.xbaya.jython.lib.ServiceNotifiable#getWorkflowID()
-     */
-    @Override
-    public URI getWorkflowID() {
-        return this.workflowID;
-    }
-
-    /*
-     * (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;
-        while (partIt.hasNext()) {
-            if (first) {
-                first = false;
-            } else {
-                message += ", ";
-            }
-
-            String name = (String) partIt.next();
-            Object value = inputs.getObjectPart(name);
-            if(value instanceof org.xmlpull.v1.builder.XmlElement){
-                message += name + "=";
-                Iterator children = ((org.xmlpull.v1.builder.XmlElement) value).children();
-                while (children.hasNext()){
-                    message += children.next();
-                }
-            }else{
-                message += name + "=" + value;
-            }
-        }
-        XmlObject header = null;
-        XmlObject body;
-        try {
-            body = XmlObject.Factory.parse(inputs.toString());
-        } catch (XmlException e) {
-            logger.warn("Failed to parse " + inputs.toString(), e);
-            body = null; // Send notification anyway.
-        }
-        this.invocationContext = this.notifier.invokingService(this.context, this.receiver, header, body, message);
-    }
-
-    /*
-     * (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;
-        while (partIt.hasNext()) {
-            if (first) {
-                first = false;
-            } else {
-                message += ", ";
-            }
-            String name = (String) partIt.next();
-            Object value = outputs.getObjectPart(name);
-            if(value instanceof org.xmlpull.v1.builder.XmlElement){
-                message += name + "=";
-                Iterator children = ((org.xmlpull.v1.builder.XmlElement) value).children();
-                while (children.hasNext()){
-                    message += children.next();
-                }
-            }else{
-             message += name + "=" + value;
-            }
-        }
-        XmlObject header = null;
-        XmlObject body;
-        try {
-            body = XmlObject.Factory.parse(outputs.toString());
-        } catch (XmlException e) {
-            logger.warn("Failed to parse " + outputs.toString(), e);
-            body = null; // Send notification anyway.
-        }
-        this.notifier.receivedResult(this.context, this.invocationContext, header, body, message);
-    }
-
-    /*
-     * (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)
-        // The second is while invoking a service.
-        // e.g. notifier.invokingServiceFailed().
-
-        // XXX If error occurs before invoking a service, create a fake
-        // invocation context.
-        if (this.invocationContext == null) {
-            this.invocationContext = new InvocationContextImpl(this.initiator, this.receiver);
-        }
-
-        logger.error(e.getMessage(), e);
-        if (message == null || "".equals(message)) {
-            message = "Error";
-        }
-        if (e != null) {
-            message += ": " + e.toString();
-        }
-        if (e != null) {
-            String stackTrace = StringUtil.getStackTraceInString(e);
-            XmlElement stackTraceElement = XMLUtil.BUILDER.newFragment("stackTrace");
-            stackTraceElement.addChild(stackTrace);
-            String annotation = XMLUtil.xmlElementToString(stackTraceElement);
-            this.notifier.invokingServiceFailed(this.context, this.invocationContext, e, message, annotation);
-        } else {
-            this.notifier.invokingServiceFailed(this.context, this.invocationContext, message);
-        }
-    }
-
-    /*
-     * (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.
-        if (this.invocationContext == null) {
-            this.invocationContext = new InvocationContextImpl(this.initiator, this.receiver);
-        }
-
-        if (message == null || "".equals(message)) {
-            message = "Error";
-        }
-        this.notifier.receivedFault(this.context, this.invocationContext, message);
-    }
-
-    /*
-     * (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) {
-            this.invocationContext = new InvocationContextImpl(this.initiator, this.receiver);
-        }
-
-        String message = "Received a fault message from the service";
-        XmlObject header = null;
-        XmlObject body;
-        try {
-            body = XmlObject.Factory.parse(fault.toString());
-        } catch (XmlException e) {
-            logger.warn("Failed to parse " + fault.toString(), e);
-            body = null; // Send notification anyway.
-        }
-        this.notifier.receivedFault(this.context, this.invocationContext, header, body, message);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java
deleted file mode 100644
index 8e9248d..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/StandaloneServiceNotificationSender.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.lib;
-
-import java.net.URI;
-
-import org.apache.airavata.workflow.model.graph.Node;
-import org.apache.airavata.workflow.model.graph.Node.NodeExecutionState;
-import org.apache.airavata.workflow.model.wf.Workflow;
-import org.apache.airavata.xbaya.XBayaConstants;
-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) {
-        getNode().setState(NodeExecutionState.EXECUTING);
-    }
-
-    @Override
-    public void serviceFinished(WSIFMessage outputs) {
-    	getNode().setState(NodeExecutionState.FINISHED);
-
-    }
-
-    @Override
-    public void invocationFailed(String message, Throwable e) {
-    	getNode().setState(NodeExecutionState.FAILED);
-
-    }
-
-    @Override
-    public void receivedFault(String message) {
-    	getNode().setState(NodeExecutionState.FAILED);
-
-    }
-
-    @Override
-    public void receivedFault(WSIFMessage fault) {
-    	getNode().setState(NodeExecutionState.FAILED);
-
-    }
-
-	private Node getNode() {
-		return this.workflow.getGraph().getNode(this.serviceID);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java
deleted file mode 100644
index c44fa55..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/lib/WorkflowNotifiable.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-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);
-
-    public String getTopic();
-
-    public abstract void cleanup();
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonClassLoader.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonClassLoader.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonClassLoader.java
deleted file mode 100644
index 135e331..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonClassLoader.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.runner;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.security.AllPermission;
-import java.security.CodeSigner;
-import java.security.CodeSource;
-import java.security.PermissionCollection;
-import java.security.Permissions;
-import java.security.SecureClassLoader;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import org.apache.airavata.common.utils.IOUtil;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.xbaya.XBayaVersion;
-import org.apache.airavata.xbaya.jython.lib.NotificationSender;
-import org.python.util.PythonInterpreter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class loader loads jython related classes without counting on parent class loader. This is because jython
- * related classes use a lot of static fields and cannot be used to invoke Jython scripts multiple times.
- * 
- */
-public class JythonClassLoader extends SecureClassLoader {
-
-    private final static Logger logger = LoggerFactory.getLogger(JythonClassLoader.class);
-
-    private ClassLoader parent;
-
-    private Map<String, Class> classes = new HashMap<String, Class>();
-
-    private URL jythonURL;
-
-    private URL xbayaURL;
-
-    private JarFile jythonJarFile;
-
-    private JarFile xbayaJarFile;
-
-    private File tmpJarDirectory;
-
-    /**
-     * Constructs a JythonClassLoader.
-     * 
-     * @param parent
-     *            the parent class loader.
-     * 
-     *            This has to be explicitly passed because WebStart applications use user-level class loader. The
-     *            default system loader cannot load classes in the downloaded jar files.
-     */
-    public JythonClassLoader(ClassLoader parent) {
-        super(parent);
-        this.parent = parent;
-
-        this.jythonURL = getBaseURL(PythonInterpreter.class);
-        this.xbayaURL = getBaseURL(XBayaVersion.class);
-    }
-
-    /**
-     * @return XBaya jar file.
-     */
-    public JarFile getXBayaJarFile() {
-        if (this.xbayaJarFile == null)
-            this.xbayaJarFile = maybeGetJarFile(this.xbayaURL);
-        return this.xbayaJarFile;
-    }
-
-    /**
-     * Cleans up temporary files.
-     */
-    public void cleanUp() {
-        this.jythonJarFile = null;
-        this.xbayaJarFile = null;
-        if (this.tmpJarDirectory != null) {
-            try {
-                IOUtil.deleteDirectory(this.tmpJarDirectory);
-            } catch (RuntimeException e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-    }
-
-    /**
-     * @see java.lang.ClassLoader#loadClass(java.lang.String)
-     */
-    @Override
-    public Class<?> loadClass(String className) throws ClassNotFoundException {
-        return (loadClass(className, false));
-    }
-
-    /**
-     * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
-     */
-    @Override
-    public synchronized Class<?> loadClass(String name, boolean resolveIt) throws ClassNotFoundException {
-
-        Class klass = null;
-        try {
-            klass = findClass(name);
-        } catch (ClassNotFoundException e) {
-            try {
-                klass = super.loadClass(name, false);
-            } catch (ClassNotFoundException e2) {
-                klass = this.parent.loadClass(name);
-                logger.debug("found from parent, klass: " + klass);
-            }
-        }
-
-        if (resolveIt) {
-            resolveClass(klass);
-        }
-
-        // logger.exiting(klass);
-        return klass;
-    }
-
-    @Override
-    protected Class<?> findClass(final String name) throws ClassNotFoundException {
-
-        // find jar location first
-        if (this.jythonJarFile == null)
-            this.jythonJarFile = maybeGetJarFile(this.jythonURL);
-        if (this.jythonJarFile == null)
-            this.xbayaJarFile = maybeGetJarFile(this.xbayaURL);
-
-        Class klass;
-
-        // Check if the class has been loaded by this class loader.
-        klass = this.classes.get(name);
-        if (klass != null) {
-            return klass;
-        }
-
-        // If the class is python, load separatly. NotificationSender also uses
-        // PyObject, so it has to be read from this class loader.
-        // JythonOneTimeRunner also needs to be loaded separatly.
-        if (name.startsWith("org.python.")) {
-            klass = findClassFromURL(name, this.jythonURL, this.jythonJarFile);
-        } else if (name.startsWith(NotificationSender.class.getPackage().getName())
-                || name.startsWith(JythonOneTimeRunnerImpl.class.getName())) {
-            klass = findClassFromURL(name, this.xbayaURL, this.xbayaJarFile);
-        }
-
-        if (klass != null) {
-            this.classes.put(name, klass);
-            return klass;
-        } else {
-            throw new ClassNotFoundException();
-        }
-    }
-
-    /**
-     * @see java.security.SecureClassLoader#getPermissions(java.security.CodeSource)
-     */
-    @Override
-    protected PermissionCollection getPermissions(CodeSource codesource) {
-        // Grant all perission. This could be avoided if code signers were
-        // extracted correctly.
-        Permissions permissions = new Permissions();
-        AllPermission permission = new AllPermission();
-        permissions.add(permission);
-        return permissions;
-    }
-
-    private URL getBaseURL(Class klass) {
-        String path = klass.getName().replace('.', '/').concat(".class"); // /d/e/f.class
-        URL classURL = this.parent.getResource(path);
-
-        String jarURLString;
-        if ("jar".equals(classURL.getProtocol())) {
-            // classURL = jar:file/a/b/c.jar!/d/e/f.class
-            // or jar:http://example.org/a/b/c.jar!/d/e/f.class
-            String file = classURL.getFile();
-            // file = file:/a/b/c.jar!d/e/f.class
-            // or http://example.org/a/b/c.jar!d/e/f.class
-            logger.debug("file: " + file);
-            jarURLString = file.substring(0, file.lastIndexOf('!'));
-            // jarURLString = file:/a/b/c.jar
-            // or http://example.org/a/b/c.jar
-        } else {
-            // file:/a/b/c/d/e/f.class
-            String file = classURL.getFile(); // /a/b/c/d/e/f.class
-            int index = file.lastIndexOf(path);
-            jarURLString = "file:" + file.substring(0, index); // /a/b/c/
-        }
-        try {
-            URL jarURL = new URL(jarURLString);
-            return jarURL;
-        } catch (MalformedURLException e) {
-            throw new WorkflowRuntimeException(e);
-        }
-    }
-
-    private JarFile maybeGetJarFile(URL url) {
-        String path;
-        try {
-            path = URLDecoder.decode(url.getPath(), "UTF-8");
-        } catch (UnsupportedEncodingException e) {
-            throw new WorkflowRuntimeException(e);
-        }
-        logger.debug("path: " + path);
-        if (path.endsWith("/")) {
-            // url = file:/a/b/c/
-            // It's a local directory
-            return null;
-        } else if ("file".equals(url.getProtocol())) {
-            // url = file:/a/b/c.jar
-            // Jar file
-            try {
-                JarFile jarFile = new JarFile(path);
-                return jarFile;
-            } catch (IOException e) {
-                throw new WorkflowRuntimeException(e);
-            }
-        } else {
-            // url = http://example.com/a/b/c.jar
-            // A Jar file
-            try {
-                if (this.tmpJarDirectory == null) {
-                    Date date = new Date();
-                    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-HHmmss-S");
-                    String time = format.format(date);
-                    String fileName = ".xbaya-jars-" + time;
-                    String tmpdir = System.getProperty("java.io.tmpdir");
-                    this.tmpJarDirectory = new File(tmpdir, fileName);
-                    this.tmpJarDirectory.mkdir();
-                }
-
-                int i = path.lastIndexOf('/');
-                File file = new File(this.tmpJarDirectory, path.substring(i + 1));
-                logger.debug("file: " + file);
-                InputStream stream = url.openStream();
-                IOUtil.writeToFile(stream, file);
-                JarFile jarFile = new JarFile(file);
-                return jarFile;
-            } catch (IOException e) {
-                throw new WorkflowRuntimeException(e);
-            }
-        }
-    }
-
-    private Class findClassFromURL(String name, URL url, JarFile jarFile) throws ClassNotFoundException {
-        // logger.entering(new Object[] { name, url, jarFile });
-
-        String classPath = name.replace('.', '/').concat(".class");
-        // logger.info("classPath: " + classPath);
-
-        try {
-            byte[] classBytes;
-            CodeSource codeSource = null;
-            if (jarFile == null) {
-                // It's a local directory
-                String dirPath = URLDecoder.decode(url.getPath(), "UTF-8");
-                File classFile = new File(dirPath, classPath);
-                classBytes = IOUtil.readToByteArray(classFile);
-
-            } else {
-                // A Jar file
-                JarEntry jarEntry = jarFile.getJarEntry(classPath);
-                CodeSigner[] codeSigners = jarEntry.getCodeSigners();
-                // logger.info("codeSigners: " + codeSigners);
-                if (codeSigners != null) {
-                    // Somehow it's null.
-                    for (CodeSigner signer : codeSigners) {
-                        logger.debug("signer: " + signer);
-                    }
-                }
-                codeSource = new CodeSource(this.xbayaURL, codeSigners);
-                InputStream classInputStream = jarFile.getInputStream(jarEntry);
-                classBytes = IOUtil.readToByteArray(classInputStream);
-            }
-
-            Class<?> klass = defineClass(name, classBytes, 0, classBytes.length, codeSource);
-            this.classes.put(name, klass);
-            return klass;
-        } catch (IOException e) {
-            logger.error(e.getMessage(), e);
-            throw new ClassNotFoundException();
-        }
-    }
-
-    /**
-     * @see java.lang.ClassLoader#clearAssertionStatus()
-     */
-    @Override
-    public synchronized void clearAssertionStatus() {
-        super.clearAssertionStatus();
-    }
-
-    /**
-     * @see java.lang.ClassLoader#definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String,
-     *      java.lang.String, java.lang.String, java.lang.String, java.net.URL)
-     */
-    @Override
-    protected Package definePackage(String name, String specTitle, String specVersion, String specVendor,
-            String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException {
-        return super.definePackage(name, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor,
-                sealBase);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#findLibrary(java.lang.String)
-     */
-    @Override
-    protected String findLibrary(String libname) {
-        return super.findLibrary(libname);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#findResource(java.lang.String)
-     */
-    @Override
-    protected URL findResource(String name) {
-        return super.findResource(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#findResources(java.lang.String)
-     */
-    @Override
-    protected Enumeration<URL> findResources(String name) throws IOException {
-        return super.findResources(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#getPackage(java.lang.String)
-     */
-    @Override
-    protected Package getPackage(String name) {
-        return super.getPackage(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#getPackages()
-     */
-    @Override
-    protected Package[] getPackages() {
-        return super.getPackages();
-    }
-
-    /**
-     * @see java.lang.ClassLoader#getResource(java.lang.String)
-     */
-    @Override
-    public URL getResource(String name) {
-        return super.getResource(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#getResourceAsStream(java.lang.String)
-     */
-    @Override
-    public InputStream getResourceAsStream(String name) {
-        return super.getResourceAsStream(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#getResources(java.lang.String)
-     */
-    @Override
-    public Enumeration<URL> getResources(String name) throws IOException {
-        return super.getResources(name);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#setClassAssertionStatus(java.lang.String, boolean)
-     */
-    @Override
-    public synchronized void setClassAssertionStatus(String className, boolean enabled) {
-        super.setClassAssertionStatus(className, enabled);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#setDefaultAssertionStatus(boolean)
-     */
-    @Override
-    public synchronized void setDefaultAssertionStatus(boolean enabled) {
-        super.setDefaultAssertionStatus(enabled);
-    }
-
-    /**
-     * @see java.lang.ClassLoader#setPackageAssertionStatus(java.lang.String, boolean)
-     */
-    @Override
-    public synchronized void setPackageAssertionStatus(String packageName, boolean enabled) {
-        super.setPackageAssertionStatus(packageName, enabled);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunner.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunner.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunner.java
deleted file mode 100644
index 2ebd2ff..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunner.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.runner;
-
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-
-public interface JythonOneTimeRunner {
-
-    /**
-     * @param script
-     * @param arguments
-     * @throws WorkflowException
-     */
-    public void run(String script, String[] arguments) throws WorkflowException;
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunnerImpl.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunnerImpl.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunnerImpl.java
deleted file mode 100644
index 6a4c532..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonOneTimeRunnerImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.runner;
-
-import java.io.File;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.jar.JarFile;
-
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.python.core.PySystemState;
-import org.python.util.PythonInterpreter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JythonOneTimeRunnerImpl implements JythonOneTimeRunner {
-
-    private static final Logger logger = LoggerFactory.getLogger(JythonOneTimeRunnerImpl.class);
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.jython.runner.JythonOneTimeRunner#run(java.lang.String, java.lang.String[])
-     */
-    public void run(final String script, final String[] arguments) throws WorkflowException {
-
-        try {
-            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
-                public Void run() {
-                    ClassLoader loader = this.getClass().getClassLoader();
-
-                    PySystemState.initialize(System.getProperties(), null, arguments, loader);
-
-                    if (loader instanceof JythonClassLoader) {
-                        logger.debug("jythonClassLoader");
-                        JythonClassLoader jythonLoader = (JythonClassLoader) loader;
-
-                        JarFile xbayaJarFile = jythonLoader.getXBayaJarFile();
-                        if (xbayaJarFile != null) {
-                            String jarPath = xbayaJarFile.getName();
-                            logger.debug("jarPath: " + jarPath);
-                            // String jarDir = jarPath.substring(0,
-                            // jarPath.lastIndexOf());
-                            File jarFile = new File(jarPath);
-                            String jarDir = jarFile.getParent();
-                            logger.debug("jarDir: " + jarDir);
-
-                            // This is for the Jython interpreter to
-                            // solve import statements.
-                            PySystemState.add_extdir(jarDir);
-                        }
-                    }
-
-                    PythonInterpreter interpreter = new PythonInterpreter();
-                    interpreter.exec(script);
-                    return null;
-                }
-            });
-        } catch (PrivilegedActionException e) {
-            logger.error(e.getMessage(), e);
-            throw new WorkflowException(e.getCause());
-        }
-
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonRunner.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonRunner.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonRunner.java
deleted file mode 100644
index 7fe1f93..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/jython/runner/JythonRunner.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.jython.runner;
-
-import java.util.List;
-
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.xbaya.ui.utils.ErrorMessages;
-
-public class JythonRunner {
-
-    private JythonClassLoader loader;
-
-    /**
-     * 
-     * Constructs a JythonRunner.
-     * 
-     */
-    public JythonRunner() {
-        this.loader = new JythonClassLoader(this.getClass().getClassLoader());
-    }
-
-    /**
-     * @param script
-     * @param arguments
-     * @throws WorkflowException
-     */
-    public void run(String script, List<String> arguments) throws WorkflowException {
-        run(script, arguments.toArray(new String[arguments.size()]));
-    }
-
-    /**
-     * @param script
-     * @param arguments
-     * @throws WorkflowException
-     */
-    public void run(final String script, final String[] arguments) throws WorkflowException {
-        try {
-            Class<?> runnerClass = this.loader.loadClass(JythonOneTimeRunnerImpl.class.getName(), true);
-            JythonOneTimeRunner runner = (JythonOneTimeRunner) runnerClass.newInstance();
-            runner.run(script, arguments);
-
-        } catch (ClassNotFoundException e) {
-            throw new WorkflowRuntimeException(ErrorMessages.UNEXPECTED_ERROR, e);
-        } catch (InstantiationException e) {
-            throw new WorkflowRuntimeException(ErrorMessages.UNEXPECTED_ERROR, e);
-        } catch (IllegalAccessException e) {
-            throw new WorkflowRuntimeException(ErrorMessages.UNEXPECTED_ERROR, e);
-        } finally {
-            loader.cleanUp();
-        }
-    }
-}
\ No newline at end of file