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;
- }
-}