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:16 UTC

[14/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/EmbeddedGFacInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
deleted file mode 100644
index 267b838..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) und= nuer 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.io.File;
-import java.io.StringReader;
-import java.net.URL;
-import java.util.*;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
-import org.apache.airavata.commons.gfac.type.ActualParameter;
-import org.apache.airavata.commons.gfac.type.ApplicationDescription;
-import org.apache.airavata.commons.gfac.type.HostDescription;
-import org.apache.airavata.commons.gfac.type.ServiceDescription;
-import org.apache.airavata.credential.store.store.CredentialReaderFactory;
-import org.apache.airavata.gfac.Constants;
-import org.apache.airavata.gfac.GFacConfiguration;
-import org.apache.airavata.gfac.RequestData;
-import org.apache.airavata.gfac.context.ApplicationContext;
-import org.apache.airavata.gfac.context.JobExecutionContext;
-import org.apache.airavata.gfac.context.MessageContext;
-import org.apache.airavata.gfac.context.security.GSISecurityContext;
-import org.apache.airavata.gfac.context.security.SSHSecurityContext;
-import org.apache.airavata.gfac.cpi.GFacImpl;
-import org.apache.airavata.gfac.ec2.AmazonSecurityContext;
-import org.apache.airavata.gfac.scheduler.HostScheduler;
-import org.apache.airavata.gfac.utils.GFacUtils;
-import org.apache.airavata.gsi.ssh.api.Cluster;
-import org.apache.airavata.gsi.ssh.api.SSHApiException;
-import org.apache.airavata.gsi.ssh.api.ServerInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.AuthenticationInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
-import org.apache.airavata.gsi.ssh.impl.PBSCluster;
-import org.apache.airavata.gsi.ssh.impl.authentication.DefaultPasswordAuthenticationInfo;
-import org.apache.airavata.gsi.ssh.impl.authentication.DefaultPublicKeyFileAuthentication;
-import org.apache.airavata.gsi.ssh.impl.authentication.MyProxyAuthenticationInfo;
-import org.apache.airavata.gsi.ssh.util.CommonUtils;
-import org.apache.airavata.registry.api.exception.RegistryException;
-import org.apache.airavata.schemas.gfac.*;
-import org.apache.airavata.schemas.wec.ContextHeaderDocument;
-import org.apache.airavata.schemas.wec.SecurityContextDocument;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-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.OMAbstractFactory;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.v1.builder.XmlElement;
-
-import xsul.wsdl.WsdlDefinitions;
-import xsul.wsif.WSIFMessage;
-import xsul.wsif.impl.WSIFMessageElement;
-import xsul.xwsif_runtime.WSIFClient;
-
-public class EmbeddedGFacInvoker implements Invoker {
-
-    private static final Logger logger = LoggerFactory.getLogger(EmbeddedGFacInvoker.class);
-
-    private String nodeID;
-
-    private QName portTypeQName;
-
-    private String wsdlLocation;
-
-    private String serviceInformation;
-
-    private String messageBoxURL;
-
-    private String gfacURL;
-
-    private Invoker invoker;
-
-    private XBayaConfiguration configuration;
-
-
-    private Boolean result;
-
-    private ServiceNotifiable notifier;
-
-//    private AiravataRegistry2 registry;
-
-    private String topic;
-
-    private String serviceName;
-
-    private AiravataAPI airavataAPI;
-    /**
-     * used for notification
-     */
-    private List<Object> inputValues = new ArrayList<Object>();
-
-    /**
-     * used for notification
-     */
-    private List<String> inputNames = new ArrayList<String>();
-
-    boolean failerSent;
-
-    private WsdlDefinitions wsdlDefinitionObject;
-
-    private Object outPut;
-
-    Map<String, Object> actualParameters = new LinkedHashMap<String, Object>();
-
-    /**
-     * Creates an InvokerWithNotification.
-     *
-     * @param portTypeQName
-     * @param wsdlLocation  The URL of WSDL of the service to invoke
-     * @param nodeID        The ID of the service
-     * @param notifier      The notification sender
-     */
-    public EmbeddedGFacInvoker(QName portTypeQName, String wsdlLocation, String nodeID, WorkflowNotifiable notifier) {
-        this(portTypeQName, wsdlLocation, nodeID, null, notifier);
-    }
-
-    /**
-     * Creates an InvokerWithNotification.
-     *
-     * @param portTypeQName
-     * @param wsdlLocation  The URL of WSDL of the service to invoke
-     * @param nodeID        The ID of the service
-     * @param gfacURL       The URL of GFac service.
-     * @param notifier      The notification sender
-     */
-    public EmbeddedGFacInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String gfacURL,
-                               WorkflowNotifiable notifier) {
-        this(portTypeQName, wsdlLocation, nodeID, null, gfacURL, notifier);
-    }
-
-    /**
-     * Creates an InvokerWithNotification.
-     *
-     * @param portTypeQName
-     * @param wsdlLocation  The URL of WSDL of the service to invoke
-     * @param nodeID        The ID of the service
-     * @param messageBoxURL
-     * @param gfacURL       The URL of GFac service.
-     * @param notifier      The notification sender
-     */
-    public EmbeddedGFacInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String messageBoxURL,
-                               String gfacURL, WorkflowNotifiable notifier) {
-        this.nodeID = nodeID;
-        this.portTypeQName = portTypeQName;
-        this.wsdlLocation = wsdlLocation;
-        this.serviceInformation = wsdlLocation;
-        this.messageBoxURL = messageBoxURL;
-        this.gfacURL = gfacURL;
-        this.notifier = notifier.createServiceNotificationSender(nodeID);
-
-        this.failerSent = false;
-    }
-
-    /**
-     * @param portTypeQName
-     * @param wsdl
-     * @param nodeID
-     * @param messageBoxURL
-     * @param gfacURL
-     * @param notifier
-     */
-    public EmbeddedGFacInvoker(QName portTypeQName,
-                               WsdlDefinitions wsdl,
-                               String nodeID,
-                               String messageBoxURL,
-                               String gfacURL,
-                               WorkflowNotifiable notifier,
-                               String topic,
-                               AiravataAPI airavataAPI,
-                               String serviceName,
-                               XBayaConfiguration config) {
-        final String wsdlStr = xsul.XmlConstants.BUILDER.serializeToString(wsdl);
-        this.nodeID = nodeID;
-        this.portTypeQName = portTypeQName;
-        this.wsdlDefinitionObject = wsdl;
-        this.messageBoxURL = messageBoxURL;
-        this.serviceInformation = wsdlStr;
-        this.gfacURL = gfacURL;
-        this.notifier = notifier.createServiceNotificationSender(nodeID);
-        this.airavataAPI = airavataAPI;
-        this.topic = topic;
-        this.serviceName = serviceName;
-        this.failerSent = false;
-        this.configuration = config;
-    }
-
-    /**
-     * @throws WorkflowException
-     */
-    public void setup() throws WorkflowException {
-        this.notifier.setServiceID(this.nodeID);
-    }
-
-    private void setup(WsdlDefinitions definitions) throws WorkflowException {
-    }
-
-    /**
-     * @param operationName The name of the operation
-     * @throws WorkflowException
-     */
-    public void setOperation(String operationName) throws WorkflowException {
-    }
-
-    /**
-     * @param name  The name of the input parameter
-     * @param value The value of the input parameter
-     * @throws WorkflowException
-     */
-    public void setInput(String name, Object value) throws WorkflowException {
-        try {
-            if (value instanceof XmlElement) {
-                logger.debug("value: " + XMLUtil.xmlElementToString((XmlElement) value));
-            }
-            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;
-            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);
-        } catch (Exception e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
-    }
-
-    /**
-     * @return
-     * @throws WorkflowException
-     */
-    public synchronized boolean invoke() throws WorkflowException {
-        try {
-            ContextHeaderDocument.ContextHeader contextHeader =
-                    WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID, this.configuration.getContextHeader());
-            String hostName = null;
-            HostDescription registeredHost;
-            if (contextHeader != null) {
-                if (contextHeader.getWorkflowSchedulingContext() != null &&
-                        contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray().length > 0 &&
-                        contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName() != null) {
-                    hostName = contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName();
-                }
-            }
-            //todo This is the basic scheduling, have to do proper scheduling implementation by implementing HostScheduler interface
-            ServiceDescription serviceDescription = airavataAPI.getApplicationManager().getServiceDescription(serviceName);
-            if (hostName == null) {
-                List<HostDescription> registeredHosts = new ArrayList<HostDescription>();
-                Map<String, ApplicationDescription> applicationDescriptors = airavataAPI.getApplicationManager().getApplicationDescriptors(serviceName);
-                for (String hostDescName : applicationDescriptors.keySet()) {
-                    registeredHosts.add(airavataAPI.getApplicationManager().getHostDescription(hostDescName));
-                }
-                Class<? extends HostScheduler> aClass = Class.forName(ServerSettings.getHostScheduler()).asSubclass(HostScheduler.class);
-                HostScheduler hostScheduler = aClass.newInstance();
-                registeredHost = hostScheduler.schedule(registeredHosts);
-            } else {
-                // if user specify a host, no matter what we pick that host for all the nodes, todo: allow users to specify node specific host
-                registeredHost = airavataAPI.getApplicationManager().getHostDescription(hostName);
-            }
-            ApplicationDescription applicationDescription =
-                    airavataAPI.getApplicationManager().getApplicationDescription(serviceName, registeredHost.getType().getHostName());
-
-            // When we run getInParameters we set the actualParameter object, this has to be fixed
-            URL resource = EmbeddedGFacInvoker.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
-            OMElement inputMessage = getInParameters();
-            Object wsifMessageElement = new WSIFMessageElement(XMLUtil.stringToXmlElement3(inputMessage.toStringWithConsume()));
-            this.notifier.invokingService(new WSIFMessageElement((XmlElement) wsifMessageElement));
-            Properties configurationProperties = ServerSettings.getProperties();
-            GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), airavataAPI, configurationProperties);
-
-            JobExecutionContext jobExecutionContext = new JobExecutionContext(gFacConfiguration, serviceName);
-            //Here we get only the contextheader information sent specific for this node
-            //Add security context
-
-            //FIXME - We no longer using job execution context
-//            jobExecutionContext.setContextHeader(WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID, configuration.getContextHeader()));
-
-
-            jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_NODE_ID, this.nodeID);
-            jobExecutionContext.setProperty(Constants.PROP_TOPIC, this.configuration.getTopic());
-            jobExecutionContext.setProperty(Constants.PROP_BROKER_URL, this.configuration.getBrokerURL().toASCIIString());
-            jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_INSTANCE_ID, this.configuration.getTopic());
-
-
-            ApplicationContext applicationContext = new ApplicationContext();
-            applicationContext.setApplicationDeploymentDescription(applicationDescription);
-            applicationContext.setHostDescription(registeredHost);
-            applicationContext.setServiceDescription(serviceDescription);
-
-            jobExecutionContext.setApplicationContext(applicationContext);
-
-            jobExecutionContext.setOutMessageContext(getOutParameters(serviceDescription));
-            jobExecutionContext.setInMessageContext(new MessageContext(actualParameters));
-
-            addSecurityContext(registeredHost, configurationProperties, jobExecutionContext,
-                    configuration.getContextHeader());
-            GFacImpl gfacAPI1 = new GFacImpl();
-            gfacAPI1.submitJob(jobExecutionContext);
-
-            OMFactory fac = OMAbstractFactory.getOMFactory();
-            OMNamespace omNs = fac.createOMNamespace("http://ws.apache.org/axis2/xsd", "ns1");
-            OMElement outputElement = fac.createOMElement("invokeResponse", omNs);
-            MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
-            Set<String> paramNames = outMessageContext.getParameters().keySet();
-            for (String paramName : paramNames) {
-                /*
-                * Process Output
-                */
-                String outputString = ((ActualParameter) outMessageContext.getParameter(paramName)).toXML().replaceAll("GFacParameter", paramName);
-                XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(outputString));
-                StAXOMBuilder builder = new StAXOMBuilder(reader);
-                outputElement.addChild(builder.getDocumentElement());
-            }
-            // 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));
-            //todo check whether ActualParameter values are set or not, if they are null have to through an error or handle this in gfac level.
-//             {
-//                // An implementation of WSIFMessage,
-//                // WSIFMessageElement, implements toString(), which
-//                // serialize the message XML.
-//                EmbeddedGFacInvoker.this.notifier.receivedFault(new WSIFMessageElement(XMLUtil.stringToXmlElement3("<Message>Invocation Failed</Message>")));
-//                EmbeddedGFacInvoker.this.failerSent = true;
-//            }
-
-        } 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);
-        } catch (Exception e) {
-            this.notifier.invocationFailed(e.getMessage(), e);
-            throw new WorkflowException(e.getMessage(), e);
-        }
-        return true;
-    }
-
-    private SecurityContextDocument.SecurityContext.CredentialManagementService getCredentialManagementService(
-            ContextHeaderDocument.ContextHeader contextHeader) {
-
-        if (contextHeader != null) {
-
-            SecurityContextDocument.SecurityContext.CredentialManagementService credentialManagementService
-                    = contextHeader.getSecurityContext().getCredentialManagementService();
-
-            if (credentialManagementService != null) {
-                // Make sure token id and portal user id is properly populated
-                if (credentialManagementService.getTokenId() != null &&
-                        credentialManagementService.getPortalUser() != null) {
-
-                    return credentialManagementService;
-                } else {
-                    return null;
-                }
-            } else {
-                return null;
-            }
-        }
-
-        return null;
-    }
-
-    private void addSecurityContext(HostDescription registeredHost, Properties configurationProperties,
-                                    JobExecutionContext jobExecutionContext, ContextHeaderDocument.ContextHeader contextHeader) throws WorkflowException {
-        RequestData requestData;
-            /* todo fix the credential store and uncomment following code block
-            SecurityContextDocument.SecurityContext.CredentialManagementService credentialManagementService
-                    = getCredentialManagementService(contextHeader);
-
-            GSISecurityContext context;
-
-
-            if (credentialManagementService != null) {
-                String gatewayId = credentialManagementService.getGatewayId();
-                String tokenId
-                        = credentialManagementService.getTokenId();
-                String portalUser = credentialManagementService.getPortalUser();
-
-                requestData = new RequestData(tokenId, portalUser, gatewayId);
-            } else {
-                requestData = new RequestData("default");
-            }
-
-            try {
-                context = new GSISecurityContext(CredentialReaderFactory.createCredentialStoreReader(), requestData);
-            } catch (Exception e) {
-                throw new WorkflowException("An error occurred while creating GSI security context", e);
-            }
-            if (registeredHost.getType() instanceof GsisshHostType) {
-                GSIAuthenticationInfo authenticationInfo
-                        = new MyProxyAuthenticationInfo(requestData.getMyProxyUserName(), requestData.getMyProxyPassword(), requestData.getMyProxyServerUrl(),
-                        requestData.getMyProxyPort(), requestData.getMyProxyLifeTime(), System.getProperty(Constants.TRUSTED_CERTIFICATE_SYSTEM_PROPERTY));
-                ServerInfo serverInfo = new ServerInfo(requestData.getMyProxyUserName(), registeredHost.getType().getHostAddress());
-
-                Cluster pbsCluster = null;
-                try {
-                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
-                            (((HpcApplicationDeploymentType) jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType()).getInstalledParentPath()));
-                } catch (SSHApiException e) {
-                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-                }
-
-                context.setPbsCluster(pbsCluster);
-            }
-            */
-            requestData = new RequestData("default");
-            GSISecurityContext context;
-            try {
-                context = new GSISecurityContext(CredentialReaderFactory.createCredentialStoreReader(), requestData);
-            } catch (Exception e) {
-                throw new WorkflowException("An error occurred while creating GSI security context", e);
-            }
-
-            if (registeredHost.getType() instanceof GsisshHostType) {
-                GSIAuthenticationInfo authenticationInfo
-                        = new MyProxyAuthenticationInfo(requestData.getMyProxyUserName(), requestData.getMyProxyPassword(), requestData.getMyProxyServerUrl(),
-                        requestData.getMyProxyPort(), requestData.getMyProxyLifeTime(), System.getProperty(Constants.TRUSTED_CERTIFICATE_SYSTEM_PROPERTY));
-                ServerInfo serverInfo = new ServerInfo(requestData.getMyProxyUserName(), registeredHost.getType().getHostAddress());
-
-                Cluster pbsCluster = null;
-                try {
-                    String installedParentPath = ((HpcApplicationDeploymentType)
-                            jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType()).getInstalledParentPath();
-                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
-                            (CommonUtils.getPBSJobManager(installedParentPath)));
-                } catch (SSHApiException e) {
-                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-                }
-
-                context.setPbsCluster(pbsCluster);
-            }
-
-            jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, context);
-        //Adding Amanzon Keys
-            if (this.configuration.getAmazonSecurityContext() != null) {
-                jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT,
-                        this.configuration.getAmazonSecurityContext());
-         }
-      //Adding SSH security
-            String sshUserName = configurationProperties.getProperty(Constants.SSH_USER_NAME);
-            String sshPrivateKey = configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY);
-            String sshPrivateKeyPass = configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY_PASS);
-            String sshPassword = configurationProperties.getProperty(Constants.SSH_PASSWORD);
-            String sshPublicKey = configurationProperties.getProperty(Constants.SSH_PUBLIC_KEY);
-            SSHSecurityContext sshSecurityContext = new SSHSecurityContext();
-            if (((SSHHostType) registeredHost.getType()).getHpcResource()) {
-                AuthenticationInfo authenticationInfo = null;
-                // we give higher preference to the password over keypair ssh authentication
-                if (sshPassword != null) {
-                    authenticationInfo = new DefaultPasswordAuthenticationInfo(sshPassword);
-                } else {
-                    authenticationInfo = new DefaultPublicKeyFileAuthentication(sshPublicKey, sshPrivateKey, sshPrivateKeyPass);
-                }
-                ServerInfo serverInfo = new ServerInfo(sshUserName, registeredHost.getType().getHostAddress());
-
-                Cluster pbsCluster = null;
-                try {
-                    String installedParentPath = ((HpcApplicationDeploymentType)
-                            jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType()).getInstalledParentPath();
-                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
-                            (CommonUtils.getPBSJobManager(installedParentPath)));
-                } catch (SSHApiException e) {
-                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-                }
-                sshSecurityContext.setPbsCluster(pbsCluster);
-                sshSecurityContext.setUsername(sshUserName);
-            } else {
-                sshSecurityContext = new SSHSecurityContext();
-                sshSecurityContext.setUsername(sshUserName);
-                sshSecurityContext.setPrivateKeyLoc(sshPrivateKey);
-                sshSecurityContext.setKeyPass(sshPrivateKeyPass);
-            }
-            jobExecutionContext.addSecurityContext(SSHSecurityContext.SSH_SECURITY_CONTEXT, sshSecurityContext);
-    }
-
-    /**
-     * @throws WorkflowException
-     */
-    @SuppressWarnings("boxing")
-    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;
-            if (success == false) {
-                WSIFMessage faultMessage = this.invoker.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 (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);
-        }
-    }
-
-    /**
-     * @param name The name of the output parameter
-     * @return
-     * @throws WorkflowException
-     */
-    public Object getOutput(String name) throws WorkflowException {
-        try {
-            waitToFinish();
-            if (outPut instanceof XmlElement) {
-                Iterator children = ((XmlElement) outPut).children();
-                while (children.hasNext()) {
-                    Object next = children.next();
-                    if (((XmlElement) next).getName().equals(name)) {
-                        return ((XmlElement) ((XmlElement) 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.
-            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);
-        }
-        throw new WorkflowException("Output could not be found");
-    }
-
-    /**
-     * @return
-     * @throws WorkflowException
-     */
-    public WSIFMessage getOutputs() throws WorkflowException {
-        return this.invoker.getOutputs();
-    }
-
-    public WSIFClient getClient() {
-        return null;
-    }
-
-    public WSIFMessage getInputs() throws WorkflowException {
-        return null;
-    }
-
-    public WSIFMessage getFault() throws WorkflowException {
-        return null;
-    }
-
-    private OMElement getInParameters() throws AiravataAPIInvocationException, RegistryException, XMLStreamException {
-        OMFactory omFactory = OMAbstractFactory.getOMFactory();
-        OMElement invoke_inputParams = omFactory.createOMElement(new QName("invoke_InputParams"));
-        ServiceDescription serviceDescription = airavataAPI.getApplicationManager().getServiceDescription(this.serviceName);
-        if (serviceDescription == null) {
-            throw new RegistryException(new Exception("Service Description not found in registry."));
-        }
-        ServiceDescriptionType serviceDescriptionType = serviceDescription.getType();
-        for (String inputName : this.inputNames) {
-            OMElement omElement = omFactory.createOMElement(new QName(inputName));
-            int index = this.inputNames.indexOf(inputName);
-            Object value = this.inputValues.get(index);
-            InputParameterType parameter = serviceDescriptionType.getInputParametersArray(index);
-            if (value instanceof XmlElement) {
-                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();
-//                actualParameters.put(parameter.getParameterName(), GFacUtils.getInputActualParameter(parameter, input));
-            } else if (value instanceof String) {
-                omElement.setText((String) value);
-//                actualParameters.put(parameter.getParameterName(), GFacUtils.getInputActualParameter(parameter, AXIOMUtil.stringToOM("<value>" + value + "</value>")));
-            }
-            invoke_inputParams.addChild(omElement);
-        }
-        return invoke_inputParams;
-    }
-
-    private MessageContext getOutParameters(ServiceDescription serviceDescription) {
-        MessageContext outContext = new MessageContext();
-        for (OutputParameterType parameter : serviceDescription.getType().getOutputParametersArray()) {
-            ActualParameter actualParameter = new ActualParameter();
-            if ("String".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(StringParameterType.type);
-            } else if ("Double".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(DoubleParameterType.type);
-            } else if ("Integer".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(IntegerParameterType.type);
-            } else if ("Float".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(FloatParameterType.type);
-            } else if ("Boolean".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(BooleanParameterType.type);
-            } else if ("File".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(FileParameterType.type);
-            } else if ("URI".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(URIParameterType.type);
-            } else if ("StringArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(StringArrayType.type);
-            } else if ("DoubleArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(DoubleArrayType.type);
-            } else if ("IntegerArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(IntegerArrayType.type);
-            } else if ("FloatArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(FloatArrayType.type);
-            } else if ("BooleanArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(BooleanArrayType.type);
-            } else if ("FileArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(FileArrayType.type);
-            } else if ("URIArray".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(URIArrayType.type);
-            } else if ("StdOut".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(StdOutParameterType.type);
-            } else if ("StdErr".equals(parameter.getParameterType().getName())) {
-                actualParameter.getType().changeType(StdErrParameterType.type);
-            }
-            outContext.addParameter(parameter.getParameterName(), actualParameter);
-        }
-        return outContext;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GFacInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GFacInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GFacInvoker.java
deleted file mode 100644
index 10edbd9..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GFacInvoker.java
+++ /dev/null
@@ -1,199 +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.net.URI;
-import java.util.UUID;
-
-import javax.xml.namespace.QName;
-
-import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.xbaya.invoker.factory.InvokerFactory;
-import org.apache.airavata.xbaya.lead.NotificationHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import xsul.lead.LeadContextHeader;
-import xsul.wsdl.WsdlDefinitions;
-import xsul.wsdl.WsdlResolver;
-import xsul.wsif.WSIFMessage;
-import xsul.xhandler_soap_sticky_header.StickySoapHeaderHandler;
-import xsul.xwsif_runtime.WSIFClient;
-
-public class GFacInvoker implements Invoker {
-
-    private final static Logger logger = LoggerFactory.getLogger(GFacInvoker.class);
-
-    private String gfacURL;
-
-    private String messageBoxURL;
-
-    private QName portTypeQName;
-
-    private Invoker invoker;
-
-    private LeadContextHeader leadContext;
-
-    private WorkflowContextHeaderBuilder builder;
-
-    /**
-     * Constructs a GFacInvoker.
-     * 
-     * @param portTypeQName
-     * @param gfacURL
-     * @param messageBoxURL
-     * @param context
-     */
-    public GFacInvoker(QName portTypeQName, String gfacURL, String messageBoxURL, LeadContextHeader context) {
-        this.portTypeQName = portTypeQName;
-        this.gfacURL = gfacURL;
-        this.messageBoxURL = messageBoxURL;
-        this.leadContext = context;
-    }
-
-    public GFacInvoker(QName portTypeQName, String gfacURL, String messageBoxURL, WorkflowContextHeaderBuilder context) {
-        this.portTypeQName = portTypeQName;
-        this.gfacURL = gfacURL;
-        this.messageBoxURL = messageBoxURL;
-        this.builder = context;
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setup()
-     */
-    public void setup() throws WorkflowException {
-
-        if (this.gfacURL == null) {
-            String message = "The location of the Generic Factory is not specified.";
-            throw new WorkflowException(message);
-        }
-
-        if (this.portTypeQName == null) {
-            String message = "Error in finding the service name";
-            throw new WorkflowException(message);
-        }
-
-        try {
-
-            URI uri = new URI(this.gfacURL);
-
-            /*
-             * Substring to remove GfacService
-             */
-            String gfacPath = uri.getPath();
-            if (gfacPath != null && gfacPath.contains("/")) {
-                gfacPath = gfacPath.substring(0, gfacPath.lastIndexOf('/') + 1) + portTypeQName.getLocalPart();
-            }
-            URI getWsdlURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), gfacPath
-                    + "/getWSDL", uri.getQuery(), uri.getFragment());
-
-            logger.debug("getWSDL service:" + getWsdlURI.toString());
-
-            WsdlDefinitions concreteWSDL = WsdlResolver.getInstance().loadWsdl(getWsdlURI);
-
-            this.invoker = InvokerFactory.createInvoker(this.portTypeQName, concreteWSDL, null, this.messageBoxURL,
-                    null, true);
-            this.invoker.setup();
-        } catch (WorkflowException xe) {
-            throw xe;
-        } catch (Exception e) {
-            throw new WorkflowException(e.getMessage(), e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getClient()
-     */
-    public WSIFClient getClient() {
-        return this.invoker.getClient();
-    }
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setOperation(java.lang.String)
-     */
-    public void setOperation(String operationName) throws WorkflowException {
-        this.invoker.setOperation(operationName);
-    }
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setInput(java.lang.String, java.lang.Object)
-     */
-    public void setInput(String name, Object value) throws WorkflowException {
-        this.invoker.setInput(name, value);
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getInputs()
-     */
-    public WSIFMessage getInputs() throws WorkflowException {
-        return this.invoker.getInputs();
-    }
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.invoker.Invoker#invoke()
-     */
-    public boolean invoke() throws WorkflowException {
-
-        WSIFClient client = invoker.getClient();
-        // FIXME: Temporary fix
-        // if (this.leadContext == null) {
-        // LeadContextHeader lh = new LeadContextHeader(UUID.randomUUID().toString(), "XBaya-User");
-        // this.leadContext = lh;
-        // }
-        // StickySoapHeaderHandler handler = new StickySoapHeaderHandler("use-lead-header", this.leadContext);
-        // client.addHandler(handler);
-
-        // This handler has to be end to get the entire soap message.
-        NotificationHandler notificationHandler = new NotificationHandler(this.builder);
-        client.addHandler(notificationHandler);
-        return this.invoker.invoke();
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getOutputs()
-     */
-    public WSIFMessage getOutputs() throws WorkflowException {
-        return this.invoker.getOutputs();
-    }
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getOutput(java.lang.String)
-     */
-    public Object getOutput(String name) throws WorkflowException {
-        return this.invoker.getOutput(name);
-    }
-
-    /**
-     * @throws WorkflowException
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getFault()
-     */
-    public WSIFMessage getFault() throws WorkflowException {
-        return this.invoker.getFault();
-    }
-
-}
\ 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/GenericInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java
deleted file mode 100644
index e59c150..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/GenericInvoker.java
+++ /dev/null
@@ -1,529 +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.io.File;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-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.workflow.execution.context.WorkflowContextHeaderBuilder;
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.schemas.wec.ContextHeaderDocument;
-import org.apache.airavata.workflow.model.exceptions.WorkflowException;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.xbaya.invoker.factory.InvokerFactory;
-import org.apache.airavata.xbaya.jython.lib.ServiceNotifiable;
-import org.apache.airavata.xbaya.jython.lib.WorkflowNotifiable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.v1.builder.XmlElement;
-
-import xsul.wsdl.WsdlDefinitions;
-import xsul.wsdl.WsdlException;
-import xsul.wsdl.WsdlResolver;
-import xsul.wsif.WSIFMessage;
-import xsul.xhandler_soap_sticky_header.StickySoapHeaderHandler;
-import xsul.xwsif_runtime.WSIFClient;
-
-public class GenericInvoker implements Invoker {
-
-    private static final Logger logger = LoggerFactory.getLogger(GenericInvoker.class);
-
-    private String nodeID;
-
-    private QName portTypeQName;
-
-    private String wsdlLocation;
-
-    private String serviceInformation;
-
-    private String messageBoxURL;
-
-    private String gfacURL;
-
-    private Invoker invoker;
-
-    private Future<Boolean> result;
-
-    private ServiceNotifiable notifier;
-
-    private ContextHeaderDocument.ContextHeader contextHeader;
-
-    private String topic;
-
-    /**
-     * used for notification
-     */
-    private List<Object> inputValues = new ArrayList<Object>();
-
-    /**
-     * used for notification
-     */
-    private List<String> inputNames = new ArrayList<String>();
-
-    boolean failerSent;
-
-    private WsdlDefinitions wsdlDefinitionObject;
-
-    /**
-     * Creates an InvokerWithNotification.
-     * 
-     * @param portTypeQName
-     * 
-     * @param wsdlLocation
-     *            The URL of WSDL of the service to invoke
-     * @param nodeID
-     *            The ID of the service
-     * @param notifier
-     *            The notification sender
-     */
-    public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, WorkflowNotifiable notifier) {
-        this(portTypeQName, wsdlLocation, nodeID, null, notifier);
-    }
-
-    /**
-     * Creates an InvokerWithNotification.
-     * 
-     * @param portTypeQName
-     * 
-     * @param wsdlLocation
-     *            The URL of WSDL of the service to invoke
-     * @param nodeID
-     *            The ID of the service
-     * @param gfacURL
-     *            The URL of GFac service.
-     * @param notifier
-     *            The notification sender
-     */
-    public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String gfacURL,
-            WorkflowNotifiable notifier) {
-        this(portTypeQName, wsdlLocation, nodeID, null, gfacURL, notifier);
-    }
-
-    /**
-     * Creates an InvokerWithNotification.
-     * 
-     * @param portTypeQName
-     * 
-     * @param wsdlLocation
-     *            The URL of WSDL of the service to invoke
-     * @param nodeID
-     *            The ID of the service
-     * @param messageBoxURL
-     * @param gfacURL
-     *            The URL of GFac service.
-     * @param notifier
-     *            The notification sender
-     */
-    public GenericInvoker(QName portTypeQName, String wsdlLocation, String nodeID, String messageBoxURL,
-            String gfacURL, WorkflowNotifiable notifier) {
-        this.nodeID = nodeID;
-        this.portTypeQName = portTypeQName;
-        this.wsdlLocation = wsdlLocation;
-        this.serviceInformation = wsdlLocation;
-        this.messageBoxURL = messageBoxURL;
-        this.gfacURL = gfacURL;
-        this.notifier = notifier.createServiceNotificationSender(nodeID);
-        this.failerSent = false;
-        this.contextHeader = WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID,WorkflowContextHeaderBuilder.getCurrentContextHeader());
-        this.topic = notifier.getTopic();
-    }
-
-    /**
-     *
-     * @param portTypeQName
-     * @param wsdl
-     * @param nodeID
-     * @param messageBoxURL
-     * @param gfacURL
-     * @param notifier
-     */
-    public GenericInvoker(QName portTypeQName, WsdlDefinitions wsdl, String nodeID, String messageBoxURL,
-            String gfacURL, WorkflowNotifiable notifier) {
-        final String wsdlStr = xsul.XmlConstants.BUILDER.serializeToString(wsdl);
-        this.nodeID = nodeID;
-        this.portTypeQName = portTypeQName;
-        this.wsdlDefinitionObject = wsdl;
-        this.messageBoxURL = messageBoxURL;
-        this.serviceInformation = wsdlStr;
-        this.gfacURL = gfacURL;
-        this.notifier = notifier.createServiceNotificationSender(nodeID);
-        this.failerSent = false;
-        this.contextHeader = WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID,WorkflowContextHeaderBuilder.getCurrentContextHeader());
-        this.topic = notifier.getTopic();
-    }
-
-    /**
-     *
-     * @throws WorkflowException
-     */
-    public void setup() throws WorkflowException {
-        try {
-            WsdlDefinitions definitions = null;
-            if (this.wsdlLocation != null && !this.wsdlLocation.equals("")) {
-                WsdlResolver resolver = WsdlResolver.getInstance();
-                definitions = resolver.loadWsdl(new File(".").toURI(), new URI(this.wsdlLocation));
-            } else {
-                definitions = this.wsdlDefinitionObject;
-            }
-
-            setup(definitions);
-
-        } catch (WorkflowException e) {
-            logger.error(e.getMessage(), e);
-            // An appropriate message has been set in the exception.
-            this.notifier.invocationFailed(e.getMessage(), e);
-            throw e;
-        } catch (URISyntaxException e) {
-            logger.error(e.getMessage(), e);
-            String message = "The location of the WSDL has to be a valid URL or file path: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        } catch (WsdlException e) {
-            logger.error(e.getMessage(), e);
-            String message = "Error in processing the WSDL: " + this.serviceInformation;
-            this.notifier.invocationFailed(message, e);
-            throw new WorkflowException(message, e);
-        } catch (RuntimeException e) {
-            logger.error(e.getMessage(), e);
-            String message = "Error in processing the WSDL: " + 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);
-        }
-    }
-
-    private void setup(WsdlDefinitions definitions) throws WorkflowException {
-
-        // Set LEAD context header.
-        WorkflowContextHeaderBuilder builder;
-        if(contextHeader == null){
-            builder = new WorkflowContextHeaderBuilder(this.notifier.getEventSink()
-                .getAddress(), this.gfacURL, null, this.topic,
-                "xbaya-experiment", this.messageBoxURL);
-        }else{
-             builder = new WorkflowContextHeaderBuilder(contextHeader);
-        }
-        if(builder.getWorkflowMonitoringContext() == null){
-            builder.addWorkflowMonitoringContext(this.notifier.getEventSink().getAddress(),
-                    this.topic,this.nodeID,this.messageBoxURL);
-        } else {
-            builder.getWorkflowMonitoringContext().setWorkflowInstanceId(this.notifier.getWorkflowID().toASCIIString());
-        }
-        builder.getWorkflowMonitoringContext().setWorkflowNodeId(this.nodeID);
-        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
-//        builder.setGridMyProxyRepository("myproxy.nersc.gov","$user","$passwd",14000);
-        StickySoapHeaderHandler handler = new StickySoapHeaderHandler("use-workflowcontext-header", builder.getXml());
-        // Create Invoker
-        this.invoker = InvokerFactory.createInvoker(this.portTypeQName, definitions, this.gfacURL, this.messageBoxURL,
-                builder, true);
-        this.invoker.setup();
-
-        WSIFClient client = this.invoker.getClient();
-        client.addHandler(handler);
-
-        WsdlResolver resolver = WsdlResolver.getInstance();
-        // Get the concrete WSDL from invoker.setup() and set it to the
-        // notifier.
-
-        this.notifier.setServiceID(this.nodeID);
-        // if (this.wsdlLocation != null) {
-        // this.notifier.setServiceID(this.nodeID);
-        // } else {
-        // String name = this.portTypeQName.getLocalPart();
-        // this.notifier.setServiceID(name);
-        // }
-    }
-
-    /**
-     *
-     * @param operationName
-     *            The name of the operation
-     * @throws WorkflowException
-     */
-    public void setOperation(String operationName) throws WorkflowException {
-        try {
-            this.invoker.setOperation(operationName);
-        } catch (WorkflowException e) {
-            logger.error(e.getMessage(), e);
-            // An appropriate message has been set in the exception.
-            this.notifier.invocationFailed(e.getMessage(), e);
-            throw e;
-        } catch (RuntimeException e) {
-            logger.error(e.getMessage(), e);
-            String message = "The WSDL does not conform to the invoking 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);
-        }
-    }
-
-    /**
-     *
-     * @param name
-     *            The name of the input parameter
-     * @param value
-     *            The value of the input parameter
-     * @throws WorkflowException
-     */
-    public void setInput(String name, Object value) throws WorkflowException {
-        try {
-            if (value instanceof XmlElement) {
-                logger.debug("value: " + XMLUtil.xmlElementToString((XmlElement) value));
-            }
-            this.inputNames.add(name);
-            this.inputValues.add(value);
-            this.invoker.setInput(name, value);
-        } catch (WorkflowException e) {
-            logger.error(e.getMessage(), e);
-            // An appropriate message has been set in the exception.
-            this.notifier.invocationFailed(e.getMessage(), e);
-            throw e;
-        } catch (RuntimeException e) {
-            logger.error(e.getMessage(), e);
-            String message = "Error in setting an input. name: " + name + " value: " + value;
-            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);
-        }
-    }
-
-    /**
-     *
-     * @return
-     * @throws WorkflowException
-     */
-    public synchronized boolean invoke() throws WorkflowException {
-        try {
-            WSIFMessage inputMessage = this.invoker.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 = GenericInvoker.this.invoker.invoke();
-                        if (success) {
-                            // Send notification
-                            WSIFMessage outputMessage = GenericInvoker.this.invoker.getOutputs();
-                            // An implementation of WSIFMessage,
-                            // WSIFMessageElement, implements toString(), which
-                            // serialize the message XML.
-                            logger.debug("outputMessage: " + outputMessage);
-                            GenericInvoker.this.notifier.serviceFinished(outputMessage);
-                        } else {
-                            //if error occurse gfac-axis2 write the error in to output not to the fault
-                            WSIFMessage faultMessage = GenericInvoker.this.invoker.getOutputs();
-                            // An implementation of WSIFMessage,
-                            // WSIFMessageElement, implements toString(), which
-                            // serialize the message XML.
-                            logger.debug("received fault: " + faultMessage);
-                            GenericInvoker.this.notifier.receivedFault(faultMessage);
-                            GenericInvoker.this.failerSent = true;
-                        }
-                        return success;
-                    } catch (WorkflowException e) {
-                        logger.error(e.getMessage(), e);
-                        // An appropriate message has been set in the exception.
-                        GenericInvoker.this.notifier.invocationFailed(e.getMessage(), e);
-                        GenericInvoker.this.failerSent = true;
-                        throw new WorkflowRuntimeException(e);
-                    } catch (RuntimeException e) {
-                        logger.error(e.getMessage(), e);
-                        String message = "Error in invoking a service: " + GenericInvoker.this.serviceInformation;
-                        GenericInvoker.this.notifier.invocationFailed(message, e);
-                        GenericInvoker.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);
-        }
-        return true;
-    }
-
-    /**
-     *
-     * @throws WorkflowException
-     */
-    @SuppressWarnings("boxing")
-    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 = this.invoker.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);
-        }
-    }
-
-    /**
-     *
-     * @param name
-     *            The name of the output parameter
-     * @return
-     * @throws WorkflowException
-     */
-    public Object getOutput(String name) throws WorkflowException {
-        try {
-            waitToFinish();
-            Object output = this.invoker.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);
-        }
-    }
-
-    /**
-     *
-     * @return
-     * @throws WorkflowException
-     */
-    public WSIFMessage getOutputs() throws WorkflowException {
-        return this.invoker.getOutputs();
-    }
-
-    @Override
-    public WSIFClient getClient() {
-        return null;
-    }
-
-    @Override
-    public WSIFMessage getInputs() throws WorkflowException {
-        return null;
-    }
-
-    @Override
-    public WSIFMessage getFault() throws WorkflowException {
-        return null;
-    }
-}
\ 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/Invoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/Invoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/Invoker.java
deleted file mode 100644
index 4580587..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/Invoker.java
+++ /dev/null
@@ -1,105 +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 org.apache.airavata.workflow.model.exceptions.WorkflowException;
-
-import xsul.wsif.WSIFMessage;
-import xsul.xwsif_runtime.WSIFClient;
-
-public interface Invoker {
-
-    /**
-     * Sets up the service.
-     * 
-     * @throws WorkflowException
-     */
-    public void setup() throws WorkflowException;
-
-    /**
-     * @return The WSIFClient.
-     */
-    public WSIFClient getClient();
-
-    /**
-     * Sets the operation name to invoke.
-     * 
-     * @param operationName
-     *            The name of the operation
-     * @throws WorkflowException
-     */
-    public void setOperation(String operationName) throws WorkflowException;
-
-    /**
-     * Sets an input parameter
-     * 
-     * @param name
-     *            The name of the input parameter
-     * @param value
-     *            The value of the input parameter
-     * @throws WorkflowException
-     */
-    public void setInput(String name, Object value) throws WorkflowException;
-
-    /**
-     * Returns the all input parameters
-     * 
-     * @return The input parameters
-     * @throws WorkflowException
-     */
-    public WSIFMessage getInputs() throws WorkflowException;
-
-    /**
-     * Invokes the service.
-     * 
-     * @return true if the invocation succeeds; fase otherwise
-     * @throws WorkflowException
-     */
-    public boolean invoke() throws WorkflowException;
-
-    /**
-     * Returns the all output parameters
-     * 
-     * @return The output parameters
-     * @throws WorkflowException
-     */
-    public WSIFMessage getOutputs() throws WorkflowException;
-
-    /**
-     * Returns the output of a specified name.
-     * 
-     * @param name
-     *            The name of the output parameter
-     * @return The value of the output
-     * @throws WorkflowException
-     */
-    public Object getOutput(String name) throws WorkflowException;
-
-    /**
-     * Returns the fault message.
-     * 
-     * @return The fault message
-     * @throws WorkflowException
-     */
-    public WSIFMessage getFault() 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/invoker/MsgBoxWsaResponsesCorrelator.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/MsgBoxWsaResponsesCorrelator.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/MsgBoxWsaResponsesCorrelator.java
deleted file mode 100644
index 5fee29f..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/MsgBoxWsaResponsesCorrelator.java
+++ /dev/null
@@ -1,140 +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 org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.wsmg.msgbox.client.MsgBoxClient;
-import org.apache.axiom.om.OMElement;
-import org.apache.axis2.addressing.EndpointReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xmlpull.v1.builder.XmlDocument;
-import org.xmlpull.v1.builder.XmlElement;
-import org.xmlpull.v1.builder.XmlInfosetBuilder;
-import xsul.MLogger;
-import xsul.XmlConstants;
-import xsul.XsulException;
-import xsul.processor.DynamicInfosetProcessorException;
-import xsul.ws_addressing.WsaEndpointReference;
-import xsul.ws_addressing.WsaMessageInformationHeaders;
-import xsul.wsif.WSIFMessage;
-import xsul.wsif.impl.WSIFMessageElement;
-import xsul.xwsif_runtime_async.WSIFAsyncResponseListener;
-import xsul.xwsif_runtime_async.WSIFAsyncResponsesCorrelator;
-import xsul.xwsif_runtime_async.WSIFAsyncWsaResponsesCorrelatorBase;
-
-import javax.xml.stream.XMLStreamException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-public class MsgBoxWsaResponsesCorrelator extends WSIFAsyncWsaResponsesCorrelatorBase
-    implements WSIFAsyncResponsesCorrelator, Runnable
-{
-    private static final Logger logger = LoggerFactory.getLogger(MsgBoxWsaResponsesCorrelator.class);
-    private final static XmlInfosetBuilder builder = XmlConstants.BUILDER;
-
-    private String msgBoxServiceLoc;
-    private MsgBoxClient msgBoxClient;
-    EndpointReference msgBoxAddr;
-    private Thread messageBoxDonwloader;
-
-    private AsynchronousInvoker invoker;
-
-    public MsgBoxWsaResponsesCorrelator(String msgBoxServiceLoc,AsynchronousInvoker output)
-        throws DynamicInfosetProcessorException
-    {
-        this.invoker = output;
-        this.msgBoxServiceLoc = msgBoxServiceLoc;
-        msgBoxClient = new MsgBoxClient();
-        try {
-            msgBoxAddr = msgBoxClient.createMessageBox(msgBoxServiceLoc,5000L);
-            try {
-                setReplyTo(new WsaEndpointReference(new URI(msgBoxAddr.getAddress())));
-            } catch (URISyntaxException e) {
-            	logger.error(e.getLocalizedMessage(),e);  //To change body of catch statement use File | Settings | File Templates.
-            }
-            messageBoxDonwloader = new Thread(this, Thread.currentThread().getName()+"-async-msgbox-correlator");
-            messageBoxDonwloader.setDaemon(true);
-            messageBoxDonwloader.start();
-        } catch (RemoteException e) {
-        	logger.error(e.getLocalizedMessage(),e);  //To change body of catch statement use File | Settings | File Templates.
-        }
-    }
-
-//    public void setMsgBoxAddr(WsaEndpointReference msgBoxAddr) {
-//      this.msgBoxAddr = msgBoxAddr;
-//    }
-
-
-
-    public void run() {
-        while(true) {
-            try {
-                Iterator<OMElement> omElementIterator = msgBoxClient.takeMessagesFromMsgBox(msgBoxAddr, 5000L);
-                List<XmlElement> xmlArrayList = new ArrayList<XmlElement>();
-                while (omElementIterator.hasNext()){
-                    OMElement next = omElementIterator.next();
-                    String message = next.toStringWithConsume();
-                    xmlArrayList.add(XMLUtil.stringToXmlElement3(message));
-                }
-                // now hard work: find callbacks
-                for (int i = 0; i < xmlArrayList.size(); i++) {
-                    XmlElement m = xmlArrayList.get(i);
-                    try {
-                        logger.debug(Thread.currentThread().getName());
-                        WSIFMessageElement e = new WSIFMessageElement(m);
-                        this.invoker.setOutputMessage(e);
-                        //ideally there are no multiple messages, so we can return from this thread at this point
-                        //otherwise this thread will keep running forever for each worfklow node, so there can be large
-                        // number of waiting threads in an airavata deployment
-                        return;
-                    } catch (Throwable e) {
-                    	logger.error(e.getLocalizedMessage(),e);  //To change body of catch statement use File | Settings | File Templates.
-                    }
-                }
-                try {
-                    Thread.currentThread().sleep(1000L); //do not overload msg box service ...
-                } catch (InterruptedException e) {
-                    break;
-                }
-            } catch (XsulException e) {
-                logger.error("could not retrieve messages");
-                break;
-            } catch (RemoteException e) {
-                logger.error("could not retrieve messages");
-                break;
-            } catch (XMLStreamException e) {
-                logger.error("could not retrieve messages");
-                break;
-            } catch (Exception e){
-                logger.error("could not retrieve messages");
-                break;
-            }
-        }
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e2c10f5/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/SimpleInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/SimpleInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/SimpleInvoker.java
deleted file mode 100644
index 54cb7f4..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/SimpleInvoker.java
+++ /dev/null
@@ -1,260 +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.Iterator;
-
-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.wsif.WSIFMessage;
-import xsul.wsif.WSIFOperation;
-import xsul.wsif.WSIFPort;
-import xsul.wsif.WSIFService;
-import xsul.wsif.WSIFServiceFactory;
-import xsul.wsif.spi.WSIFProviderManager;
-import xsul.xwsif_runtime.WSIFClient;
-import xsul.xwsif_runtime.WSIFRuntime;
-
-public class SimpleInvoker implements Invoker {
-
-    private static final Logger log = LoggerFactory.getLogger(GenericInvoker.class);
-
-    protected WSIFClient client;
-
-    private WsdlDefinitions definitions;
-
-    private WSIFOperation operation;
-
-    private WSIFMessage inputMessage;
-
-    private volatile WSIFMessage outputMessage;
-
-    private WSIFMessage faultMessage;
-
-    private boolean lock = false;
-
-    static {
-        WSIFProviderManager.getInstance().addProvider(new xsul.wsif_xsul_soap_http.Provider());
-    }
-
-    /**
-     * Constructs a SimpleInvoker.
-     *
-     * @param definitions
-     */
-    public SimpleInvoker(WsdlDefinitions definitions) {
-        this.definitions = definitions;
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setup()
-     */
-    public void setup() throws WorkflowException {
-        try {
-            WSIFService service = WSIFServiceFactory.newInstance().getService(this.definitions);
-            WSIFPort port = service.getPort();
-            this.client = WSIFRuntime.getDefault().newClientFor(port);
-            this.client.setAsyncResponseTimeoutInMs(999999999);
-        } catch (RuntimeException e) {
-            String message = "The WSDL is in the wrong format";
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getClient()
-     */
-    public WSIFClient getClient() {
-        return this.client;
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setOperation(java.lang.String)
-     */
-    public void setOperation(String operationName) throws WorkflowException {
-        try {
-            WSIFPort port = this.client.getPort();
-            this.operation = port.createOperation(operationName);
-            this.inputMessage = this.operation.createInputMessage();
-            this.outputMessage = this.operation.createOutputMessage();
-            this.faultMessage = this.operation.createFaultMessage();
-        } catch (RuntimeException e) {
-            String message = "The WSDL does not conform to the invoking service.";
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#setInput(java.lang.String, java.lang.Object)
-     */
-    public void setInput(String name, Object value) throws WorkflowException {
-        try {
-            if (value instanceof XmlElement) {
-                // If the value is a complex type, change the name of the
-                // element to the correct one.
-                XmlElement valueElement = (XmlElement) value;
-                valueElement.setName(name);
-            } else if (value instanceof String) {
-                    if(XMLUtil.isXML((String)value)){
-                     XmlElement valueElement = XMLUtil.stringToXmlElement3((String) value);
-                     valueElement.setName(name);
-                        value = valueElement;
-                }
-                // Simple case.
-            } else {
-                // convert int, doule to string.
-                value = "" + value;
-            }
-            this.inputMessage.setObjectPart(name, value);
-        } catch (RuntimeException e) {
-            String message = "Error in setting an input. name: " + name + " value: " + value;
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getInputs()
-     */
-    public WSIFMessage getInputs() {
-        return this.inputMessage;
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#invoke()
-     */
-    public boolean invoke() throws WorkflowException {
-        try {
-            boolean success = this.operation.executeRequestResponseOperation(this.inputMessage, this.outputMessage,
-                    this.faultMessage);
-            while(this.outputMessage == null){
-
-            }
-            return success;
-        } catch (RuntimeException e) {
-            String message = "Error in invoking a service.";
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getOutputs()
-     */
-    public WSIFMessage getOutputs() {
-         if (lock) {
-            try {
-                wait();
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-        return this.outputMessage;
-    }
-
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getOutput(java.lang.String)
-     */
-    public Object getOutput(String name) throws WorkflowException {
-        try {
-            // This code doesn't work when the output is a complex type.
-            // Object output = this.outputMessage.getObjectPart(name);
-            // return output;
-
-            XmlElement outputElement = (XmlElement) this.outputMessage;
-            XmlElement valueElement = outputElement.element(null, name);
-            Iterator childIt = valueElement.children();
-            int numberOfChildren = 0;
-            while (childIt.hasNext()) {
-                childIt.next();
-                numberOfChildren++;
-            }
-            if (numberOfChildren == 1) {
-                Object child = valueElement.children().next();
-                if (child instanceof String) {
-                    // Value is a simple type. Return the string.
-                    String value = (String) child;
-                    return value;
-                }
-                if (child instanceof XmlElement) {
-                	log.debug("output: " + XMLUtil.xmlElementToString((XmlElement) child));
-                	Object child1 = ((XmlElement) child).children().next();
-                	if (child1 instanceof String) {
-                        // Value is a simple type. Return the string.
-                        String value = (String) child1;
-                        return value;
-                    }
-                }
-            }
-            // Value is a complex type. Return the whole XmlElement so that we
-            // can set it to the next service as it is.
-            return valueElement;
-        } catch (RuntimeException e) {
-            String message = "Error in getting output. name: " + name;
-            throw new WorkflowException(message, e);
-        }
-    }
-
-    /**
-     * @see org.apache.airavata.xbaya.invoker.Invoker#getFault()
-     */
-    public WSIFMessage getFault() {
-        return this.faultMessage;
-    }
-
-    public WsdlDefinitions getDefinitions() {
-        return definitions;
-    }
-
-    public WSIFOperation getOperation() {
-        return operation;
-    }
-
-    public WSIFMessage getInputMessage() {
-        return inputMessage;
-    }
-
-    public synchronized WSIFMessage getOutputMessage() {
-        return outputMessage;
-    }
-
-    public WSIFMessage getFaultMessage() {
-        return faultMessage;
-    }
-
-    public synchronized void setOutputMessage(WSIFMessage outputMessage) {
-        log.debug("Setting output message");
-        this.outputMessage = outputMessage;
-    }
-
-    public void setLock(boolean lock) {
-        this.lock = lock;
-    }
-
-    public boolean isLock() {
-        return lock;
-    }
-}
\ 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/WorkflowInputUtil.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInputUtil.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInputUtil.java
deleted file mode 100644
index 2d892f0..0000000
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/WorkflowInputUtil.java
+++ /dev/null
@@ -1,84 +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 org.apache.airavata.common.utils.StringUtil;
-import org.apache.airavata.common.utils.XMLUtil;
-import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.xbaya.XBayaConstants;
-import org.apache.airavata.xbaya.lead.LEADTypes;
-
-import javax.xml.namespace.QName;
-
-public class WorkflowInputUtil {
-
-    public static String createInputForGFacService(WSComponentPort port,String input){
-        String paramType = port.getType().getLocalPart();
-        StringBuffer inputString = new StringBuffer("<");
-        if("StringParameterType".equals(paramType) || "URIParameterType".equals(paramType) ||
-                "DoubleParameterType".equals(paramType) || "IntegerParameterType".equals(paramType)
-                || "FloatParameterType".equals(paramType)|| "BooleanParameterType".equals(paramType)
-                || "FileParameterType".equals(paramType)){
-            inputString.append(port.getName()).append(">").
-                    append(getValueElement(input)).append("</").append(port.getName()).append(">");
-        }else if(paramType.endsWith("ArrayType")){
-            inputString.append(port.getName()).append(">");
-            String[] valueList = StringUtil.getElementsFromString(input);
-            for(String inputValue:valueList){
-                inputString.append(getValueElement(inputValue));
-            }
-            inputString.append(getValueElement(port.getName()));
-        }
-        inputString.append(">");
-        return inputString.toString();
-    }
-
-    private static String getValueElement(String value){
-       return "<value>" + value + "</value>";
-    }
-    public static Object parseValue(WSComponentPort input, String valueString) {
-        String name = input.getName();
-        if (false) {
-            // Some user wants to pass empty strings, so this check is disabled.
-            if (valueString.length() == 0) {
-                throw new WorkflowRuntimeException("Input parameter, " + name + ", cannot be empty");
-            }
-        }
-        QName type = input.getType();
-        Object value;
-        if (LEADTypes.isKnownType(type)) {
-            // TODO check the type.
-            value = valueString;
-        } else {
-            try {
-                if(XBayaConstants.HTTP_SCHEMAS_AIRAVATA_APACHE_ORG_GFAC_TYPE.equals(input.getType().getNamespaceURI())){
-                    value = XMLUtil.stringToXmlElement3(WorkflowInputUtil.createInputForGFacService(input, valueString));
-                }else {
-                    throw new WorkflowRuntimeException("Input parameter, " + name + ", Unkown Type");
-                }
-            } catch (RuntimeException e) {
-                throw new WorkflowRuntimeException("Input parameter, " + name + ", is not valid XML", e);
-            }
-        }
-        return value;
-    }
-}