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 2015/01/22 15:52:14 UTC

[1/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Repository: airavata
Updated Branches:
  refs/heads/master 714c2048d -> 2654424bd


http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/resources/RegistryService.wsdl
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/resources/RegistryService.wsdl b/modules/airavata-client/src/main/resources/RegistryService.wsdl
new file mode 100644
index 0000000..86c85a2
--- /dev/null
+++ b/modules/airavata-client/src/main/resources/RegistryService.wsdl
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd"
+    xmlns:ns="http://services.registry.airavata.apache.org" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+    targetNamespace="http://services.registry.airavata.apache.org">
+    <wsdl:documentation>
+        Provide Simple Service for Testing Purpose including addition, subtraction, multiplication,
+        array-generator
+    </wsdl:documentation>
+    <wsdl:types>
+        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified"
+            targetNamespace="http://services.registry.airavata.apache.org">
+            <xs:element name="isRegistryServiceStartedResponse">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element minOccurs="0" name="return" type="xs:boolean" />
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:schema>
+    </wsdl:types>
+    <wsdl:message name="isRegistryServiceStartedRequest" />
+    <wsdl:message name="isRegistryServiceStartedResponse">
+        <wsdl:part name="parameters" element="ns:isRegistryServiceStartedResponse" />
+    </wsdl:message>
+    <wsdl:portType name="RegistryServicePortType">
+        <wsdl:operation name="isRegistryServiceStarted">
+            <wsdl:input message="ns:isRegistryServiceStartedRequest" wsaw:Action="urn:isRegistryServiceStarted" />
+            <wsdl:output message="ns:isRegistryServiceStartedResponse" wsaw:Action="urn:isRegistryServiceStartedResponse" />
+        </wsdl:operation>
+    </wsdl:portType>
+    <wsdl:binding name="RegistryServiceSoap11Binding" type="ns:RegistryServicePortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
+        <wsdl:operation name="isRegistryServiceStarted">
+            <soap:operation soapAction="urn:isRegistryServiceStarted" style="document" />
+            <wsdl:input>
+                <soap:body use="literal" />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal" />
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:binding name="RegistryServiceSoap12Binding" type="ns:RegistryServicePortType">
+        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
+        <wsdl:operation name="isRegistryServiceStarted">
+            <soap12:operation soapAction="urn:isRegistryServiceStarted" style="document" />
+            <wsdl:input>
+                <soap12:body use="literal" />
+            </wsdl:input>
+            <wsdl:output>
+                <soap12:body use="literal" />
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:binding name="RegistryServiceHttpBinding" type="ns:RegistryServicePortType">
+        <http:binding verb="POST" />
+        <wsdl:operation name="isRegistryServiceStarted">
+            <http:operation location="RegistryService/isRegistryServiceStarted" />
+            <wsdl:input>
+                <mime:content type="text/xml" part="isRegistryServiceStarted" />
+            </wsdl:input>
+            <wsdl:output>
+                <mime:content type="text/xml" part="isRegistryServiceStarted" />
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="RegistryService">
+        <wsdl:port name="RegistryServiceHttpSoap11Endpoint" binding="ns:RegistryServiceSoap11Binding">
+            <soap:address location="http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpSoap11Endpoint/" />
+        </wsdl:port>
+        <wsdl:port name="RegistryServiceHttpSoap12Endpoint" binding="ns:RegistryServiceSoap12Binding">
+            <soap12:address location="http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpSoap12Endpoint/" />
+        </wsdl:port>
+        <wsdl:port name="RegistryServiceHttpEndpoint" binding="ns:RegistryServiceHttpBinding">
+            <http:address location="http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpEndpoint/" />
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/test/java/org/apache/airavata/client/airavata/AiravataClientTest.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/test/java/org/apache/airavata/client/airavata/AiravataClientTest.java b/modules/airavata-client/src/test/java/org/apache/airavata/client/airavata/AiravataClientTest.java
new file mode 100644
index 0000000..617cb8f
--- /dev/null
+++ b/modules/airavata-client/src/test/java/org/apache/airavata/client/airavata/AiravataClientTest.java
@@ -0,0 +1,107 @@
+/*
+ *
+ * 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.client.airavata;
+
+import org.junit.Test;
+
+public class AiravataClientTest {
+
+    @Test
+	public void testInvokeWorkflowString() {
+//        try {
+//            AiravataClient airavataClient = new AiravataClient("airavata-client.properties");
+//            List<String> workflowTemplateIds = airavataClient.getWorkflowTemplateIds();
+//            for(String eachId:workflowTemplateIds){
+//                List<WorkflowInput> workflowInputs = airavataClient.getWorkflowInputs(eachId);
+//                for(WorkflowInput input:workflowInputs){
+//                    input.setValue("testing");
+//                }
+//                System.out.println(airavataClient.runWorkflow(eachId,workflowInputs));
+//            }
+//        } catch (RegistryException e1) {
+//            e1.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        } catch (IOException e1) {
+//            e1.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        } catch (Exception e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+    }
+
+    @Test
+    public void testExperimentDeletion() {
+//        URI uri1 = null,uri2 = null;
+//        try {
+//            uri1 = new URI("http://gw56.quarry.iu.teragrid.org:8090/jackrabbit-webapp-2.4.0/rmi");
+//            uri2 = new URI("http://gf7.ucs.indiana.edu:8030/jackrabbit/rmi");
+//        } catch (URISyntaxException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        HashMap<String, String> map = new HashMap<String, String>();
+//        map.put("org.apache.jackrabbit.repository.uri", "http://gf7.ucs.indiana.edu:8030/jackrabbit/rmi");
+//        try {
+//            JCRRegistry jcrRegistry1 = new JCRRegistry(
+//                    uri1,
+//                    "org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory",
+//                    "admin",
+//                    "admin", map);
+//            Session session = jcrRegistry1.getSession();
+////            session.importXML("/SERVICE_HOST",export, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
+//            javax.jcr.Node serviceHost = jcrRegistry1.getOrAddNode(jcrRegistry1.getRootNode(session), "experiments");
+//            serviceHost.remove();
+//            session.save();
+////            javax.jcr.Node appHost = jcrRegistry1.getOrAddNode(jcrRegistry1.getRootNode(session), "APP_HOST");
+////            javax.jcr.Node workflows = jcrRegistry1.getOrAddNode(jcrRegistry1.getRootNode(session), "WORKFLOWS");
+////
+////            HashMap<String, String> map2 = new HashMap<String, String>();
+////            map2.put("org.apache.jackrabbit.repository.uri", "http://gf7.ucs.indiana.edu:8030/jackrabbit/rmi");
+////            JCRRegistry jcrRegistry2 = new JCRRegistry(
+////                    uri2,
+////                    "org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory",
+////                    "admin",
+////                    "admin", map2);
+////            Session session2 = jcrRegistry2.getSession();
+////
+////            RepositoryCopier.copy(session.getRepository(),jcrRegistry2.getRepository());
+////            Node service_host = jcrRegistry2.getOrAddNode(jcrRegistry2.getRootNode(session2), "SERVICE_HOST");
+////            service_host = serviceHost;
+////            session2.save();
+////
+//
+//        } catch (RepositoryException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }  catch (RegistryException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+    }
+
+    //@Test
+//    public void testRegistryServiceInvocation() throws Exception {
+//        org.apache.airavata.registry.stub.RegistryServiceStub stub =
+//                new org.apache.airavata.registry.stub.RegistryServiceStub("http://localhost:8080/axis2/services/RegistryService?wsdl");
+//        boolean registryServiceStarted = stub.isRegistryServiceStarted().getIsRegistryServiceStartedResponse().
+//                getReturn();
+//
+//        System.out.println(registryServiceStarted);
+//    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/gfac/gfac-bes/pom.xml
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/pom.xml b/modules/gfac/gfac-bes/pom.xml
index 8fdeb7c..f14c9f5 100644
--- a/modules/gfac/gfac-bes/pom.xml
+++ b/modules/gfac/gfac-bes/pom.xml
@@ -16,7 +16,7 @@
 	<parent>
 		<groupId>org.apache.airavata</groupId>
 		<artifactId>gfac</artifactId>
-		<version>0.15-SNAPSHOT</version>
+		<version>0.14-SNAPSHOT</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ebc35a1..7351421 100644
--- a/pom.xml
+++ b/pom.xml
@@ -509,6 +509,7 @@
 			<modules>
 				<module>modules/configuration</module>
 				<module>airavata-api</module>
+				<module>modules/airavata-client</module>
 				<module>modules/commons</module>
 				<module>modules/gfac</module>
 				<module>modules/workflow-model</module>
@@ -600,6 +601,7 @@
 				<module>modules/ws-messenger</module>
 				<module>modules/workflow-model</module>
 				<module>modules/registry</module>
+				<module>modules/airavata-client</module>
 				<module>modules/security</module>
 				<module>modules/credential-store-service</module>
 				<module>modules/orchestrator</module>


[2/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
new file mode 100644
index 0000000..1936593
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
@@ -0,0 +1,823 @@
+///*
+// *
+// * 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.client.tools;
+//
+//import org.airavata.appcatalog.cpi.AppCatalog;
+//import org.airavata.appcatalog.cpi.AppCatalogException;
+//import org.apache.airavata.api.Airavata;
+//import org.apache.airavata.common.utils.ClientSettings;
+//import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+//import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+//import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+//import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+//import org.apache.airavata.model.appcatalog.appinterface.DataType;
+//import org.apache.airavata.model.appcatalog.computeresource.*;
+//import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
+//import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+//import org.apache.airavata.model.error.AiravataClientException;
+//import org.apache.airavata.model.error.AiravataSystemException;
+//import org.apache.airavata.model.error.InvalidRequestException;
+//import org.apache.thrift.TException;
+//
+//import java.io.File;
+//import java.util.*;
+//
+///**
+// * This class has been moved to integration-tests module, use that instead of this
+// */
+//@Deprecated
+//public class DocumentCreatorNew {
+//
+//    private AppCatalog appcatalog = null;
+//    private String trestleshpcHostAddress = "trestles.sdsc.edu";
+//    private String lonestarHostAddress = "lonestar.tacc.utexas.edu";
+//    private String stampedeHostAddress = "stampede.tacc.xsede.org";
+//    private String gridftpAddress = "gsiftp://trestles-dm1.sdsc.edu:2811";
+//    private String gramAddress = "trestles-login1.sdsc.edu:2119/jobmanager-pbstest2";
+//    private String bigRed2HostAddress = "bigred2.uits.iu.edu";
+//
+//    //App Module Id's
+//    private static String echoModuleId;
+//    private static String amberModuleId;
+//    private static String autoDockModuleId;
+//    private static String espressoModuleId;
+//    private static String gromacsModuleId;
+//    private static String lammpsModuleId;
+//    private static String nwChemModuleId;
+//    private static String trinityModuleId;
+//    private static String wrfModuleId;
+//    private Airavata.Client client;
+//    private GatewayResourceProfile gatewayResourceProfile;
+//
+//    public DocumentCreatorNew(Airavata.Client client) throws AppCatalogException {
+//        this.client = client;
+//    }
+//
+//    public String createLocalHostDocs() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//        //Define compute resource host
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(
+//                "localhost", new ArrayList<String>(Arrays.asList(new String[]{"127.0.0.1"})), new ArrayList<String>(Arrays.asList(new String[]{"127.0.0.1"})));
+////    	host.setIsEmpty(true);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        LOCALSubmission localSubmission = new LOCALSubmission();
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
+//        localSubmission.setResourceJobManager(resourceJobManager);
+//        client.addLocalSubmissionDetails(host.getComputeResourceId(), 1, localSubmission);
+//
+//        LOCALDataMovement localDataMovement = new LOCALDataMovement();
+//        client.addLocalDataMovementDetails(host.getComputeResourceId(), 1, localDataMovement);
+//
+//        //Define application module
+//        ApplicationModule module = DocumentCreatorUtils.createApplicationModule("echo", "1.0.0", "Local host echo applications");
+//        module.setAppModuleId(client.registerApplicationModule(module));
+//
+//        //Define application interfaces
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+////    	application.setIsEmpty(false);
+//        application.setApplicationName("SimpleEcho0");
+//        application.addToApplicationModules(module.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", "Echo Input Data", null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        //Define application deployment
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module.getAppModuleId(), "/bin/echo", ApplicationParallelismType.SERIAL, "Local echo app depoyment");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        //Define gateway profile
+//        ComputeResourcePreference computeResourcePreference = DocumentCreatorUtils.createComputeResourcePreference(
+//                host.getComputeResourceId(), "/tmp", null,
+//                false, null,
+//                null, null);
+//        gatewayResourceProfile = new GatewayResourceProfile();
+////		gatewayResourceProfile.setGatewayID("default");
+//        gatewayResourceProfile.setGatewayName(ClientSettings.getSetting("default.registry.gateway", "php_reference_gateway"));
+//        gatewayResourceProfile.addToComputeResourcePreferences(computeResourcePreference);
+//        String gatewayId = client.registerGatewayResourceProfile(gatewayResourceProfile);
+//        gatewayResourceProfile.setGatewayID(gatewayId);
+//        client.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), host.getComputeResourceId(), computeResourcePreference);
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    private GatewayResourceProfile getGatewayResourceProfile() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+////    	if (gatewayResourceProfile==null){
+////    		try {
+////				gatewayResourceProfile = client.getGatewayResourceProfile(ga);
+////			} catch (Exception e) {
+////
+////			}
+//        if (gatewayResourceProfile == null) {
+//            gatewayResourceProfile = new GatewayResourceProfile();
+////				gatewayResourceProfile.setGatewayID("default");
+//            gatewayResourceProfile.setGatewayName("default");
+//            gatewayResourceProfile.setGatewayID(client.registerGatewayResourceProfile(gatewayResourceProfile));
+//        }
+////    	}
+//        return gatewayResourceProfile;
+//
+//    }
+//
+//    public String createSSHHostDocs() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription("gw111.iu.xsede.org", null, null);
+//        host.addToIpAddresses("gw111.iu.xsede.org");
+//        host.addToHostAliases("gw111.iu.xsede.org");
+//        host.setResourceDescription("gw111 ssh access");
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//
+//        SSHJobSubmission jobSubmission = new SSHJobSubmission();
+//        jobSubmission.setSshPort(22);
+//        jobSubmission.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
+//        jobSubmission.setResourceJobManager(resourceJobManager);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, jobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule module = DocumentCreatorUtils.createApplicationModule("echo", "1.1", null);
+//        module.setAppModuleId(client.registerApplicationModule(module));
+//        ;
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module.getAppModuleId(), "/bin/echo", ApplicationParallelismType.SERIAL, "SSHEchoApplication");
+//        client.registerApplicationDeployment(deployment);
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+////    	application.setIsEmpty(false);
+//        application.setApplicationName("SSHEcho1");
+//        application.addToApplicationModules(module.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", null, null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//        client.registerApplicationInterface(application);
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/tmp", null, false, null, null, null));
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    //
+////    public void createGramDocs() {
+//////        /*
+//////           creating host descriptor for gram
+//////        */
+//////        HostDescription host = new HostDescription(GlobusHostType.type);
+//////        host.getType().setHostAddress(trestleshpcHostAddress);
+//////        host.getType().setHostName(trestleshpcHostAddress);
+//////        ((GlobusHostType) host.getType()).setGlobusGateKeeperEndPointArray(new String[]{gramAddress});
+//////        ((GlobusHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+//////        try {
+//////            airavataAPI.getApplicationManager().saveHostDescription(host);
+//////        } catch (AiravataAPIInvocationException e) {
+//////            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//////        }
+//////
+//////
+//////        /*
+//////        * Service Description creation and saving
+//////        */
+//////        String serviceName = "SimpleEcho1";
+//////        ServiceDescription serv = new ServiceDescription();
+//////        serv.getType().setName(serviceName);
+//////
+//////        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//////        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//////
+//////        InputParameterType input = InputParameterType.Factory.newInstance();
+//////        input.setParameterName("echo_input");
+//////        ParameterType parameterType = input.addNewParameterType();
+//////        parameterType.setType(DataType.STRING);
+//////        parameterType.setName("String");
+//////
+//////        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//////        output.setParameterName("echo_output");
+//////        ParameterType parameterType1 = output.addNewParameterType();
+//////        parameterType1.setType(DataType.STRING);
+//////        parameterType1.setName("String");
+//////
+//////        inputList.add(input);
+//////        outputList.add(output);
+//////
+//////        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//////        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//////
+//////        serv.getType().setInputParametersArray(inputParamList);
+//////        serv.getType().setOutputParametersArray(outputParamList);
+//////        try {
+//////            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//////        } catch (AiravataAPIInvocationException e) {
+//////            e.printStackTrace();
+//////        }
+//////
+//////        /*
+//////            Application descriptor creation and saving
+//////         */
+//////        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//////        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//////        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//////        name.setStringValue("EchoLocal");
+//////        app.setApplicationName(name);
+//////        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//////        projectAccountType.setProjectAccountNumber("sds128");
+//////
+//////        QueueType queueType = app.addNewQueue();
+//////        queueType.setQueueName("normal");
+//////
+//////        app.setCpuCount(1);
+//////        app.setJobType(JobTypeType.SERIAL);
+//////        app.setNodeCount(1);
+//////        app.setProcessorsPerNode(1);
+//////
+//////        /*
+//////           * Use bat file if it is compiled on Windows
+//////           */
+//////        app.setExecutableLocation("/bin/echo");
+//////
+//////        /*
+//////           * Default tmp location
+//////           */
+//////        String tempDir = "/home/ogce/scratch";
+//////        app.setScratchWorkingDirectory(tempDir);
+//////        app.setMaxMemory(10);
+//////
+//////
+//////        try {
+//////            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc);
+//////        } catch (AiravataAPIInvocationException e) {
+//////            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//////        }
+////    }
+////
+//    public String createPBSDocsForOGCE_Echo() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(trestleshpcHostAddress, null, null);
+//        host.addToIpAddresses(trestleshpcHostAddress);
+//        host.addToHostAliases(trestleshpcHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.PBS, "/opt/torque/bin/", null, null);
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(22);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule module1 = DocumentCreatorUtils.createApplicationModule("echo", "1.2", null);
+//        module1.setAppModuleId(client.registerApplicationModule(module1));
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+////    	application.setIsEmpty(false);
+//        application.setApplicationName("SimpleEcho2");
+//        application.addToApplicationModules(module1.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", "echo_input", null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module1.getAppModuleId(), "/home/ogce/echo.sh", ApplicationParallelismType.SERIAL, "Echo application");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/oasis/scratch/trestles/ogce/temp_project/", "sds128", false, null, null, null));
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    public String createPBSDocsForOGCE_WRF() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(trestleshpcHostAddress, null, null);
+//        host.addToIpAddresses(trestleshpcHostAddress);
+//        host.addToHostAliases(trestleshpcHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.PBS, "/opt/torque/bin/", null, null);
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(22);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/oasis/scratch/trestles/ogce/temp_project/", "sds128", false, null, null, null));
+//
+//        ApplicationModule module2 = DocumentCreatorUtils.createApplicationModule("wrf", "1.0.0", null);
+//        module2.setAppModuleId(client.registerApplicationModule(module2));
+//        ApplicationInterfaceDescription application2 = new ApplicationInterfaceDescription();
+////    	application2.setIsEmpty(false);
+//        application2.setApplicationName("WRF");
+//        application2.addToApplicationModules(module2.getAppModuleId());
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Namelist", "WRF_Namelist", null, null, DataType.URI));
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Boundary_File", "WRF_Boundary_File", null, null, DataType.URI));
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Input_File", "WRF_Input_File", null, null, DataType.URI));
+//
+//        application2.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("WRF_Output", null, DataType.URI));
+//        application2.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("WRF_Execution_Log", null, DataType.URI));
+//        application2.setApplicationInterfaceId(client.registerApplicationInterface(application2));
+//
+//        ApplicationDeploymentDescription deployment2 = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module2.getAppModuleId(), "/home/ogce/production/app_wrappers/wrf_wrapper.sh", ApplicationParallelismType.MPI, "WRF");
+//        deployment2.setAppDeploymentId(client.registerApplicationDeployment(deployment2));
+//        return host.getComputeResourceId() + "," + application2.getApplicationInterfaceId();
+//    }
+//
+//    public String createSlumWRFDocs() throws AppCatalogException, TException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(stampedeHostAddress, null, null);
+//        host.addToHostAliases(stampedeHostAddress);
+//        host.addToIpAddresses(stampedeHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.SLURM, "/usr/bin/", null, "push");
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(2222);
+//
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/home1/01437/ogce", "TG-STA110014S", false, null, null, null));
+//
+//        ApplicationModule module2 = DocumentCreatorUtils.createApplicationModule("wrf", "1.0.0", null);
+//        module2.setAppModuleId(client.registerApplicationModule(module2));
+//        ApplicationInterfaceDescription application2 = new ApplicationInterfaceDescription();
+//        //    	application2.setIsEmpty(false);
+//        application2.setApplicationName("WRF");
+//        application2.addToApplicationModules(module2.getAppModuleId());
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Namelist", "WRF_Namelist", null, null, DataType.URI));
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Boundary_File", "WRF_Boundary_File", null, null, DataType.URI));
+//        application2.addToApplicationInputs(DocumentCreatorUtils.createAppInput("WRF_Input_File", "WRF_Input_File", null, null, DataType.URI));
+//
+//        application2.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("WRF_Output", null, DataType.URI));
+//        application2.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("WRF_Execution_Log", null, DataType.URI));
+//        application2.setApplicationInterfaceId(client.registerApplicationInterface(application2));
+//
+//        ApplicationDeploymentDescription deployment2 = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module2.getAppModuleId(), "/home1/01437/ogce/production/app_wrappers/wrf_wrapper.sh", ApplicationParallelismType.MPI, "WRF");
+//        deployment2.setAppDeploymentId(client.registerApplicationDeployment(deployment2));
+//        return host.getComputeResourceId() + "," + application2.getApplicationInterfaceId();
+//
+//    }
+//
+//    public String createSlurmDocs() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(stampedeHostAddress, null, null);
+//        host.addToHostAliases(stampedeHostAddress);
+//        host.addToIpAddresses(stampedeHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.SLURM, "/usr/bin/", null, "push");
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(2222);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule module = DocumentCreatorUtils.createApplicationModule("echo", "1.3", null);
+//        module.setAppModuleId(client.registerApplicationModule(module));
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+////    	application.setIsEmpty(false);
+//        application.setApplicationName("SimpleEcho3");
+//        application.addToApplicationModules(module.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", null, null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module.getAppModuleId(), "/bin/echo", ApplicationParallelismType.SERIAL, "EchoLocal");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/home1/01437/ogce", "TG-STA110014S", false, null, null, null));
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    public String createSGEDocs() throws AppCatalogException, InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(lonestarHostAddress, null, null);
+//        host.addToHostAliases(lonestarHostAddress);
+//        host.addToIpAddresses(lonestarHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.UGE, "/opt/sge6.2/bin/lx24-amd64/", null, null);
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(22);
+//
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule module = DocumentCreatorUtils.createApplicationModule("echo", "1.4", null);
+//        module.setAppModuleId(client.registerApplicationModule(module));
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+////    	application.setIsEmpty(false);
+//        application.setApplicationName("SimpleEcho4");
+//        application.addToApplicationModules(module.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", null, null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module.getAppModuleId(), "/bin/echo", ApplicationParallelismType.SERIAL, "EchoLocal");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/home1/01437/ogce", "TG-STA110014S", false, null, null, null));
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+////	public void createEchoHostDocs() {
+////		String serviceName = "Echo";
+////		ServiceDescription serviceDescription = new ServiceDescription();
+////		List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+////		List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+////		serviceDescription.getType().setName(serviceName);
+////		serviceDescription.getType().setDescription("Echo service");
+////		// Creating input parameters
+////		InputParameterType parameter = InputParameterType.Factory.newInstance();
+////		parameter.setParameterName("echo_input");
+////		parameter.setParameterDescription("echo input");
+////		ParameterType parameterType = parameter.addNewParameterType();
+////		parameterType.setType(DataType.STRING);
+////		parameterType.setName("String");
+////		inputParameters.add(parameter);
+////
+////		// Creating output parameters
+////		OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+////		outputParameter.setParameterName("echo_output");
+////		outputParameter.setParameterDescription("Echo output");
+////		ParameterType outputParaType = outputParameter.addNewParameterType();
+////		outputParaType.setType(DataType.STRING);
+////		outputParaType.setName("String");
+////		outputParameters.add(outputParameter);
+////
+////		// Setting input and output parameters to serviceDescriptor
+////		serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[] {}));
+////		serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[] {}));
+////
+////		try {
+////			airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+////		} catch (AiravataAPIInvocationException e) {
+////			e.printStackTrace(); // To change body of catch statement use File |
+////									// Settings | File Templates.
+////		}
+////		// Localhost
+////		ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+////		ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription.getType();
+////		applicationDeploymentDescriptionType.addNewApplicationName().setStringValue(serviceName);
+////		applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+////		applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+////
+////		try {
+////			airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "localhost", applicationDeploymentDescription);
+////		} catch (AiravataAPIInvocationException e) {
+////			e.printStackTrace(); // To change body of catch statement use File |
+////									// Settings | File Templates.
+////		}
+////		// Stampede
+////		/*
+////		 * Application descriptor creation and saving
+////		 */
+////		ApplicationDescription appDesc1 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+////		HpcApplicationDeploymentType app1 = (HpcApplicationDeploymentType) appDesc1.getType();
+////		ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+////		name.setStringValue(serviceName);
+////		app1.setApplicationName(name);
+////		ProjectAccountType projectAccountType = app1.addNewProjectAccount();
+////		projectAccountType.setProjectAccountNumber("TG-STA110014S");
+////
+////		QueueType queueType = app1.addNewQueue();
+////		queueType.setQueueName("normal");
+////
+////		app1.setCpuCount(1);
+////		app1.setJobType(JobTypeType.SERIAL);
+////		app1.setNodeCount(1);
+////		app1.setProcessorsPerNode(1);
+////		app1.setMaxWallTime(10);
+////		/*
+////		 * Use bat file if it is compiled on Windows
+////		 */
+////		app1.setExecutableLocation("/bin/echo");
+////
+////		/*
+////		 * Default tmp location
+////		 */
+////		String tempDir = "/home1/01437/ogce";
+////
+////		app1.setScratchWorkingDirectory(tempDir);
+////		app1.setInstalledParentPath("/usr/bin/");
+////
+////		try {
+////			airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, stampedeHostAddress, appDesc1);
+////		} catch (AiravataAPIInvocationException e) {
+////			e.printStackTrace(); // To change body of catch statement use File |
+////									// Settings | File Templates.
+////		}
+////		// Trestles
+////		/*
+////		 * Application descriptor creation and saving
+////		 */
+////		ApplicationDescription appDesc2 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+////		HpcApplicationDeploymentType app2 = (HpcApplicationDeploymentType) appDesc2.getType();
+////		ApplicationDeploymentDescriptionType.ApplicationName name2 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+////		name2.setStringValue(serviceName);
+////		app2.setApplicationName(name);
+////		ProjectAccountType projectAccountType2 = app2.addNewProjectAccount();
+////		projectAccountType2.setProjectAccountNumber("sds128");
+////
+////		QueueType queueType2 = app2.addNewQueue();
+////		queueType2.setQueueName("normal");
+////
+////		app2.setCpuCount(1);
+////		app2.setJobType(JobTypeType.SERIAL);
+////		app2.setNodeCount(1);
+////		app2.setProcessorsPerNode(1);
+////		app2.setMaxWallTime(10);
+////		/*
+////		 * Use bat file if it is compiled on Windows
+////		 */
+////		app2.setExecutableLocation("/bin/echo");
+////
+////		/*
+////		 * Default tmp location
+////		 */
+////		String tempDir2 = "/home/ogce/scratch";
+////
+////		app2.setScratchWorkingDirectory(tempDir2);
+////		app2.setInstalledParentPath("/opt/torque/bin/");
+////
+////		try {
+////			airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc2);
+////		} catch (AiravataAPIInvocationException e) {
+////			e.printStackTrace(); // To change body of catch statement use File |
+////									// Settings | File Templates.
+////		}
+////		// Lonestar
+////		/*
+////		 * Application descriptor creation and saving
+////		 */
+////		ApplicationDescription appDesc3 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+////		HpcApplicationDeploymentType app3 = (HpcApplicationDeploymentType) appDesc3.getType();
+////		ApplicationDeploymentDescriptionType.ApplicationName name3 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+////		name3.setStringValue(serviceName);
+////		app3.setApplicationName(name);
+////		ProjectAccountType projectAccountType3 = app3.addNewProjectAccount();
+////		projectAccountType3.setProjectAccountNumber("TG-STA110014S");
+////
+////		QueueType queueType3 = app3.addNewQueue();
+////		queueType3.setQueueName("normal");
+////
+////		app3.setCpuCount(1);
+////		app3.setJobType(JobTypeType.SERIAL);
+////		app3.setNodeCount(1);
+////		app3.setProcessorsPerNode(1);
+////		app3.setMaxWallTime(10);
+////		/*
+////		 * Use bat file if it is compiled on Windows
+////		 */
+////		app3.setExecutableLocation("/bin/echo");
+////
+////		/*
+////		 * Default tmp location
+////		 */
+////		String tempDir3 = "/home1/01437/ogce";
+////
+////		app3.setScratchWorkingDirectory(tempDir3);
+////		app3.setInstalledParentPath("/opt/sge6.2/bin/lx24-amd64/");
+////
+////		try {
+////			airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, lonestarHostAddress, appDesc3);
+////		} catch (AiravataAPIInvocationException e) {
+////			e.printStackTrace(); // To change body of catch statement use File |
+////									// Settings | File Templates.
+////		}
+////
+////	}
+//
+//    public String createBigRedDocs() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException, AppCatalogException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription("bigred2", null, null);
+//        host.addToHostAliases(bigRed2HostAddress);
+//        host.addToIpAddresses(bigRed2HostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//
+//        Map<JobManagerCommand, String> commands = new HashMap<JobManagerCommand, String>();
+//        commands.put(JobManagerCommand.SUBMISSION, "aprun -n");
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.UGE, "/opt/torque/torque-4.2.3.1/bin/", commands, null);
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        sshJobSubmission.setSshPort(22);
+//
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule module = DocumentCreatorUtils.createApplicationModule("echo", "1.5", null);
+//        module.setAppModuleId(client.registerApplicationModule(module));
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+//        application.setApplicationName("SimpleEchoBR");
+//        application.addToApplicationModules(module.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("echo_input", "echo_input", null, null, DataType.STRING));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("echo_output", null, DataType.STRING));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), module.getAppModuleId(), "/N/u/lginnali/BigRed2/myjob/test.sh", ApplicationParallelismType.SERIAL, "EchoLocal");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        String date = (new Date()).toString();
+//        date = date.replaceAll(" ", "_");
+//        date = date.replaceAll(":", "_");
+//        String tempDir = "/N/u/lginnali/BigRed2/myjob";
+//        tempDir = tempDir + File.separator + "SimpleEcho" + "_" + date + "_" + UUID.randomUUID();
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), tempDir, "TG-STA110014S", false, null, null, null));
+//
+//
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    public String createBigRedAmberDocs() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException, AppCatalogException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription("bigred2", null, null);
+//        host.addToHostAliases(bigRed2HostAddress);
+//        host.addToIpAddresses(bigRed2HostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//
+//        Map<JobManagerCommand, String> commands = new HashMap<JobManagerCommand, String>();
+//        commands.put(JobManagerCommand.SUBMISSION, "aprun -n 4");
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.UGE, "/opt/torque/torque-4.2.3.1/bin/", commands, null);
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        sshJobSubmission.setSshPort(22);
+//
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//
+//        ApplicationModule amodule = DocumentCreatorUtils.createApplicationModule("Amber", "12.0", null);
+//        amodule.setAppModuleId(client.registerApplicationModule(amodule));
+//
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+//        application.setApplicationName("AmberBR2");
+//        application.addToApplicationModules(amodule.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_HEAT_RST", "AMBER_HEAT_RST", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PROD_IN", "AMBER_PROD_IN", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PRMTOP", "AMBER_PRMTOP", null, null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.info", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.mdcrd", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.out", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.rst", null, DataType.URI));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), amodule.getAppModuleId(), "/N/u/cgateway/BigRed2/sandbox/amber_wrapper.sh", ApplicationParallelismType.SERIAL, "AmberBR2");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//
+//        String date = (new Date()).toString();
+//        date = date.replaceAll(" ", "_");
+//        date = date.replaceAll(":", "_");
+//        String tempDir = "/N/u/cgateway/BigRed2/sandbox/jobs";
+//        tempDir = tempDir + File.separator +
+//                "Amber";
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), tempDir, null, false, null, null, null));
+//
+//
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//    }
+//
+//    public String createStampedeAmberDocs() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException, AppCatalogException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(stampedeHostAddress, null, null);
+//        host.addToHostAliases(stampedeHostAddress);
+//        host.addToIpAddresses(stampedeHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.SLURM, "/usr/bin/", null, "push");
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(2222);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//        ApplicationModule amodule = DocumentCreatorUtils.createApplicationModule("Amber", "12.0", null);
+//        amodule.setAppModuleId(client.registerApplicationModule(amodule));
+//
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+//        application.setApplicationName("AmberBR2");
+//        application.addToApplicationModules(amodule.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_HEAT_RST", "AMBER_HEAT_RST", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PROD_IN", "AMBER_PROD_IN", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PRMTOP", "AMBER_PRMTOP", null, null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.info", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.mdcrd", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.out", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.rst", null, DataType.URI));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), amodule.getAppModuleId(), "/home1/01437/ogce/production/app_wrappers/amber_wrapper.sh", ApplicationParallelismType.SERIAL, "AmberStampede");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/home1/01437/ogce", "TG-STA110014S", false, null, null, null));
+//
+//
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//
+//    }
+//
+//    public String createTrestlesAmberDocs() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException, AppCatalogException {
+//        ComputeResourceDescription host = DocumentCreatorUtils.createComputeResourceDescription(trestleshpcHostAddress, null, null);
+//        host.addToIpAddresses(trestleshpcHostAddress);
+//        host.addToHostAliases(trestleshpcHostAddress);
+//        host.setComputeResourceId(client.registerComputeResource(host));
+//
+//        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+//        ResourceJobManager resourceJobManager = DocumentCreatorUtils.createResourceJobManager(ResourceJobManagerType.PBS, "/opt/torque/bin/", null, null);
+//        sshJobSubmission.setResourceJobManager(resourceJobManager);
+//        sshJobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
+//        sshJobSubmission.setSshPort(22);
+//        client.addSSHJobSubmissionDetails(host.getComputeResourceId(), 1, sshJobSubmission);
+//
+//        SCPDataMovement scpDataMovement = new SCPDataMovement();
+//        scpDataMovement.setSecurityProtocol(SecurityProtocol.GSI);
+//        scpDataMovement.setSshPort(22);
+//        client.addSCPDataMovementDetails(host.getComputeResourceId(), 1, scpDataMovement);
+//
+//        ApplicationModule amodule = DocumentCreatorUtils.createApplicationModule("Amber", "12.0", null);
+//        amodule.setAppModuleId(client.registerApplicationModule(amodule));
+//
+//
+//        ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+//        application.setApplicationName("AmberTrestles");
+//        application.addToApplicationModules(amodule.getAppModuleId());
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_HEAT_RST", "AMBER_HEAT_RST", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PROD_IN", "AMBER_PROD_IN", null, null, DataType.URI));
+//        application.addToApplicationInputs(DocumentCreatorUtils.createAppInput("AMBER_PRMTOP", "AMBER_PRMTOP", null, null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.info", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.mdcrd", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.out", null, DataType.URI));
+//        application.addToApplicationOutputs(DocumentCreatorUtils.createAppOutput("AMBER_Prod.rst", null, DataType.URI));
+//        application.setApplicationInterfaceId(client.registerApplicationInterface(application));
+//
+//        ApplicationDeploymentDescription deployment = DocumentCreatorUtils.createApplicationDeployment(host.getComputeResourceId(), amodule.getAppModuleId(), "/home/ogce/production/app_wrappers/amber_wrapper.sh", ApplicationParallelismType.SERIAL, "AmberStampede");
+//        deployment.setAppDeploymentId(client.registerApplicationDeployment(deployment));
+//
+//        client.addGatewayComputeResourcePreference(getGatewayResourceProfile().getGatewayID(), host.getComputeResourceId(), DocumentCreatorUtils.createComputeResourcePreference(host.getComputeResourceId(), "/oasis/scratch/trestles/ogce/temp_project/", "sds128", false, null, null, null));
+//
+//
+//        return host.getComputeResourceId() + "," + application.getApplicationInterfaceId();
+//
+//    }
+//
+//
+//}
+//

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorUtils.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorUtils.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorUtils.java
new file mode 100644
index 0000000..d27d8cf
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorUtils.java
@@ -0,0 +1,165 @@
+/*
+ *
+ * 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.client.tools;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.DataMovementInterface;
+import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
+import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
+
+/**
+ * This class has been moved to integration-tests module, use that instead of this
+ */
+@Deprecated
+public class DocumentCreatorUtils {
+
+	public static ComputeResourcePreference createComputeResourcePreference(String computeResourceId, String scratchLocation,
+			String allocationProjectNumber, boolean overridebyAiravata,
+			String preferredBatchQueue, String preferredJobSubmissionProtocol,
+			String preferredDataMovementProtocol) throws AppCatalogException {
+		ComputeResourcePreference computeResourcePreference = new ComputeResourcePreference();
+		computeResourcePreference.setComputeResourceId(computeResourceId);
+		computeResourcePreference.setOverridebyAiravata(overridebyAiravata);
+		computeResourcePreference.setAllocationProjectNumber(allocationProjectNumber);
+		computeResourcePreference.setPreferredBatchQueue(preferredBatchQueue);
+		computeResourcePreference.setPreferredDataMovementProtocol(DataMovementProtocol.valueOf(preferredDataMovementProtocol));
+		computeResourcePreference.setPreferredJobSubmissionProtocol(JobSubmissionProtocol.valueOf(preferredJobSubmissionProtocol));
+		computeResourcePreference.setScratchLocation(scratchLocation);
+		return computeResourcePreference;
+	}
+
+	public static ApplicationDeploymentDescription createApplicationDeployment(
+			String computeResourceId, String appModuleId,
+			String executablePath, ApplicationParallelismType parallelism, String appDeploymentDescription) {
+		ApplicationDeploymentDescription deployment = new ApplicationDeploymentDescription();
+//		deployment.setIsEmpty(false);
+		deployment.setAppDeploymentDescription(appDeploymentDescription);
+		deployment.setAppModuleId(appModuleId);
+		deployment.setComputeHostId(computeResourceId);
+		deployment.setExecutablePath(executablePath);
+		deployment.setParallelism(parallelism);
+		return deployment;
+	}
+
+	public static ApplicationModule createApplicationModule(String appModuleName,
+			String appModuleVersion, String appModuleDescription) {
+		ApplicationModule module = new ApplicationModule();
+		module.setAppModuleDescription(appModuleDescription);
+		module.setAppModuleName(appModuleName);
+		module.setAppModuleVersion(appModuleVersion);
+		return module;
+	}
+
+	public static DataMovementInterface createDataMovementInterface(
+			String dataMovementInterfaceId,
+			DataMovementProtocol dataMovementProtocolType, int priorityOrder) {
+		DataMovementInterface dataMovementInterface = new DataMovementInterface();
+		dataMovementInterface.setDataMovementInterfaceId(dataMovementInterfaceId);
+		dataMovementInterface.setDataMovementProtocol(dataMovementProtocolType);
+		dataMovementInterface.setPriorityOrder(priorityOrder);
+		return dataMovementInterface;
+	}
+
+	public static JobSubmissionInterface createJobSubmissionInterface(
+			String jobSubmissionInterfaceId,
+			JobSubmissionProtocol jobSubmissionProtocolType, int priorityOrder) {
+		JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface();
+		jobSubmissionInterface.setJobSubmissionInterfaceId(jobSubmissionInterfaceId);
+		jobSubmissionInterface.setJobSubmissionProtocol(jobSubmissionProtocolType);
+		jobSubmissionInterface.setPriorityOrder(priorityOrder);
+		return jobSubmissionInterface;
+	}
+
+	public static ComputeResourceDescription createComputeResourceDescription(
+			String hostName, List<String> hostAliases, List<String> ipAddresses) {
+		ComputeResourceDescription host = new ComputeResourceDescription();
+		host.setHostName(hostName);
+		host.setIpAddresses(ipAddresses);
+		host.setHostAliases(hostAliases);
+		return host;
+	}
+
+	public static ResourceJobManager createResourceJobManager(
+			ResourceJobManagerType resourceJobManagerType,
+			String jobManagerBinPath,
+			Map<JobManagerCommand, String> jobManagerCommands,
+			String pushMonitoringEndpoint) {
+		ResourceJobManager resourceJobManager=new ResourceJobManager();;
+		resourceJobManager.setResourceJobManagerType(resourceJobManagerType);
+		resourceJobManager.setJobManagerBinPath(jobManagerBinPath);
+		resourceJobManager.setJobManagerCommands(jobManagerCommands);
+		resourceJobManager.setPushMonitoringEndpoint(pushMonitoringEndpoint);
+		return resourceJobManager;
+	}
+
+	public static InputDataObjectType createAppInput (String inputName, String argumentName, String description, String value, org.apache.airavata.model.appcatalog.appinterface.DataType type ){
+        InputDataObjectType input = new InputDataObjectType();
+//        input.setIsEmpty(false);
+        if (inputName!=null) {
+			input.setName(inputName);
+		}
+		if (value!=null) {
+			input.setValue(value);
+		}
+		if (type!=null) {
+			input.setType(type);
+		}
+		if (argumentName!=null) {
+			input.setApplicationArgument(argumentName);
+		}
+		if (description!=null) {
+			input.setUserFriendlyDescription(description);
+		}
+		return input;
+    }
+
+    public static OutputDataObjectType createAppOutput (String inputName, String value, org.apache.airavata.model.appcatalog.appinterface.DataType type ){
+        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
+//        outputDataObjectType.setIsEmpty(false);
+        if (inputName!=null) {
+			outputDataObjectType.setName(inputName);
+		}
+		if (value!=null) {
+			outputDataObjectType.setValue(value);
+		}
+		if (type!=null) {
+			outputDataObjectType.setType(type);
+		}
+		return outputDataObjectType;
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/NameValuePairType.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/NameValuePairType.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/NameValuePairType.java
new file mode 100644
index 0000000..5bf5cb5
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/NameValuePairType.java
@@ -0,0 +1,48 @@
+/*
+ *
+ * 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.client.tools;
+
+public class NameValuePairType {
+	
+	private String name;
+	private String value;
+	private String description;
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getValue() {
+		return value;
+	}
+	public void setValue(String value) {
+		this.value = value;
+	}
+	public String getDescription() {
+		return description;
+	}
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/PeriodicExecutorThread.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/PeriodicExecutorThread.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/PeriodicExecutorThread.java
new file mode 100644
index 0000000..6a1a4ed
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/PeriodicExecutorThread.java
@@ -0,0 +1,61 @@
+/*
+ *
+ * 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.client.tools;
+
+import org.apache.airavata.client.api.AiravataAPI;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class PeriodicExecutorThread extends Thread {
+
+    private AiravataAPI airavataAPI;
+    public static final int URL_UPDATE_INTERVAL = 1000 * 60 * 60 * 3;
+    public static final int JCR_AVAIALABILITY_WAIT_INTERVAL = 1000 * 10;
+
+    private static final Logger log = LoggerFactory.getLogger(PeriodicExecutorThread.class);
+
+    public PeriodicExecutorThread(AiravataAPI airavataAPI) {
+        this.airavataAPI = airavataAPI;
+    }
+
+    public void run() {
+        while (true) {
+            try {
+                updateRegistry(airavataAPI);
+                Thread.sleep(URL_UPDATE_INTERVAL);
+            } catch (InterruptedException e) {
+                break;
+            } catch (Exception e) {
+                try {
+                    Thread.sleep(JCR_AVAIALABILITY_WAIT_INTERVAL);
+                } catch (InterruptedException e1) {
+                    e1.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                    return;
+                }
+                log.error(e.getMessage());
+                log.error("Workflow Interpreter Service URL update thread is interrupted");
+            }
+        }
+    }
+
+    protected abstract void updateRegistry(AiravataAPI airavataAPI) throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/UltrascanDocumentCreator.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/UltrascanDocumentCreator.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/UltrascanDocumentCreator.java
new file mode 100644
index 0000000..f4fceeb
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/UltrascanDocumentCreator.java
@@ -0,0 +1,444 @@
+///**
+// * 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.client.tools;
+//
+//import java.io.File;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.UUID;
+//
+//import org.apache.airavata.client.api.AiravataAPI;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//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.schemas.gfac.ApplicationDeploymentDescriptionType;
+//import org.apache.airavata.schemas.gfac.DataType;
+//import org.apache.airavata.schemas.gfac.GsisshHostType;
+//import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
+//import org.apache.airavata.schemas.gfac.InputParameterType;
+//import org.apache.airavata.schemas.gfac.JobTypeType;
+//import org.apache.airavata.schemas.gfac.OutputParameterType;
+//import org.apache.airavata.schemas.gfac.ParameterType;
+//import org.apache.airavata.schemas.gfac.ProjectAccountType;
+//import org.apache.airavata.schemas.gfac.QueueType;
+//
+//public class UltrascanDocumentCreator {
+//
+//	private AiravataAPI airavataAPI = null;
+//    private String hpcHostAddress = "trestles.sdsc.edu";
+//    private String gsiSshHostNameTrestles = "gsissh-trestles";
+//    private String gsiSshHostNameStampede = "gsissh-stampede";
+//
+//
+//    public UltrascanDocumentCreator(AiravataAPI airavataAPI) {
+//        this.airavataAPI = airavataAPI;
+//    }
+//
+//    public void createEchoPBSDocsforTestles() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress(hpcHostAddress);
+//        host.getType().setHostName(gsiSshHostNameTrestles);
+//        ((GsisshHostType) host.getType()).setPort(22);
+//        ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "US3EchoTrestles";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue(serviceName);
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("uot111");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//        app.setMaxWallTime(10);
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String tempDir = "/oasis/projects/nsf/uot111/us3/airavata-workdirs/";
+//
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameTrestles, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//    public void createMPIPBSDocsTrestles() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress(hpcHostAddress);
+//        host.getType().setHostName(gsiSshHostNameTrestles);
+//        ((GsisshHostType) host.getType()).setPort(22);
+//        ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "US3AppTrestles";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.URI);
+//        parameterType.setName("URI");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.URI);
+//        parameterType1.setName("URI");
+//
+//        OutputParameterType output1 = OutputParameterType.Factory.newInstance();
+//        output1.setParameterName("stdout");
+//        ParameterType parameterType2 = output1.addNewParameterType();
+//        parameterType2.setType(DataType.STD_OUT);
+//        parameterType2.setName("StdOut");
+//
+//        OutputParameterType output2 = OutputParameterType.Factory.newInstance();
+//        output2.setParameterName("stderr");
+//        ParameterType parameterType3 = output2.addNewParameterType();
+//        parameterType3.setType(DataType.STD_ERR);
+//        parameterType3.setName("StdErr");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//        outputList.add(output1);
+//        outputList.add(output2);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue(serviceName);
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("uot111");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.MPI);
+//        app.setNodeCount(32);
+//        app.setProcessorsPerNode(2);
+//        app.setMaxWallTime(10);
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        app.setExecutableLocation("/home/us3/trestles/bin/us_mpi_analysis");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String tempDir = "/oasis/projects/nsf/uot111/us3/airavata-workdirs/";
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/opt/torque/bin/");
+//        app.setJobSubmitterCommand("/opt/mvapich2/pgi/ib/bin/mpiexec");
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameTrestles, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//    public void createMPISLURMDocsStampede() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress("stampede.tacc.xsede.org");
+//        host.getType().setHostName("gsissh-stampede");
+//        ((GsisshHostType) host.getType()).setJobManager("slurm");
+//        ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
+//        ((GsisshHostType) host.getType()).setPort(2222);
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "US3AppStampede";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.URI);
+//        parameterType.setName("URI");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.URI);
+//        parameterType1.setName("URI");
+//
+//        OutputParameterType output1 = OutputParameterType.Factory.newInstance();
+//        output1.setParameterName("stdout");
+//        ParameterType parameterType2 = output1.addNewParameterType();
+//        parameterType2.setType(DataType.STD_OUT);
+//        parameterType2.setName("StdOut");
+//
+//        OutputParameterType output2 = OutputParameterType.Factory.newInstance();
+//        output2.setParameterName("stderr");
+//        ParameterType parameterType3 = output2.addNewParameterType();
+//        parameterType3.setType(DataType.STD_ERR);
+//        parameterType3.setName("StdErr");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//        outputList.add(output1);
+//        outputList.add(output2);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue(serviceName);
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("TG-MCB070039N");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.MPI);
+//        app.setNodeCount(32);
+//        app.setProcessorsPerNode(2);
+//        app.setMaxWallTime(10);
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        app.setExecutableLocation("/home1/01623/us3/bin/us_mpi_analysis");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String tempDir = "/home1/01623/us3";
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/usr/bin/");
+//        app.setJobSubmitterCommand("/usr/local/bin/ibrun");
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameStampede, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//    public void createEchoSlurmDocsofStampede() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress("stampede.tacc.xsede.org");
+//        host.getType().setHostName("stampede-host");
+//        ((GsisshHostType) host.getType()).setJobManager("slurm");
+//        ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
+//        ((GsisshHostType) host.getType()).setPort(2222);
+//        ((GsisshHostType) host.getType()).setMonitorMode("push");
+////        ((GsisshHostType) host.getType()).setMo(2222);
+//
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "US3EchoStampede";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//           Application descriptor creation and saving
+//        */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue(serviceName);
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("TG-MCB070039N");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//        app.setMaxWallTime(10);
+//        /*
+//        * Use bat file if it is compiled on Windows
+//        */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//        * Default tmp location
+//        */
+//        String tempDir = "/home1/01623/us3";
+//
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/usr/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameStampede, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//    public AiravataAPI getAiravataAPI() {
+//        return airavataAPI;
+//    }
+//
+//    public void setAiravataAPI(AiravataAPI airavataAPI) {
+//        this.airavataAPI = airavataAPI;
+//    }
+//}


[7/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
new file mode 100644
index 0000000..66120ec
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
@@ -0,0 +1,477 @@
+/*
+ *
+ * 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.client.api;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.exception.WorkflowAlreadyExistsException;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowData;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+
+public interface WorkflowManager {
+
+	//privilledged API
+
+    /**
+     * Save the workflow under the given user
+     * @param workflowAsString The workflow as a string.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @return  <code>true</code> if successful else <code>false</code>.
+     * @throws AiravataAPIInvocationException If an error occurred while saving the workflow.
+     * @deprecated Use {@see #addOwnerWorkflow(String workflowAsString, String owner)} and
+     *                  {@see #updateOwnerWorkflow(String workflowAsString, String owner)} methods.
+     */
+    @Deprecated
+	public boolean saveWorkflow(String workflowAsString, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowAsString The new workflow to add as a string.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     * @throws WorkflowAlreadyExistsException If adding workflow already exists for the given owner.
+     */
+    public void addOwnerWorkflow (String workflowAsString, String owner) throws WorkflowAlreadyExistsException,
+			AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowPath File path of the workflow.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     * @throws WorkflowAlreadyExistsException If adding workflow already exists for the given owner.
+     */
+    public void addOwnerWorkflow (URI workflowPath, String owner) throws WorkflowAlreadyExistsException,
+			AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflow The new workflow to add.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     * @throws WorkflowAlreadyExistsException If adding workflow already exists for the given owner.
+     */
+    public void addOwnerWorkflow (Workflow workflow, String owner) throws WorkflowAlreadyExistsException,
+			AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * @param workflowPath File path of the workflow.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateOwnerWorkflow (URI workflowPath, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * @param workflowAsString The workflow to update as a string. Workflow is uniquely identified by &lt;xgr:id&gt; tag..
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateOwnerWorkflow (String workflowAsString, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Save the workflow under the given user
+     * @param workflow The workflow as a string.
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @return <code>true</code> if successful else <code>false</code>.
+     * @throws AiravataAPIInvocationException If an error occurred while saving the workflow.
+     * @deprecated Use {@see #addOwnerWorkflow(Workflow workflow, String owner)} and
+     *                  {@see #updateOwnerWorkflow(Workflow workflow, String owner)} methods.
+     */
+    @Deprecated
+    public boolean saveWorkflow(Workflow workflow, String owner) throws AiravataAPIInvocationException;
+
+
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * @param workflow The workflow to update. Workflow is uniquely identified by &lt;xgr:id&gt; tag..
+     * @param owner Under which user workflow should be added. This is a privileged method and usually
+     *              only admin calls this.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateOwnerWorkflow (Workflow workflow, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Retrieve workflows saved by the given user
+     * @param owner
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public List<Workflow> getWorkflows(String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Retrieve workflow templace ids saved by the given user
+     * @param owner
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public List<String> getWorkflowTemplateIds(String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Retrieve a given workflow saved by the given user
+     * @param workflowName
+     * @param owner
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public Workflow getWorkflow(String workflowName, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Retrive the given workflow saved by the given user as a string
+     * @param workflowName
+     * @param owner
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public String getWorkflowAsString(String workflowName, String owner) throws AiravataAPIInvocationException;
+
+    /**
+     * Delete the workflow saved by the given user
+     * @param workflowName
+     * @param owner
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public boolean deleteWorkflow(String workflowName, String owner) throws AiravataAPIInvocationException;
+    
+    //user api
+
+    /**
+     * Save the workflow
+     * @param workflowAsString Workflow as a string.
+     * @deprecated Use {@see #addWorkflow(String workflowAsString)} and
+     *          {@see #updateWorkflow(String workflowAsString)} methods.
+     * @throws AiravataAPIInvocationException
+     */
+    @Deprecated
+	public boolean saveWorkflow(String workflowAsString) throws AiravataAPIInvocationException;
+
+    /**
+     * Save the workflow as public
+     * @param workflowAsString Workflow as a string.
+     * @deprecated Use {@see #addWorkflowAsPublic(String workflowAsString)} and
+     *          {@see #updateWorkflowAsPublic(String workflowAsString)} methods.
+     * @throws AiravataAPIInvocationException
+     */
+    @Deprecated
+	public boolean saveWorkflowAsPublic(String workflowAsString) throws AiravataAPIInvocationException;
+
+    /**
+     * Save the workflow
+     * @param workflow {@see Workflow} object to save.
+     * @deprecated Use {@see #addWorkflow(Workflow workflow)} and
+     *          {@see #updateWorkflow(Workflow workflow)} methods.
+     * @throws AiravataAPIInvocationException
+     */
+    @Deprecated
+    public boolean saveWorkflow(Workflow workflow) throws AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowAsString The new workflow to add and its content as a string.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     */
+    public void addWorkflowAsPublic (String workflowAsString) throws WorkflowAlreadyExistsException,
+    	AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * @param workflowAsString The workflow to update. Workflow is uniquely identified by &lt;xgr:id&gt; tag.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateWorkflowAsPublic (String workflowAsString) throws AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowUri Where the workflow file (xml file) exists.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     */
+    public void addWorkflowAsPublic (URI workflowUri) throws WorkflowAlreadyExistsException,
+    		AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * @param workflowUri Where the workflow file resides. File location is given as a URI.
+     *                    Workflow is uniquely identified by &lt;xgr:id&gt; tag.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateWorkflowAsPublic (URI workflowUri) throws AiravataAPIInvocationException;
+
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowAsString The new workflow to add and its content as a string.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     */
+    public void addWorkflow (String workflowAsString) throws WorkflowAlreadyExistsException,
+    		AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * TODO : What exception should we throw if a different user tries to update the workflow ?
+     * @param workflowAsString The workflow to update. Workflow is uniquely identified by &lt;xgr:id&gt; tag..
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateWorkflow (String workflowAsString) throws AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflow The new workflow to add.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     */
+    public void addWorkflow (Workflow workflow) throws WorkflowAlreadyExistsException,
+    		AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * TODO : What exception should we throw if a different user tries to update the workflow ?
+     * @param workflow The workflow to update. Workflow is uniquely identified by &lt;xgr:id&gt; tag..
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateWorkflow (Workflow workflow) throws AiravataAPIInvocationException;
+
+    /**
+     * Adds a new workflow. Workflow is added to users private space. i.e. only user who added the
+     * workflow will be able to retrieve it.
+     * @param workflowUri New workflow file as a URI.
+     * @throws AiravataAPIInvocationException If an error occurred while adding a new workflow.
+     */
+    public void addWorkflow (URI workflowUri) throws WorkflowAlreadyExistsException,
+			AiravataAPIInvocationException;
+
+    /**
+     * Updates a given workflow. Only user who added the workflow will be able to update it.
+     * TODO : What exception should we throw if a different user tries to update the workflow ?
+     * @param workflowUri The workflow to update as a URI.
+     * @throws AiravataAPIInvocationException If an error occurred while updating the workflow.
+     */
+    public void updateWorkflow (URI workflowUri) throws AiravataAPIInvocationException;
+
+    /**
+     * Save the workflow as public
+     * @param workflow
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public boolean saveWorkflowAsPublic(Workflow workflow) throws AiravataAPIInvocationException;
+
+    /**
+     * Get all workflows of the current user
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public List<Workflow> getWorkflows() throws AiravataAPIInvocationException;
+
+    /**
+     * Get template id's of all workflows of the current user
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public List<String> getWorkflowTemplateIds() throws AiravataAPIInvocationException;
+
+    /**
+     * Retrieve the given workflow 
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public Workflow getWorkflow(String workflowName) throws AiravataAPIInvocationException;
+
+    /**
+     * Retrieve the given workflow as a string
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public String getWorkflowAsString(String workflowName) throws AiravataAPIInvocationException;
+
+    /**
+     * Delete the given workflow 
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public boolean deleteWorkflow(String workflowName) throws AiravataAPIInvocationException;
+
+    /**
+     * Create workflow object from workflow string 
+     * @param workflowAsString
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public Workflow getWorkflowFromString(String workflowAsString) throws AiravataAPIInvocationException;
+
+    /**
+     * Creates a workflow from a given URI. When we want to create a workflow from a file path
+     * we can use this method.
+     * @param workflowPath The workflow file path as a URI.
+     * @return A workflow object created using given workflow XML file.
+     * @throws AiravataAPIInvocationException If an error occurred while parsing the XML file.
+     */
+    public Workflow getWorkflowFromURI(URI workflowPath) throws AiravataAPIInvocationException;
+
+
+    /**
+     * Convert workflow in to a string
+     * @param workflow
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public String getWorkflowAsString(Workflow workflow) throws AiravataAPIInvocationException;
+
+    /**
+     * Gives the service Node IDs for the given template ID, this will be useful when you want to know the service ID to
+     * Configure each node with different WorkflowContextHeaders
+     * @param templateID
+     * @return
+     */
+    public List<String> getWorkflowServiceNodeIDs(String templateID) throws AiravataAPIInvocationException;
+    
+    /**
+     * Check if the workflow from the given name is published in the system
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public boolean isPublishedWorkflowExists(String workflowName) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Publish the workflow "workflowName" residing user space to the published space under name  publishWorkflowName
+	 * @param workflowName
+	 * @param publishWorkflowName
+	 * @throws AiravataAPIInvocationException
+	 */
+	public void publishWorkflow(String workflowName, String publishWorkflowName) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Publish the workflow "workflowName" residing user space
+	 * @param workflowName
+	 * @throws AiravataAPIInvocationException
+	 */
+	public void publishWorkflow(String workflowName) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Retrive published workflow
+	 * @param workflowName
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public String getPublishedWorkflowGraphXML(String workflowName) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Retrive published workflow
+	 * @param workflowName
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public Workflow getPublishedWorkflow(String workflowName) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Retrive published workflow names
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public List<String> getPublishedWorkflowNames() throws AiravataAPIInvocationException;
+	
+	/**
+	 * Retrive published workflows
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public Map<String,Workflow> getPublishedWorkflows() throws AiravataAPIInvocationException;
+	
+	/**
+	 * Remove published workflow from the system
+	 * @param workflowName
+	 * @throws AiravataAPIInvocationException
+	 */
+	public void removePublishedWorkflow(String workflowName)throws AiravataAPIInvocationException;
+
+    /**
+     * get workflow inputs of the workflow
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     * @throws Exception
+     */
+	public List<WorkflowInput> getWorkflowInputs(String workflowName) throws AiravataAPIInvocationException;
+    
+    /**
+     * Retrieve the workflow inputs for a workflow
+     * @param workflowData
+     * @return
+     * @throws AiravataAPIInvocationException
+     * @throws Exception
+     */
+    public List<WorkflowInput> getWorkflowInputs(WorkflowData workflowData) throws AiravataAPIInvocationException;
+    
+    /**
+     * Retrieve all workflows in published space & user space accessible to the user. 
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public List<WorkflowData> getAllWorkflows() throws AiravataAPIInvocationException;
+
+    /**
+     * Check to see if the workflow exists in user space
+     * @param workflowName
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public boolean isWorkflowExists(String workflowName) throws AiravataAPIInvocationException;
+
+    /**
+     * Update an existing workflow with the given workflow graph string
+     * @param workflowName
+     * @param workflowGraphXml
+     * @throws AiravataAPIInvocationException
+     */
+    public void updateWorkflow(String workflowName, String workflowGraphXml) throws AiravataAPIInvocationException;
+
+    /**
+     * Delete the workflow from the user space
+     * @param workflowName
+     * @throws AiravataAPIInvocationException
+     */
+    public void removeWorkflow(String workflowName) throws AiravataAPIInvocationException;
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
new file mode 100644
index 0000000..40e533d
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
@@ -0,0 +1,65 @@
+/*
+ *
+ * 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.client.api;
+
+public interface WorkflowOutputDataSettings {
+	
+	/**
+	 * Retrive the list of application output data settings 
+	 * @return
+	 */
+	public OutputDataSettings[] getOutputDataSettingsList();
+	
+	/**
+	 * Add a new appliation output data settings
+	 * @param nodeId - id of the node which the output data settings will be specified
+	 * @return
+	 */
+	public OutputDataSettings addNewOutputDataSettings(String nodeId);
+	
+	/**
+	 * Add a new appliation output data settings
+	 * @param outputDataDirectory
+	 * @param dataRegistryURL
+	 * @param isDataPersistent
+	 * @return
+	 */
+	public OutputDataSettings addNewOutputDataSettings(String nodeId, String outputDataDirectory, String dataRegistryURL, Boolean isDataPersistent);
+	
+	/**
+	 * Add new application putput data settings
+	 * @param outputDataSettings
+	 */
+	public void addNewOutputDataSettings(OutputDataSettings...outputDataSettings);
+	
+	/**
+	 * Remove the application output data settings from the workflow output data settings
+	 * @param outputDataSettings
+	 */
+	public void removeOutputDataSettings(OutputDataSettings outputDataSettings);
+	
+	/**
+	 * Remove all application output data settings
+	 */
+	public void removeAllOutputDataSettings();
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
new file mode 100644
index 0000000..6fa0146
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.client.api;
+
+public interface WorkflowSchedulingSettings {
+	
+	/**
+	 * Get all currently defined scheduling settings for the workflow node
+	 * @return
+	 */
+	public NodeSettings[] getNodeSettingsList();
+	
+	/**
+	 * Add and return a new Node scheduling settings  
+	 * @param nodeId
+	 * @return
+	 */
+	public NodeSettings addNewNodeSettings(String nodeId);
+	
+	/**
+	 * Add and return a new Node scheduling settings
+	 * @param nodeId
+	 * @param serviceId
+	 * @param cpuCount
+	 * @param nodeCount
+	 * @return
+	 */
+	public NodeSettings addNewNodeSettings(String nodeId, String serviceId, int cpuCount, int nodeCount);
+	
+	/**
+	 * Add a list of Node scheduling settings
+	 * @param nodeSettings
+	 */
+	public void addNewNodeSettings(NodeSettings...nodeSettings);
+	
+	/**
+	 * Is there a Node scheduling settings defined for the given node id
+	 * @param nodeId
+	 * @return
+	 */
+	public boolean hasNodeSettings(String nodeId);
+	
+	/**
+	 * Return the Node scheduling settings for the given node Id
+	 * @param nodeId
+	 * @return
+	 */
+	public NodeSettings getNodeSettings(String nodeId);
+	
+	/**
+	 * Remove the node scheduling settings given by the node Id
+	 * @param nodeId
+	 */
+	public void removeNodeSettings(String nodeId);
+	
+	/**
+	 * Clear all node scheduling settings
+	 */
+	public void removeAllNodeSettings();
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
new file mode 100644
index 0000000..51821b9
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
@@ -0,0 +1,208 @@
+/*
+ *
+ * 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.client.api.builder;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+
+/**
+ * This class provides set of utility methods to create descriptors. Following descriptors are included.
+ * <ol>
+ * <li>HostDescription - org.apache.airavata.commons.gfac.type.HostDescription</li>
+ * </ol>
+ */
+public class DescriptorBuilder {
+
+    private static final String IP_ADDRESS_VALIDATION_STRING = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
+
+    private static final String HOST_NAME_VALIDATION_STRING = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$";
+
+    /**
+     * Builds a host descriptor object. Host descriptor gives information about application hosted machine.
+     * 
+     * @param type
+     *            The host type. Following types are available at the moment.
+     *            <ol>
+     *            <li>org.apache.airavata.schemas.gfac.GlobusHostType</li>
+     *            <li>org.apache.airavata.schemas.gfac.Ec2HostType</li>
+     *            <li>org.apache.airavata.schemas.gfac.GsisshHostType</li>
+     *            <li>org.apache.airavata.schemas.gfac.UnicoreHostType</li>
+     *            </ol>
+     * @param hostName
+     *            An unique id given to hosted machine. This could be any name. But should be unique across the
+     *            workflow.
+     * @param hostAddress
+     *            This is the IP address where application is running. This should be a valid IP address or valid host
+     *            name.
+     * @return The org.apache.airavata.commons.gfac.type.HostDescription object.
+     * @throws AiravataAPIInvocationException
+     *             If provided host address does not comply with IP address format or host name format.
+     */
+//    public HostDescription buildHostDescription(HostDescriptionType type, String hostName, String hostAddress)
+//            throws AiravataAPIInvocationException {
+//
+//        return buildHostDescription(type.schemaType(), hostName, hostAddress);
+//
+//    }
+
+    /**
+     * Builds a host descriptor object. Host descriptor gives information about application hosted machine.
+     * 
+     * @param schemaType
+     *            The host type as per the schema. All available schema types are listed in
+     *            org.apache.xmlbeans.SchemaType
+     * @param hostName
+     *            An unique id given to hosted machine. This could be any name. But should be unique across the
+     *            workflow.
+     * @param hostAddress
+     *            This is the IP address where application is running. This should be a valid IP address or valid host
+     *            name.
+     * @return The org.apache.airavata.commons.gfac.type.HostDescription object.
+     * @throws AiravataAPIInvocationException
+     *             If provided host address does not comply with IP address format or host name format.
+     */
+//    public HostDescription buildHostDescription(SchemaType schemaType, String hostName, String hostAddress)
+//            throws AiravataAPIInvocationException {
+//
+//        if (!validateHostAddress(hostAddress)) {
+//            throw new AiravataAPIInvocationException("Invalid host address. Host address should be "
+//                    + "either an IP address or a valid host name.");
+//        }
+//
+//        HostDescription hostDescription = new HostDescription(schemaType);
+//        hostDescription.getType().setHostName(hostName);
+//        hostDescription.getType().setHostAddress(hostAddress);
+//
+//        return hostDescription;
+//
+//    }
+
+    /**
+     * Create an input parameter.
+     * 
+     * @param parameterName
+     *            The input parameter name.
+     * @param parameterDescription
+     *            A short description about the input parameter.
+     * @param parameterDataType
+     *            Input parameter type. E.g :- String, Integer etc .. All possible types are define in DataType.Enum
+     *            class. E.g :- DataType.String
+     * @see org.apache.airavata.schemas.gfac.DataType.Enum
+     * @return Encapsulating InputParameterType object.
+     */
+//    public InputParameterType buildInputParameterType(String parameterName, String parameterDescription,
+//            DataType.Enum parameterDataType) {
+//
+//        InputParameterType parameter = InputParameterType.Factory.newInstance();
+//        parameter.setParameterName(parameterName);
+//        parameter.setParameterDescription(parameterDescription);
+//
+//        ParameterType parameterType = parameter.addNewParameterType();
+//        parameterType.setType(parameterDataType);
+//        parameterType.setName(parameterDataType.toString());
+//
+//        return parameter;
+//
+//    }
+
+    /**
+     * Create an input parameter.
+     * 
+     * @param parameterName
+     *            The input parameter name.
+     * @param parameterDescription
+     *            A short description about the input parameter.
+     * @param parameterDataType
+     *            Input parameter type. E.g :- String, Integer etc .. All possible types are define in DataType.Enum
+     *            class. E.g :- DataType.String
+     * @see org.apache.airavata.schemas.gfac.DataType.Enum
+     * @return Encapsulating InputParameterType object.
+     */
+//    public OutputParameterType buildOutputParameterType(String parameterName, String parameterDescription,
+//            DataType.Enum parameterDataType) {
+//
+//        OutputParameterType parameter = OutputParameterType.Factory.newInstance();
+//        parameter.setParameterName(parameterName);
+//        parameter.setParameterDescription(parameterDescription);
+//
+//        ParameterType parameterType = parameter.addNewParameterType();
+//        parameterType.setType(parameterDataType);
+//        parameterType.setName(parameterDataType.toString());
+//
+//        return parameter;
+//
+//    }
+
+    /**
+     * Creates a ServiceDescription object. This includes information about the service. Mainly we are focusing on
+     * following details about the service.
+     * <ol>
+     * <li>A name for service</li>
+     * <li>A short description about the service</li>
+     * <li>A what are input data types</li>
+     * <li>A what are output data types</li>
+     * </ol>
+     * 
+     * @param serviceName
+     *            Name of the service.
+     * @param description
+     *            A short description about the service.
+     * @param inputParameterTypes
+     *            Input parameter types.
+     * @param outputParameterTypes
+     *            Output parameter types.
+     * @return A ServiceDescription object with above information encapsulated.
+     */
+//    public ServiceDescription buildServiceDescription(String serviceName, String description,
+//            List<InputParameterType> inputParameterTypes, List<OutputParameterType> outputParameterTypes) {
+//
+//        ServiceDescription serviceDescription = new ServiceDescription();
+//        serviceDescription.getType().setName(serviceName);
+//        serviceDescription.getType().setDescription(description);
+//
+//        serviceDescription.getType().setInputParametersArray(
+//                inputParameterTypes.toArray(new InputParameterType[inputParameterTypes.size()]));
+//        serviceDescription.getType().setOutputParametersArray(
+//                outputParameterTypes.toArray(new OutputParameterType[outputParameterTypes.size()]));
+//
+//        return serviceDescription;
+//
+//    }
+//
+//    public ApplicationDescription buildApplicationDeploymentDescription(String applicationName, String executablePath,
+//            String workingDirectory) {
+//
+//        ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+//        ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription
+//                .getType();
+//        applicationDeploymentDescriptionType.addNewApplicationName().setStringValue(applicationName);
+//        applicationDeploymentDescriptionType.setExecutableLocation(executablePath);
+//        applicationDeploymentDescriptionType.setScratchWorkingDirectory(workingDirectory);
+//
+//        return applicationDeploymentDescription;
+//
+//    }
+//
+//    private boolean validateHostAddress(String hostAddress) {
+//        return hostAddress.matches(IP_ADDRESS_VALIDATION_STRING) || hostAddress.matches(HOST_NAME_VALIDATION_STRING);
+//    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIInvocationException.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIInvocationException.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIInvocationException.java
new file mode 100644
index 0000000..899fe85
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIInvocationException.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.client.api.exception;
+
+
+public class AiravataAPIInvocationException extends Exception {
+	//private static final Logger log = LoggerFactory.getLogger(AiravataAPIInvocationException.class);
+
+	private static final long serialVersionUID = 1L;
+
+	public AiravataAPIInvocationException(Throwable e) {
+		super(e.getLocalizedMessage(), e);
+		//log.error(e.getLocalizedMessage(),e);
+	}
+	public AiravataAPIInvocationException(String message) {
+		super(message, null);
+		//log.error(message);
+	}
+
+	public AiravataAPIInvocationException(String message, Throwable e) {
+		super(message, e);
+		//log.error(message,e);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIUnimplementedException.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIUnimplementedException.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIUnimplementedException.java
new file mode 100644
index 0000000..f64e480
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/AiravataAPIUnimplementedException.java
@@ -0,0 +1,33 @@
+/*
+ *
+ * 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.client.api.exception;
+
+public class AiravataAPIUnimplementedException extends
+		AiravataAPIInvocationException {
+
+	private static final long serialVersionUID = -8233342290087971830L;
+
+	public AiravataAPIUnimplementedException(String message) {
+		super(message);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/DescriptorAlreadyExistsException.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/DescriptorAlreadyExistsException.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/DescriptorAlreadyExistsException.java
new file mode 100644
index 0000000..cf3a95c
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/DescriptorAlreadyExistsException.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.client.api.exception;
+
+
+/**
+ * If a saving descriptor already found in the system this exception will be thrown.
+ */
+public class DescriptorAlreadyExistsException extends AiravataAPIInvocationException {
+
+    private static final long serialVersionUID = 1231L;
+
+    public DescriptorAlreadyExistsException(Throwable e) {
+        super(e);
+    }
+
+    public DescriptorAlreadyExistsException(String message) {
+        super(message, null);
+    }
+
+    public DescriptorAlreadyExistsException(String message, Throwable e) {
+        super(message, e);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/WorkflowAlreadyExistsException.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/WorkflowAlreadyExistsException.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/WorkflowAlreadyExistsException.java
new file mode 100644
index 0000000..56c8220
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/exception/WorkflowAlreadyExistsException.java
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.client.api.exception;
+
+/**
+ * If a saving descriptor already found in the system this exception will be thrown.
+ */
+public class WorkflowAlreadyExistsException extends AiravataAPIInvocationException {
+
+    private static final long serialVersionUID = 1231L;
+
+    public WorkflowAlreadyExistsException(Throwable e) {
+        super(e);
+    }
+
+    public WorkflowAlreadyExistsException(String message) {
+        super(message, null);
+    }
+
+    public WorkflowAlreadyExistsException(String message, Throwable e) {
+        super(message, e);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AiravataManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AiravataManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AiravataManagerImpl.java
new file mode 100644
index 0000000..8e58148
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AiravataManagerImpl.java
@@ -0,0 +1,310 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.AiravataClient;
+import org.apache.airavata.client.api.AiravataManager;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Date;
+import java.util.List;
+
+public class AiravataManagerImpl implements AiravataManager {
+	private AiravataClient client;
+	
+	public AiravataManagerImpl(AiravataClient client) {
+		setClient(client);
+	}
+
+	@Override
+	public List<URI> getWorkflowInterpreterServiceURLs()  throws AiravataAPIInvocationException{
+//		try {
+//			return getClient().getRegistryClient().getWorkflowInterpreterURIs();
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+
+
+	public AiravataClient getClient() {
+		return client;
+	}
+
+	public void setClient(AiravataClient client) {
+		this.client = client;
+	}
+
+	@Override
+	public URI getWorkflowInterpreterServiceURL()
+			throws AiravataAPIInvocationException {
+		try {
+			return getClient().getClientConfiguration().getXbayaServiceURL().toURI();
+		} catch (URISyntaxException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public URI getWorkflowInterpreterServiceURL(URI defaultURL)
+			throws AiravataAPIInvocationException {
+		if (getWorkflowInterpreterServiceURL()==null){
+			return defaultURL;	
+		}
+		return getWorkflowInterpreterServiceURL();
+		
+	}
+
+	@SuppressWarnings("serial")
+	@Override
+	public List<URI> getMessageBoxServiceURLs()
+			throws AiravataAPIInvocationException {
+//		try {
+//			return new ArrayList<URI>(){{add(getClient().getRegistryClient().getMessageBoxURI());}};
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public URI getMessageBoxServiceURL() throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getMessageBoxURI();
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public URI getMessageBoxServiceURL(URI defaultURL)
+			throws AiravataAPIInvocationException {
+		if (getMessageBoxServiceURL()==null){
+			return defaultURL;	
+		}
+		return getMessageBoxServiceURL();
+	}
+
+	@SuppressWarnings("serial")
+	@Override
+	public List<URI> getEventingServiceURLs()
+			throws AiravataAPIInvocationException {
+//		try {
+//			return new ArrayList<URI>(){{add(getClient().getRegistryClient().getEventingServiceURI());}};
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public URI getEventingServiceURL() throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getEventingServiceURI();
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+    }
+
+	@Override
+	public URI getEventingServiceURL(URI defaultURL)
+			throws AiravataAPIInvocationException {
+		if (getEventingServiceURL()==null){
+			return defaultURL;	
+		}
+		return getEventingServiceURL();
+	}
+
+    @Override
+    public void setConfiguration(String key, String value, Date expire) throws AiravataAPIInvocationException {
+//       try{
+//           getClient().getRegistryClient().setConfiguration(key, value, expire);
+//       }catch (Exception e){
+//           throw new AiravataAPIInvocationException(e);
+//       }
+    }
+
+    @Override
+    public void addConfiguration(String key, String value, Date expire) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().addConfiguration(key, value, expire);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+    
+	@Override
+	public Object getConfiguration(String key)
+			throws AiravataAPIInvocationException {
+//        try{
+//            return getClient().getRegistryClient().getConfiguration(key);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+        return null;
+	}
+
+	@Override
+	public List<Object> getConfigurationList(String key)
+			throws AiravataAPIInvocationException {
+//        try{
+//            return getClient().getRegistryClient().getConfigurationList(key);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+        return null;
+	}
+
+    @Override
+    public void removeAllConfiguration(String key) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().removeAllConfiguration(key);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void removeConfiguration(String key, String value) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().removeConfiguration(key, value);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void addWorkflowInterpreterURI(URI uri) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().addWorkflowInterpreterURI(uri);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void setEventingURI(URI uri) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().setEventingURI(uri);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void setMessageBoxURI(URI uri) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().setMessageBoxURI(uri);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void addWorkflowInterpreterURI(URI uri, Date expire) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().addWorkflowInterpreterURI(uri, expire);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void setEventingURI(URI uri, Date expire) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().setEventingURI(uri, expire);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void setMessageBoxURI(URI uri, Date expire) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().setMessageBoxURI(uri, expire);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void removeWorkflowInterpreterURI(URI uri) throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().removeWorkflowInterpreterURI(uri);
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void removeAllWorkflowInterpreterURI() throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().removeAllWorkflowInterpreterURI();
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void unsetEventingURI() throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().unsetEventingURI();
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void unsetMessageBoxURI() throws AiravataAPIInvocationException {
+//        try{
+//            getClient().getRegistryClient().unsetMessageBoxURI();
+//        }catch (Exception e){
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+//    @Override
+//    public Gateway getGateway() throws AiravataAPIInvocationException {
+//        try {
+//			return getClient().getRegistryClient().getGateway();
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//        return null;
+//    }
+
+//    @Override
+//    public AiravataUser getUser() throws AiravataAPIInvocationException {
+//    	try{
+//    		return getClient().getRegistryClient().getUser();
+//    	} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//        return null;
+//    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AmazonWebServicesSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AmazonWebServicesSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AmazonWebServicesSettingsImpl.java
new file mode 100644
index 0000000..27bbd16
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/AmazonWebServicesSettingsImpl.java
@@ -0,0 +1,93 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.AmazonWebServicesSettings;
+
+public class AmazonWebServicesSettingsImpl implements AmazonWebServicesSettings {
+    private String awsAccessKey;
+    private String awsSecretKey;
+    private String amiId;
+    private String instanceId;
+    private String instanceType;
+    private String username;
+
+    @Override
+    public String getAccessKeyId() {
+        return awsAccessKey;
+    }
+
+    @Override
+    public String getAMIId() {
+        return amiId;
+    }
+
+    @Override
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    @Override
+    public String getInstanceType() {
+        return instanceType;
+    }
+
+    @Override
+    public String getSecretAccessKey() {
+        return awsSecretKey;
+    }
+
+    @Override
+    public String getUsername() {
+        return username;
+    }
+
+    @Override
+    public void setAccessKeyId(String accessKeyId) {
+        this.awsAccessKey = accessKeyId;
+    }
+
+    @Override
+    public void setAMIId(String amiId) {
+        this.amiId = amiId;
+    }
+
+    @Override
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    @Override
+    public void setInstanceType(String instanceType) {
+        this.instanceType = instanceType;
+    }
+
+    @Override
+    public void setSecretAccessKey(String secretAccessKey) {
+        this.awsSecretKey = secretAccessKey;
+    }
+
+    @Override
+    public void setUsername(String username) {
+        this.username = username;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
new file mode 100644
index 0000000..f943174
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
@@ -0,0 +1,497 @@
+///*
+// *
+// * 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.client.impl;
+//
+//import org.apache.airavata.client.AiravataClient;
+//import org.apache.airavata.client.api.ApplicationManager;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
+//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 java.util.List;
+//import java.util.Map;
+//
+//public class ApplicationManagerImpl implements ApplicationManager {
+//	private AiravataClient client;
+//
+//	public ApplicationManagerImpl(AiravataClient client) {
+//		setClient(client);
+//	}
+//
+//	@Override
+//	public ServiceDescription getServiceDescription(String serviceId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			ServiceDescription desc = getClient().getRegistryClient().getServiceDescriptor(serviceId);
+////			if(desc!=null){
+////	        	return desc;
+////	        }
+//////			throw new AiravataAPIInvocationException(new Exception("Service Description not found in registry."));
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ServiceDescription> getAllServiceDescriptions()
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getServiceDescriptors();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public String saveServiceDescription(ServiceDescription service)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			if (getClient().getRegistryClient().isServiceDescriptorExists(service.getType().getName())) {
+////				getClient().getRegistryClient().updateServiceDescriptor(service);
+////			}else{
+////				getClient().getRegistryClient().addServiceDescriptor(service);
+////			}
+////			return service.getType().getName();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//    @Override
+//    public void addServiceDescription(ServiceDescription serviceDescription) throws DescriptorAlreadyExistsException,
+//    		AiravataAPIInvocationException{
+////        try {
+////            getClient().getRegistryClient().addServiceDescriptor(serviceDescription);
+////        } catch (org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException e) {
+////            throw new DescriptorAlreadyExistsException("Service descriptor "
+////                    + serviceDescription.getType().getName()
+////                    + " already exists.", e);
+////        } catch (RegException e) {
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add service descriptor"
+////                    + serviceDescription.getType().getName(),
+////                    e);
+////        } catch (AiravataConfigurationException e) {
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to " +
+////                    "add service descriptor" + serviceDescription.getType().getName(), e);
+////        }
+//    }
+//
+//    @Override
+//    public void updateServiceDescription(ServiceDescription serviceDescription) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateServiceDescriptor(serviceDescription);
+////        } catch (RegException e) {
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add service descriptor"
+////                    + serviceDescription.getType().getName(),
+////                    e);
+////        } catch (AiravataConfigurationException e) {
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to " +
+////                    "add service descriptor" + serviceDescription.getType().getName(), e);
+////        }
+//    }
+//
+//
+//    @Override
+//	public void deleteServiceDescription(String serviceId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().removeServiceDescriptor(serviceId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//	@Override
+//	public List<ServiceDescription> searchServiceDescription(String nameRegEx)
+//			throws AiravataAPIInvocationException {
+////		throw new AiravataAPIInvocationException(new UnimplementedRegOperationException());
+//        return null;
+//	}
+//
+//	@Override
+//	public ApplicationDescription getApplicationDescription(
+//            String serviceId, String hostId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getApplicationDescriptors(serviceId, hostId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public String saveApplicationDescription(String serviceId, String hostId,
+//                                             ApplicationDescription app)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			if (getClient().getRegistryClient().isApplicationDescriptorExists(serviceId, hostId, app.getType().getApplicationName().getStringValue())) {
+////				getClient().getRegistryClient().updateApplicationDescriptor(serviceId, hostId, app);
+////			}else{
+////				getClient().getRegistryClient().addApplicationDescriptor(serviceId, hostId, app);
+////			}
+////			return app.getType().getApplicationName().getStringValue();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//
+//    @Override
+//    public void addApplicationDescription(ServiceDescription serviceDescription, HostDescription hostDescription,
+//                                          ApplicationDescription applicationDeploymentDescription)
+//            throws DescriptorAlreadyExistsException, AiravataAPIInvocationException{
+//
+////        try {
+////            getClient().getRegistryClient().addApplicationDescriptor(serviceDescription.getType().getName(),
+////                    hostDescription.getType().getHostName(), applicationDeploymentDescription);
+////        } catch (org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException e) {
+////            throw new DescriptorAlreadyExistsException("Application descriptor " +
+////                    applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+////                    + " already associated to host " + hostDescription.getType().getHostName()
+////                    + " and service " + serviceDescription.getType().getName(), e);
+////        } catch (RegException e) {
+////
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add " +
+////                    "application descriptor " +
+////                    applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+////                    + " associated to host " + hostDescription.getType().getHostName()
+////                    + " and service " + serviceDescription.getType().getName(), e);
+////
+////        } catch (AiravataConfigurationException e) {
+////
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to add application descriptor " +
+////                    applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+////                    + " associated to host " + hostDescription.getType().getHostName()
+////                    + " and service " + serviceDescription.getType().getName(), e);
+////        }
+//
+//    }
+//
+//    @Override
+//    public void updateApplicationDescription(ServiceDescription serviceDescription, HostDescription hostDescription,
+//                                             ApplicationDescription applicationDeploymentDescription)
+//            throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateApplicationDescriptor(serviceDescription.getType().getName(),
+////                    hostDescription.getType().getHostName(), applicationDeploymentDescription);
+////        } catch (RegException e) {
+////
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add " +
+////                    "application descriptor " +
+////                    applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+////                    + " associated to host " + hostDescription.getType().getHostName()
+////                    + " and service " + serviceDescription.getType().getName(), e);
+////
+////        } catch (AiravataConfigurationException e) {
+////
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to add application descriptor " +
+////                    applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+////                    + " associated to host " + hostDescription.getType().getHostName()
+////                    + " and service " + serviceDescription.getType().getName(), e);
+////        }
+//    }
+//
+//
+//    @Override
+//	public List<ApplicationDescription> searchApplicationDescription(
+//            String serviceName, String hostName)
+//			throws AiravataAPIInvocationException {
+////		throw new AiravataAPIInvocationException(new UnimplementedRegOperationException());
+//        return null;
+//	}
+//
+//	@Override
+//	public Map<String[], ApplicationDescription> getAllApplicationDescriptions()
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getApplicationDescriptors();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ApplicationDescription> searchApplicationDescription(
+//            String serviceName, String hostName, String applicationName)
+//			throws AiravataAPIInvocationException {
+////		throw new AiravataAPIInvocationException(new UnimplementedRegOperationException());
+//        return null;
+//	}
+//
+//	@Override
+//	public Map<HostDescription, List<ApplicationDescription>> searchApplicationDescription(
+//            String serviceName) throws AiravataAPIInvocationException {
+////		try {
+////			Map<HostDescription, List<ApplicationDescription>> map=new HashMap<HostDescription, List<ApplicationDescription>>();
+////			Map<String, ApplicationDescription> applicationDescriptors = getClient().getRegistryClient().getApplicationDescriptors(serviceName);
+////			for (String hostName : applicationDescriptors.keySet()) {
+////				ArrayList<ApplicationDescription> list = new ArrayList<ApplicationDescription>();
+////				list.add(applicationDescriptors.get(hostName));
+////				map.put(getClient().getRegistryClient().getHostDescriptor(hostName),list);
+////			}
+////			return map;
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void deleteApplicationDescription(String serviceName,
+//                                             String hostName, String applicationName)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().removeApplicationDescriptor(serviceName, hostName, applicationName);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//	@Override
+//	public HostDescription getHostDescription(String hostId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getHostDescriptor(hostId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<HostDescription> getAllHostDescriptions()
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getHostDescriptors();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public String saveHostDescription(HostDescription host)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			if (getClient().getRegistryClient().isHostDescriptorExists(host.getType().getHostName())) {
+////				getClient().getRegistryClient().updateHostDescriptor(host);
+////			}else{
+////				getClient().getRegistryClient().addHostDescriptor(host);
+////			}
+////			return host.getType().getHostName();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//    @Override
+//    public void addHostDescription(HostDescription host) throws DescriptorAlreadyExistsException,
+//    		AiravataAPIInvocationException{
+//
+////        try {
+////            getClient().getRegistryClient().addHostDescriptor(host);
+////        } catch (org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException e) {
+////            throw new DescriptorAlreadyExistsException("Host descriptor " + host.getType().getHostName()
+////                    + " already exists.", e);
+////        } catch (RegException e) {
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add host descriptor"
+////                    + host.getType().getHostName(),
+////                    e);
+////        } catch (AiravataConfigurationException e) {
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to " +
+////                    "add host descriptor" + host.getType().getHostName(), e);
+////        }
+//
+//    }
+//
+//    @Override
+//    public void updateHostDescription(HostDescription host) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateHostDescriptor(host);
+////        } catch (RegException e) {
+////            throw new AiravataAPIInvocationException("An internal error occurred while trying to add host descriptor"
+////                    + host.getType().getHostName(),
+////                    e);
+////        } catch (AiravataConfigurationException e) {
+////            throw new AiravataAPIInvocationException("Error retrieving registry controller. " +
+////                    "An error occurred while trying to " +
+////                    "add host descriptor" + host.getType().getHostName(), e);
+////        }
+//    }
+//
+//
+//    @Override
+//	public List<HostDescription> searchHostDescription(String regExName)
+//			throws AiravataAPIInvocationException {
+////		throw new AiravataAPIInvocationException(new UnimplementedRegOperationException());
+//        return null;
+//	}
+//
+//	@Override
+//	public void deleteHostDescription(String hostId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().removeHostDescriptor(hostId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public boolean deployServiceOnHost(String serviceName, String hostName)
+//			throws AiravataAPIInvocationException {
+////		throw new AiravataAPIInvocationException(new UnimplementedRegOperationException());
+//        return false;
+//    }
+//
+//    @Override
+//    public Map<String, ApplicationDescription> getApplicationDescriptors(String serviceName) throws AiravataAPIInvocationException {
+////        try{
+////            Map<String, ApplicationDescription> applicationDescriptors = getClient().getRegistryClient().getApplicationDescriptors(serviceName);
+////            return applicationDescriptors;
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return null;
+//    }
+//
+//    @Override
+//    public boolean isHostDescriptorExists(String descriptorName) throws AiravataAPIInvocationException {
+////        try {
+////            return getClient().getRegistryClient().isHostDescriptorExists(descriptorName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return false;
+//    }
+//
+//    @Override
+//    public void removeHostDescriptor(String hostName) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().removeHostDescriptor(hostName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public boolean isServiceDescriptorExists(String descriptorName) throws AiravataAPIInvocationException {
+////        try {
+////            return getClient().getRegistryClient().isServiceDescriptorExists(descriptorName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return false;
+//    }
+//
+//    @Override
+//    public void removeServiceDescriptor(String serviceName) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().removeServiceDescriptor(serviceName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void removeApplicationDescriptor(String serviceName, String hostName, String applicationName) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().removeApplicationDescriptor(serviceName, hostName, applicationName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void updateHostDescriptor(HostDescription descriptor) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateHostDescriptor(descriptor);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void updateServiceDescriptor(ServiceDescription descriptor) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateServiceDescriptor(descriptor);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void updateApplicationDescriptor(String serviceName, String hostName, ApplicationDescription descriptor) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().updateApplicationDescriptor(serviceName, hostName, descriptor);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public ApplicationDescription getApplicationDescriptor(String serviceName, String hostname, String applicationName) throws AiravataAPIInvocationException {
+////        try {
+////            return getClient().getRegistryClient().getApplicationDescriptor(serviceName, hostname, applicationName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return null;
+//    }
+//
+//    public AiravataClient getClient() {
+//		return client;
+//	}
+//
+//	public void setClient(AiravataClient client) {
+//		this.client = client;
+//	}
+//
+//	@Override
+//	public boolean isApplicationDescriptorExists(String serviceName,
+//                                                 String hostName, String descriptorName)
+//			throws AiravataAPIInvocationException {
+////        try {
+////            return getClient().getRegistryClient().isApplicationDescriptorExists(serviceName, hostName, descriptorName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return false;
+//	}
+//
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationOutputDataSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationOutputDataSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationOutputDataSettingsImpl.java
new file mode 100644
index 0000000..5fc4e5b
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationOutputDataSettingsImpl.java
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.OutputDataSettings;
+
+public class ApplicationOutputDataSettingsImpl implements OutputDataSettings {
+	private String nodeId;
+	private String outputDataDirectory;
+	private String dataRegistry;
+	private Boolean dataPersistent;
+
+	public ApplicationOutputDataSettingsImpl(String nodeId) {
+		this(nodeId, null,null,null);
+	}
+
+	public ApplicationOutputDataSettingsImpl(String nodeId, String outputDataDirectory, String dataRegistryUrl, Boolean dataPersistent) {
+		setNodeId(nodeId);
+		setOutputDataDirectory(outputDataDirectory);
+		setDataRegistryUrl(dataRegistryUrl);
+		setDataPersistent(dataPersistent);
+	}
+
+	@Override
+	public String getOutputDataDirectory() {
+		return outputDataDirectory;
+	}
+
+	@Override
+	public String getDataRegistryUrl() {
+		return dataRegistry;
+	}
+
+	@Override
+	public Boolean isDataPersistent() {
+		return dataPersistent;
+	}
+
+	@Override
+	public void setOutputDataDirectory(String outputDataDirectory) {
+		this.outputDataDirectory=outputDataDirectory;
+	}
+
+	@Override
+	public void setDataRegistryUrl(String dataRegistryUrl) {
+		this.dataRegistry=dataRegistryUrl;
+	}
+
+	@Override
+	public void setDataPersistent(Boolean isDataPersistance) {
+		this.dataPersistent=isDataPersistance;
+	}
+
+	@Override
+	public void resetOutputDataDirectory() {
+		this.outputDataDirectory=null;
+	}
+
+	@Override
+	public void resetDataRegistryUrl() {
+		this.dataRegistry=null;
+	}
+
+	@Override
+	public void resetDataPersistent() {
+		this.dataPersistent=null;
+	}
+
+	@Override
+	public String getNodeId() {
+		return nodeId;
+	}
+
+	@Override
+	public void setNodeId(String nodeId) {
+		this.nodeId=nodeId;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreManagerImpl.java
new file mode 100644
index 0000000..d8d090b
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreManagerImpl.java
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.AiravataClient;
+import org.apache.airavata.client.api.CredentialStoreManager;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+public class CredentialStoreManagerImpl implements CredentialStoreManager{
+
+	private AiravataClient client;
+	
+	public CredentialStoreManagerImpl(AiravataClient client) {
+		this.client = client;
+	}
+	
+	@Override
+	public boolean isCredentialExist(String gatewayId, String tokenId) throws AiravataAPIInvocationException {
+//		if(gatewayId==null || gatewayId.isEmpty() || tokenId == null || tokenId.isEmpty()) {
+//    		return false;
+//    	}
+//		try {
+//			return client.getRegistryClient().isCredentialExist(gatewayId, tokenId);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return false;
+	}
+
+	@Override
+	public String getCredentialPublicKey(String gatewayId, String tokenId) throws AiravataAPIInvocationException {
+//		try {
+//			return client.getRegistryClient().getCredentialPublicKey(gatewayId, tokenId);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public String createCredential(String gatewayId, String tokenId) throws AiravataAPIInvocationException {
+//		try {
+//			return client.getRegistryClient().createCredential(gatewayId, tokenId);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public String createCredential(String gatewayId, String tokenId, String username) throws AiravataAPIInvocationException {
+//		try {
+//			return client.getRegistryClient().createCredential(gatewayId, tokenId, username);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+}


[5/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
new file mode 100644
index 0000000..4596e42
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
@@ -0,0 +1,535 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.AiravataClient;
+import org.apache.airavata.client.api.WorkflowManager;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.exception.WorkflowAlreadyExistsException;
+import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowData;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowManagerImpl implements WorkflowManager {
+	private AiravataClient client;
+
+	public WorkflowManagerImpl(AiravataClient client) {
+		setClient(client);
+	}
+	
+	public AiravataClient getClient() {
+		return client;
+	}
+
+	public void setClient(AiravataClient client) {
+		this.client = client;
+	}
+	
+	@Override
+	public boolean saveWorkflow(String workflowAsString, String owner)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(getWorkflowFromString(workflowAsString), workflowAsString, owner);
+	}
+
+    @Override
+    public void addOwnerWorkflow (String workflowAsString, String owner)
+            throws AiravataAPIInvocationException, WorkflowAlreadyExistsException {
+         addWorkflow(getWorkflowFromString(workflowAsString), workflowAsString, owner);
+    }
+
+    @Override
+    public void updateOwnerWorkflow (String workflowAsString, String owner)
+            throws AiravataAPIInvocationException {
+        updateWorkflow(getWorkflowFromString(workflowAsString), workflowAsString, owner);
+    }
+
+    @Override
+    public void addOwnerWorkflow (URI workflowPath, String owner)
+            throws AiravataAPIInvocationException, WorkflowAlreadyExistsException {
+        Workflow workflow = getWorkflowFromURI(workflowPath);
+        addWorkflow(workflow, XMLUtil.xmlElementToString(workflow.toXML()), owner);
+    }
+
+    @Override
+    public void updateOwnerWorkflow (URI workflowPath, String owner)
+            throws AiravataAPIInvocationException {
+        Workflow workflow = getWorkflowFromURI(workflowPath);
+        updateWorkflow(workflow, XMLUtil.xmlElementToString(workflow.toXML()), owner);
+    }
+
+	@Override
+	public boolean saveWorkflow(Workflow workflow, String owner)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(workflow, XMLUtil.xmlElementToString(workflow.toXML()), owner);
+	}
+
+    @Override
+    public void addOwnerWorkflow (Workflow workflow, String owner) throws WorkflowAlreadyExistsException,
+    		AiravataAPIInvocationException{
+        addWorkflow(workflow, XMLUtil.xmlElementToString(workflow.toXML()), owner);
+    }
+
+    @Override
+    public void updateOwnerWorkflow (Workflow workflow, String owner) throws AiravataAPIInvocationException {
+        updateWorkflow(workflow, XMLUtil.xmlElementToString(workflow.toXML()), owner);
+    }
+
+    private void addWorkflow(Workflow workflow, String workflowAsString, String owner)
+            throws WorkflowAlreadyExistsException, AiravataAPIInvocationException {
+//        try {
+//            getClient().getRegistryClient().addWorkflow(workflow.getName(), workflowAsString);
+//        } catch (UserWorkflowAlreadyExistsException e) {
+//            throw new WorkflowAlreadyExistsException("Workflow " +
+//                    workflow.getName()
+//                    + " already exists in the system.", e);
+//        } catch (RegException e) {
+//            throw new AiravataAPIInvocationException("An internal error occurred while adding workflow " +
+//                    workflow.getName(), e);
+//        } catch (AiravataConfigurationException e) {
+//            throw new AiravataAPIInvocationException("Error retrieving registry client for workflow " +
+//                    workflow.getName(), e);
+//        }
+
+//        if (owner == null) {
+//            try {
+//                getClient().getRegistryClient().publishWorkflow(workflow.getName());
+//            } catch (RegException e) {
+//                throw new AiravataAPIInvocationException("An internal error occurred while adding workflow " +
+//                        workflow.getName(), e);
+//            } catch (AiravataConfigurationException e) {
+//                throw new AiravataAPIInvocationException("Error retrieving registry client for workflow " +
+//                        workflow.getName(), e);
+//            }
+//        }
+    }
+
+    private void updateWorkflow(Workflow workflow, String workflowAsString, String owner)
+            throws AiravataAPIInvocationException {
+//        try {
+//            getClient().getRegistryClient().updateWorkflow(workflow.getName(), workflowAsString);
+//        } catch (RegException e) {
+//            throw new AiravataAPIInvocationException("An internal error occurred while adding workflow " +
+//                    workflow.getName(), e);
+//        } catch (AiravataConfigurationException e) {
+//            throw new AiravataAPIInvocationException("Error retrieving registry client for workflow " +
+//                    workflow.getName(), e);
+//        }
+//
+//        if (owner == null) {
+//            try {
+//                getClient().getRegistryClient().publishWorkflow(workflow.getName());
+//            } catch (RegException e) {
+//                throw new AiravataAPIInvocationException("An internal error occurred while adding workflow " +
+//                        workflow.getName(), e);
+//            } catch (AiravataConfigurationException e) {
+//                throw new AiravataAPIInvocationException("Error retrieving registry client for workflow " +
+//                        workflow.getName(), e);
+//            }
+//        }
+    }
+
+    // Remove once deprecated methods are removed from the API
+    @Deprecated
+	private boolean saveWorkflow(Workflow workflow, String workflowAsString,String owner)
+			throws AiravataAPIInvocationException {
+//		try {
+//
+//			if (getClient().getRegistryClient().isWorkflowExists(workflow.getName())) {
+//				getClient().getRegistryClient().updateWorkflow(workflow.getName(),workflowAsString);
+//			}else{
+//				getClient().getRegistryClient().addWorkflow(workflow.getName(),workflowAsString);
+//			}
+//			if (owner==null){
+//				getClient().getRegistryClient().publishWorkflow(workflow.getName());
+//			}
+//			return true;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return false;
+	}
+
+	@Override
+	public List<Workflow> getWorkflows(String owner)
+			throws AiravataAPIInvocationException {
+//		try {
+//			List<Workflow> workflows=new ArrayList<Workflow>();
+//			Map<String, String> workflowMap = getClient().getRegistryClient().getWorkflows();
+//			for(String workflowStr:workflowMap.values()){
+//				workflows.add(getWorkflowFromString(workflowStr));
+//			}
+//			return workflows;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public List<String> getWorkflowTemplateIds(String owner)
+			throws AiravataAPIInvocationException {
+//		try {
+//			List<String> workflowList = new ArrayList<String>();
+//			Map<String, String> workflows;
+//			workflows = getClient().getRegistryClient().getWorkflows();
+//			for (String name : workflows.keySet()) {
+//				workflowList.add(name);
+//			}
+//			return workflowList;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public Workflow getWorkflow(String workflowName, String owner)
+			throws AiravataAPIInvocationException {
+		return getWorkflowFromString(getWorkflowAsString(workflowName, owner));
+	}
+
+	@Override
+	public String getWorkflowAsString(String workflowName, String owner)
+			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getWorkflowGraphXML(workflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public boolean deleteWorkflow(String workflowName, String owner)
+			throws AiravataAPIInvocationException {
+//		try {
+//			getClient().getRegistryClient().removeWorkflow(workflowName);
+//			return true;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return false;
+	}
+
+	@Override
+	public boolean saveWorkflow(String workflowAsString)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(workflowAsString, getCurrentUser());
+	}
+
+    @Override
+    public void addWorkflow (String workflowAsString) throws WorkflowAlreadyExistsException,
+            AiravataAPIInvocationException {
+        addOwnerWorkflow(workflowAsString, getCurrentUser());
+    }
+
+    @Override
+    public void updateWorkflow (String workflowAsString) throws AiravataAPIInvocationException {
+        updateOwnerWorkflow(workflowAsString, getCurrentUser());
+    }
+
+	@Override
+	public boolean saveWorkflowAsPublic(String workflowAsString)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(workflowAsString, null);
+	}
+
+    @Override
+    public void addWorkflowAsPublic (String workflowAsString) throws AiravataAPIInvocationException,
+            WorkflowAlreadyExistsException {
+        addOwnerWorkflow (workflowAsString, null);
+    }
+
+    @Override
+    public void updateWorkflowAsPublic (String workflowAsString) throws AiravataAPIInvocationException {
+        updateOwnerWorkflow(workflowAsString, null);
+    }
+
+    @Override
+    public void addWorkflowAsPublic (URI workflowPath) throws AiravataAPIInvocationException,
+            WorkflowAlreadyExistsException {
+        addOwnerWorkflow (getWorkflowFromURI(workflowPath), null);
+    }
+
+    @Override
+    public void updateWorkflowAsPublic (URI workflowPath) throws AiravataAPIInvocationException {
+        updateOwnerWorkflow(getWorkflowFromURI(workflowPath), null);
+    }
+
+	@Override
+	public boolean saveWorkflow(Workflow workflow)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(workflow, getCurrentUser());
+	}
+
+    @Override
+    public void addWorkflow (Workflow workflow) throws WorkflowAlreadyExistsException,
+    		AiravataAPIInvocationException{
+        addOwnerWorkflow(workflow, getCurrentUser());
+    }
+
+    @Override
+    public void updateWorkflow (Workflow workflow) throws AiravataAPIInvocationException {
+        updateOwnerWorkflow(workflow, getCurrentUser());
+    }
+
+    @Override
+    public void addWorkflow (URI workflowPath) throws AiravataAPIInvocationException,
+            WorkflowAlreadyExistsException {
+        addOwnerWorkflow(getWorkflowFromURI(workflowPath), getCurrentUser());
+    }
+
+    @Override
+    public void updateWorkflow (URI workflowPath) throws AiravataAPIInvocationException {
+        updateOwnerWorkflow(getWorkflowFromURI(workflowPath), getCurrentUser());
+    }
+
+	private String getCurrentUser() {
+		return getClient().getCurrentUser();
+	}
+
+	@Override
+	public boolean saveWorkflowAsPublic(Workflow workflow)
+			throws AiravataAPIInvocationException {
+		return saveWorkflow(workflow, null);
+	}
+
+	@Override
+	public List<Workflow> getWorkflows() throws AiravataAPIInvocationException {
+		return getWorkflows(getCurrentUser());
+	}
+
+	@Override
+	public List<String> getWorkflowTemplateIds()
+			throws AiravataAPIInvocationException {
+		return getWorkflowTemplateIds(getCurrentUser());
+	}
+
+	@Override
+	public Workflow getWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		return getWorkflow(workflowName, getCurrentUser());
+	}
+
+	@Override
+	public String getWorkflowAsString(String workflowName)
+			throws AiravataAPIInvocationException {
+		return getWorkflowAsString(workflowName, getCurrentUser());
+	}
+
+	@Override
+	public boolean deleteWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		return deleteWorkflow(workflowName, getCurrentUser());
+	}
+
+	@Override
+	public Workflow getWorkflowFromString(String workflowAsString)
+			throws AiravataAPIInvocationException {
+		try {
+			return new Workflow(workflowAsString);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+    @Override
+    public Workflow getWorkflowFromURI(URI workflowPath) throws AiravataAPIInvocationException {
+        try {
+            return new Workflow(workflowPath);
+        } catch (Exception e) {
+            throw new AiravataAPIInvocationException(e);
+        }
+    }
+
+    @Override
+	public String getWorkflowAsString(Workflow workflow)
+			throws AiravataAPIInvocationException {
+		return XMLUtil.xmlElementToString(workflow.toXML());
+	}
+
+	@Override
+	public List<String> getWorkflowServiceNodeIDs(String templateID) throws AiravataAPIInvocationException{
+        return getWorkflow(templateID).getWorkflowServiceNodeIDs();
+	}
+
+	@Override
+	public boolean isPublishedWorkflowExists(String workflowName)
+			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().isPublishedWorkflowExists(workflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return false;
+	}
+
+	@Override
+	public void publishWorkflow(String workflowName, String publishWorkflowName)
+			throws AiravataAPIInvocationException {
+//		try {
+//			getClient().getRegistryClient().publishWorkflow(workflowName, publishWorkflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+	}
+
+	@Override
+	public void publishWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+//		try {
+//			getClient().getRegistryClient().publishWorkflow(workflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+	}
+
+	@Override
+	public String getPublishedWorkflowGraphXML(String workflowName)
+			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getPublishedWorkflowGraphXML(workflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+	
+	@Override
+	public Workflow getPublishedWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		return getWorkflowFromString(getPublishedWorkflowGraphXML(workflowName));
+	}
+
+	@Override
+	public List<String> getPublishedWorkflowNames()
+			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getPublishedWorkflowNames();
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public Map<String, Workflow> getPublishedWorkflows()
+			throws AiravataAPIInvocationException {
+//		try {
+//			Map<String, Workflow> workflows=new HashMap<String, Workflow>();
+//			Map<String, String> publishedWorkflows = getClient().getRegistryClient().getPublishedWorkflows();
+//			for (String name : publishedWorkflows.keySet()) {
+//				workflows.put(name, getWorkflowFromString(publishedWorkflows.get(name)));
+//			}
+//			return workflows;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public void removePublishedWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+//		try {
+//			getClient().getRegistryClient().removePublishedWorkflow(workflowName);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+	}
+
+	@Override
+	public List<WorkflowInput> getWorkflowInputs(String workflowName) throws AiravataAPIInvocationException {
+		try {
+			return getWorkflow(workflowName).getWorkflowInputs();
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public List<WorkflowInput> getWorkflowInputs(WorkflowData workflowData) throws AiravataAPIInvocationException {
+//		try {
+//			if (workflowData.isPublished()){
+//				return getWorkflowFromString(getClient().getRegistryClient().getPublishedWorkflowGraphXML(workflowData.getName())).getWorkflowInputs();
+//			}else{
+//				return getWorkflowInputs(workflowData.getName());
+//			}
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+	@Override
+	public List<WorkflowData> getAllWorkflows() throws AiravataAPIInvocationException {
+//		List<WorkflowData> list = new ArrayList<WorkflowData>();
+//		List<String> workflowTemplateIds = getWorkflowTemplateIds();
+//		try {
+//			for (String id : workflowTemplateIds) {
+//				list.add(new WorkflowData(id,null,false));
+//			}
+//			List<String> publishedWorkflowNames = getClient().getRegistryClient().getPublishedWorkflowNames();
+//			for (String id : publishedWorkflowNames) {
+//				list.add(new WorkflowData(id,null,false));
+//			}
+//			return list;
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+        return null;
+	}
+
+    @Override
+    public boolean isWorkflowExists(String workflowName) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().isWorkflowExists(workflowName);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+        return false;
+    }
+
+    @Override
+    public void updateWorkflow(String workflowName, String workflowGraphXml) throws AiravataAPIInvocationException {
+//        try {
+//            getClient().getRegistryClient().updateWorkflow(workflowName, workflowGraphXml);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+    @Override
+    public void removeWorkflow(String workflowName) throws AiravataAPIInvocationException {
+//        try {
+//            getClient().getRegistryClient().removeWorkflow(workflowName);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
new file mode 100644
index 0000000..98e24ea
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * 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.client.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.airavata.client.api.OutputDataSettings;
+import org.apache.airavata.client.api.WorkflowOutputDataSettings;
+
+public class WorkflowOutputDataSettingsImpl implements
+		WorkflowOutputDataSettings {
+	private List<OutputDataSettings> outputDataSettingsList;
+	
+	private List<OutputDataSettings> getOutputDataSettingsListArray(){
+		if (outputDataSettingsList==null){
+			outputDataSettingsList=new ArrayList<OutputDataSettings>();
+		}
+		return outputDataSettingsList;
+	}
+	
+	@Override
+	public OutputDataSettings[] getOutputDataSettingsList() {
+		return getOutputDataSettingsListArray().toArray(new OutputDataSettings[]{});
+	}
+
+	@Override
+	public OutputDataSettings addNewOutputDataSettings(String nodeId,
+			String outputDataDirectory, String dataRegistryURL,
+			Boolean isDataPersistent) {
+		addNewOutputDataSettings(new ApplicationOutputDataSettingsImpl(nodeId, outputDataDirectory, dataRegistryURL, isDataPersistent));
+		return getOutputDataSettingsListArray().get(getOutputDataSettingsListArray().size()-1);
+	}
+
+	@Override
+	public void addNewOutputDataSettings(
+			OutputDataSettings... outputDataSettings) {
+		getOutputDataSettingsListArray().addAll(Arrays.asList(outputDataSettings));
+	}
+
+	@Override
+	public void removeOutputDataSettings(OutputDataSettings outputDataSettings) {
+		if (getOutputDataSettingsListArray().contains(outputDataSettings)){
+			getOutputDataSettingsListArray().remove(outputDataSettings);
+		}
+	}
+
+	@Override
+	public void removeAllOutputDataSettings() {
+		getOutputDataSettingsListArray().clear();
+	}
+
+	@Override
+	public OutputDataSettings addNewOutputDataSettings(String nodeId) {
+		return addNewOutputDataSettings(nodeId,null,null,null);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
new file mode 100644
index 0000000..a439066
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
@@ -0,0 +1,97 @@
+/*
+ *
+ * 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.client.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.airavata.client.api.NodeSettings;
+import org.apache.airavata.client.api.WorkflowSchedulingSettings;
+
+public class WorkflowSchedulingSettingsImpl implements
+		WorkflowSchedulingSettings {
+
+	private List<NodeSettings> nodeSettingsList;
+	
+	private List<NodeSettings> getNodeSettingsListArray(){
+		if (nodeSettingsList==null){
+			nodeSettingsList=new ArrayList<NodeSettings>();
+		}
+		return nodeSettingsList;
+	}
+	
+	@Override
+	public NodeSettings[] getNodeSettingsList() {
+		return getNodeSettingsListArray().toArray(new NodeSettings[]{});
+	}
+
+	@Override
+	public NodeSettings addNewNodeSettings(String nodeId) {
+		getNodeSettingsListArray().add(new NodeSettingsImpl(nodeId));
+		return getNodeSettingsListArray().get(getNodeSettingsListArray().size()-1);
+	}
+
+	@Override
+	public NodeSettings addNewNodeSettings(String nodeId, String serviceId,
+			int cpuCount, int nodeCount) {
+		NodeSettingsImpl nodeSettings = new NodeSettingsImpl(nodeId, serviceId);
+		nodeSettings.getHPCSettings().setCPUCount(cpuCount);
+		nodeSettings.getHPCSettings().setNodeCount(nodeCount);
+		addNewNodeSettings(nodeSettings);
+		return nodeSettings;
+	}
+
+	@Override
+	public void addNewNodeSettings(NodeSettings... newNodeSettingsList) {
+		getNodeSettingsListArray().addAll(Arrays.asList(newNodeSettingsList));
+	}
+
+	@Override
+	public boolean hasNodeSettings(String nodeId) {
+		return getNodeSettings(nodeId)!=null;
+	}
+
+	@Override
+	public NodeSettings getNodeSettings(String nodeId) {
+		for(NodeSettings nodeSettings:getNodeSettingsList()){
+			if (nodeSettings.getNodeId().equals(nodeId)){
+				return nodeSettings;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public void removeNodeSettings(String nodeId) {
+		if (hasNodeSettings(nodeId)){
+			getNodeSettingsListArray().remove(getNodeSettings(nodeId));
+		}
+
+	}
+
+	@Override
+	public void removeAllNodeSettings() {
+		getNodeSettingsListArray().clear();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/NameValue.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/NameValue.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/NameValue.java
new file mode 100644
index 0000000..5faeb10
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/NameValue.java
@@ -0,0 +1,559 @@
+/*
+ *
+ * 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.client.stub.interpretor;
+
+
+// http://silktree.cs.indiana.edu:18080/axis2/services/WorkflowInterpretor
+public class NameValue implements org.apache.axis2.databinding.ADBBean {
+    /*
+     * This type was generated from the piece of schema that had name = NameValue Namespace URI =
+     * http://interpretor.xbaya.airavata.apache.org Namespace Prefix = ns1
+     */
+
+    private static String generatePrefix(String namespace) {
+        if (namespace.equals("http://interpretor.xbaya.airavata.apache.org")) {
+            return "ns1";
+        }
+        return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+    }
+
+    /**
+     * field for Name
+     */
+
+    protected String localName;
+
+    /*
+     * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will be
+     * used to determine whether to include this field in the serialized XML
+     */
+    protected boolean localNameTracker = false;
+
+    /**
+     * Auto generated getter method
+     * 
+     * @return java.lang.String
+     */
+    public String getName() {
+        return localName;
+    }
+
+    /**
+     * Auto generated setter method
+     * 
+     * @param param
+     *            Name
+     */
+    public void setName(String param) {
+
+        if (param != null) {
+            // update the setting tracker
+            localNameTracker = true;
+        } else {
+            localNameTracker = true;
+
+        }
+
+        this.localName = param;
+
+    }
+
+    /**
+     * field for Value
+     */
+
+    protected String localValue;
+
+    /*
+     * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will be
+     * used to determine whether to include this field in the serialized XML
+     */
+    protected boolean localValueTracker = false;
+
+    /**
+     * Auto generated getter method
+     * 
+     * @return java.lang.String
+     */
+    public String getValue() {
+        return localValue;
+    }
+
+    /**
+     * Auto generated setter method
+     * 
+     * @param param
+     *            Value
+     */
+    public void setValue(String param) {
+
+        if (param != null) {
+            // update the setting tracker
+            localValueTracker = true;
+        } else {
+            localValueTracker = true;
+
+        }
+
+        this.localValue = param;
+
+    }
+
+    /**
+     * isReaderMTOMAware
+     * 
+     * @return true if the reader supports MTOM
+     */
+    public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+        boolean isReaderMTOMAware = false;
+
+        try {
+            isReaderMTOMAware = Boolean.TRUE.equals(reader
+                    .getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+        } catch (IllegalArgumentException e) {
+            isReaderMTOMAware = false;
+        }
+        return isReaderMTOMAware;
+    }
+
+    /**
+     * 
+     * @param parentQName
+     * @param factory
+     * @return org.apache.axiom.om.OMElement
+     */
+    public org.apache.axiom.om.OMElement getOMElement(final javax.xml.namespace.QName parentQName,
+            final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException {
+
+        org.apache.axiom.om.OMDataSource dataSource = new org.apache.axis2.databinding.ADBDataSource(this, parentQName) {
+
+            public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                    throws javax.xml.stream.XMLStreamException {
+                NameValue.this.serialize(parentQName, factory, xmlWriter);
+            }
+        };
+        return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(parentQName, factory, dataSource);
+
+    }
+
+    public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+            org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+            throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+        serialize(parentQName, factory, xmlWriter, false);
+    }
+
+    public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+            org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter, boolean serializeType)
+            throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+
+        String prefix = null;
+        String namespace = null;
+
+        prefix = parentQName.getPrefix();
+        namespace = parentQName.getNamespaceURI();
+
+        if ((namespace != null) && (namespace.trim().length() > 0)) {
+            String writerPrefix = xmlWriter.getPrefix(namespace);
+            if (writerPrefix != null) {
+                xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+            } else {
+                if (prefix == null) {
+                    prefix = generatePrefix(namespace);
+                }
+
+                xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                xmlWriter.writeNamespace(prefix, namespace);
+                xmlWriter.setPrefix(prefix, namespace);
+            }
+        } else {
+            xmlWriter.writeStartElement(parentQName.getLocalPart());
+        }
+
+        if (serializeType) {
+
+            String namespacePrefix = registerPrefix(xmlWriter, "http://interpretor.xbaya.airavata.apache.org");
+            if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)) {
+                writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type", namespacePrefix
+                        + ":NameValue", xmlWriter);
+            } else {
+                writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type", "NameValue", xmlWriter);
+            }
+
+        }
+        if (localNameTracker) {
+            namespace = "";
+            if (!namespace.equals("")) {
+                prefix = xmlWriter.getPrefix(namespace);
+
+                if (prefix == null) {
+                    prefix = generatePrefix(namespace);
+
+                    xmlWriter.writeStartElement(prefix, "name", namespace);
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+
+                } else {
+                    xmlWriter.writeStartElement(namespace, "name");
+                }
+
+            } else {
+                xmlWriter.writeStartElement("name");
+            }
+
+            if (localName == null) {
+                // write the nil attribute
+
+                writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+            } else {
+
+                xmlWriter.writeCharacters(localName);
+
+            }
+
+            xmlWriter.writeEndElement();
+        }
+        if (localValueTracker) {
+            namespace = "";
+            if (!namespace.equals("")) {
+                prefix = xmlWriter.getPrefix(namespace);
+
+                if (prefix == null) {
+                    prefix = generatePrefix(namespace);
+
+                    xmlWriter.writeStartElement(prefix, "value", namespace);
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+
+                } else {
+                    xmlWriter.writeStartElement(namespace, "value");
+                }
+
+            } else {
+                xmlWriter.writeStartElement("value");
+            }
+
+            if (localValue == null) {
+                // write the nil attribute
+
+                writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+            } else {
+
+                xmlWriter.writeCharacters(localValue);
+
+            }
+
+            xmlWriter.writeEndElement();
+        }
+        xmlWriter.writeEndElement();
+
+    }
+
+    /**
+     * Util method to write an attribute with the ns prefix
+     */
+    private void writeAttribute(String prefix, String namespace, String attName, String attValue,
+            javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+        if (xmlWriter.getPrefix(namespace) == null) {
+            xmlWriter.writeNamespace(prefix, namespace);
+            xmlWriter.setPrefix(prefix, namespace);
+
+        }
+
+        xmlWriter.writeAttribute(namespace, attName, attValue);
+
+    }
+
+    /**
+     * Util method to write an attribute without the ns prefix
+     */
+    private void writeAttribute(String namespace, String attName, String attValue,
+            javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+        if (namespace.equals("")) {
+            xmlWriter.writeAttribute(attName, attValue);
+        } else {
+            registerPrefix(xmlWriter, namespace);
+            xmlWriter.writeAttribute(namespace, attName, attValue);
+        }
+    }
+
+    /**
+     * Util method to write an attribute without the ns prefix
+     */
+    private void writeQNameAttribute(String namespace, String attName, javax.xml.namespace.QName qname,
+            javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+        String attributeNamespace = qname.getNamespaceURI();
+        String attributePrefix = xmlWriter.getPrefix(attributeNamespace);
+        if (attributePrefix == null) {
+            attributePrefix = registerPrefix(xmlWriter, attributeNamespace);
+        }
+        String attributeValue;
+        if (attributePrefix.trim().length() > 0) {
+            attributeValue = attributePrefix + ":" + qname.getLocalPart();
+        } else {
+            attributeValue = qname.getLocalPart();
+        }
+
+        if (namespace.equals("")) {
+            xmlWriter.writeAttribute(attName, attributeValue);
+        } else {
+            registerPrefix(xmlWriter, namespace);
+            xmlWriter.writeAttribute(namespace, attName, attributeValue);
+        }
+    }
+
+    /**
+     * method to handle Qnames
+     */
+
+    private void writeQName(javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter)
+            throws javax.xml.stream.XMLStreamException {
+        String namespaceURI = qname.getNamespaceURI();
+        if (namespaceURI != null) {
+            String prefix = xmlWriter.getPrefix(namespaceURI);
+            if (prefix == null) {
+                prefix = generatePrefix(namespaceURI);
+                xmlWriter.writeNamespace(prefix, namespaceURI);
+                xmlWriter.setPrefix(prefix, namespaceURI);
+            }
+
+            if (prefix.trim().length() > 0) {
+                xmlWriter.writeCharacters(prefix + ":"
+                        + org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+            } else {
+                // i.e this is the default namespace
+                xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+            }
+
+        } else {
+            xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+        }
+    }
+
+    private void writeQNames(javax.xml.namespace.QName[] qnames, javax.xml.stream.XMLStreamWriter xmlWriter)
+            throws javax.xml.stream.XMLStreamException {
+
+        if (qnames != null) {
+            // we have to store this data until last moment since it is not
+            // possible to write any
+            // namespace data after writing the charactor data
+            StringBuffer stringToWrite = new StringBuffer();
+            String namespaceURI = null;
+            String prefix = null;
+
+            for (int i = 0; i < qnames.length; i++) {
+                if (i > 0) {
+                    stringToWrite.append(" ");
+                }
+                namespaceURI = qnames[i].getNamespaceURI();
+                if (namespaceURI != null) {
+                    prefix = xmlWriter.getPrefix(namespaceURI);
+                    if ((prefix == null) || (prefix.length() == 0)) {
+                        prefix = generatePrefix(namespaceURI);
+                        xmlWriter.writeNamespace(prefix, namespaceURI);
+                        xmlWriter.setPrefix(prefix, namespaceURI);
+                    }
+
+                    if (prefix.trim().length() > 0) {
+                        stringToWrite.append(prefix).append(":")
+                                .append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                    } else {
+                        stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil
+                                .convertToString(qnames[i]));
+                    }
+                } else {
+                    stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                }
+            }
+            xmlWriter.writeCharacters(stringToWrite.toString());
+        }
+
+    }
+
+    /**
+     * Register a namespace prefix
+     */
+    private String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, String namespace)
+            throws javax.xml.stream.XMLStreamException {
+        String prefix = xmlWriter.getPrefix(namespace);
+
+        if (prefix == null) {
+            prefix = generatePrefix(namespace);
+
+            while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+            }
+
+            xmlWriter.writeNamespace(prefix, namespace);
+            xmlWriter.setPrefix(prefix, namespace);
+        }
+
+        return prefix;
+    }
+
+    /**
+     * databinding method to get an XML representation of this object
+     * 
+     */
+    public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName)
+            throws org.apache.axis2.databinding.ADBException {
+
+        java.util.ArrayList elementList = new java.util.ArrayList();
+        java.util.ArrayList attribList = new java.util.ArrayList();
+
+        if (localNameTracker) {
+            elementList.add(new javax.xml.namespace.QName("", "name"));
+
+            elementList.add(localName == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                    .convertToString(localName));
+        }
+        if (localValueTracker) {
+            elementList.add(new javax.xml.namespace.QName("", "value"));
+
+            elementList.add(localValue == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                    .convertToString(localValue));
+        }
+
+        return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(),
+                attribList.toArray());
+
+    }
+
+    /**
+     * Factory class that keeps the parse method
+     */
+    public static class Factory {
+
+        /**
+         * static method to create the object Precondition: If this object is an element, the current or next start
+         * element starts this object and any intervening reader events are ignorable If this object is not an element,
+         * it is a complex type and the reader is at the event just after the outer start element Postcondition: If this
+         * object is an element, the reader is positioned at its end element If this object is a complex type, the
+         * reader is positioned at the end element of its outer element
+         */
+        public static NameValue parse(javax.xml.stream.XMLStreamReader reader) throws Exception {
+            NameValue object = new NameValue();
+
+            String nillableValue = null;
+            try {
+
+                while (!reader.isStartElement() && !reader.isEndElement())
+                    reader.next();
+
+                if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type") != null) {
+                    String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type");
+                    if (fullTypeName != null) {
+                        String nsPrefix = null;
+                        if (fullTypeName.indexOf(":") > -1) {
+                            nsPrefix = fullTypeName.substring(0, fullTypeName.indexOf(":"));
+                        }
+                        nsPrefix = nsPrefix == null ? "" : nsPrefix;
+
+                        String type = fullTypeName.substring(fullTypeName.indexOf(":") + 1);
+
+                        if (!"NameValue".equals(type)) {
+                            // find namespace for the prefix
+                            String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                            return (NameValue) WorkflowInterpretorStub.ExtensionMapper.getTypeObject(nsUri, type,
+                                    reader);
+                        }
+
+                    }
+
+                }
+
+                new java.util.Vector();
+
+                reader.next();
+
+                while (!reader.isStartElement() && !reader.isEndElement())
+                    reader.next();
+
+                if (reader.isStartElement() && new javax.xml.namespace.QName("", "name").equals(reader.getName())) {
+
+                    nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                    if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                        String content = reader.getElementText();
+
+                        object.setName(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));
+
+                    } else {
+
+                        reader.getElementText(); // throw away text nodes if
+                                                 // any.
+                    }
+
+                    reader.next();
+
+                } // End of if for expected property start element
+
+                else {
+
+                }
+
+                while (!reader.isStartElement() && !reader.isEndElement())
+                    reader.next();
+
+                if (reader.isStartElement() && new javax.xml.namespace.QName("", "value").equals(reader.getName())) {
+
+                    nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                    if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                        String content = reader.getElementText();
+
+                        object.setValue(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));
+
+                    } else {
+
+                        reader.getElementText(); // throw away text nodes if
+                                                 // any.
+                    }
+
+                    reader.next();
+
+                } // End of if for expected property start element
+
+                else {
+
+                }
+
+                while (!reader.isStartElement() && !reader.isEndElement())
+                    reader.next();
+
+                if (reader.isStartElement())
+                    // A start element we are not expecting indicates a
+                    // trailing invalid property
+                    throw new org.apache.axis2.databinding.ADBException("Unexpected subelement "
+                            + reader.getLocalName());
+
+            } catch (javax.xml.stream.XMLStreamException e) {
+                throw new Exception(e);
+            }
+
+            return object;
+        }
+
+    }// end of factory class
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorCallbackHandler.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorCallbackHandler.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorCallbackHandler.java
new file mode 100644
index 0000000..bf0a4ed
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorCallbackHandler.java
@@ -0,0 +1,72 @@
+/*
+ *
+ * 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.client.stub.interpretor;
+
+/**
+ * WorkflowInterpretorCallbackHandler Callback class, Users can extend this class and implement their own receiveResult
+ * and receiveError methods.
+ */
+public abstract class WorkflowInterpretorCallbackHandler {
+
+    protected Object clientData;
+
+    /**
+     * User can pass in any object that needs to be accessed once the NonBlocking Web service call is finished and
+     * appropriate method of this CallBack is called.
+     * 
+     * @param clientData
+     *            Object mechanism by which the user can pass in user data that will be avilable at the time this
+     *            callback is called.
+     */
+    public WorkflowInterpretorCallbackHandler(Object clientData) {
+        this.clientData = clientData;
+    }
+
+    /**
+     * Please use this constructor if you don't want to set any clientData
+     */
+    public WorkflowInterpretorCallbackHandler() {
+        this.clientData = null;
+    }
+
+    /**
+     * Get the client data
+     */
+
+    public Object getClientData() {
+        return clientData;
+    }
+
+    /**
+     * auto generated Axis2 call back method for launchWorkflow method override this method for handling normal response
+     * from launchWorkflow operation
+     */
+    public void receiveResultlaunchWorkflow(java.lang.String result) {
+    }
+
+    /**
+     * auto generated Axis2 Error handler override this method for handling error response from launchWorkflow operation
+     */
+    public void receiveErrorlaunchWorkflow(java.lang.Exception e) {
+    }
+
+}


[3/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreator.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreator.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreator.java
new file mode 100644
index 0000000..a2be524
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreator.java
@@ -0,0 +1,898 @@
+///*
+// *
+// * 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.client.tools;
+//
+//import java.io.File;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.UUID;
+//
+//import org.apache.airavata.client.api.AiravataAPI;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//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.schemas.gfac.*;
+//
+//public class DocumentCreator {
+//
+//    private AiravataAPI airavataAPI = null;
+//    private String trestleshpcHostAddress = "trestles.sdsc.edu";
+//    private String lonestarHostAddress = "lonestar.tacc.utexas.edu";
+//    private String stampedeHostAddress = "stampede.tacc.xsede.org";
+//    private String gridftpAddress = "gsiftp://trestles-dm1.sdsc.edu:2811";
+//    private String gramAddress = "trestles-login1.sdsc.edu:2119/jobmanager-pbstest2";
+//    private String bigRed2HostAddress = "bigred2.uits.iu.edu";
+//
+//
+//    public DocumentCreator(AiravataAPI airavataAPI) {
+//        this.airavataAPI = airavataAPI;
+//    }
+//
+//    public void createLocalHostDocs() {
+//        HostDescription descriptor = new HostDescription();
+//        descriptor.getType().setHostName("localhost");
+//        descriptor.getType().setHostAddress("127.0.0.1");
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(descriptor);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        String serviceName = "SimpleEcho0";
+//        ServiceDescription serviceDescription = new ServiceDescription();
+//        List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+//        serviceDescription.getType().setName(serviceName);
+//        serviceDescription.getType().setDescription("Echo service");
+//        // Creating input parameters
+//        InputParameterType parameter = InputParameterType.Factory.newInstance();
+//        parameter.setParameterName("echo_input");
+//        parameter.setParameterDescription("echo input");
+//        ParameterType parameterType = parameter.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//        inputParameters.add(parameter);
+//
+//        // Creating output parameters
+//        OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+//        outputParameter.setParameterName("echo_output");
+//        outputParameter.setParameterDescription("Echo output");
+//        ParameterType outputParaType = outputParameter.addNewParameterType();
+//        outputParaType.setType(DataType.STRING);
+//        outputParaType.setName("String");
+//        outputParameters.add(outputParameter);
+//
+//        // Setting input and output parameters to serviceDescriptor
+//        serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[]{}));
+//        serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[]{}));
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+//        ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription
+//                .getType();
+//        applicationDeploymentDescriptionType.addNewApplicationName().setStringValue("EchoApplication");
+//        applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+//        applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "localhost", applicationDeploymentDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//
+//    public void createSSHHostDocs() {
+//        HostDescription descriptor = new HostDescription(SSHHostType.type);
+//        descriptor.getType().setHostName("gw111.iu.xsede.org");
+//        descriptor.getType().setHostAddress("gw111.iu.xsede.org");
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(descriptor);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        String serviceName = "SSHEcho1";
+//        ServiceDescription serviceDescription = new ServiceDescription();
+//        List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+//        serviceDescription.getType().setName(serviceName);
+//        serviceDescription.getType().setDescription("Echo service");
+//        // Creating input parameters
+//        InputParameterType parameter = InputParameterType.Factory.newInstance();
+//        parameter.setParameterName("echo_input");
+//        parameter.setParameterDescription("echo input");
+//        ParameterType parameterType = parameter.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//        inputParameters.add(parameter);
+//
+//        // Creating output parameters
+//        OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+//        outputParameter.setParameterName("echo_output");
+//        outputParameter.setParameterDescription("Echo output");
+//        ParameterType outputParaType = outputParameter.addNewParameterType();
+//        outputParaType.setType(DataType.STRING);
+//        outputParaType.setName("String");
+//        outputParameters.add(outputParameter);
+//
+//        // Setting input and output parameters to serviceDescriptor
+//        serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[]{}));
+//        serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[]{}));
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+//        ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription
+//                .getType();
+//        applicationDeploymentDescriptionType.addNewApplicationName().setStringValue("SSHEchoApplication");
+//        applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+//        applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "gw111.iu.xsede.org", applicationDeploymentDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//    }
+//
+//    public void createGramDocs() {
+//        /*
+//           creating host descriptor for gram
+//        */
+//        HostDescription host = new HostDescription(GlobusHostType.type);
+//        host.getType().setHostAddress(trestleshpcHostAddress);
+//        host.getType().setHostName(trestleshpcHostAddress);
+//        ((GlobusHostType) host.getType()).setGlobusGateKeeperEndPointArray(new String[]{gramAddress});
+//        ((GlobusHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "SimpleEcho1";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue("EchoLocal");
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("sds128");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String tempDir = "/home/ogce/scratch";
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setMaxMemory(10);
+//
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//    public void createPBSDocsForOGCE() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress(trestleshpcHostAddress);
+//        host.getType().setHostName(trestleshpcHostAddress);
+//        ((GsisshHostType) host.getType()).setPort(22);
+//        ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "SimpleEcho2";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue("EchoLocal");
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("sds128");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//        app.setMaxWallTime(10);
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String tempDir = "/oasis/scratch/trestles/ogce/temp_project/";
+//
+//
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//         /*
+//        * Service Description creation and saving
+//        */
+//        String wrfserviceName = "WRF";
+//        ServiceDescription wrfServ = new ServiceDescription();
+//        wrfServ.getType().setName(wrfserviceName);
+//
+//        List<InputParameterType> wrfinputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> wrfoutputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType wrfinput1 = InputParameterType.Factory.newInstance();
+//        wrfinput1.setParameterName("WRF_Namelist");
+//        ParameterType wrfparameterType1 = wrfinput1.addNewParameterType();
+//        wrfparameterType1.setType(DataType.URI);
+//        wrfparameterType1.setName("URI");
+//
+//        InputParameterType wrfinput2 = InputParameterType.Factory.newInstance();
+//        wrfinput2.setParameterName("WRF_Input_File");
+//        ParameterType wrfparameterType2 = wrfinput2.addNewParameterType();
+//        wrfparameterType2.setType(DataType.URI);
+//        wrfparameterType2.setName("URI");
+//
+//        InputParameterType wrfinput3 = InputParameterType.Factory.newInstance();
+//        wrfinput3.setParameterName("WRF_Boundary_File");
+//        ParameterType wrfparameterType3 = wrfinput3.addNewParameterType();
+//        wrfparameterType3.setType(DataType.URI);
+//        wrfparameterType3.setName("URI");
+//
+//        OutputParameterType wrfOutput1 = OutputParameterType.Factory.newInstance();
+//        wrfOutput1.setParameterName("WRF_Output");
+//        ParameterType wrfoutparameterType1 = wrfOutput1.addNewParameterType();
+//        wrfoutparameterType1.setType(DataType.URI);
+//        wrfoutparameterType1.setName("URI");
+//
+//        OutputParameterType wrfOutput2 = OutputParameterType.Factory.newInstance();
+//        wrfOutput2.setParameterName("WRF_Execution_Log");
+//        ParameterType wrfoutparameterType2 = wrfOutput2.addNewParameterType();
+//        wrfoutparameterType2.setType(DataType.URI);
+//        wrfoutparameterType2.setName("URI");
+//
+//        wrfinputList.add(wrfinput1);
+//        wrfinputList.add(wrfinput2);
+//        wrfinputList.add(wrfinput3);
+//        wrfoutputList.add(wrfOutput1);
+//        wrfoutputList.add(wrfOutput2);
+//
+//        InputParameterType[] wrfinputParamList = wrfinputList.toArray(new InputParameterType[wrfinputList.size()]);
+//        OutputParameterType[] wrfoutputParamList = wrfoutputList.toArray(new OutputParameterType[wrfoutputList.size()]);
+//
+//        wrfServ.getType().setInputParametersArray(wrfinputParamList);
+//        wrfServ.getType().setOutputParametersArray(wrfoutputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(wrfServ);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//            Application descriptor creation and saving
+//         */
+//        ApplicationDescription wrfAppDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType wrfApp = (HpcApplicationDeploymentType) wrfAppDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName wrfName = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        wrfName.setStringValue("WRF");
+//        wrfApp.setApplicationName(wrfName);
+//        ProjectAccountType wrfprojectAccountType = wrfApp.addNewProjectAccount();
+//        wrfprojectAccountType.setProjectAccountNumber("sds128");
+//
+//        QueueType wrfQueueType = wrfApp.addNewQueue();
+//        wrfQueueType.setQueueName("normal");
+//
+//        wrfApp.setCpuCount(32);
+//        wrfApp.setJobType(JobTypeType.MPI);
+//        wrfApp.setNodeCount(2);
+//        wrfApp.setProcessorsPerNode(1);
+//        wrfApp.setMaxWallTime(30);
+//        /*
+//           * Use bat file if it is compiled on Windows
+//           */
+//        wrfApp.setExecutableLocation("/home/ogce/apps/wrf_wrapper.sh");
+//
+//        /*
+//           * Default tmp location
+//           */
+//        String wrfTempDir = "/oasis/scratch/trestles/ogce/temp_project/";
+//
+//        wrfApp.setScratchWorkingDirectory(wrfTempDir);
+//        wrfApp.setInstalledParentPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(wrfserviceName, trestleshpcHostAddress, wrfAppDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//
+//    public void createSlurmDocs() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress(stampedeHostAddress);
+//        host.getType().setHostName(stampedeHostAddress);
+//        ((GsisshHostType) host.getType()).setJobManager("slurm");
+//        ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
+//        ((GsisshHostType) host.getType()).setPort(2222);
+//        ((GsisshHostType) host.getType()).setMonitorMode("push");
+//
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "SimpleEcho3";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//           Application descriptor creation and saving
+//        */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue("EchoLocal");
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("TG-STA110014S");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//        app.setMaxWallTime(10);
+//        /*
+//        * Use bat file if it is compiled on Windows
+//        */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//        * Default tmp location
+//        */
+//        String tempDir = "/home1/01437/ogce";
+//
+//
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/usr/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, stampedeHostAddress, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//    public void createSGEDocs() {
+//        HostDescription host = new HostDescription(GsisshHostType.type);
+//        host.getType().setHostAddress(lonestarHostAddress);
+//        host.getType().setHostName(lonestarHostAddress);
+//        ((GsisshHostType) host.getType()).setJobManager("sge");
+//        ((GsisshHostType) host.getType()).setInstalledPath("/opt/sge6.2/bin/lx24-amd64/");
+//        ((GsisshHostType) host.getType()).setPort(22);
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * Service Description creation and saving
+//        */
+//        String serviceName = "SimpleEcho4";
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName(serviceName);
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        ParameterType parameterType = input.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        ParameterType parameterType1 = output.addNewParameterType();
+//        parameterType1.setType(DataType.STRING);
+//        parameterType1.setName("String");
+//
+//        inputList.add(input);
+//        outputList.add(output);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+//        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//
+//        /*
+//           Application descriptor creation and saving
+//        */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue("EchoLocal");
+//        app.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("TG-STA110014S");
+//
+//        QueueType queueType = app.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//        app.setMaxWallTime(10);
+//        /*
+//        * Use bat file if it is compiled on Windows
+//        */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//        * Default tmp location
+//        */
+//        String tempDir = "/home1/01437/ogce";
+//
+//
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setInstalledParentPath("/opt/sge6.2/bin/lx24-amd64/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, lonestarHostAddress, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//    }
+//
+//    public void createEchoHostDocs() {
+//        String serviceName = "Echo";
+//        ServiceDescription serviceDescription = new ServiceDescription();
+//        List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+//        List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+//        serviceDescription.getType().setName(serviceName);
+//        serviceDescription.getType().setDescription("Echo service");
+//        // Creating input parameters
+//        InputParameterType parameter = InputParameterType.Factory.newInstance();
+//        parameter.setParameterName("echo_input");
+//        parameter.setParameterDescription("echo input");
+//        ParameterType parameterType = parameter.addNewParameterType();
+//        parameterType.setType(DataType.STRING);
+//        parameterType.setName("String");
+//        inputParameters.add(parameter);
+//
+//        // Creating output parameters
+//        OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+//        outputParameter.setParameterName("echo_output");
+//        outputParameter.setParameterDescription("Echo output");
+//        ParameterType outputParaType = outputParameter.addNewParameterType();
+//        outputParaType.setType(DataType.STRING);
+//        outputParaType.setName("String");
+//        outputParameters.add(outputParameter);
+//
+//        // Setting input and output parameters to serviceDescriptor
+//        serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[]{}));
+//        serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[]{}));
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//        // Localhost
+//        ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+//        ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription.getType();
+//        applicationDeploymentDescriptionType.addNewApplicationName().setStringValue(serviceName);
+//        applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+//        applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "localhost", applicationDeploymentDescription);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//        // Stampede
+//        /*
+//         * Application descriptor creation and saving
+//		 */
+//        ApplicationDescription appDesc1 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app1 = (HpcApplicationDeploymentType) appDesc1.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue(serviceName);
+//        app1.setApplicationName(name);
+//        ProjectAccountType projectAccountType = app1.addNewProjectAccount();
+//        projectAccountType.setProjectAccountNumber("TG-STA110014S");
+//
+//        QueueType queueType = app1.addNewQueue();
+//        queueType.setQueueName("normal");
+//
+//        app1.setCpuCount(1);
+//        app1.setJobType(JobTypeType.SERIAL);
+//        app1.setNodeCount(1);
+//        app1.setProcessorsPerNode(1);
+//        app1.setMaxWallTime(10);
+//		/*
+//		 * Use bat file if it is compiled on Windows
+//		 */
+//        app1.setExecutableLocation("/bin/echo");
+//
+//		/*
+//		 * Default tmp location
+//		 */
+//        String tempDir = "/home1/01437/ogce";
+//
+//        app1.setScratchWorkingDirectory(tempDir);
+//        app1.setInstalledParentPath("/usr/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, stampedeHostAddress, appDesc1);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//        // Trestles
+//		/*
+//		 * Application descriptor creation and saving
+//		 */
+//        ApplicationDescription appDesc2 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app2 = (HpcApplicationDeploymentType) appDesc2.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name2 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name2.setStringValue(serviceName);
+//        app2.setApplicationName(name);
+//        ProjectAccountType projectAccountType2 = app2.addNewProjectAccount();
+//        projectAccountType2.setProjectAccountNumber("sds128");
+//
+//        QueueType queueType2 = app2.addNewQueue();
+//        queueType2.setQueueName("normal");
+//
+//        app2.setCpuCount(1);
+//        app2.setJobType(JobTypeType.SERIAL);
+//        app2.setNodeCount(1);
+//        app2.setProcessorsPerNode(1);
+//        app2.setMaxWallTime(10);
+//		/*
+//		 * Use bat file if it is compiled on Windows
+//		 */
+//        app2.setExecutableLocation("/bin/echo");
+//
+//		/*
+//		 * Default tmp location
+//		 */
+//        String tempDir2 = "/home/ogce/scratch";
+//
+//        app2.setScratchWorkingDirectory(tempDir2);
+//        app2.setInstalledParentPath("/opt/torque/bin/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc2);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//        // Lonestar
+//		/*
+//		 * Application descriptor creation and saving
+//		 */
+//        ApplicationDescription appDesc3 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app3 = (HpcApplicationDeploymentType) appDesc3.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name3 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name3.setStringValue(serviceName);
+//        app3.setApplicationName(name);
+//        ProjectAccountType projectAccountType3 = app3.addNewProjectAccount();
+//        projectAccountType3.setProjectAccountNumber("TG-STA110014S");
+//
+//        QueueType queueType3 = app3.addNewQueue();
+//        queueType3.setQueueName("normal");
+//
+//        app3.setCpuCount(1);
+//        app3.setJobType(JobTypeType.SERIAL);
+//        app3.setNodeCount(1);
+//        app3.setProcessorsPerNode(1);
+//        app3.setMaxWallTime(10);
+//		/*
+//		 * Use bat file if it is compiled on Windows
+//		 */
+//        app3.setExecutableLocation("/bin/echo");
+//
+//		/*
+//		 * Default tmp location
+//		 */
+//        String tempDir3 = "/home1/01437/ogce";
+//
+//        app3.setScratchWorkingDirectory(tempDir3);
+//        app3.setInstalledParentPath("/opt/sge6.2/bin/lx24-amd64/");
+//
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, lonestarHostAddress, appDesc3);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//
+//    }
+//
+//    public void createBigRedDocs() {
+//         /*
+//        * Host
+//        */
+//        HostDescription host = new HostDescription(SSHHostType.type);
+//        host.getType().setHostAddress(bigRed2HostAddress);
+//        host.getType().setHostName("bigred2");
+//        ((SSHHostType) host.getType()).setHpcResource(true);
+//        try {
+//            airavataAPI.getApplicationManager().saveHostDescription(host);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+//        }
+//        /*
+//        * App
+//        */
+//        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+//        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+//        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+//        name.setStringValue("EchoLocal");
+//        app.setApplicationName(name);
+//
+//        app.setCpuCount(1);
+//        app.setJobType(JobTypeType.SERIAL);
+//        app.setNodeCount(1);
+//        app.setProcessorsPerNode(1);
+//
+//        /*
+//        * Use bat file if it is compiled on Windows
+//        */
+//        app.setExecutableLocation("/bin/echo");
+//
+//        /*
+//        * Default tmp location
+//        */
+//        String tempDir = "/tmp";
+//        String date = (new Date()).toString();
+//        date = date.replaceAll(" ", "_");
+//        date = date.replaceAll(":", "_");
+//
+//        tempDir = tempDir + File.separator
+//                + "SimpleEcho" + "_" + date + "_" + UUID.randomUUID();
+//
+//        System.out.println(tempDir);
+//        app.setScratchWorkingDirectory(tempDir);
+//        app.setStaticWorkingDirectory(tempDir);
+//        app.setInputDataDirectory(tempDir + File.separator + "inputData");
+//        app.setOutputDataDirectory(tempDir + File.separator + "outputData");
+//        app.setStandardOutput(tempDir + File.separator + app.getApplicationName().getStringValue() + ".stdout");
+//        app.setStandardError(tempDir + File.separator + app.getApplicationName().getStringValue() + ".stderr");
+//        app.setMaxWallTime(5);
+//        app.setJobSubmitterCommand("aprun -n 1");
+//        app.setInstalledParentPath("/opt/torque/torque-4.2.3.1/bin/");
+//
+//        /*
+//        * Service
+//        */
+//        ServiceDescription serv = new ServiceDescription();
+//        serv.getType().setName("SimpleEchoBR");
+//
+//        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+//
+//        InputParameterType input = InputParameterType.Factory.newInstance();
+//        input.setParameterName("echo_input");
+//        input.setParameterType(StringParameterType.Factory.newInstance());
+//        inputList.add(input);
+//
+//        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList
+//
+//                .size()]);
+//        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//        OutputParameterType output = OutputParameterType.Factory.newInstance();
+//        output.setParameterName("echo_output");
+//        output.setParameterType(StringParameterType.Factory.newInstance());
+//        outputList.add(output);
+//
+//        OutputParameterType[] outputParamList = outputList
+//                .toArray(new OutputParameterType[outputList.size()]);
+//
+//        serv.getType().setInputParametersArray(inputParamList);
+//        serv.getType().setOutputParametersArray(outputParamList);
+//        try {
+//            airavataAPI.getApplicationManager().saveServiceDescription(serv);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//        try {
+//            airavataAPI.getApplicationManager().saveApplicationDescription("SimpleEchoBR", trestleshpcHostAddress, appDesc);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace(); // To change body of catch statement use File |
+//            // Settings | File Templates.
+//        }
+//    }
+//
+//    public AiravataAPI getAiravataAPI() {
+//        return airavataAPI;
+//    }
+//
+//    public void setAiravataAPI(AiravataAPI airavataAPI) {
+//        this.airavataAPI = airavataAPI;
+//    }
+//}
+//


[6/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreSecuritySettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreSecuritySettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreSecuritySettingsImpl.java
new file mode 100644
index 0000000..9f2c8a8
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/CredentialStoreSecuritySettingsImpl.java
@@ -0,0 +1,70 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.CredentialStoreSecuritySettings;
+
+/**
+ * Implementation of credential store security settings class.
+ */
+public class CredentialStoreSecuritySettingsImpl implements CredentialStoreSecuritySettings {
+
+    private String tokenId;
+    private String portalUserId;
+    private String gatewayId;
+
+    public CredentialStoreSecuritySettingsImpl(String tokenId) {
+        this.tokenId = tokenId;
+    }
+
+    public CredentialStoreSecuritySettingsImpl() {
+    }
+
+    public void setTokenId(String tokenId) {
+        this.tokenId = tokenId;
+    }
+
+    @Override
+    public void setPortalUser(String portalUserName) {
+        this.portalUserId = portalUserName;
+    }
+
+    @Override
+    public String getPortalUser() {
+        return this.portalUserId;
+    }
+
+    @Override
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Override
+    public String getGatewayId() {
+        return this.gatewayId;
+    }
+
+    public String getTokenId() {
+        return tokenId;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
new file mode 100644
index 0000000..e220027
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
@@ -0,0 +1,419 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.AiravataAPIUtils;
+import org.apache.airavata.client.AiravataClient;
+import org.apache.airavata.client.api.ExecutionManager;
+import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.stub.interpretor.NameValue;
+import org.apache.airavata.client.stub.interpretor.WorkflowInterpretorStub;
+import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+import org.apache.airavata.ws.monitor.*;
+import org.apache.airavata.ws.monitor.MonitorUtil.EventType;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
+import org.apache.axis2.AxisFault;
+
+import javax.xml.stream.XMLStreamException;
+import java.net.URISyntaxException;
+import java.rmi.RemoteException;
+import java.util.Calendar;
+import java.util.List;
+
+public class ExecutionManagerImpl implements ExecutionManager {
+	private AiravataClient client;
+
+    public ExecutionManagerImpl() {
+    }
+
+    public ExecutionManagerImpl(AiravataClient client) {
+		setClient(client);
+	}
+
+	@Override
+	public String runExperiment(String workflowTemplateId,
+			List<WorkflowInput> inputs) throws AiravataAPIInvocationException {
+		ExperimentAdvanceOptions options = createExperimentAdvanceOptions(workflowTemplateId+"_"+Calendar.getInstance().getTime().toString(), getClient().getCurrentUser(), null);
+		return runExperiment(workflowTemplateId, inputs ,options);
+	}
+	
+	@Override
+	public String runExperiment(String workflow,
+			List<WorkflowInput> inputs, ExperimentAdvanceOptions options)
+			throws AiravataAPIInvocationException {
+		return runExperimentGeneral(extractWorkflow(workflow), inputs, options, null);
+	}
+	
+
+	@Override
+	public String runExperiment(Workflow workflow, List<WorkflowInput> inputs, ExperimentAdvanceOptions options)
+			throws AiravataAPIInvocationException {
+		return runExperimentGeneral(workflow,inputs, options, null).toString();
+	}
+	
+
+	@Override
+	public ExperimentAdvanceOptions createExperimentAdvanceOptions()
+			throws AiravataAPIInvocationException {
+		return new ExperimentAdvanceOptions();
+	}
+
+	@Override
+	public ExperimentAdvanceOptions createExperimentAdvanceOptions(
+			String experimentName, String experimentUser,
+			String experimentMetadata) throws AiravataAPIInvocationException {
+		ExperimentAdvanceOptions options = createExperimentAdvanceOptions();
+		options.setExperimentName(experimentName);
+		options.setExperimentCustomMetadata(experimentMetadata);
+		options.setExperimentExecutionUser(experimentUser);
+		return options;
+	}
+
+	@Override
+	public void waitForExperimentTermination(String experimentId)
+			throws AiravataAPIInvocationException {
+//		Monitor experimentMonitor = getExperimentMonitor(experimentId, new EventDataListenerAdapter() {
+//			@Override
+//			public void notify(EventDataRepository eventDataRepo,
+//					EventData eventData) {
+//				if (eventData.getType()==EventType.WORKFLOW_TERMINATED){
+//					getMonitor().stopMonitoring();
+//				}
+//			}
+//		});
+//		experimentMonitor.startMonitoring();
+//		try {
+//			WorkflowExecutionStatus workflowInstanceStatus = getClient().getProvenanceManager().getWorkflowInstanceStatus(experimentId, experimentId);
+//			if (workflowInstanceStatus.getExecutionStatus()==State.FINISHED || workflowInstanceStatus.getExecutionStatus()==State.FAILED){
+//				experimentMonitor.stopMonitoring();
+//				return;
+//			}
+//		} catch (AiravataAPIInvocationException e) {
+//			//Workflow may not have started yet. Best to use the monitor to follow the progress
+//		}
+//		experimentMonitor.waitForCompletion();
+	}
+	
+	@Override
+	public Monitor getExperimentMonitor(String experimentId)
+			throws AiravataAPIInvocationException {
+		return getExperimentMonitor(experimentId,null);
+	}
+
+	@Override
+	public Monitor getExperimentMonitor(String experimentId,final EventDataListener listener)
+			throws AiravataAPIInvocationException {
+		MonitorConfiguration monitorConfiguration;
+		try {
+			monitorConfiguration = new MonitorConfiguration(
+					getClient().getClientConfiguration().getMessagebrokerURL().toURI(), experimentId,
+					true, getClient().getClientConfiguration().getMessageboxURL().toURI());
+			final Monitor monitor = new Monitor(monitorConfiguration);
+			monitor.printRawMessage(false);
+			if (listener!=null) {
+				monitor.getEventDataRepository().registerEventListener(listener);
+				listener.setExperimentMonitor(monitor);
+			}
+			if (!monitor.getExperimentId().equals(">")){
+				monitor.getEventDataRepository().registerEventListener(new EventDataListenerAdapter() {
+					@Override
+					public void notify(EventDataRepository eventDataRepo, EventData eventData) {
+//						if (eventData.getType()==EventType.WORKFLOW_TERMINATED || eventData.getType()==EventType.SENDING_FAULT){
+//							monitor.stopMonitoring();
+//						}
+					}
+				});
+			}
+			return monitor;
+		} catch (URISyntaxException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public String runExperiment(String workflow, List<WorkflowInput> inputs,
+			ExperimentAdvanceOptions options, EventDataListener listener)
+			throws AiravataAPIInvocationException {
+		return runExperimentGeneral(extractWorkflow(workflow), inputs, options, listener);
+	}
+	
+	public AiravataClient getClient() {
+		return client;
+	}
+	public void setClient(AiravataClient client) {
+		this.client = client;
+	}
+
+	private String runExperimentGeneral(Workflow workflowObj, List<WorkflowInput> inputs, ExperimentAdvanceOptions options, EventDataListener listener) throws AiravataAPIInvocationException {
+//		try {
+//			List<NameValue> inputValues = new ArrayList<NameValue>();
+//			for (WorkflowInput input : inputs) {
+//				NameValue nameValue = new NameValue();
+//				nameValue.setName(input.getName());
+//				nameValue.setValue(String.valueOf(input.getValue()==null?input.getDefaultValue():input.getValue()));
+//				inputValues.add(nameValue);
+//			}
+//			String workflowString = XMLUtil.xmlElementToString(workflowObj.toXML());
+//			List<WSComponentPort> ports = getWSComponentPortInputs(workflowObj);
+//			for (WorkflowInput input : inputs) {
+//				WSComponentPort port = getWSComponentPort(input.getName(),
+//						ports);
+//				if (port != null) {
+//					port.setValue(input.getValue());
+//				}
+//			}
+//			for (WSComponentPort port : ports) {
+//				NameValue nameValue = new NameValue();
+//				nameValue.setName(port.getName());
+//				if (port.getValue() == null) {
+//					nameValue.setValue(port.getDefaultValue());
+//				} else {
+//					nameValue.setValue(port.getValue().toString());
+//				}
+//				inputValues.add(nameValue);
+//			}
+//			String experimentID=options.getCustomExperimentId();
+//			String workflowTemplateName = workflowObj.getName();
+//			if (experimentID == null || experimentID.isEmpty()) {
+//				experimentID = workflowTemplateName + "_" + UUID.randomUUID();
+//			}
+//	        getClient().getProvenanceManager().setWorkflowInstanceTemplateName(experimentID,workflowTemplateName);
+//
+//	        //TODO - fix user passing
+//	        String submissionUser = getClient().getUserManager().getAiravataUser();
+//			String executionUser=options.getExperimentExecutionUser();
+//			if (executionUser==null){
+//				executionUser=submissionUser;
+//			}
+//			WorkflowContextHeaderBuilder builder = AiravataAPIUtils.createWorkflowContextHeaderBuilder(options, executionUser, submissionUser);
+//			runPreWorkflowExecutionTasks(experimentID, executionUser, options.getExperimentMetadata(), options.getExperimentName());
+//			NameValue[] inputVals = inputValues.toArray(new NameValue[] {});
+//			if (listener!=null){
+//				getExperimentMonitor(experimentID, listener).startMonitoring();
+//			}
+//			launchWorkflow(experimentID, workflowString, inputVals, builder);
+//			return experimentID;
+////		}  catch (GraphException e) {
+////			throw new AiravataAPIInvocationException(e);
+////		} catch (ComponentException e) {
+////			throw new AiravataAPIInvocationException(e);
+//		} catch (Exception e) {
+//	        throw new AiravataAPIInvocationException("Error working with Airavata Registry: " + e.getLocalizedMessage(), e);
+//	    }
+        return null;
+	}
+
+    private Workflow extractWorkflow(String workflowName) throws AiravataAPIInvocationException {
+        Workflow workflowObj = null;
+        //FIXME - There should be a better way to figure-out if the passed string is a name or an xml
+        if(!workflowName.contains("http://airavata.apache.org/xbaya/xwf")){//(getClient().getWorkflowManager().isWorkflowExists(workflowName)) {
+            workflowObj = getClient().getWorkflowManager().getWorkflow(workflowName);
+        }else {
+            try{
+                workflowObj = getClient().getWorkflowManager().getWorkflowFromString(workflowName);
+            }catch (AiravataAPIInvocationException e){
+            	getClient().getWorkflowManager().getWorkflow(workflowName);
+            }
+        }
+        return workflowObj;
+    }
+    
+//	private List<WSComponentPort> getWSComponentPortInputs(Workflow workflow)
+//			throws GraphException, ComponentException {
+//		workflow.createScript();
+//		List<WSComponentPort> inputs = workflow.getInputs();
+//		return inputs;
+//	}
+//
+//	private WSComponentPort getWSComponentPort(String name,
+//			List<WSComponentPort> ports) {
+//		for (WSComponentPort port : ports) {
+//			if (port.getName().equals(name)) {
+//				return port;
+//			}
+//		}
+//		return null;
+//	}
+	
+	private void launchWorkflow(String experimentId, String workflowGraph, NameValue[] inputs,
+			WorkflowContextHeaderBuilder builder) throws AiravataAPIInvocationException {
+		try {
+			builder.getWorkflowMonitoringContext().setExperimentId(experimentId);
+			WorkflowInterpretorStub stub = new WorkflowInterpretorStub(getClient().getAiravataManager().getWorkflowInterpreterServiceURL().toString());
+			OMElement wchOMElement = AXIOMUtil.stringToOM(XMLUtil.xmlElementToString(builder
+					.getXml()));
+			wchOMElement.addAttribute("submissionUser", builder.getSubmissionUser(), wchOMElement.getNamespace());
+			stub._getServiceClient().addHeader(
+					wchOMElement);
+			stub.launchWorkflow(workflowGraph, experimentId, inputs);
+		} catch (AxisFault e) {
+			e.printStackTrace();
+		} catch (XMLStreamException e) {
+			e.printStackTrace();
+		} catch (RemoteException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	private void runPreWorkflowExecutionTasks(String experimentId, String user,
+			String metadata, String experimentName) throws AiravataAPIInvocationException {
+//		if (user != null) {
+//			getClient().getProvenanceManager().setExperimentUser(experimentId, user);
+//		}
+//		if (metadata != null) {
+//			getClient().getProvenanceManager().setExperimentMetadata(experimentId, metadata);
+//		}
+//		if (experimentName == null) {
+//			experimentName = experimentId;
+//		}
+//		getClient().getProvenanceManager().setExperimentName(experimentId, experimentName);
+
+	}
+
+	public static void main(String[] args) {
+		ExecutionManagerImpl a = new ExecutionManagerImpl(null);
+		try {
+			ExperimentAdvanceOptions b = a.createExperimentAdvanceOptions();
+			b.getCustomWorkflowOutputDataSettings().addNewOutputDataSettings("la", "di", "da", false);
+			WorkflowContextHeaderBuilder c = AiravataAPIUtils.createWorkflowContextHeaderBuilder(b, "sheeeeeeeeeeee","meeee");
+			System.out.println(XMLUtil.xmlElementToString(c.getXml()));
+		} catch (AiravataAPIInvocationException e) {
+			e.printStackTrace();
+		}
+	}
+
+//	@Override
+//	public List<ExperimentExecutionError> getExperimentExecutionErrors(
+//			String experimentId) throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getExperimentExecutionErrors(experimentId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+
+//	@Override
+//	public List<WorkflowExecutionError> getWorkflowExecutionErrors(
+//			String experimentId, String workflowInstanceId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowExecutionErrors(experimentId,
+////					workflowInstanceId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+
+//	@Override
+//	public List<NodeExecutionError> getNodeExecutionErrors(String experimentId,
+//			String workflowInstanceId, String nodeId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getNodeExecutionErrors(experimentId,
+////					workflowInstanceId, nodeId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+
+//	@Override
+//	public List<ApplicationJobExecutionError> getApplicationJobErrors(String experimentId,
+//			String workflowInstanceId, String nodeId, String gfacJobId)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getApplicationJobErrors(experimentId,
+//					workflowInstanceId, nodeId, gfacJobId);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public List<ApplicationJobExecutionError> getApplicationJobErrors(String gfacJobId)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getApplicationJobErrors(gfacJobId);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public List<ExecutionError> getExecutionErrors(String experimentId,
+//			String workflowInstanceId, String nodeId, String gfacJobId,
+//			Source... filterBy) throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().getExecutionErrors(experimentId,
+//					workflowInstanceId, nodeId, gfacJobId, filterBy);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public int addExperimentError(ExperimentExecutionError error)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().addExperimentError(error);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public int addWorkflowExecutionError(WorkflowExecutionError error)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().addWorkflowExecutionError(error);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public int addNodeExecutionError(NodeExecutionError error)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().addNodeExecutionError(error);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+
+//	@Override
+//	public int addApplicationJobExecutionError(ApplicationJobExecutionError error)
+//			throws AiravataAPIInvocationException {
+//		try {
+//			return getClient().getRegistryClient().addApplicationJobExecutionError(error);
+//		} catch (Exception e) {
+//			throw new AiravataAPIInvocationException(e);
+//		}
+//	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerThriftImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerThriftImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerThriftImpl.java
new file mode 100644
index 0000000..1924b29
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerThriftImpl.java
@@ -0,0 +1,467 @@
+///*
+// *
+// * 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.client.impl;
+//
+//import org.apache.airavata.client.AiravataClient;
+//import org.apache.airavata.client.api.*;
+//import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+//import org.apache.airavata.client.api.HPCSettings;
+//import org.apache.airavata.client.api.HostSchedulingSettings;
+//import org.apache.airavata.client.api.NodeSettings;
+//import org.apache.airavata.client.api.OutputDataSettings;
+//import org.apache.airavata.client.api.SecuritySettings;
+//import org.apache.airavata.client.api.WorkflowOutputDataSettings;
+//import org.apache.airavata.client.api.WorkflowSchedulingSettings;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//import org.apache.airavata.client.tools.NameValuePairType;
+//import org.apache.airavata.registry.api.ExecutionErrors;
+//import org.apache.airavata.registry.api.workflow.*;
+//import org.apache.airavata.workflow.model.wf.Workflow;
+//import org.apache.airavata.workflow.model.wf.WorkflowInput;
+//import org.apache.airavata.ws.monitor.*;
+//import org.apache.airavata.interpreter.service.client.ExecutionClient;
+//import org.apache.thrift.TException;
+//
+//import java.net.URISyntaxException;
+//import java.util.*;
+//
+//public class ExecutionManagerThriftImpl implements ExecutionManager {
+//    private AiravataClient client;
+//
+//    public ExecutionManagerThriftImpl() {
+//    }
+//
+//    public ExecutionManagerThriftImpl(AiravataClient client) {
+//        setClient(client);
+//    }
+//
+//    public AiravataClient getClient() {
+//        return client;
+//    }
+//
+//    public void setClient(AiravataClient client) {
+//        this.client = client;
+//    }
+//
+//    public String runExperiment(String workflowTemplateId, List<WorkflowInput> inputs) throws AiravataAPIInvocationException {
+//        ExperimentAdvanceOptions options = createExperimentAdvanceOptions(workflowTemplateId + "_" + Calendar.getInstance().getTime().toString(), getClient().getCurrentUser(), null);
+//        return runExperimentGeneral(workflowTemplateId, inputs, options, null);
+//
+//    }
+//
+//    public String runExperiment(String workflow, List<WorkflowInput> inputs, ExperimentAdvanceOptions options) throws AiravataAPIInvocationException {
+//        return runExperimentGeneral(workflow, inputs, options, null);
+//    }
+//
+//    public String runExperiment(String workflow, List<WorkflowInput> inputs, ExperimentAdvanceOptions options, EventDataListener listener) throws AiravataAPIInvocationException {
+//        return runExperimentGeneral(workflow, inputs, options, listener);
+//    }
+//
+//    public String runExperiment(Workflow workflow, List<WorkflowInput> inputs, ExperimentAdvanceOptions options) throws AiravataAPIInvocationException {
+//        return runExperimentGeneral(workflow.getName(), inputs, options, null);
+//    }
+//
+//    private String runExperimentGeneral(String wfname, List<WorkflowInput> inputs, ExperimentAdvanceOptions options, EventDataListener listener) throws AiravataAPIInvocationException {
+//        Workflow workflowObj = null;
+//        try {
+////            workflowObj = extractWorkflow(wfname);
+////            String experimentID = options.getCustomExperimentId();
+////            String workflowTemplateName = workflowObj.getName();
+////            if (experimentID == null || experimentID.isEmpty()) {
+////                experimentID = workflowTemplateName + "_" + UUID.randomUUID();
+////            }
+////            options.setCustomExperimentId(experimentID);
+////            getClient().getProvenanceManager().setWorkflowInstanceTemplateName(experimentID, workflowTemplateName);
+////
+////            String submissionUser = getClient().getUserManager().getAiravataUser();
+////            String executionUser=options.getExperimentExecutionUser();
+////            if (executionUser==null){
+////                executionUser=submissionUser;
+////            }
+////            options.setExperimentExecutionUser(executionUser);
+////            runPreWorkflowExecutionTasks(experimentID, executionUser, options.getExperimentMetadata(), options.getExperimentName());
+////
+////            String workflowContent = extractWorkflowContent(wfname);
+//            Map<String, String> workflowInputs = new HashMap<String, String>();
+//            for (WorkflowInput workflowInput : inputs){
+//                String name = workflowInput.getName();
+//                String value = (String)workflowInput.getValue();
+//                workflowInputs.put(name, value);
+//            }
+////            if (listener!=null){
+////                getExperimentMonitor(experimentID, listener).startMonitoring();
+////            }
+//            org.apache.airavata.experiment.execution.ExperimentAdvanceOptions experimentAdvanceOptions = generateAdvancedOptions(options);
+//            return getExecutionClient().runExperiment(wfname, workflowInputs, experimentAdvanceOptions);
+//        }  catch (TException e) {
+//            throw new AiravataAPIInvocationException("Error occured while running the workflow", e);
+//        }
+//    }
+//
+//    private void runPreWorkflowExecutionTasks(String experimentId, String user,
+//                                              String metadata, String experimentName) throws AiravataAPIInvocationException {
+//        if (user != null) {
+//            getClient().getProvenanceManager().setExperimentUser(experimentId, user);
+//        }
+//        if (metadata != null) {
+//            getClient().getProvenanceManager().setExperimentMetadata(experimentId, metadata);
+//        }
+//        if (experimentName == null) {
+//            experimentName = experimentId;
+//        }
+//        getClient().getProvenanceManager().setExperimentName(experimentId, experimentName);
+//    }
+//
+//    public Monitor getExperimentMonitor(String experimentId) throws AiravataAPIInvocationException {
+//        return getExperimentMonitor(experimentId,null);
+//    }
+//
+//    public Monitor getExperimentMonitor(String experimentId, EventDataListener listener) throws AiravataAPIInvocationException {
+//        MonitorConfiguration monitorConfiguration;
+//        try {
+//            monitorConfiguration = new MonitorConfiguration(
+//                    getClient().getClientConfiguration().getMessagebrokerURL().toURI(), experimentId,
+//                    true, getClient().getClientConfiguration().getMessageboxURL().toURI());
+//            final Monitor monitor = new Monitor(monitorConfiguration);
+//            monitor.printRawMessage(false);
+//            if (listener!=null) {
+//                monitor.getEventDataRepository().registerEventListener(listener);
+//                listener.setExperimentMonitor(monitor);
+//            }
+//            if (!monitor.getExperimentId().equals(">")){
+//                monitor.getEventDataRepository().registerEventListener(new EventDataListenerAdapter() {
+//                    public void notify(EventDataRepository eventDataRepo, EventData eventData) {
+//                        if (eventData.getType()== MonitorUtil.EventType.WORKFLOW_TERMINATED || eventData.getType()== MonitorUtil.EventType.SENDING_FAULT){
+//                            monitor.stopMonitoring();
+//                        }
+//                    }
+//                });
+//            }
+//            return monitor;
+//        } catch (URISyntaxException e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public ExperimentAdvanceOptions createExperimentAdvanceOptions() throws AiravataAPIInvocationException {
+//        return new ExperimentAdvanceOptions();
+//    }
+//
+//    public ExperimentAdvanceOptions createExperimentAdvanceOptions(String experimentName, String experimentUser, String experimentMetadata) throws AiravataAPIInvocationException {
+//        ExperimentAdvanceOptions options = createExperimentAdvanceOptions();
+//        options.setExperimentName(experimentName);
+//        options.setExperimentCustomMetadata(experimentMetadata);
+//        options.setExperimentExecutionUser(experimentUser);
+//        return options;
+//    }
+//
+//    public void waitForExperimentTermination(String experimentId) throws AiravataAPIInvocationException {
+//        Monitor experimentMonitor = getExperimentMonitor(experimentId, new EventDataListenerAdapter() {
+//            public void notify(EventDataRepository eventDataRepo,
+//                               EventData eventData) {
+//                if (eventData.getType()== MonitorUtil.EventType.WORKFLOW_TERMINATED){
+//                    getMonitor().stopMonitoring();
+//                }
+//            }
+//        });
+//        experimentMonitor.startMonitoring();
+//        try {
+//            WorkflowExecutionStatus workflowInstanceStatus = getClient().getProvenanceManager().getWorkflowInstanceStatus(experimentId, experimentId);
+//            if (workflowInstanceStatus.getExecutionStatus()== WorkflowExecutionStatus.State.FINISHED || workflowInstanceStatus.getExecutionStatus()== WorkflowExecutionStatus.State.FAILED){
+//                experimentMonitor.stopMonitoring();
+//                return;
+//            }
+//        } catch (AiravataAPIInvocationException e) {
+//            //Workflow may not have started yet. Best to use the monitor to follow the progress
+//        }
+//        experimentMonitor.waitForCompletion();
+//
+//    }
+//
+//    public List<ExperimentExecutionError> getExperimentExecutionErrors(String experimentId) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getExperimentExecutionErrors(experimentId);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public List<WorkflowExecutionError> getWorkflowExecutionErrors(String experimentId, String workflowInstanceId) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getWorkflowExecutionErrors(experimentId,
+//                    workflowInstanceId);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public List<NodeExecutionError> getNodeExecutionErrors(String experimentId, String workflowInstanceId, String nodeId) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getNodeExecutionErrors(experimentId,
+//                    workflowInstanceId, nodeId);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public List<ApplicationJobExecutionError> getApplicationJobErrors(String experimentId, String workflowInstanceId, String nodeId, String gfacJobId) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getApplicationJobErrors(experimentId,
+//                    workflowInstanceId, nodeId, gfacJobId);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public List<ApplicationJobExecutionError> getApplicationJobErrors(String gfacJobId) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getApplicationJobErrors(gfacJobId);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public List<ExecutionError> getExecutionErrors(String experimentId, String workflowInstanceId, String nodeId, String gfacJobId, ExecutionErrors.Source... filterBy) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().getExecutionErrors(experimentId,
+//                    workflowInstanceId, nodeId, gfacJobId, filterBy);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public int addExperimentError(ExperimentExecutionError error) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().addExperimentError(error);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public int addWorkflowExecutionError(WorkflowExecutionError error) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().addWorkflowExecutionError(error);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public int addNodeExecutionError(NodeExecutionError error) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().addNodeExecutionError(error);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public int addApplicationJobExecutionError(ApplicationJobExecutionError error) throws AiravataAPIInvocationException {
+//        try {
+//            return getClient().getRegistryClient().addApplicationJobExecutionError(error);
+//        } catch (Exception e) {
+//            throw new AiravataAPIInvocationException(e);
+//        }
+//    }
+//
+//    public org.apache.airavata.experiment.execution.InterpreterService.Client getExecutionClient (){
+//        ExecutionClient executionClient = new ExecutionClient();
+//        return executionClient.getInterpreterServiceClient();
+//
+//    }
+//
+//
+//    private String extractWorkflowContent(String workflowName) throws AiravataAPIInvocationException {
+//        if(workflowName.contains("http://airavata.apache.org/xbaya/xwf")){//(getClient().getWorkflowManager().isWorkflowExists(workflowName)) {
+//            return workflowName;
+//        }else {
+//            return getClient().getWorkflowManager().getWorkflowAsString(workflowName);
+//        }
+//    }
+//
+//    private Workflow extractWorkflow(String workflowName) throws AiravataAPIInvocationException {
+//        Workflow workflowObj = null;
+//        //FIXME - There should be a better way to figure-out if the passed string is a name or an xml
+//        if(!workflowName.contains("http://airavata.apache.org/xbaya/xwf")){//(getClient().getWorkflowManager().isWorkflowExists(workflowName)) {
+//            workflowObj = getClient().getWorkflowManager().getWorkflow(workflowName);
+//        }else {
+//            try{
+//                workflowObj = getClient().getWorkflowManager().getWorkflowFromString(workflowName);
+//            }catch (AiravataAPIInvocationException e){
+//                getClient().getWorkflowManager().getWorkflow(workflowName);
+//            }
+//        }
+//        return workflowObj;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.ExperimentAdvanceOptions generateAdvancedOptions(org.apache.airavata.client.api.ExperimentAdvanceOptions exAdOpt){
+//        try {
+//            org.apache.airavata.experiment.execution.ExperimentAdvanceOptions advanceOptions = new org.apache.airavata.experiment.execution.ExperimentAdvanceOptions();
+//            advanceOptions.setExperimentName(exAdOpt.getExperimentName());
+//            advanceOptions.setCustomExperimentId(exAdOpt.getCustomExperimentId());
+//            advanceOptions.setExecutionUser(exAdOpt.getExperimentExecutionUser());
+//            advanceOptions.setMetadata(exAdOpt.getExperimentMetadata());
+//            SecuritySettings customSecuritySettings = exAdOpt.getCustomSecuritySettings();
+//            if (customSecuritySettings != null){
+//                advanceOptions.setSecuritySettings(generateSecuritySettingsObj(customSecuritySettings));
+//            }
+//
+//            WorkflowOutputDataSettings outputDataSettings = exAdOpt.getCustomWorkflowOutputDataSettings();
+//            List<org.apache.airavata.experiment.execution.OutputDataSettings> dataSettingsList = new ArrayList<org.apache.airavata.experiment.execution.OutputDataSettings>();
+//            if (outputDataSettings != null){
+//                OutputDataSettings[] outputDataSettingsList = outputDataSettings.getOutputDataSettingsList();
+//                for (OutputDataSettings opds : outputDataSettingsList){
+//                    org.apache.airavata.experiment.execution.OutputDataSettings dataSettings = generateOutputDataObject(opds);
+//                    dataSettingsList.add(dataSettings);
+//                }
+//                org.apache.airavata.experiment.execution.WorkflowOutputDataSettings wfOpDSettings = new org.apache.airavata.experiment.execution.WorkflowOutputDataSettings();
+//                wfOpDSettings.setOutputDataSettingsList(dataSettingsList);
+//                advanceOptions.setWorkflowOutputDataSettings(wfOpDSettings);
+//            }
+//            WorkflowSchedulingSettings schedulingSettings = exAdOpt.getCustomWorkflowSchedulingSettings();
+//            if (schedulingSettings != null){
+//                org.apache.airavata.experiment.execution.WorkflowSchedulingSettings settings = generateShedulingSettingsObject(schedulingSettings);
+//                advanceOptions.setWorkflowSchedulingSettings(settings);
+//            }
+//            return advanceOptions;
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();
+//        }
+//      return null;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.SecuritySettings generateSecuritySettingsObj(org.apache.airavata.client.api.SecuritySettings secSettings) {
+//        try {
+//            org.apache.airavata.experiment.execution.SecuritySettings settings = new org.apache.airavata.experiment.execution.SecuritySettings();
+//            org.apache.airavata.experiment.execution.AmazonWebServicesSettings amWSSettings = new org.apache.airavata.experiment.execution.AmazonWebServicesSettings();
+//            org.apache.airavata.client.api.AmazonWebServicesSettings amazonWSSettings = secSettings.getAmazonWSSettings();
+//            if (amazonWSSettings != null){
+//                amWSSettings.setAccessKey(amazonWSSettings.getSecretAccessKey());
+//                amWSSettings.setAmiID(amazonWSSettings.getAMIId());
+//                amWSSettings.setInstanceID(amazonWSSettings.getInstanceId());
+//                amWSSettings.setSecretAccessKey(amazonWSSettings.getSecretAccessKey());
+//                amWSSettings.setUsername(amazonWSSettings.getUsername());
+//                settings.setAmazonWSSettings(amWSSettings);
+//            }
+//
+//            org.apache.airavata.experiment.execution.CredentialStoreSecuritySettings credSettings = new org.apache.airavata.experiment.execution.CredentialStoreSecuritySettings();
+//            org.apache.airavata.client.api.CredentialStoreSecuritySettings credStoreSecSettings = secSettings.getCredentialStoreSecuritySettings();
+//            if (credStoreSecSettings != null){
+//                credSettings.setGatewayID(credStoreSecSettings.getGatewayId());
+//                credSettings.setPortalUser(credStoreSecSettings.getPortalUser());
+//                credSettings.setTokenId(credStoreSecSettings.getTokenId());
+//                settings.setCredentialStoreSettings(credSettings);
+//            }
+//
+////            org.apache.airavata.experiment.execution.MyProxyRepositorySettings myProxySettings = new org.apache.airavata.experiment.execution.MyProxyRepositorySettings();
+////            org.apache.airavata.client.api.GridMyProxyRepositorySettings proxyRepositorySettings = secSettings.getGridMyProxyRepositorySettings();
+////            if (proxyRepositorySettings != null){
+////                myProxySettings.setLifetime(proxyRepositorySettings.getLifeTime());
+////                myProxySettings.setMyproxyServer(proxyRepositorySettings.getMyProxyServer());
+////                myProxySettings.setPassword(proxyRepositorySettings.getPassword());
+////                myProxySettings.setUserName(proxyRepositorySettings.getUsername());
+////                settings.setMyproxySettings(myProxySettings);
+////            }
+////
+////            org.apache.airavata.experiment.execution.SSHAuthenticationSettings authSettings = new org.apache.airavata.experiment.execution.SSHAuthenticationSettings();
+////            org.apache.airavata.client.api.SSHAuthenticationSettings sshAuthenticationSettings = secSettings.getSSHAuthenticationSettings();
+////            if (sshAuthenticationSettings != null){
+////                authSettings.setAccessKeyID(sshAuthenticationSettings.getAccessKeyId());
+////                authSettings.setSecretAccessKey(sshAuthenticationSettings.getSecretAccessKey());
+////                settings.setSshAuthSettings(authSettings);
+////            }
+//            return settings;
+//
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.OutputDataSettings generateOutputDataObject(OutputDataSettings opDataSettings){
+//        org.apache.airavata.experiment.execution.OutputDataSettings dataSettings = new org.apache.airavata.experiment.execution.OutputDataSettings();
+//        dataSettings.setDataRegURL(opDataSettings.getDataRegistryUrl());
+//        dataSettings.setIsdataPersisted(opDataSettings.isDataPersistent());
+//        dataSettings.setNodeID(opDataSettings.getNodeId());
+//        dataSettings.setOutputdataDir(opDataSettings.getOutputDataDirectory());
+//        return dataSettings;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.WorkflowSchedulingSettings generateShedulingSettingsObject (WorkflowSchedulingSettings wfschSettings){
+//        org.apache.airavata.experiment.execution.WorkflowSchedulingSettings schedulingSettings = new org.apache.airavata.experiment.execution.WorkflowSchedulingSettings();
+//        NodeSettings[] list = wfschSettings.getNodeSettingsList();
+//        List<org.apache.airavata.experiment.execution.NodeSettings> nodes = new ArrayList<org.apache.airavata.experiment.execution.NodeSettings>();
+//        if (list != null){
+//            for (NodeSettings ns : list){
+//                org.apache.airavata.experiment.execution.NodeSettings nodeSettings = generateNodeSettingsObject(ns);
+//                nodes.add(nodeSettings);
+//            }
+//        }
+//        schedulingSettings.setNodeSettingsList(nodes);
+//        return schedulingSettings;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.NodeSettings generateNodeSettingsObject (NodeSettings settings){
+//        org.apache.airavata.experiment.execution.NodeSettings nsettings = new org.apache.airavata.experiment.execution.NodeSettings();
+//        nsettings.setNodeId(settings.getNodeId());
+//        nsettings.setServiceId(settings.getServiceId());
+//        nsettings.setHostSchedulingSettings(generateHostSchSettings(settings.getHostSettings()));
+//        nsettings.setHpcSettings(generateHPCSettingsObject(settings.getHPCSettings()));
+//
+//        List<NameValuePairType> nameValuePair = settings.getNameValuePair();
+//        List<org.apache.airavata.experiment.execution.NameValuePairType> typeList = new ArrayList<org.apache.airavata.experiment.execution.NameValuePairType>();
+//        if (nameValuePair != null){
+//            for (NameValuePairType nvPair : nameValuePair){
+//                org.apache.airavata.experiment.execution.NameValuePairType type = generateNVPairObject(nvPair);
+//                typeList.add(type);
+//            }
+//        }
+//        nsettings.setNameValuePairList(typeList);
+//        return nsettings;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.HostSchedulingSettings generateHostSchSettings (HostSchedulingSettings settings){
+//        org.apache.airavata.experiment.execution.HostSchedulingSettings hscheduleSettings = new org.apache.airavata.experiment.execution.HostSchedulingSettings();
+//        hscheduleSettings.setGatekeeperEPR(settings.getGatekeeperEPR());
+//        hscheduleSettings.setHostID(settings.getHostId());
+//        hscheduleSettings.setIsWSGramPreferred(settings.isWSGRAMPreffered());
+//        return hscheduleSettings;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.HPCSettings generateHPCSettingsObject (HPCSettings settings){
+//        org.apache.airavata.experiment.execution.HPCSettings hsettings = new org.apache.airavata.experiment.execution.HPCSettings();
+//        hsettings.setCpuCount(settings.getCPUCount());
+//        hsettings.setJobManager(settings.getJobManager());
+//        hsettings.setMaxWalltime(settings.getMaxWallTime());
+//        hsettings.setNodeCount(settings.getNodeCount());
+//        hsettings.setQueueName(settings.getQueueName());
+//        return hsettings;
+//    }
+//
+//    private org.apache.airavata.experiment.execution.NameValuePairType generateNVPairObject (org.apache.airavata.client.tools.NameValuePairType settings){
+//        org.apache.airavata.experiment.execution.NameValuePairType nvType = new org.apache.airavata.experiment.execution.NameValuePairType();
+//        nvType.setName(settings.getName());
+//        nvType.setDescription(settings.getDescription());
+//        nvType.setValue(settings.getValue());
+//        return nvType;
+//    }
+//}
+//
+//

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HPCSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HPCSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HPCSettingsImpl.java
new file mode 100644
index 0000000..6dcddd9
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HPCSettingsImpl.java
@@ -0,0 +1,108 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.HPCSettings;
+
+public class HPCSettingsImpl implements HPCSettings {
+	private String jobManager;
+	private String queueName;
+	private Integer cpuCount;
+	private Integer nodeCount;
+	private Integer maxWallTime;
+	
+	@Override
+	public String getJobManager() {
+		return jobManager;
+	}
+
+	@Override
+	public Integer getCPUCount() {
+		return cpuCount;
+	}
+
+	@Override
+	public Integer getNodeCount() {
+		return nodeCount;
+	}
+
+	@Override
+	public String getQueueName() {
+		return queueName;
+	}
+
+	@Override
+	public Integer getMaxWallTime() {
+		return maxWallTime;
+	}
+
+	@Override
+	public void setJobManager(String jobManager) {
+		this.jobManager=jobManager;
+	}
+
+	@Override
+	public void setCPUCount(Integer cpuCount) {
+		this.cpuCount=cpuCount;
+	}
+
+	@Override
+	public void setNodeCount(Integer nodeCount) {
+		this.nodeCount=nodeCount;
+	}
+
+	@Override
+	public void setQueueName(String queueName) {
+		this.queueName=queueName;
+	}
+
+	@Override
+	public void setMaxWallTime(Integer maxWallTime) {
+		this.maxWallTime=maxWallTime;
+	}
+
+	@Override
+	public void resetJobManager() {
+		this.jobManager=null;
+	}
+
+	@Override
+	public void resetCPUCount() {
+		this.cpuCount=null;
+	}
+
+	@Override
+	public void resetNodeCount() {
+		this.nodeCount=null;
+	}
+
+	@Override
+	public void resetQueueName() {
+		this.queueName=null;
+	}
+
+	@Override
+	public void resetMaxWallTime() {
+		this.maxWallTime=null;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HostSchedulingSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HostSchedulingSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HostSchedulingSettingsImpl.java
new file mode 100644
index 0000000..fdcb3a5
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/HostSchedulingSettingsImpl.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.HostSchedulingSettings;
+
+public class HostSchedulingSettingsImpl implements HostSchedulingSettings {
+	private String hostId;
+	private String gatekeeperEPR;
+	private Boolean wsgramPreffered;
+	
+	@Override
+	public String getHostId() {
+		return hostId;
+	}
+
+	@Override
+	public Boolean isWSGRAMPreffered() {
+		return wsgramPreffered;
+	}
+
+	@Override
+	public String getGatekeeperEPR() {
+		return gatekeeperEPR;
+	}
+
+	@Override
+	public void setHostId(String hostId) {
+		this.hostId=hostId;
+	}
+
+	@Override
+	public void setWSGramPreffered(Boolean wsgramPreffered) {
+		this.wsgramPreffered=wsgramPreffered;
+	}
+
+	@Override
+	public void setGatekeeperEPR(String gatekeeperEPR) {
+		this.gatekeeperEPR=gatekeeperEPR;
+	}
+
+	@Override
+	public void resetWSGramPreffered() {
+		this.wsgramPreffered=null;
+	}
+
+	@Override
+	public void resetGatekeeperEPR() {
+		this.gatekeeperEPR=null;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/NodeSettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/NodeSettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/NodeSettingsImpl.java
new file mode 100644
index 0000000..3319e9a
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/NodeSettingsImpl.java
@@ -0,0 +1,108 @@
+/*
+ *
+ * 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.client.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.airavata.client.api.HPCSettings;
+import org.apache.airavata.client.api.HostSchedulingSettings;
+import org.apache.airavata.client.api.NodeSettings;
+import org.apache.airavata.client.tools.NameValuePairType;
+
+public class NodeSettingsImpl implements NodeSettings {
+	private String nodeId;
+	private String serviceId;
+	private HPCSettings hpcSettings;
+	private HostSchedulingSettings hostSchedulingSettings;
+	private List<NameValuePairType> nameValuePair;
+	
+	public NodeSettingsImpl(String nodeId) {
+		this(nodeId,null);
+	}
+
+	public NodeSettingsImpl(String nodeId, String serviceId) {
+		setNodeId(nodeId);
+		setServiceId(serviceId);
+	}
+	
+	@Override
+	public String getNodeId() {
+		return nodeId;
+	}
+
+	@Override
+	public String getServiceId() {
+		return serviceId;
+	}
+
+	@Override
+	public HostSchedulingSettings getHostSettings() {
+		if (hostSchedulingSettings==null){
+			hostSchedulingSettings=new HostSchedulingSettingsImpl();
+		}
+		return hostSchedulingSettings;
+	}
+
+	@Override
+	public HPCSettings getHPCSettings() {
+		if (hpcSettings==null){
+			hpcSettings=new HPCSettingsImpl();
+		}
+		return hpcSettings;
+	}
+
+	@Override
+	public void setNodeId(String nodeId) {
+		this.nodeId=nodeId;
+	}
+
+	@Override
+	public void setServiceId(String serviceId) {
+		this.serviceId=serviceId;
+	}
+
+	@Override
+	public void setHostSettings(HostSchedulingSettings hostSchedulingSettings) {
+		this.hostSchedulingSettings = hostSchedulingSettings;
+	}
+
+	@Override
+	public void setHPCSettings(HPCSettings hpcSettings) {
+		this.hpcSettings = hpcSettings;
+	}
+
+	@Override
+	public List<NameValuePairType> getNameValuePair() {
+		if (nameValuePair==null){
+			nameValuePair=new ArrayList<NameValuePairType>();
+		}
+		return nameValuePair;
+	}
+
+	@Override
+	public void setNameValuePair(List<NameValuePairType> nameValuePair) {
+		this.nameValuePair = nameValuePair;
+		
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/PasswordCallBackImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/PasswordCallBackImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/PasswordCallBackImpl.java
new file mode 100644
index 0000000..57d83a6
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/PasswordCallBackImpl.java
@@ -0,0 +1,39 @@
+///*
+// *
+// * 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.client.impl;
+//
+//import org.apache.airavata.registry.api.PasswordCallback;
+//
+//public class PasswordCallBackImpl implements PasswordCallback {
+//    private String username;
+//    private String password;
+//
+//    public PasswordCallBackImpl(String username, String password){
+//        this.username = username;
+//        this.password = password;
+//    }
+//
+//    @Override
+//    public String getPassword(String username) {
+//       return password;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java
new file mode 100644
index 0000000..e922a68
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java
@@ -0,0 +1,638 @@
+///*
+// *
+// * 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.client.impl;
+//
+//import org.apache.airavata.client.AiravataClient;
+//import org.apache.airavata.client.api.ProvenanceManager;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//import org.apache.airavata.registry.api.workflow.*;
+//import org.apache.airavata.registry.api.workflow.ApplicationJob.ApplicationJobStatus;
+//import org.apache.airavata.registry.api.workflow.WorkflowExecutionStatus.State;
+//
+//import java.util.*;
+//
+//public class ProvenanceManagerImpl implements ProvenanceManager {
+//	private AiravataClient client;
+//
+//	public ProvenanceManagerImpl(AiravataClient client) {
+//		setClient(client);
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeInput(WorkflowInstanceNode node, String data)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateWorkflowNodeInput(node, data);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeInput(String experimentId,
+//			String workflowInstanceId, String nodeId, String data)
+//			throws AiravataAPIInvocationException {
+//		setWorkflowInstanceNodeInput(new WorkflowInstanceNode(new WorkflowExecution(experimentId, workflowInstanceId), nodeId), data);
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeOutput(WorkflowInstanceNode node, String data)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateWorkflowNodeOutput(node, data);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeOutput(String experimentId,
+//			String workflowInstanceId, String nodeId, String data)
+//			throws AiravataAPIInvocationException {
+//		setWorkflowInstanceNodeOutput(new WorkflowInstanceNode(new WorkflowExecution(experimentId, workflowInstanceId), nodeId), data);
+//
+//	}
+//
+//	@Override
+//	public String getWorkflowInstanceNodeInput(WorkflowInstanceNode node) throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowInstanceNodeData(node.getWorkflowInstance().getWorkflowExecutionId(), node.getNodeId()).getInput();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public String getWorkflowInstanceNodeInput(String experimentId, String workflowInstanceId, String nodeId)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowInstanceNodeInput(new WorkflowInstanceNode(new WorkflowExecution(experimentId, workflowInstanceId), nodeId));
+//	}
+//
+//	@Override
+//	public Map<WorkflowInstanceNode,String> getWorkflowInstanceNodeInput(String workflowName, String nodeId) throws AiravataAPIInvocationException{
+////		try {
+////			List<WorkflowNodeIOData> list = getClient().getRegistryClient().searchWorkflowInstanceNodeInput(".*", workflowName, nodeId);
+////			return groupNodePortData(list);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	private Map<WorkflowInstanceNode, String> groupNodePortData(List<WorkflowNodeIOData> list) {
+//		Map<WorkflowInstanceNode,String> portData=new HashMap<WorkflowInstanceNode, String>();
+//		for (WorkflowNodeIOData data : list) {
+//			portData.put(new WorkflowInstanceNode(new WorkflowExecution(data.getExperimentId(), data.getWorkflowInstanceId()), data.getNodeId()), data.getValue());
+//		}
+//		return portData;
+//	}
+//
+//	@Override
+//	public String getWorkflowInstanceNodeOutput(WorkflowInstanceNode node) throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowInstanceNodeData(node.getWorkflowInstance().getWorkflowExecutionId(), node.getNodeId()).getOutput();
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public String getWorkflowInstanceNodeOutput(String experimentId, String workflowInstanceId, String nodeId)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowInstanceNodeOutput(new WorkflowInstanceNode(new WorkflowExecution(experimentId, workflowInstanceId), nodeId));
+//
+//	}
+//
+//	@Override
+//	public Map<WorkflowInstanceNode,String> getWorkflowInstanceNodeOutput(String workflowName, String nodeId) throws AiravataAPIInvocationException{
+////		try {
+////			List<WorkflowNodeIOData> list = getClient().getRegistryClient().searchWorkflowInstanceNodeOutput(".*", workflowName, nodeId);
+////			return groupNodePortData(list);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceStatus(String experimentId, String workflowInstanceId,
+//			State status) throws AiravataAPIInvocationException {
+//		setWorkflowInstanceStatus(new WorkflowExecutionStatus(new WorkflowExecution(experimentId, workflowInstanceId),status));
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceStatus(WorkflowExecutionStatus status)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateWorkflowInstanceStatus(status);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//	@Override
+//	public WorkflowExecutionStatus getWorkflowInstanceStatus(
+//			String experimentId, String workflowInstanceId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowInstanceStatus(experimentId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public WorkflowExecutionStatus getWorkflowInstanceStatus(
+//			WorkflowExecution workflowInstance)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowInstanceStatus(workflowInstance.getExperimentId(), workflowInstance.getWorkflowExecutionId());
+//	}
+//
+//	@Override
+//	public void setExperimentUser(String experimentId, String user) throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateExperimentExecutionUser(experimentId, user);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void setExperimentUser(ExperimentUser user)
+//			throws AiravataAPIInvocationException {
+//		setExperimentUser(user.getExperimentId(), user.getUser());
+//	}
+//
+//	@Override
+//	public ExperimentUser getExperimentUser(String experimentId)throws AiravataAPIInvocationException {
+////		try {
+////			return new ExperimentUser(experimentId,getClient().getRegistryClient().getExperimentExecutionUser(experimentId));
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void setExperimentMetadata(String experimentId, String metadata)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateExperimentMetadata(experimentId, metadata);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//	@Override
+//	public void setExperimentMetadata(ExperimentMetadata instanceMetadata)
+//			throws AiravataAPIInvocationException {
+//		setExperimentMetadata(instanceMetadata.getExperimentId(), instanceMetadata.getMetadata());
+//	}
+//
+//	@Override
+//	public ExperimentMetadata getExperimentMetadata(String experimentId)throws AiravataAPIInvocationException {
+////		try {
+////			return new ExperimentMetadata(experimentId, getClient().getRegistryClient().getExperimentMetadata(experimentId));
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//    @Override
+//    public boolean isExperimentNameExist(String experimentName) throws AiravataAPIInvocationException {
+////        try {
+////            return getClient().getRegistryClient().isExperimentNameExist(experimentName);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return false;
+//    }
+//
+//    @Override
+//	public List<String> getExperimentIdList(String owner) throws AiravataAPIInvocationException{
+////		try {
+////			return getClient().getRegistryClient().getExperimentIdByUser(owner);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<String> getExperimentIdList() throws AiravataAPIInvocationException {
+//		return getExperimentIdList(getClient().getCurrentUser());
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getWorkflowExperimentDataList()
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowExperimentDataList(getClient().getCurrentUser());
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getWorkflowExperimentDataList(String user)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return  getClient().getRegistryClient().getExperimentByUser(user);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getWorkflowExperimentData(String user,
+//			int pageSize, int pageNo) throws AiravataAPIInvocationException {
+////		try {
+////			return  getClient().getRegistryClient().getExperimentByUser(user, pageSize, pageNo);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public WorkflowExecutionData getWorkflowInstanceData(String experimentId,
+//			String workflowInstanceId) throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowInstanceData(workflowInstanceId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public WorkflowExecutionData getWorkflowInstanceData(WorkflowExecution workflowInstance)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowInstanceData(workflowInstance.getExperimentId(), workflowInstance.getWorkflowExecutionId());
+//	}
+//
+//	@Override
+//	public String[] getWorkflowExecutionOutputNames(String exeperimentId)
+//			throws AiravataAPIInvocationException {
+//		throw new AiravataAPIInvocationException(new Exception("Not implemented"));
+//	}
+//
+//	public AiravataClient getClient() {
+//		return client;
+//	}
+//
+//	public void setClient(AiravataClient client) {
+//		this.client = client;
+//	}
+//
+//	@Override
+//	public void setExperimentName(String experimentId, String experimentName)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateExperimentName(experimentId, experimentName);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void setExperimentName(ExperimentName experimentName)
+//			throws AiravataAPIInvocationException {
+//		setExperimentName(experimentName.getExperimentId(),experimentName.getInstanceName());
+//	}
+//
+//	@Override
+//	public ExperimentName getExperimentName(String experimentId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return new ExperimentName(experimentId, getClient().getRegistryClient().getExperimentName(experimentId));
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public ExperimentData getWorkflowExperimentData(String experimentId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getExperiment(experimentId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeStatus(String experimentId,
+//			String workflowInstaceId, String nodeId, State status)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateWorkflowNodeStatus(workflowInstaceId, nodeId, status);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//	@Override
+//	public void setWorkflowInstanceNodeStatus(NodeExecutionStatus status)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().updateWorkflowNodeStatus(status);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public NodeExecutionStatus getWorkflowInstanceNodeStatus(
+//			String experimentId, String workflowInstaceId, String nodeId)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowInstanceNodeStatus(new WorkflowInstanceNode(new WorkflowExecution(experimentId,workflowInstaceId),nodeId));
+//	}
+//
+//	@Override
+//	public NodeExecutionStatus getWorkflowInstanceNodeStatus(
+//			WorkflowInstanceNode node) throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getWorkflowNodeStatus(node);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void addExperiment(String projectName, String experimentId, String experimentName)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			AiravataExperiment experiment = new AiravataExperiment();
+////			experiment.setExperimentId(experimentId);
+////			getClient().getRegistryClient().addExperiment(projectName, experiment);
+////			getClient().getRegistryClient().updateExperimentName(experimentId, experimentName);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void addWorkflowInstance(String experimentId,
+//			WorkflowExecution workflowInstance)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			getClient().getRegistryClient().addWorkflowInstance(experimentId, workflowInstance.getWorkflowExecutionId(),workflowInstance.getTemplateName());
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//
+//	}
+//
+//    @Override
+//    public List<WorkflowExecution> getExperimentWorkflowInstances(String experimentId) throws AiravataAPIInvocationException {
+////        try{
+////            return getClient().getRegistryClient().getExperimentWorkflowInstances(experimentId);
+////        }catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//        return null;
+//    }
+//
+//    @Override
+//    public void setWorkflowNodeType(WorkflowInstanceNode node, WorkflowNodeType type) throws AiravataAPIInvocationException {
+////        try{
+////            getClient().getRegistryClient().updateWorkflowNodeType(node, type);
+////        }catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void setWorkflowInstanceTemplateName(String workflowInstanceId, String templateName) throws AiravataAPIInvocationException {
+////        try{
+////            getClient().getRegistryClient().setWorkflowInstanceTemplateName(workflowInstanceId, templateName);
+////        }catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//    public void saveWorkflowExecutionOutput(String experimentId, String outputNodeName, String output) throws AiravataAPIInvocationException {
+////        try {
+////            getClient().getRegistryClient().saveWorkflowExecutionOutput(experimentId, outputNodeName, output);
+////        } catch (Exception e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//    @Override
+//	public ExperimentData getExperimentMetaInformation(String experimentId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getExperimentMetaInformation(experimentId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getAllExperimentMetaInformation(String user)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return getClient().getRegistryClient().getAllExperimentMetaInformation(user);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getExperimentDataList()
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowExperimentDataList();
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getExperimentDataList(String user)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowExperimentDataList(user);
+//	}
+//
+//	@Override
+//	public List<ExperimentData> getExperimentData(String user, int pageSize,
+//			int pageNo) throws AiravataAPIInvocationException {
+//		return getWorkflowExperimentData(user, pageSize, pageNo);
+//	}
+//
+//	@Override
+//	public ExperimentData getExperimentData(String experimentId)
+//			throws AiravataAPIInvocationException {
+//		return getWorkflowExperimentData(experimentId);
+//	}
+//
+//    public void updateWorkflowNodeGramData(WorkflowNodeGramData data) throws AiravataAPIInvocationException {
+////        try {
+////            client.getRegistryClient().updateWorkflowNodeGramData(data);
+////        } catch (RegException e) {
+////            throw new AiravataAPIInvocationException(e);
+////        } catch (AiravataConfigurationException e) {
+////            throw new AiravataAPIInvocationException(e);
+////        }
+//    }
+//
+//	@Override
+//	public boolean isApplicationJobExists(String gfacJobId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return client.getRegistryClient().isApplicationJobExists(gfacJobId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return false;
+//	}
+//
+//	@Override
+//	public void addApplicationJob(ApplicationJob job) throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().addApplicationJob(job);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJob(ApplicationJob job)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJob(job);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJobStatus(String jobId, ApplicationJobStatus status, Date statusUpdateTime)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJobStatus(jobId, status, statusUpdateTime);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJobData(String jobId, String jobdata)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJobData(jobId, jobdata);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJobSubmittedTime(String jobId, Date submitted)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJobSubmittedTime(jobId, submitted);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJobStatusUpdateTime(String jobId, Date completed)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJobStatusUpdateTime(jobId, completed);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public void updateApplicationJobMetadata(String jobId, String metadata)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			client.getRegistryClient().updateApplicationJobMetadata(jobId, metadata);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//	}
+//
+//	@Override
+//	public ApplicationJob getApplicationJob(String jobId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return client.getRegistryClient().getApplicationJob(jobId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ApplicationJob> getApplicationJobsForDescriptors(String serviceDescriptionId,
+//			String hostDescriptionId, String applicationDescriptionId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return client.getRegistryClient().getApplicationJobsForDescriptors(serviceDescriptionId, hostDescriptionId, applicationDescriptionId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public List<ApplicationJob> getApplicationJobs(String experimentId,
+//			String workflowExecutionId, String nodeId)
+//			throws AiravataAPIInvocationException {
+////		try {
+////			return client.getRegistryClient().getApplicationJobs(experimentId, workflowExecutionId, nodeId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//	@Override
+//	public void updateApplicationJobStatus(String jobId,
+//			ApplicationJobStatus status) throws AiravataAPIInvocationException {
+//		updateApplicationJobStatus(jobId, status, Calendar.getInstance().getTime());
+//	}
+//
+//	@Override
+//	public List<ApplicationJobStatusData> getApplicationJobStatusHistory(
+//			String jobId) throws AiravataAPIInvocationException {
+////		try {
+////			return client.getRegistryClient().getApplicationJobStatusHistory(jobId);
+////		} catch (Exception e) {
+////			throw new AiravataAPIInvocationException(e);
+////		}
+//        return null;
+//	}
+//
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/SecuritySettingsImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/SecuritySettingsImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/SecuritySettingsImpl.java
new file mode 100644
index 0000000..7a72998
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/SecuritySettingsImpl.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.api.*;
+import org.apache.airavata.client.api.exception.AiravataAPIUnimplementedException;
+
+public class SecuritySettingsImpl implements SecuritySettings {
+    private AmazonWebServicesSettings amazonWebServicesSettings = new AmazonWebServicesSettingsImpl();
+    private CredentialStoreSecuritySettings credentialStoreSecuritySettings = new CredentialStoreSecuritySettingsImpl();
+
+    public AmazonWebServicesSettings getAmazonWSSettings() {
+        return amazonWebServicesSettings;
+    }
+
+    public CredentialStoreSecuritySettings getCredentialStoreSecuritySettings() throws AiravataAPIUnimplementedException {
+        return credentialStoreSecuritySettings;
+    }
+
+    public GridMyProxyRepositorySettings getGridMyProxyRepositorySettings() throws AiravataAPIUnimplementedException {
+        throw new AiravataAPIUnimplementedException("Customizing security is not supported by the client in this binary!!!");
+    }
+
+    public SSHAuthenticationSettings getSSHAuthenticationSettings() throws AiravataAPIUnimplementedException {
+        throw new AiravataAPIUnimplementedException("Customizing security is not supported by the client in this binary!!!");
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/UserManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/UserManagerImpl.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/UserManagerImpl.java
new file mode 100644
index 0000000..06ea94a
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/UserManagerImpl.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * 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.client.impl;
+
+import org.apache.airavata.client.AiravataClient;
+import org.apache.airavata.client.api.UserManager;
+
+public class UserManagerImpl implements UserManager {
+	private AiravataClient client;
+	
+	public UserManagerImpl(AiravataClient client) {
+		setClient(client);
+	}
+	
+	@Override
+	public String getAiravataUser() {
+		return getClient().getCurrentUser();
+	}
+	public AiravataClient getClient() {
+		return client;
+	}
+	public void setClient(AiravataClient client) {
+		this.client = client;
+	}
+
+}


[9/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
Revert "removing previous airavata client API - AIRAVATA-1371"

This reverts commit 32fff944499a31a73ced4f74e297a2639e975401.


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/2654424b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/2654424b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/2654424b

Branch: refs/heads/master
Commit: 2654424bd1470e11cccc03eb5c027e98561581e5
Parents: 714c204
Author: Sachith Withana <sw...@Sachiths-MacBook-Pro.local>
Authored: Thu Jan 22 20:24:58 2015 +0530
Committer: Sachith Withana <sw...@Sachiths-MacBook-Pro.local>
Committed: Thu Jan 22 20:24:58 2015 +0530

----------------------------------------------------------------------
 modules/airavata-client/pom.xml                 |   88 +
 .../airavata/client/AiravataAPIFactory.java     |   60 +
 .../airavata/client/AiravataAPIUtils.java       |   86 +
 .../apache/airavata/client/AiravataClient.java  |  353 +++
 .../client/AiravataClientConfiguration.java     |  106 +
 .../client/RegistryServiceCallbackHandler.java  |   79 +
 .../airavata/client/RegistryServiceStub.java    |  975 ++++++++
 .../apache/airavata/client/api/AiravataAPI.java |  113 +
 .../airavata/client/api/AiravataManager.java    |  137 ++
 .../client/api/AmazonWebServicesSettings.java   |   38 +
 .../airavata/client/api/ApplicationManager.java |  284 +++
 .../org/apache/airavata/client/api/BaseAPI.java |   46 +
 .../client/api/CredentialStoreManager.java      |   62 +
 .../api/CredentialStoreSecuritySettings.java    |   69 +
 .../airavata/client/api/ExecutionManager.java   |  207 ++
 .../client/api/ExperimentAdvanceOptions.java    |  160 ++
 .../api/GridMyProxyRepositorySettings.java      |   39 +
 .../apache/airavata/client/api/HPCSettings.java |  111 +
 .../client/api/HostSchedulingSettings.java      |   71 +
 .../airavata/client/api/NodeSettings.java       |   90 +
 .../airavata/client/api/OutputDataSettings.java |   90 +
 .../airavata/client/api/ProvenanceManager.java  |  461 ++++
 .../client/api/SSHAuthenticationSettings.java   |   30 +
 .../airavata/client/api/SecuritySettings.java   |   31 +
 .../apache/airavata/client/api/UserManager.java |   31 +
 .../airavata/client/api/WorkflowManager.java    |  477 ++++
 .../client/api/WorkflowOutputDataSettings.java  |   65 +
 .../client/api/WorkflowSchedulingSettings.java  |   79 +
 .../client/api/builder/DescriptorBuilder.java   |  208 ++
 .../AiravataAPIInvocationException.java         |   44 +
 .../AiravataAPIUnimplementedException.java      |   33 +
 .../DescriptorAlreadyExistsException.java       |   44 +
 .../WorkflowAlreadyExistsException.java         |   43 +
 .../client/impl/AiravataManagerImpl.java        |  310 +++
 .../impl/AmazonWebServicesSettingsImpl.java     |   93 +
 .../client/impl/ApplicationManagerImpl.java     |  497 ++++
 .../impl/ApplicationOutputDataSettingsImpl.java |   98 +
 .../client/impl/CredentialStoreManagerImpl.java |   79 +
 .../CredentialStoreSecuritySettingsImpl.java    |   70 +
 .../client/impl/ExecutionManagerImpl.java       |  419 ++++
 .../client/impl/ExecutionManagerThriftImpl.java |  467 ++++
 .../airavata/client/impl/HPCSettingsImpl.java   |  108 +
 .../client/impl/HostSchedulingSettingsImpl.java |   71 +
 .../airavata/client/impl/NodeSettingsImpl.java  |  108 +
 .../client/impl/PasswordCallBackImpl.java       |   39 +
 .../client/impl/ProvenanceManagerImpl.java      |  638 ++++++
 .../client/impl/SecuritySettingsImpl.java       |   46 +
 .../airavata/client/impl/UserManagerImpl.java   |   45 +
 .../client/impl/WorkflowManagerImpl.java        |  535 +++++
 .../impl/WorkflowOutputDataSettingsImpl.java    |   78 +
 .../impl/WorkflowSchedulingSettingsImpl.java    |   97 +
 .../client/stub/interpretor/NameValue.java      |  559 +++++
 .../WorkflowInterpretorCallbackHandler.java     |   72 +
 .../interpretor/WorkflowInterpretorStub.java    | 2152 ++++++++++++++++++
 .../airavata/client/tools/DocumentCreator.java  |  898 ++++++++
 .../client/tools/DocumentCreatorNew.java        |  823 +++++++
 .../client/tools/DocumentCreatorUtils.java      |  165 ++
 .../client/tools/NameValuePairType.java         |   48 +
 .../client/tools/PeriodicExecutorThread.java    |   61 +
 .../client/tools/UltrascanDocumentCreator.java  |  444 ++++
 .../src/main/resources/RegistryService.wsdl     |   92 +
 .../client/airavata/AiravataClientTest.java     |  107 +
 modules/gfac/gfac-bes/pom.xml                   |    2 +-
 pom.xml                                         |    2 +
 64 files changed, 14032 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/pom.xml
----------------------------------------------------------------------
diff --git a/modules/airavata-client/pom.xml b/modules/airavata-client/pom.xml
new file mode 100644
index 0000000..72e7997
--- /dev/null
+++ b/modules/airavata-client/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata</artifactId>
+        <version>0.15-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>airavata-client-api</artifactId>
+    <name>Airavata Client</name>
+    <description>Client API for accessing Airavata Services</description>
+    <url>http://airavata.apache.org/</url>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-api-stubs</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>app-catalog-cpi</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb-codegen</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-workflow-model-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-workflow-execution-context</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+            <version>${jcr.version}</version>
+        </dependency>
+	<dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-client-configuration</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-jpa-registry</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+	<dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-message-monitor</artifactId>
+	    <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>${pom.basedir}/target/generated/wsdl2code/resources</directory>
+                <includes>
+                    <include>**/**</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
new file mode 100644
index 0000000..d2f87c0
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIFactory.java
@@ -0,0 +1,60 @@
+/**
+ * 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.client;
+
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.common.utils.SecurityUtil;
+
+import java.net.URI;
+
+public class AiravataAPIFactory {
+	
+	public static AiravataAPI getAPI(String gateway, String username) throws AiravataAPIInvocationException{
+        return getAPI(null, gateway, username);
+    }
+	
+	public static AiravataAPI getAPI(URI registryURL, String gateway, String username) throws AiravataAPIInvocationException{
+        return getAPI(registryURL, gateway, username, username);
+    }
+
+    public static AiravataAPI getAPI(URI registryURL, String gateway, String username,
+                                     String trustStoreFilePath, String trustStorePassword)
+            throws AiravataAPIInvocationException{
+
+        SecurityUtil.setTrustStoreParameters(trustStoreFilePath, trustStorePassword);
+        return getAPI(registryURL, gateway, username, username);
+    }
+    
+    public static AiravataAPI getAPI(URI registryURL, String gateway, String username, String alternateUsername) throws AiravataAPIInvocationException{
+        try {
+			AiravataAPI apiObj = new AiravataClient();
+			apiObj.setCurrentUser(alternateUsername);
+//			apiObj.setCallBack(callback);
+			apiObj.setRegitryURI(registryURL);
+			apiObj.setGateway(gateway);
+			apiObj.initialize();
+			return apiObj;
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIUtils.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIUtils.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIUtils.java
new file mode 100644
index 0000000..3889903
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataAPIUtils.java
@@ -0,0 +1,86 @@
+/*
+ *
+ * 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.client;
+
+import java.util.List;
+
+import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+import org.apache.airavata.client.api.NodeSettings;
+import org.apache.airavata.client.api.OutputDataSettings;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.tools.NameValuePairType;
+import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
+
+public class AiravataAPIUtils {
+
+	//------------------Deprecated Functions---------------------//
+	
+	public static WorkflowContextHeaderBuilder createWorkflowContextHeader()
+			throws AiravataAPIInvocationException {
+		try {
+			return new WorkflowContextHeaderBuilder(null,
+					null,null,null,null,null);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+	
+	//------------------End of Deprecated Functions---------------------//
+
+	public static WorkflowContextHeaderBuilder createWorkflowContextHeaderBuilder(
+			ExperimentAdvanceOptions options, String executionUser, String submissionUser)
+			throws AiravataAPIInvocationException {
+		WorkflowContextHeaderBuilder builder=createWorkflowContextHeader();
+		builder.setUserIdentifier(executionUser);
+		builder.setSubmissionUser(submissionUser);
+		NodeSettings[] nodeSettingsList = options.getCustomWorkflowSchedulingSettings().getNodeSettingsList();
+		for (NodeSettings nodeSettings : nodeSettingsList) {
+			List<NameValuePairType> nameValuePairTypes = nodeSettings.getNameValuePair();
+			for (NameValuePairType nameValuePairType : nameValuePairTypes) {
+				builder.addApplicationSchedulingKeyPair(nodeSettings.getNodeId(),nameValuePairType.getName(), nameValuePairType.getValue(), nameValuePairType.getDescription());
+			}
+			builder.addApplicationSchedulingContext(nodeSettings.getNodeId(), nodeSettings.getServiceId(), nodeSettings.getHostSettings().getHostId(), nodeSettings.getHostSettings().isWSGRAMPreffered(), nodeSettings.getHostSettings().getGatekeeperEPR(), nodeSettings.getHPCSettings().getJobManager(), nodeSettings.getHPCSettings().getCPUCount(), nodeSettings.getHPCSettings().getNodeCount(), nodeSettings.getHPCSettings().getQueueName(), nodeSettings.getHPCSettings().getMaxWallTime());
+		
+		}
+		OutputDataSettings[] outputDataSettingsList = options.getCustomWorkflowOutputDataSettings().getOutputDataSettingsList();
+		for (OutputDataSettings outputDataSettings : outputDataSettingsList) {
+			builder.addApplicationOutputDataHandling(outputDataSettings.getNodeId(),outputDataSettings.getOutputDataDirectory(), outputDataSettings.getDataRegistryUrl(), outputDataSettings.isDataPersistent());
+		}
+
+        if (options.getCustomSecuritySettings().getAmazonWSSettings().getAccessKeyId() != null) {
+            builder.setAmazonWebServices(options.getCustomSecuritySettings().getAmazonWSSettings().getAccessKeyId(),
+                    options.getCustomSecuritySettings().getAmazonWSSettings().getSecretAccessKey());
+        }
+
+        if (options.getCustomSecuritySettings().getCredentialStoreSecuritySettings() != null) {
+            builder.setCredentialManagementService(options.getCustomSecuritySettings().
+                    getCredentialStoreSecuritySettings().getTokenId(),
+                    options.getCustomSecuritySettings().
+                            getCredentialStoreSecuritySettings().getPortalUser(),
+                    options.getCustomSecuritySettings().
+                            getCredentialStoreSecuritySettings().getGatewayId());
+        }
+
+
+		return builder;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
new file mode 100644
index 0000000..c5809cc
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
@@ -0,0 +1,353 @@
+/*
+ *
+ * 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.client;
+
+import org.apache.airavata.client.api.*;
+import org.apache.airavata.client.api.builder.DescriptorBuilder;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.impl.*;
+import org.apache.airavata.common.exception.AiravataConfigurationException;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.common.utils.Version;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.RepositoryException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Observable;
+
+public class AiravataClient extends Observable implements AiravataAPI {
+
+	private static final Logger log = LoggerFactory
+			.getLogger(AiravataClient.class);
+	public static final String REGISTRY = "JCR";
+	public static final String GFAC = "gfac";
+	public static final String MSGBOX = "msgbox";
+	public static final String BROKER = "broker";
+	public static final String WITHLISTENER = "with.Listener";
+	public static final String WORKFLOWSERVICEURL = "xbaya.service.url";
+	private AiravataClientConfiguration clientConfiguration;
+	private String currentUser;
+	private URI regitryURI;
+
+	private Map<String, String> configuration = new HashMap<String, String>();
+	private AiravataManagerImpl airavataManagerImpl;
+//	private ApplicationManagerImpl applicationManagerImpl;
+	private WorkflowManagerImpl workflowManagerImpl;
+	private UserManagerImpl userManagerImpl;
+//	private ExecutionManagerThriftImpl executionManagerImpl;
+    private ExecutionManager executionManager;
+
+    private CredentialStoreManagerImpl credentialStoreManagerImpl;
+	private String gateway;
+	private boolean configCreated = false;
+
+    private static volatile boolean registryServiceStarted = false;
+
+    private static int WAIT_TIME_PERIOD = 4 * 1000;
+    private static int WAIT_ITERATIONS = 15;
+
+	private static final Version API_VERSION = new Version("Airavata", 0, 11,
+			null, null, null);
+
+	// FIXME: Need a constructor to set registry URL
+	protected AiravataClient() {
+	}
+
+	private static HashMap<String, String> createConfig(URI registryUrl, String gateway,
+			String username, String password) throws RepositoryException,
+            AiravataConfigurationException {
+		HashMap<String, String> config = new HashMap<String, String>();
+		if (registryUrl != null) {
+			config.put(AiravataClient.REGISTRY, registryUrl.toString());
+		}
+//		AiravataRegistry2 registryObject = getRegistry(registryUrl, gateway,
+//				username, new PasswordCallBackImpl(username, password));
+//		if (registryObject != null) {
+//			URI uri = registryObject.getEventingServiceURI();
+//			config.put(
+//					AiravataClient.BROKER,
+//					uri == null ? "http://localhost:8080/airavata-server/services/EventingService"
+//							: uri.toString());
+//			uri = registryObject.getMessageBoxURI();
+//			config.put(
+//					AiravataClient.MSGBOX,
+//					uri == null ? "http://localhost:8080/airavata-server/services/MsgBoxService"
+//							: uri.toString());
+//			List<URI> URLList = registryObject.getWorkflowInterpreterURIs();
+//			config.put(
+//					AiravataClient.WORKFLOWSERVICEURL,
+//					URLList == null || URLList.size() == 0 ? "http://localhost:8080/airavata-server/services/WorkflowInterpretor?wsdl"
+//							: URLList.get(0).toString());
+//			List<URI> urlList = registryObject.getGFacURIs();
+//			config.put(
+//					AiravataClient.GFAC,
+//					urlList == null || urlList.size() == 0 ? "http://localhost:8080/airavata-server/services/GFacService"
+//							: urlList.get(0).toString());
+//			config.put(AiravataClient.WITHLISTENER, "true");
+//		}
+		return config;
+	}
+
+	@Override
+	public void initialize() throws AiravataAPIInvocationException {
+
+//        if (AiravataUtils.isServer()) {
+//            waitTillRegistryServiceStarts();
+//        }
+    }
+
+    private String getRegistryWebServiceWSDLUrl() throws AiravataAPIInvocationException {
+        String registryUrl = null;
+        try {
+            registryUrl = ServerSettings.getSetting("registry.service.wsdl");
+        } catch (ApplicationSettingsException e) {
+            String msg = "Configuration registry.service.wsdl is not specified in the configuration file";
+            log.warn(msg);
+            log.debug(msg, e);
+        }
+
+        if (registryUrl == null) {
+            String hostName = getRegitryURI().getHost();
+            int port = getRegitryURI().getPort();
+            String protocol = null;
+            try {
+                protocol = getRegitryURI().toURL().getProtocol();
+            } catch (MalformedURLException e) {
+                String msg = "Error retrieving protocol from registry URI - "
+                        + getRegitryURI().toString();
+                log.error(msg, e);
+                throw new AiravataAPIInvocationException(msg, e);
+            }
+
+            StringBuilder registryServiceUrlString = new StringBuilder(protocol);
+            registryServiceUrlString.append("://").append(hostName).append(":").append(port);
+            registryServiceUrlString.append("/axis2/services/RegistryService?wsdl");
+
+            registryUrl = registryServiceUrlString.toString();
+        }
+
+        return registryUrl;
+    }
+
+    private void waitForRegistryServiceToStart(String url) throws AiravataAPIInvocationException {
+
+        log.info("Registry service URL - " + url);
+
+        int iterations = 0;
+        Exception exception = null;
+
+        while (!registryServiceStarted) {
+            try {
+                RegistryServiceStub stub =
+                        new RegistryServiceStub(url);
+                registryServiceStarted = stub.isRegistryServiceStarted().get_return();
+            } catch (Exception e) {
+                exception = e;
+            }
+
+            if (!registryServiceStarted) {
+                try {
+                    if (iterations == WAIT_ITERATIONS) {
+                        if (exception != null) {
+                            throw new AiravataAPIInvocationException("Unable to connect to RegistryService. " +
+                                    "RegistryService may not have started", exception);
+                        } else {
+                            throw new AiravataAPIInvocationException("Unable to connect to RegistryService. " +
+                                    "RegistryService may not have started");
+                        }
+
+                    } else {
+                        Thread.sleep(WAIT_TIME_PERIOD);
+                    }
+                } catch (InterruptedException e1) {
+                    log.info("Received an interrupted exception.");
+                }
+
+                log.info("Attempting to contact registry service, iteration - " + iterations);
+
+                ++iterations;
+            }
+
+        }
+
+
+    }
+
+//	private void updateClientConfiguration(Map<String, String> configuration)
+//			throws MalformedURLException {
+//		AiravataClientConfiguration clientConfiguration = getClientConfiguration();
+//		if (configuration.get(GFAC) != null) {
+//			clientConfiguration.setGfacURL(new URL(configuration.get(GFAC)));
+//		}
+//		if (configuration.get(MSGBOX) != null) {
+//			clientConfiguration.setMessageboxURL(new URL(configuration
+//					.get(MSGBOX)));
+//		}
+//		if (configuration.get(BROKER) != null) {
+//			clientConfiguration.setMessagebrokerURL(new URL(configuration
+//					.get(BROKER)));
+//		}
+//		if (configuration.get(WORKFLOWSERVICEURL) != null) {
+//			clientConfiguration.setXbayaServiceURL(new URL(configuration
+//					.get(WORKFLOWSERVICEURL)));
+//		}
+//		if (configuration.get(MSGBOX) != null) {
+//			clientConfiguration.setMessageboxURL(new URL(configuration
+//					.get(MSGBOX)));
+//		}
+//
+//		if (clientConfiguration.getRegistryURL() != null
+//				&& clientConfiguration.getGfacURL() == null) {
+//			try {
+//				clientConfiguration.setGfacURL(getRegistryClient()
+//						.getGFacURIs().get(0).toURL());
+//				configuration.put(GFAC, clientConfiguration.getGfacURL()
+//						.toString());
+//			} catch (Exception e) {
+//				e.printStackTrace();
+//			}
+//		}
+//	}
+
+//	public AiravataRegistry2 getRegistryClient()
+//			throws AiravataConfigurationException, RegException {
+//		if (registry == null) {
+//			registry = getRegistry(getRegitryURI(), getGateway(),
+//					getCurrentUser(), getCallBack());
+//		}
+//		return registry;
+//	}
+
+//	public static AiravataRegistry2 getRegistry(URI registryURI,
+//			String gateway, String username, PasswordCallback callback)
+//			throws RegException, AiravataConfigurationException {
+//		return AiravataRegistryFactory.getRegistry(registryURI, new Gateway(
+//				gateway), new AiravataUser(username), callback);
+//	}
+
+	public AiravataClientConfiguration getClientConfiguration() {
+		if (clientConfiguration == null) {
+			clientConfiguration = new AiravataClientConfiguration();
+		}
+		return clientConfiguration;
+	}
+
+	public AiravataManager getAiravataManager() {
+		if (airavataManagerImpl == null) {
+			airavataManagerImpl = new AiravataManagerImpl(this);
+		}
+		return airavataManagerImpl;
+	}
+
+//	public ApplicationManager getApplicationManager() {
+//		if (applicationManagerImpl == null) {
+//			applicationManagerImpl = new ApplicationManagerImpl(this);
+//		}
+//		return applicationManagerImpl;
+//	}
+
+	public WorkflowManager getWorkflowManager() {
+		if (workflowManagerImpl == null) {
+			workflowManagerImpl = new WorkflowManagerImpl(this);
+		}
+		return workflowManagerImpl;
+	}
+
+	public UserManager getUserManager() {
+		if (userManagerImpl == null) {
+			userManagerImpl = new UserManagerImpl(this);
+		}
+		return userManagerImpl;
+	}
+
+	public ExecutionManager getExecutionManager() {
+        if (executionManager == null){
+            executionManager = new ExecutionManagerImpl(this);
+        }
+		return executionManager;
+	}
+
+	@Override
+	public CredentialStoreManager getCredentialStoreManager() {
+		if(credentialStoreManagerImpl == null)
+			credentialStoreManagerImpl = new CredentialStoreManagerImpl(this);
+		return credentialStoreManagerImpl;
+	}
+
+    private ExecutionManager getExecutionManagerObj(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+        Class<?> cls = Class.forName(className);
+        if (!ExecutionManager.class.isAssignableFrom(cls)) {
+            throw new IllegalArgumentException();
+        }
+        return (ExecutionManager) cls.newInstance();
+    }
+
+	public String getCurrentUser() {
+		return currentUser;
+	}
+
+	public Version getVersion() {
+		return API_VERSION;
+	}
+
+	@Override
+	public DescriptorBuilder getDescriptorBuilder() {
+		return new DescriptorBuilder();
+	}
+
+	public void setCurrentUser(String currentUser) {
+		this.currentUser = currentUser;
+	}
+
+	public void setRegitryURI(URI regitryURI) {
+		this.regitryURI = regitryURI;
+	}
+
+
+	public URI getRegitryURI() {
+		return regitryURI;
+	}
+
+	public String getGateway() {
+		return gateway;
+	}
+
+	public void setGateway(String gateway) {
+		this.gateway = gateway;
+	}
+
+	public static void main(String[] args) throws Exception {
+		AiravataAPI api = AiravataAPIFactory.getAPI(new URI("http://localhost:8080/airavata/services/registry"), "default", "admin");
+		ExperimentAdvanceOptions options = api.getExecutionManager().createExperimentAdvanceOptions();
+		options.getCustomWorkflowSchedulingSettings().addNewNodeSettings("data1", "comma_app", 1, 1);
+		String workflow = "Workflow3";
+            List<WorkflowInput> inputs = api.getWorkflowManager().getWorkflowInputs(workflow);
+		System.out.println(api.getExecutionManager().runExperiment(workflow, inputs,options));
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClientConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClientConfiguration.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClientConfiguration.java
new file mode 100644
index 0000000..c021c13
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClientConfiguration.java
@@ -0,0 +1,106 @@
+/*
+ *
+ * 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.client;
+
+import java.net.URL;
+
+public class AiravataClientConfiguration {
+	private URL gfacURL;
+	private String myproxyHost="myproxy.teragrid.org";
+	private URL messageboxURL;
+	private URL messagebrokerURL;
+	private String myproxyUsername="ogce";
+	private String myproxyPassword="testpassword";
+	private URL xbayaServiceURL;
+	private URL jcrURL;
+	private String jcrUsername="admin";
+	private String jcrPassword="admin";
+	private String echoMessage="Hello World";
+	
+	public URL getGfacURL() {
+		return gfacURL;
+	}
+	public void setGfacURL(URL gfacURL) {
+		this.gfacURL = gfacURL;
+	}
+	public String getMyproxyHost() {
+		return myproxyHost;
+	}
+	public void setMyproxyHost(String myproxyHost) {
+		this.myproxyHost = myproxyHost;
+	}
+	public URL getMessageboxURL() {
+		return messageboxURL;
+	}
+	public void setMessageboxURL(URL messageboxURL) {
+		this.messageboxURL = messageboxURL;
+	}
+	public URL getMessagebrokerURL() {
+		return messagebrokerURL;
+	}
+	public void setMessagebrokerURL(URL messagebrokerURL) {
+		this.messagebrokerURL = messagebrokerURL;
+	}
+	public String getMyproxyUsername() {
+		return myproxyUsername;
+	}
+	public void setMyproxyUsername(String myproxyUsername) {
+		this.myproxyUsername = myproxyUsername;
+	}
+	public String getMyproxyPassword() {
+		return myproxyPassword;
+	}
+	public void setMyproxyPassword(String myproxyPassword) {
+		this.myproxyPassword = myproxyPassword;
+	}
+	public URL getXbayaServiceURL() {
+		return xbayaServiceURL;
+	}
+	public void setXbayaServiceURL(URL xbayaServiceURL) {
+		this.xbayaServiceURL = xbayaServiceURL;
+	}
+	public URL getRegistryURL() {
+		return jcrURL;
+	}
+	public void setRegistryURL(URL jcrURL) {
+		this.jcrURL = jcrURL;
+	}
+	public String getJcrUsername() {
+		return jcrUsername;
+	}
+	public void setJcrUsername(String jcrUsername) {
+		this.jcrUsername = jcrUsername;
+	}
+	public String getJcrPassword() {
+		return jcrPassword;
+	}
+	public void setJcrPassword(String jcrPassword) {
+		this.jcrPassword = jcrPassword;
+	}
+	public String getEchoMessage() {
+		return echoMessage;
+	}
+	public void setEchoMessage(String echoMessage) {
+		this.echoMessage = echoMessage;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceCallbackHandler.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceCallbackHandler.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceCallbackHandler.java
new file mode 100644
index 0000000..7264ce8
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceCallbackHandler.java
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.client;
+
+    /**
+     *  RegistryServiceCallbackHandler Callback class, Users can extend this class and implement
+     *  their own receiveResult and receiveError methods.
+     */
+    public abstract class RegistryServiceCallbackHandler{
+
+
+
+    protected Object clientData;
+
+    /**
+    * User can pass in any object that needs to be accessed once the NonBlocking
+    * Web service call is finished and appropriate method of this CallBack is called.
+    * @param clientData Object mechanism by which the user can pass in user data
+    * that will be avilable at the time this callback is called.
+    */
+    public RegistryServiceCallbackHandler(Object clientData){
+        this.clientData = clientData;
+    }
+
+    /**
+    * Please use this constructor if you don't want to set any clientData
+    */
+    public RegistryServiceCallbackHandler(){
+        this.clientData = null;
+    }
+
+    /**
+     * Get the client data
+     */
+
+     public Object getClientData() {
+        return clientData;
+     }
+
+        
+           /**
+            * auto generated Axis2 call back method for isRegistryServiceStarted method
+            * override this method for handling normal response from isRegistryServiceStarted operation
+            */
+           public void receiveResultisRegistryServiceStarted(
+                    org.apache.airavata.client.RegistryServiceStub.IsRegistryServiceStartedResponse result
+                        ) {
+           }
+
+          /**
+           * auto generated Axis2 Error handler
+           * override this method for handling error response from isRegistryServiceStarted operation
+           */
+            public void receiveErrorisRegistryServiceStarted(java.lang.Exception e) {
+            }
+                
+
+
+    }
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceStub.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceStub.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceStub.java
new file mode 100644
index 0000000..41f569e
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/RegistryServiceStub.java
@@ -0,0 +1,975 @@
+/*
+ *
+ * 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.
+ *
+*/
+/**
+ * RegistryServiceStub.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: 1.5.1  Built on : Oct 19, 2009 (10:59:00 EDT)
+ */
+        package org.apache.airavata.client;
+
+        
+
+        /*
+        *  RegistryServiceStub java implementation
+        */
+
+        
+        public class RegistryServiceStub extends org.apache.axis2.client.Stub
+        {
+        protected org.apache.axis2.description.AxisOperation[] _operations;
+
+        //hashmaps to keep the fault mapping
+        private java.util.HashMap faultExceptionNameMap = new java.util.HashMap();
+        private java.util.HashMap faultExceptionClassNameMap = new java.util.HashMap();
+        private java.util.HashMap faultMessageMap = new java.util.HashMap();
+
+        private static int counter = 0;
+
+        private static synchronized java.lang.String getUniqueSuffix(){
+            // reset the counter if it is greater than 99999
+            if (counter > 99999){
+                counter = 0;
+            }
+            counter = counter + 1; 
+            return java.lang.Long.toString(System.currentTimeMillis()) + "_" + counter;
+        }
+
+    
+    private void populateAxisService() throws org.apache.axis2.AxisFault {
+
+     //creating the Service with a unique name
+     _service = new org.apache.axis2.description.AxisService("RegistryService" + getUniqueSuffix());
+     addAnonymousOperations();
+
+        //creating the operations
+        org.apache.axis2.description.AxisOperation __operation;
+
+        _operations = new org.apache.axis2.description.AxisOperation[1];
+        
+                   __operation = new org.apache.axis2.description.OutInAxisOperation();
+                
+
+            __operation.setName(new javax.xml.namespace.QName("http://services.registry.airavata.apache.org", "isRegistryServiceStarted"));
+	    _service.addOperation(__operation);
+	    
+
+	    
+	    
+            _operations[0]=__operation;
+            
+        
+        }
+
+    //populates the faults
+    private void populateFaults(){
+         
+
+
+    }
+
+    /**
+      *Constructor that takes in a configContext
+      */
+
+    public RegistryServiceStub(org.apache.axis2.context.ConfigurationContext configurationContext,
+       java.lang.String targetEndpoint)
+       throws org.apache.axis2.AxisFault {
+         this(configurationContext,targetEndpoint,false);
+   }
+
+
+   /**
+     * Constructor that takes in a configContext  and useseperate listner
+     */
+   public RegistryServiceStub(org.apache.axis2.context.ConfigurationContext configurationContext,
+        java.lang.String targetEndpoint, boolean useSeparateListener)
+        throws org.apache.axis2.AxisFault {
+         //To populate AxisService
+         populateAxisService();
+         populateFaults();
+
+        _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,_service);
+        
+	
+        _serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(
+                targetEndpoint));
+        _serviceClient.getOptions().setUseSeparateListener(useSeparateListener);
+        
+            //Set the soap version
+            _serviceClient.getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        
+    
+    }
+
+    /**
+     * Default Constructor
+     */
+    public RegistryServiceStub(org.apache.axis2.context.ConfigurationContext configurationContext) throws org.apache.axis2.AxisFault {
+        
+                    this(configurationContext,"http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpSoap12Endpoint/" );
+                
+    }
+
+    /**
+     * Default Constructor
+     */
+    public RegistryServiceStub() throws org.apache.axis2.AxisFault {
+        
+                    this("http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpSoap12Endpoint/" );
+                
+    }
+
+    /**
+     * Constructor taking the target endpoint
+     */
+    public RegistryServiceStub(java.lang.String targetEndpoint) throws org.apache.axis2.AxisFault {
+        this(null,targetEndpoint);
+    }
+
+
+
+        
+                    /**
+                     * Auto generated method signature
+                     * 
+                     * @see org.apache.airavata.registry.services.RegistryService#isRegistryServiceStarted
+                     */
+
+                    
+
+                            public  RegistryServiceStub.IsRegistryServiceStartedResponse isRegistryServiceStarted(
+
+                            )
+                        
+
+                    throws java.rmi.RemoteException
+                    
+                    {
+              org.apache.axis2.context.MessageContext _messageContext = null;
+              try{
+               org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0].getName());
+              _operationClient.getOptions().setAction("urn:isRegistryServiceStarted");
+              _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+              
+              
+                  addPropertyToOperationClient(_operationClient,org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,"&");
+              
+
+              // create a message context
+              _messageContext = new org.apache.axis2.context.MessageContext();
+
+              
+
+              // create SOAP envelope with that payload
+              org.apache.axiom.soap.SOAPEnvelope env = null;
+                    
+                                    //Style is taken to be "document". No input parameters
+                                    // according to the WS-Basic profile in this case we have to send an empty soap message
+                                    org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                                    env = factory.getDefaultEnvelope();
+                                
+        //adding SOAP soap_headers
+         _serviceClient.addHeadersToEnvelope(env);
+        // set the message context with that soap envelope
+        _messageContext.setEnvelope(env);
+
+        // add the message contxt to the operation client
+        _operationClient.addMessageContext(_messageContext);
+
+        //execute the operation client
+        _operationClient.execute(true);
+
+         
+               org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient.getMessageContext(
+                                           org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
+                
+                
+                                java.lang.Object object = fromOM(
+                                             _returnEnv.getBody().getFirstElement() ,
+                                             RegistryServiceStub.IsRegistryServiceStartedResponse.class,
+                                              getEnvelopeNamespaces(_returnEnv));
+
+                               
+                                        return (RegistryServiceStub.IsRegistryServiceStartedResponse)object;
+                                   
+         }catch(org.apache.axis2.AxisFault f){
+
+            org.apache.axiom.om.OMElement faultElt = f.getDetail();
+            if (faultElt!=null){
+                if (faultExceptionNameMap.containsKey(faultElt.getQName())){
+                    //make the fault by reflection
+                    try{
+                        java.lang.String exceptionClassName = (java.lang.String)faultExceptionClassNameMap.get(faultElt.getQName());
+                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+                        java.lang.Exception ex=
+                                (java.lang.Exception) exceptionClass.newInstance();
+                        //message class
+                        java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
+                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+                        java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
+                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                   new java.lang.Class[]{messageClass});
+                        m.invoke(ex,new java.lang.Object[]{messageObject});
+                        
+
+                        throw new java.rmi.RemoteException(ex.getMessage(), ex);
+                    }catch(java.lang.ClassCastException e){
+                       // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    } catch (java.lang.ClassNotFoundException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }catch (java.lang.NoSuchMethodException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    } catch (java.lang.reflect.InvocationTargetException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }  catch (java.lang.IllegalAccessException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }   catch (java.lang.InstantiationException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }
+                }else{
+                    throw f;
+                }
+            }else{
+                throw f;
+            }
+            } finally {
+                _messageContext.getTransportOut().getSender().cleanup(_messageContext);
+            }
+        }
+            
+                /**
+                * Auto generated method signature for Asynchronous Invocations
+                * 
+                * @see org.apache.airavata.registry.services.RegistryService#startisRegistryServiceStarted
+                */
+                public  void startisRegistryServiceStarted(
+
+                 
+
+                  final RegistryServiceCallbackHandler callback)
+
+                throws java.rmi.RemoteException{
+
+              org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0].getName());
+             _operationClient.getOptions().setAction("urn:isRegistryServiceStarted");
+             _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+              
+              
+                  addPropertyToOperationClient(_operationClient,org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,"&");
+              
+
+
+              // create SOAP envelope with that payload
+              org.apache.axiom.soap.SOAPEnvelope env=null;
+              final org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext();
+
+                    
+                                    //Style is taken to be "document". No input parameters
+                                    // according to the WS-Basic profile in this case we have to send an empty soap message
+                                    org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                                    env = factory.getDefaultEnvelope();
+                                
+        // adding SOAP soap_headers
+         _serviceClient.addHeadersToEnvelope(env);
+        // create message context with that soap envelope
+        _messageContext.setEnvelope(env);
+
+        // add the message context to the operation client
+        _operationClient.addMessageContext(_messageContext);
+
+
+                    
+                        _operationClient.setCallback(new org.apache.axis2.client.async.AxisCallback() {
+                            public void onMessage(org.apache.axis2.context.MessageContext resultContext) {
+                            try {
+                                org.apache.axiom.soap.SOAPEnvelope resultEnv = resultContext.getEnvelope();
+                                
+                                        java.lang.Object object = fromOM(resultEnv.getBody().getFirstElement(),
+                                                                         RegistryServiceStub.IsRegistryServiceStartedResponse.class,
+                                                                         getEnvelopeNamespaces(resultEnv));
+                                        callback.receiveResultisRegistryServiceStarted(
+                                        (RegistryServiceStub.IsRegistryServiceStartedResponse)object);
+                                        
+                            } catch (org.apache.axis2.AxisFault e) {
+                                callback.receiveErrorisRegistryServiceStarted(e);
+                            }
+                            }
+
+                            public void onError(java.lang.Exception error) {
+								if (error instanceof org.apache.axis2.AxisFault) {
+									org.apache.axis2.AxisFault f = (org.apache.axis2.AxisFault) error;
+									org.apache.axiom.om.OMElement faultElt = f.getDetail();
+									if (faultElt!=null){
+										if (faultExceptionNameMap.containsKey(faultElt.getQName())){
+											//make the fault by reflection
+											try{
+													java.lang.String exceptionClassName = (java.lang.String)faultExceptionClassNameMap.get(faultElt.getQName());
+													java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+													java.lang.Exception ex=
+														(java.lang.Exception) exceptionClass.newInstance();
+													//message class
+													java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
+														java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+													java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
+													java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+															new java.lang.Class[]{messageClass});
+													m.invoke(ex,new java.lang.Object[]{messageObject});
+													
+					
+										            callback.receiveErrorisRegistryServiceStarted(new java.rmi.RemoteException(ex.getMessage(), ex));
+                                            } catch(java.lang.ClassCastException e){
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (java.lang.ClassNotFoundException e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (java.lang.NoSuchMethodException e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (java.lang.reflect.InvocationTargetException e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (java.lang.IllegalAccessException e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (java.lang.InstantiationException e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            } catch (org.apache.axis2.AxisFault e) {
+                                                // we cannot intantiate the class - throw the original Axis fault
+                                                callback.receiveErrorisRegistryServiceStarted(f);
+                                            }
+									    } else {
+										    callback.receiveErrorisRegistryServiceStarted(f);
+									    }
+									} else {
+									    callback.receiveErrorisRegistryServiceStarted(f);
+									}
+								} else {
+								    callback.receiveErrorisRegistryServiceStarted(error);
+								}
+                            }
+
+                            public void onFault(org.apache.axis2.context.MessageContext faultContext) {
+                                org.apache.axis2.AxisFault fault = org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(faultContext);
+                                onError(fault);
+                            }
+
+                            public void onComplete() {
+                                try {
+                                    _messageContext.getTransportOut().getSender().cleanup(_messageContext);
+                                } catch (org.apache.axis2.AxisFault axisFault) {
+                                    callback.receiveErrorisRegistryServiceStarted(axisFault);
+                                }
+                            }
+                });
+                        
+
+          org.apache.axis2.util.CallbackReceiver _callbackReceiver = null;
+        if ( _operations[0].getMessageReceiver()==null &&  _operationClient.getOptions().isUseSeparateListener()) {
+           _callbackReceiver = new org.apache.axis2.util.CallbackReceiver();
+          _operations[0].setMessageReceiver(
+                    _callbackReceiver);
+        }
+
+           //execute the operation client
+           _operationClient.execute(false);
+
+                    }
+                
+
+
+       /**
+        *  A utility method that copies the namepaces from the SOAPEnvelope
+        */
+       private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){
+        java.util.Map returnMap = new java.util.HashMap();
+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();
+        while (namespaceIterator.hasNext()) {
+            org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();
+            returnMap.put(ns.getPrefix(),ns.getNamespaceURI());
+        }
+       return returnMap;
+    }
+
+    
+    
+    private javax.xml.namespace.QName[] opNameArray = null;
+    private boolean optimizeContent(javax.xml.namespace.QName opName) {
+        
+
+        if (opNameArray == null) {
+            return false;
+        }
+        for (int i = 0; i < opNameArray.length; i++) {
+            if (opName.equals(opNameArray[i])) {
+                return true;   
+            }
+        }
+        return false;
+    }
+     //http://localhost:8080/axis2/services/RegistryService.RegistryServiceHttpSoap12Endpoint/
+        public static class ExtensionMapper{
+
+          public static java.lang.Object getTypeObject(java.lang.String namespaceURI,
+                                                       java.lang.String typeName,
+                                                       javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+
+              
+             throw new org.apache.axis2.databinding.ADBException("Unsupported type " + namespaceURI + " " + typeName);
+          }
+
+        }
+    
+        public static class IsRegistryServiceStartedResponse
+        implements org.apache.axis2.databinding.ADBBean{
+        
+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "http://services.registry.airavata.apache.org",
+                "isRegistryServiceStartedResponse",
+                "ns1");
+
+            
+
+        private static java.lang.String generatePrefix(java.lang.String namespace) {
+            if(namespace.equals("http://services.registry.airavata.apache.org")){
+                return "ns1";
+            }
+            return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+        }
+
+        
+
+                        /**
+                        * field for _return
+                        */
+
+                        
+                                    protected boolean local_return ;
+                                
+                           /*  This tracker boolean wil be used to detect whether the user called the set method
+                          *   for this attribute. It will be used to determine whether to include this field
+                           *   in the serialized XML
+                           */
+                           protected boolean local_returnTracker = false ;
+                           
+
+                           /**
+                           * Auto generated getter method
+                           * @return boolean
+                           */
+                           public  boolean get_return(){
+                               return local_return;
+                           }
+
+                           
+                        
+                            /**
+                               * Auto generated setter method
+                               * @param param _return
+                               */
+                               public void set_return(boolean param){
+                            
+                                       // setting primitive attribute tracker to true
+                                       
+                                               if (false) {
+                                           local_returnTracker = false;
+                                              
+                                       } else {
+                                          local_returnTracker = true;
+                                       }
+                                   
+                                            this.local_return=param;
+                                    
+
+                               }
+                            
+
+     /**
+     * isReaderMTOMAware
+     * @return true if the reader supports MTOM
+     */
+   public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+        boolean isReaderMTOMAware = false;
+        
+        try{
+          isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+        }catch(java.lang.IllegalArgumentException e){
+          isReaderMTOMAware = false;
+        }
+        return isReaderMTOMAware;
+   }
+     
+     
+        /**
+        *
+        * @param parentQName
+        * @param factory
+        * @return org.apache.axiom.om.OMElement
+        */
+       public org.apache.axiom.om.OMElement getOMElement (
+               final javax.xml.namespace.QName parentQName,
+               final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException{
+
+
+        
+                org.apache.axiom.om.OMDataSource dataSource =
+                       new org.apache.axis2.databinding.ADBDataSource(this,MY_QNAME){
+
+                 public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+                       IsRegistryServiceStartedResponse.this.serialize(MY_QNAME,factory,xmlWriter);
+                 }
+               };
+               return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+               MY_QNAME,factory,dataSource);
+            
+       }
+
+         public void serialize(final javax.xml.namespace.QName parentQName,
+                                       final org.apache.axiom.om.OMFactory factory,
+                                       org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
+                           serialize(parentQName,factory,xmlWriter,false);
+         }
+
+         public void serialize(final javax.xml.namespace.QName parentQName,
+                               final org.apache.axiom.om.OMFactory factory,
+                               org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter,
+                               boolean serializeType)
+            throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
+            
+                
+
+
+                java.lang.String prefix = null;
+                java.lang.String namespace = null;
+                
+
+                    prefix = parentQName.getPrefix();
+                    namespace = parentQName.getNamespaceURI();
+
+                    if ((namespace != null) && (namespace.trim().length() > 0)) {
+                        java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
+                        if (writerPrefix != null) {
+                            xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+                        } else {
+                            if (prefix == null) {
+                                prefix = generatePrefix(namespace);
+                            }
+
+                            xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                            xmlWriter.writeNamespace(prefix, namespace);
+                            xmlWriter.setPrefix(prefix, namespace);
+                        }
+                    } else {
+                        xmlWriter.writeStartElement(parentQName.getLocalPart());
+                    }
+                
+                  if (serializeType){
+               
+
+                   java.lang.String namespacePrefix = registerPrefix(xmlWriter,"http://services.registry.airavata.apache.org");
+                   if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)){
+                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                           namespacePrefix+":isRegistryServiceStartedResponse",
+                           xmlWriter);
+                   } else {
+                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                           "isRegistryServiceStartedResponse",
+                           xmlWriter);
+                   }
+
+               
+                   }
+                if (local_returnTracker){
+                                    namespace = "http://services.registry.airavata.apache.org";
+                                    if (! namespace.equals("")) {
+                                        prefix = xmlWriter.getPrefix(namespace);
+
+                                        if (prefix == null) {
+                                            prefix = generatePrefix(namespace);
+
+                                            xmlWriter.writeStartElement(prefix,"return", namespace);
+                                            xmlWriter.writeNamespace(prefix, namespace);
+                                            xmlWriter.setPrefix(prefix, namespace);
+
+                                        } else {
+                                            xmlWriter.writeStartElement(namespace,"return");
+                                        }
+
+                                    } else {
+                                        xmlWriter.writeStartElement("return");
+                                    }
+                                
+                                               if (false) {
+                                           
+                                                         throw new org.apache.axis2.databinding.ADBException("return cannot be null!!");
+                                                      
+                                               } else {
+                                                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(local_return));
+                                               }
+                                    
+                                   xmlWriter.writeEndElement();
+                             }
+                    xmlWriter.writeEndElement();
+               
+
+        }
+
+         /**
+          * Util method to write an attribute with the ns prefix
+          */
+          private void writeAttribute(java.lang.String prefix,java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+              if (xmlWriter.getPrefix(namespace) == null) {
+                       xmlWriter.writeNamespace(prefix, namespace);
+                       xmlWriter.setPrefix(prefix, namespace);
+
+              }
+
+              xmlWriter.writeAttribute(namespace,attName,attValue);
+
+         }
+
+        /**
+          * Util method to write an attribute without the ns prefix
+          */
+          private void writeAttribute(java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+                if (namespace.equals(""))
+              {
+                  xmlWriter.writeAttribute(attName,attValue);
+              }
+              else
+              {
+                  registerPrefix(xmlWriter, namespace);
+                  xmlWriter.writeAttribute(namespace,attName,attValue);
+              }
+          }
+
+
+           /**
+             * Util method to write an attribute without the ns prefix
+             */
+            private void writeQNameAttribute(java.lang.String namespace, java.lang.String attName,
+                                             javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+                java.lang.String attributeNamespace = qname.getNamespaceURI();
+                java.lang.String attributePrefix = xmlWriter.getPrefix(attributeNamespace);
+                if (attributePrefix == null) {
+                    attributePrefix = registerPrefix(xmlWriter, attributeNamespace);
+                }
+                java.lang.String attributeValue;
+                if (attributePrefix.trim().length() > 0) {
+                    attributeValue = attributePrefix + ":" + qname.getLocalPart();
+                } else {
+                    attributeValue = qname.getLocalPart();
+                }
+
+                if (namespace.equals("")) {
+                    xmlWriter.writeAttribute(attName, attributeValue);
+                } else {
+                    registerPrefix(xmlWriter, namespace);
+                    xmlWriter.writeAttribute(namespace, attName, attributeValue);
+                }
+            }
+        /**
+         *  method to handle Qnames
+         */
+
+        private void writeQName(javax.xml.namespace.QName qname,
+                                javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+            java.lang.String namespaceURI = qname.getNamespaceURI();
+            if (namespaceURI != null) {
+                java.lang.String prefix = xmlWriter.getPrefix(namespaceURI);
+                if (prefix == null) {
+                    prefix = generatePrefix(namespaceURI);
+                    xmlWriter.writeNamespace(prefix, namespaceURI);
+                    xmlWriter.setPrefix(prefix,namespaceURI);
+                }
+
+                if (prefix.trim().length() > 0){
+                    xmlWriter.writeCharacters(prefix + ":" + org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                } else {
+                    // i.e this is the default namespace
+                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                }
+
+            } else {
+                xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+            }
+        }
+
+        private void writeQNames(javax.xml.namespace.QName[] qnames,
+                                 javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+            if (qnames != null) {
+                // we have to store this data until last moment since it is not possible to write any
+                // namespace data after writing the charactor data
+                java.lang.StringBuffer stringToWrite = new java.lang.StringBuffer();
+                java.lang.String namespaceURI = null;
+                java.lang.String prefix = null;
+
+                for (int i = 0; i < qnames.length; i++) {
+                    if (i > 0) {
+                        stringToWrite.append(" ");
+                    }
+                    namespaceURI = qnames[i].getNamespaceURI();
+                    if (namespaceURI != null) {
+                        prefix = xmlWriter.getPrefix(namespaceURI);
+                        if ((prefix == null) || (prefix.length() == 0)) {
+                            prefix = generatePrefix(namespaceURI);
+                            xmlWriter.writeNamespace(prefix, namespaceURI);
+                            xmlWriter.setPrefix(prefix,namespaceURI);
+                        }
+
+                        if (prefix.trim().length() > 0){
+                            stringToWrite.append(prefix).append(":").append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                        } else {
+                            stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                        }
+                    } else {
+                        stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                    }
+                }
+                xmlWriter.writeCharacters(stringToWrite.toString());
+            }
+
+        }
+
+
+         /**
+         * Register a namespace prefix
+         */
+         private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace) throws javax.xml.stream.XMLStreamException {
+                java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                if (prefix == null) {
+                    prefix = generatePrefix(namespace);
+
+                    while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                        prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                    }
+
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+                }
+
+                return prefix;
+            }
+
+
+  
+        /**
+        * databinding method to get an XML representation of this object
+        *
+        */
+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName)
+                    throws org.apache.axis2.databinding.ADBException{
+
+
+        
+                 java.util.ArrayList elementList = new java.util.ArrayList();
+                 java.util.ArrayList attribList = new java.util.ArrayList();
+
+                 if (local_returnTracker){
+                                      elementList.add(new javax.xml.namespace.QName("http://services.registry.airavata.apache.org",
+                                                                      "return"));
+                                 
+                                elementList.add(
+                                   org.apache.axis2.databinding.utils.ConverterUtil.convertToString(local_return));
+                            }
+
+                return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray());
+            
+            
+
+        }
+
+  
+
+     /**
+      *  Factory class that keeps the parse method
+      */
+    public static class Factory{
+
+        
+        
+
+        /**
+        * static method to create the object
+        * Precondition:  If this object is an element, the current or next start element starts this object and any intervening reader events are ignorable
+        *                If this object is not an element, it is a complex type and the reader is at the event just after the outer start element
+        * Postcondition: If this object is an element, the reader is positioned at its end element
+        *                If this object is a complex type, the reader is positioned at the end element of its outer element
+        */
+        public static IsRegistryServiceStartedResponse parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+            IsRegistryServiceStartedResponse object =
+                new IsRegistryServiceStartedResponse();
+
+            int event;
+            java.lang.String nillableValue = null;
+            java.lang.String prefix ="";
+            java.lang.String namespaceuri ="";
+            try {
+                
+                while (!reader.isStartElement() && !reader.isEndElement())
+                    reader.next();
+
+                
+                if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){
+                  java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance",
+                        "type");
+                  if (fullTypeName!=null){
+                    java.lang.String nsPrefix = null;
+                    if (fullTypeName.indexOf(":") > -1){
+                        nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":"));
+                    }
+                    nsPrefix = nsPrefix==null?"":nsPrefix;
+
+                    java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1);
+                    
+                            if (!"isRegistryServiceStartedResponse".equals(type)){
+                                //find namespace for the prefix
+                                java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                                return (IsRegistryServiceStartedResponse)ExtensionMapper.getTypeObject(
+                                     nsUri,type,reader);
+                              }
+                        
+
+                  }
+                
+
+                }
+
+                
+
+                
+                // Note all attributes that were handled. Used to differ normal attributes
+                // from anyAttributes.
+                java.util.Vector handledAttributes = new java.util.Vector();
+                
+
+                 
+                    
+                    reader.next();
+                
+                                    
+                                    while (!reader.isStartElement() && !reader.isEndElement()) reader.next();
+                                
+                                    if (reader.isStartElement() && new javax.xml.namespace.QName("http://services.registry.airavata.apache.org","return").equals(reader.getName())){
+                                
+                                    java.lang.String content = reader.getElementText();
+                                    
+                                              object.set_return(
+                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToBoolean(content));
+                                              
+                                        reader.next();
+                                    
+                              }  // End of if for expected property start element
+                                
+                                    else {
+                                        
+                                    }
+                                  
+                            while (!reader.isStartElement() && !reader.isEndElement())
+                                reader.next();
+                            
+                                if (reader.isStartElement())
+                                // A start element we are not expecting indicates a trailing invalid property
+                                throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName());
+                            
+
+
+
+            } catch (javax.xml.stream.XMLStreamException e) {
+                throw new java.lang.Exception(e);
+            }
+
+            return object;
+        }
+
+        }//end of factory class
+
+        
+
+        }
+           
+          
+            private  org.apache.axiom.om.OMElement  toOM(RegistryServiceStub.IsRegistryServiceStartedResponse param, boolean optimizeContent)
+            throws org.apache.axis2.AxisFault {
+
+            
+                        try{
+                             return param.getOMElement(RegistryServiceStub.IsRegistryServiceStartedResponse.MY_QNAME,
+                                          org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+                        } catch(org.apache.axis2.databinding.ADBException e){
+                            throw org.apache.axis2.AxisFault.makeFault(e);
+                        }
+                    
+
+            }
+        
+
+
+        /**
+        *  get the default envelope
+        */
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory){
+        return factory.getDefaultEnvelope();
+        }
+
+
+        private  java.lang.Object fromOM(
+        org.apache.axiom.om.OMElement param,
+        java.lang.Class type,
+        java.util.Map extraNamespaces) throws org.apache.axis2.AxisFault{
+
+        try {
+        
+                if (RegistryServiceStub.IsRegistryServiceStartedResponse.class.equals(type)){
+                
+                           return RegistryServiceStub.IsRegistryServiceStartedResponse.Factory.parse(param.getXMLStreamReaderWithoutCaching());
+                    
+
+                }
+           
+        } catch (java.lang.Exception e) {
+        throw org.apache.axis2.AxisFault.makeFault(e);
+        }
+           return null;
+        }
+
+
+
+    
+   }
+   
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
new file mode 100644
index 0000000..f4d2300
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
@@ -0,0 +1,113 @@
+/*
+ *
+ * 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.client.api;
+
+import java.net.URI;
+
+import org.apache.airavata.client.api.builder.DescriptorBuilder;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.common.utils.Version;
+
+
+/**
+ * This is the base interface for AiravataAPI which contains all the base methods for Airavata API
+ */
+public interface AiravataAPI {
+
+    /**
+     * Returns the AiravataManager - manage Airavata related configurations
+     * @return
+     */
+	public AiravataManager getAiravataManager();
+
+    /**
+     * Returns the ApplicationManager
+     * @return
+     */
+//	public ApplicationManager getApplicationManager();
+
+    /**
+     * Returns the WorkflowManager
+     * @return
+     */
+	public WorkflowManager getWorkflowManager();
+
+    /**
+     * Returns the ProvenanceManager
+     * @return
+     */
+//	public ProvenanceManager getProvenanceManager();
+
+    /**
+     * Returns the UserManager
+     * @return
+     */
+	public UserManager getUserManager();
+
+    /**
+     * Returns the ExecutionManager
+     * @return
+     */
+	public ExecutionManager getExecutionManager();
+	
+	/**
+     * Returns the CredentialStoreManager
+     * @return
+     */
+	public CredentialStoreManager getCredentialStoreManager();
+
+    /**
+     * Returns the Current User
+     * @return
+     */
+	public String getCurrentUser();
+	
+	/**
+	 * Get Airavata API version
+	 * @return
+	 */
+	public Version getVersion();
+
+    /**
+     * Gets the DescriptorBuilder. DescriptorBuilder is a helper class to create various descriptors.
+     * E.g :- Build HostDescriptors, ServiceDescriptors etc ...
+     * @return DescriptorBuilder.
+     */
+    public DescriptorBuilder getDescriptorBuilder();
+
+	public void setCurrentUser(String alternateUsername);
+
+//	public void setCallBack(PasswordCallback callback);
+
+	public void setRegitryURI(URI registryURL);
+
+	public void initialize() throws AiravataAPIInvocationException;
+
+	public void setGateway(String gateway);
+
+    /**
+     * Gets the gateway id.
+     * @return The gateway id.
+     */
+    public String getGateway();
+
+}
\ No newline at end of file


[4/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorStub.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorStub.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorStub.java
new file mode 100644
index 0000000..4d9322d
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/stub/interpretor/WorkflowInterpretorStub.java
@@ -0,0 +1,2152 @@
+/*
+ *
+ * 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.client.stub.interpretor;
+
+/*
+ *  WorkflowInterpretorStub java implementation
+ */
+
+import org.apache.airavata.client.stub.interpretor.NameValue.Factory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+
+public class WorkflowInterpretorStub extends org.apache.axis2.client.Stub {
+    protected org.apache.axis2.description.AxisOperation[] _operations;
+
+    // hashmaps to keep the fault mapping
+    private java.util.HashMap faultExceptionNameMap = new java.util.HashMap();
+    private java.util.HashMap faultExceptionClassNameMap = new java.util.HashMap();
+    private java.util.HashMap faultMessageMap = new java.util.HashMap();
+
+    private static int counter = 0;
+
+    private static synchronized String getUniqueSuffix() {
+        // reset the counter if it is greater than 99999
+        if (counter > 99999) {
+            counter = 0;
+        }
+        counter = counter + 1;
+        return Long.toString(System.currentTimeMillis()) + "_" + counter;
+    }
+
+    private void populateAxisService() throws org.apache.axis2.AxisFault {
+
+        // creating the Service with a unique name
+        _service = new org.apache.axis2.description.AxisService("WorkflowInterpretor" + getUniqueSuffix());
+        addAnonymousOperations();
+
+        // creating the operations
+        org.apache.axis2.description.AxisOperation __operation;
+
+        _operations = new org.apache.axis2.description.AxisOperation[1];
+
+        __operation = new org.apache.axis2.description.OutInAxisOperation();
+
+        __operation.setName(new javax.xml.namespace.QName("http://interpretor.xbaya.airavata.apache.org",
+                "launchWorkflow"));
+        _service.addOperation(__operation);
+
+        _operations[0] = __operation;
+
+    }
+
+    // populates the faults
+    private void populateFaults() {
+
+    }
+
+    /**
+     * Constructor that takes in a configContext
+     */
+
+    public WorkflowInterpretorStub(org.apache.axis2.context.ConfigurationContext configurationContext,
+            java.lang.String targetEndpoint) throws org.apache.axis2.AxisFault {
+        this(configurationContext, targetEndpoint, false);
+    }
+
+    /**
+     * Constructor that takes in a configContext and useseperate listner
+     */
+    public WorkflowInterpretorStub(org.apache.axis2.context.ConfigurationContext configurationContext,
+            java.lang.String targetEndpoint, boolean useSeparateListener) throws org.apache.axis2.AxisFault {
+        // To populate AxisService
+        populateAxisService();
+        populateFaults();
+        MultiThreadedHttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
+        httpConnectionManager.getParams().setMaxTotalConnections(10000);
+        httpConnectionManager.getParams().setMaxConnectionsPerHost(HostConfiguration.ANY_HOST_CONFIGURATION, 100);
+        httpConnectionManager.getParams().setDefaultMaxConnectionsPerHost(200);
+        HttpClient httpClient = new HttpClient(httpConnectionManager);
+        _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext, _service);
+
+        configurationContext = _serviceClient.getServiceContext().getConfigurationContext();
+        configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, true);
+        configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
+        configurationContext.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, true);
+        _serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(targetEndpoint));
+        _serviceClient.getOptions().setUseSeparateListener(useSeparateListener);
+    }
+
+    /**
+     * Default Constructor
+     */
+    public WorkflowInterpretorStub(org.apache.axis2.context.ConfigurationContext configurationContext)
+            throws org.apache.axis2.AxisFault {
+
+        this(configurationContext, "http://silktree.cs.indiana.edu:18080/axis2/services/WorkflowInterpretor");
+
+    }
+
+    /**
+     * Default Constructor
+     */
+    public WorkflowInterpretorStub() throws org.apache.axis2.AxisFault {
+
+        this("http://silktree.cs.indiana.edu:18080/axis2/services/WorkflowInterpretor");
+
+    }
+
+    /**
+     * Constructor taking the target endpoint
+     */
+    public WorkflowInterpretorStub(java.lang.String targetEndpoint) throws org.apache.axis2.AxisFault {
+        this(null, targetEndpoint);
+    }
+
+    /**
+     * Auto generated method signature
+     * 
+     * @see org.apache.airavata.xbaya.WorkflowInterpretor#launchWorkflow
+     * @param launchWorkflow0
+     */
+
+    public java.lang.String launchWorkflow(
+
+    java.lang.String workflowAsString1, java.lang.String topic2, NameValue[] inputs5)
+
+    throws java.rmi.RemoteException
+
+    {
+        org.apache.axis2.context.MessageContext _messageContext = null;
+        try {
+            org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0]
+                    .getName());
+            _operationClient.getOptions().setAction("urn:launchWorkflow");
+            _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+            addPropertyToOperationClient(_operationClient,
+                    org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, "&");
+
+            // create a message context
+            _messageContext = new org.apache.axis2.context.MessageContext();
+
+            // create SOAP envelope with that payload
+            org.apache.axiom.soap.SOAPEnvelope env = null;
+            WorkflowInterpretorStub.LaunchWorkflow dummyWrappedType = null;
+            env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()), workflowAsString1, topic2,
+                    inputs5, dummyWrappedType,
+                    optimizeContent(new javax.xml.namespace.QName("http://interpretor.xbaya.airavata.apache.org",
+                            "launchWorkflow")));
+
+            // adding SOAP soap_headers
+            _serviceClient.addHeadersToEnvelope(env);
+            _serviceClient.getOptions().setTimeOutInMilliSeconds(90000000);
+            // set the message context with that soap envelope
+            _messageContext.setEnvelope(env);
+
+            // add the message contxt to the operation client
+            _operationClient.addMessageContext(_messageContext);
+
+            // execute the operation client
+            _operationClient.execute(true);
+
+            org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient
+                    .getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+            org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
+
+            java.lang.Object object = fromOM(_returnEnv.getBody().getFirstElement(),
+                    WorkflowInterpretorStub.LaunchWorkflowResponse.class, getEnvelopeNamespaces(_returnEnv));
+
+            return getLaunchWorkflowResponse_return((WorkflowInterpretorStub.LaunchWorkflowResponse) object);
+
+        } catch (AxisFault f) {
+            org.apache.axiom.om.OMElement faultElt = f.getDetail();
+            if (faultElt != null) {
+                if (faultExceptionNameMap.containsKey(faultElt.getQName())) {
+                    // make the fault by reflection
+                    try {
+                        java.lang.String exceptionClassName = (java.lang.String) faultExceptionClassNameMap
+                                .get(faultElt.getQName());
+                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+                        java.lang.Exception ex = (java.lang.Exception) exceptionClass.newInstance();
+                        // message class
+                        java.lang.String messageClassName = (java.lang.String) faultMessageMap.get(faultElt.getQName());
+                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+                        java.lang.Object messageObject = fromOM(faultElt, messageClass, null);
+                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                new java.lang.Class[]{messageClass});
+                        m.invoke(ex, new java.lang.Object[]{messageObject});
+
+                        throw new java.rmi.RemoteException(ex.getMessage(), ex);
+                    } catch (java.lang.ClassCastException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    } catch (java.lang.ClassNotFoundException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    } catch (java.lang.NoSuchMethodException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    } catch (java.lang.reflect.InvocationTargetException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    } catch (java.lang.IllegalAccessException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    } catch (java.lang.InstantiationException e) {
+                        // we cannot intantiate the class - throw the original
+                        // Axis fault
+                        throw f;
+                    }
+                } else {
+                    throw f;
+                }
+            } else {
+                throw f;
+            }
+        } finally {
+            _serviceClient.cleanup();
+            _serviceClient.cleanupTransport();
+            _messageContext.getTransportOut().getSender().cleanup(_messageContext);
+        }
+    }
+
+    /**
+     * Auto generated method signature for Asynchronous Invocations
+     * 
+     * @see org.apache.airavata.xbaya.WorkflowInterpretor#startlaunchWorkflow
+     * @param launchWorkflow0
+     */
+    public void startlaunchWorkflow(
+
+    java.lang.String workflowAsString1, java.lang.String topic2, java.lang.String password3,
+            java.lang.String username4, NameValue[] inputs5, NameValue[] configurations6,
+
+            final WorkflowInterpretorCallbackHandler callback)
+
+    throws java.rmi.RemoteException {
+
+        org.apache.axis2.client.OperationClient _operationClient = _serviceClient
+                .createClient(_operations[0].getName());
+        _operationClient.getOptions().setAction("urn:launchWorkflow");
+        _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+        addPropertyToOperationClient(_operationClient,
+                org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, "&");
+
+        // create SOAP envelope with that payload
+        org.apache.axiom.soap.SOAPEnvelope env = null;
+        final org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext();
+
+        // Style is Doc.
+        WorkflowInterpretorStub.LaunchWorkflow dummyWrappedType = null;
+        env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()), workflowAsString1, topic2,
+                 inputs5, dummyWrappedType,
+                optimizeContent(new javax.xml.namespace.QName("http://interpretor.xbaya.airavata.apache.org",
+                        "launchWorkflow")));
+
+        // adding SOAP soap_headers
+        _serviceClient.addHeadersToEnvelope(env);
+        // create message context with that soap envelope
+        _messageContext.setEnvelope(env);
+
+        // add the message context to the operation client
+        _operationClient.addMessageContext(_messageContext);
+
+        _operationClient.setCallback(new org.apache.axis2.client.async.AxisCallback() {
+            public void onMessage(org.apache.axis2.context.MessageContext resultContext) {
+                try {
+                    org.apache.axiom.soap.SOAPEnvelope resultEnv = resultContext.getEnvelope();
+
+                    java.lang.Object object = fromOM(resultEnv.getBody().getFirstElement(),
+                            WorkflowInterpretorStub.LaunchWorkflowResponse.class, getEnvelopeNamespaces(resultEnv));
+                    callback.receiveResultlaunchWorkflow(getLaunchWorkflowResponse_return((WorkflowInterpretorStub.LaunchWorkflowResponse) object));
+
+                } catch (org.apache.axis2.AxisFault e) {
+                    callback.receiveErrorlaunchWorkflow(e);
+                }
+            }
+
+            public void onError(java.lang.Exception error) {
+                if (error instanceof org.apache.axis2.AxisFault) {
+                    org.apache.axis2.AxisFault f = (org.apache.axis2.AxisFault) error;
+                    org.apache.axiom.om.OMElement faultElt = f.getDetail();
+                    if (faultElt != null) {
+                        if (faultExceptionNameMap.containsKey(faultElt.getQName())) {
+                            // make the fault by reflection
+                            try {
+                                java.lang.String exceptionClassName = (java.lang.String) faultExceptionClassNameMap
+                                        .get(faultElt.getQName());
+                                java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+                                java.lang.Exception ex = (java.lang.Exception) exceptionClass.newInstance();
+                                // message class
+                                java.lang.String messageClassName = (java.lang.String) faultMessageMap.get(faultElt
+                                        .getQName());
+                                java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+                                java.lang.Object messageObject = fromOM(faultElt, messageClass, null);
+                                java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                        new java.lang.Class[] { messageClass });
+                                m.invoke(ex, new java.lang.Object[] { messageObject });
+
+                                callback.receiveErrorlaunchWorkflow(new java.rmi.RemoteException(ex.getMessage(), ex));
+                            } catch (java.lang.ClassCastException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (java.lang.ClassNotFoundException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (java.lang.NoSuchMethodException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (java.lang.reflect.InvocationTargetException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (java.lang.IllegalAccessException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (java.lang.InstantiationException e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            } catch (org.apache.axis2.AxisFault e) {
+                                // we cannot intantiate the class -
+                                // throw the original Axis fault
+                                callback.receiveErrorlaunchWorkflow(f);
+                            }
+                        } else {
+                            callback.receiveErrorlaunchWorkflow(f);
+                        }
+                    } else {
+                        callback.receiveErrorlaunchWorkflow(f);
+                    }
+                } else {
+                    callback.receiveErrorlaunchWorkflow(error);
+                }
+            }
+
+            public void onFault(org.apache.axis2.context.MessageContext faultContext) {
+                org.apache.axis2.AxisFault fault = org.apache.axis2.util.Utils
+                        .getInboundFaultFromMessageContext(faultContext);
+                onError(fault);
+            }
+
+            public void onComplete() {
+                try {
+                    _messageContext.getTransportOut().getSender().cleanup(_messageContext);
+                } catch (org.apache.axis2.AxisFault axisFault) {
+                    callback.receiveErrorlaunchWorkflow(axisFault);
+                }
+            }
+        });
+
+        org.apache.axis2.util.CallbackReceiver _callbackReceiver = null;
+        if (_operations[0].getMessageReceiver() == null && _operationClient.getOptions().isUseSeparateListener()) {
+            _callbackReceiver = new org.apache.axis2.util.CallbackReceiver();
+            _operations[0].setMessageReceiver(_callbackReceiver);
+        }
+
+        // execute the operation client
+        _operationClient.execute(false);
+
+    }
+
+    /**
+     * A utility method that copies the namepaces from the SOAPEnvelope
+     */
+    private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env) {
+        java.util.Map returnMap = new java.util.HashMap();
+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();
+        while (namespaceIterator.hasNext()) {
+            org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();
+            returnMap.put(ns.getPrefix(), ns.getNamespaceURI());
+        }
+        return returnMap;
+    }
+
+    private javax.xml.namespace.QName[] opNameArray = null;
+
+    private boolean optimizeContent(javax.xml.namespace.QName opName) {
+
+        if (opNameArray == null) {
+            return false;
+        }
+        for (int i = 0; i < opNameArray.length; i++) {
+            if (opName.equals(opNameArray[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static class ExtensionMapper {
+
+        public static java.lang.Object getTypeObject(java.lang.String namespaceURI, java.lang.String typeName,
+                javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception {
+
+            if ("http://interpretor.xbaya.airavata.apache.org".equals(namespaceURI) && "NameValue".equals(typeName)) {
+
+                return NameValue.Factory.parse(reader);
+
+            }
+
+            throw new org.apache.axis2.databinding.ADBException("Unsupported type " + namespaceURI + " " + typeName);
+        }
+
+    }
+
+    public static class LaunchWorkflowResponse implements org.apache.axis2.databinding.ADBBean {
+
+        public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "http://interpretor.xbaya.airavata.apache.org", "launchWorkflowResponse", "ns1");
+
+        private static java.lang.String generatePrefix(java.lang.String namespace) {
+            if (namespace.equals("http://interpretor.xbaya.airavata.apache.org")) {
+                return "ns1";
+            }
+            return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+        }
+
+        /**
+         * field for _return
+         */
+
+        protected java.lang.String local_return;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean local_returnTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return java.lang.String
+         */
+        public java.lang.String get_return() {
+            return local_return;
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            _return
+         */
+        public void set_return(java.lang.String param) {
+
+            if (param != null) {
+                // update the setting tracker
+                local_returnTracker = true;
+            } else {
+                local_returnTracker = true;
+
+            }
+
+            this.local_return = param;
+
+        }
+
+        /**
+         * isReaderMTOMAware
+         * 
+         * @return true if the reader supports MTOM
+         */
+        public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+            boolean isReaderMTOMAware = false;
+
+            try {
+                isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader
+                        .getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+            } catch (java.lang.IllegalArgumentException e) {
+                isReaderMTOMAware = false;
+            }
+            return isReaderMTOMAware;
+        }
+
+        /**
+         * 
+         * @param parentQName
+         * @param factory
+         * @return org.apache.axiom.om.OMElement
+         */
+        public org.apache.axiom.om.OMElement getOMElement(final javax.xml.namespace.QName parentQName,
+                final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException {
+
+            org.apache.axiom.om.OMDataSource dataSource = new org.apache.axis2.databinding.ADBDataSource(this, MY_QNAME) {
+
+                public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                        throws javax.xml.stream.XMLStreamException {
+                    LaunchWorkflowResponse.this.serialize(MY_QNAME, factory, xmlWriter);
+                }
+            };
+            return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(MY_QNAME, factory, dataSource);
+
+        }
+
+        public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+                org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+            serialize(parentQName, factory, xmlWriter, false);
+        }
+
+        public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+                org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter, boolean serializeType)
+                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+
+            java.lang.String prefix = null;
+            java.lang.String namespace = null;
+
+            prefix = parentQName.getPrefix();
+            namespace = parentQName.getNamespaceURI();
+
+            if ((namespace != null) && (namespace.trim().length() > 0)) {
+                java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
+                if (writerPrefix != null) {
+                    xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+                } else {
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+                    }
+
+                    xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+                }
+            } else {
+                xmlWriter.writeStartElement(parentQName.getLocalPart());
+            }
+
+            if (serializeType) {
+
+                java.lang.String namespacePrefix = registerPrefix(xmlWriter,
+                        "http://interpretor.xbaya.airavata.apache.org");
+                if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)) {
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type", namespacePrefix
+                            + ":launchWorkflowResponse", xmlWriter);
+                } else {
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type",
+                            "launchWorkflowResponse", xmlWriter);
+                }
+
+            }
+            if (local_returnTracker) {
+                namespace = "";
+                if (!namespace.equals("")) {
+                    prefix = xmlWriter.getPrefix(namespace);
+
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+
+                        xmlWriter.writeStartElement(prefix, "return", namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+
+                    } else {
+                        xmlWriter.writeStartElement(namespace, "return");
+                    }
+
+                } else {
+                    xmlWriter.writeStartElement("return");
+                }
+
+                if (local_return == null) {
+                    // write the nil attribute
+
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+                } else {
+
+                    xmlWriter.writeCharacters(local_return);
+
+                }
+
+                xmlWriter.writeEndElement();
+            }
+            xmlWriter.writeEndElement();
+
+        }
+
+        /**
+         * Util method to write an attribute with the ns prefix
+         */
+        private void writeAttribute(java.lang.String prefix, java.lang.String namespace, java.lang.String attName,
+                java.lang.String attValue, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+            if (xmlWriter.getPrefix(namespace) == null) {
+                xmlWriter.writeNamespace(prefix, namespace);
+                xmlWriter.setPrefix(prefix, namespace);
+
+            }
+
+            xmlWriter.writeAttribute(namespace, attName, attValue);
+
+        }
+
+        /**
+         * Util method to write an attribute without the ns prefix
+         */
+        private void writeAttribute(java.lang.String namespace, java.lang.String attName, java.lang.String attValue,
+                javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+            if (namespace.equals("")) {
+                xmlWriter.writeAttribute(attName, attValue);
+            } else {
+                registerPrefix(xmlWriter, namespace);
+                xmlWriter.writeAttribute(namespace, attName, attValue);
+            }
+        }
+
+        /**
+         * Util method to write an attribute without the ns prefix
+         */
+        private void writeQNameAttribute(java.lang.String namespace, java.lang.String attName,
+                javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+
+            java.lang.String attributeNamespace = qname.getNamespaceURI();
+            java.lang.String attributePrefix = xmlWriter.getPrefix(attributeNamespace);
+            if (attributePrefix == null) {
+                attributePrefix = registerPrefix(xmlWriter, attributeNamespace);
+            }
+            java.lang.String attributeValue;
+            if (attributePrefix.trim().length() > 0) {
+                attributeValue = attributePrefix + ":" + qname.getLocalPart();
+            } else {
+                attributeValue = qname.getLocalPart();
+            }
+
+            if (namespace.equals("")) {
+                xmlWriter.writeAttribute(attName, attributeValue);
+            } else {
+                registerPrefix(xmlWriter, namespace);
+                xmlWriter.writeAttribute(namespace, attName, attributeValue);
+            }
+        }
+
+        /**
+         * method to handle Qnames
+         */
+
+        private void writeQName(javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+            java.lang.String namespaceURI = qname.getNamespaceURI();
+            if (namespaceURI != null) {
+                java.lang.String prefix = xmlWriter.getPrefix(namespaceURI);
+                if (prefix == null) {
+                    prefix = generatePrefix(namespaceURI);
+                    xmlWriter.writeNamespace(prefix, namespaceURI);
+                    xmlWriter.setPrefix(prefix, namespaceURI);
+                }
+
+                if (prefix.trim().length() > 0) {
+                    xmlWriter.writeCharacters(prefix + ":"
+                            + org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                } else {
+                    // i.e this is the default namespace
+                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                }
+
+            } else {
+                xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+            }
+        }
+
+        private void writeQNames(javax.xml.namespace.QName[] qnames, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+
+            if (qnames != null) {
+                // we have to store this data until last moment since it is not
+                // possible to write any
+                // namespace data after writing the charactor data
+                java.lang.StringBuffer stringToWrite = new java.lang.StringBuffer();
+                java.lang.String namespaceURI = null;
+                java.lang.String prefix = null;
+
+                for (int i = 0; i < qnames.length; i++) {
+                    if (i > 0) {
+                        stringToWrite.append(" ");
+                    }
+                    namespaceURI = qnames[i].getNamespaceURI();
+                    if (namespaceURI != null) {
+                        prefix = xmlWriter.getPrefix(namespaceURI);
+                        if ((prefix == null) || (prefix.length() == 0)) {
+                            prefix = generatePrefix(namespaceURI);
+                            xmlWriter.writeNamespace(prefix, namespaceURI);
+                            xmlWriter.setPrefix(prefix, namespaceURI);
+                        }
+
+                        if (prefix.trim().length() > 0) {
+                            stringToWrite
+                                    .append(prefix)
+                                    .append(":")
+                                    .append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                        } else {
+                            stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil
+                                    .convertToString(qnames[i]));
+                        }
+                    } else {
+                        stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil
+                                .convertToString(qnames[i]));
+                    }
+                }
+                xmlWriter.writeCharacters(stringToWrite.toString());
+            }
+
+        }
+
+        /**
+         * Register a namespace prefix
+         */
+        private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace)
+                throws javax.xml.stream.XMLStreamException {
+            java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+            if (prefix == null) {
+                prefix = generatePrefix(namespace);
+
+                while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                    prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                }
+
+                xmlWriter.writeNamespace(prefix, namespace);
+                xmlWriter.setPrefix(prefix, namespace);
+            }
+
+            return prefix;
+        }
+
+        /**
+         * databinding method to get an XML representation of this object
+         * 
+         */
+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName)
+                throws org.apache.axis2.databinding.ADBException {
+
+            java.util.ArrayList elementList = new java.util.ArrayList();
+            java.util.ArrayList attribList = new java.util.ArrayList();
+
+            if (local_returnTracker) {
+                elementList.add(new javax.xml.namespace.QName("", "return"));
+
+                elementList.add(local_return == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                        .convertToString(local_return));
+            }
+
+            return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(),
+                    attribList.toArray());
+
+        }
+
+        /**
+         * Factory class that keeps the parse method
+         */
+        public static class Factory {
+
+            /**
+             * static method to create the object Precondition: If this object is an element, the current or next start
+             * element starts this object and any intervening reader events are ignorable If this object is not an
+             * element, it is a complex type and the reader is at the event just after the outer start element
+             * Postcondition: If this object is an element, the reader is positioned at its end element If this object
+             * is a complex type, the reader is positioned at the end element of its outer element
+             */
+            public static LaunchWorkflowResponse parse(javax.xml.stream.XMLStreamReader reader)
+                    throws java.lang.Exception {
+                LaunchWorkflowResponse object = new LaunchWorkflowResponse();
+
+                java.lang.String nillableValue = null;
+                try {
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type") != null) {
+                        java.lang.String fullTypeName = reader.getAttributeValue(
+                                "http://www.w3.org/2001/XMLSchema-instance", "type");
+                        if (fullTypeName != null) {
+                            java.lang.String nsPrefix = null;
+                            if (fullTypeName.indexOf(":") > -1) {
+                                nsPrefix = fullTypeName.substring(0, fullTypeName.indexOf(":"));
+                            }
+                            nsPrefix = nsPrefix == null ? "" : nsPrefix;
+
+                            java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":") + 1);
+
+                            if (!"launchWorkflowResponse".equals(type)) {
+                                // find namespace for the prefix
+                                java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                                return (LaunchWorkflowResponse) ExtensionMapper.getTypeObject(nsUri, type, reader);
+                            }
+
+                        }
+
+                    }
+
+                    new java.util.Vector();
+
+                    reader.next();
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement() && new javax.xml.namespace.QName("", "return").equals(reader.getName())) {
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                            java.lang.String content = reader.getElementText();
+
+                            object.set_return(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));
+
+                        } else {
+
+                            reader.getElementText(); // throw away text nodes if
+                                                     // any.
+                        }
+
+                        reader.next();
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement())
+                        // A start element we are not expecting indicates a
+                        // trailing invalid property
+                        throw new org.apache.axis2.databinding.ADBException("Unexpected subelement "
+                                + reader.getLocalName());
+
+                } catch (javax.xml.stream.XMLStreamException e) {
+                    throw new java.lang.Exception(e);
+                }
+
+                return object;
+            }
+
+        }// end of factory class
+
+    }
+
+    public static class LaunchWorkflow implements org.apache.axis2.databinding.ADBBean {
+
+        public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "http://interpretor.xbaya.airavata.apache.org", "launchWorkflow", "ns1");
+
+        private static java.lang.String generatePrefix(java.lang.String namespace) {
+            if (namespace.equals("http://interpretor.xbaya.airavata.apache.org")) {
+                return "ns1";
+            }
+            return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+        }
+
+        /**
+         * field for WorkflowAsString
+         */
+
+        protected java.lang.String localWorkflowAsString;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localWorkflowAsStringTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return java.lang.String
+         */
+        public java.lang.String getWorkflowAsString() {
+            return localWorkflowAsString;
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            WorkflowAsString
+         */
+        public void setWorkflowAsString(java.lang.String param) {
+
+            if (param != null) {
+                // update the setting tracker
+                localWorkflowAsStringTracker = true;
+            } else {
+                localWorkflowAsStringTracker = true;
+
+            }
+
+            this.localWorkflowAsString = param;
+
+        }
+
+        /**
+         * field for Topic
+         */
+
+        protected java.lang.String localTopic;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localTopicTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return java.lang.String
+         */
+        public java.lang.String getTopic() {
+            return localTopic;
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            Topic
+         */
+        public void setTopic(java.lang.String param) {
+
+            if (param != null) {
+                // update the setting tracker
+                localTopicTracker = true;
+            } else {
+                localTopicTracker = true;
+
+            }
+
+            this.localTopic = param;
+
+        }
+
+        /**
+         * field for Password
+         */
+
+        protected java.lang.String localPassword;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localPasswordTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return java.lang.String
+         */
+        public java.lang.String getPassword() {
+            return localPassword;
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            Password
+         */
+        public void setPassword(java.lang.String param) {
+
+            if (param != null) {
+                // update the setting tracker
+                localPasswordTracker = true;
+            } else {
+                localPasswordTracker = true;
+
+            }
+
+            this.localPassword = param;
+
+        }
+
+        /**
+         * field for Username
+         */
+
+        protected java.lang.String localUsername;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localUsernameTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return java.lang.String
+         */
+        public java.lang.String getUsername() {
+            return localUsername;
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            Username
+         */
+        public void setUsername(java.lang.String param) {
+
+            if (param != null) {
+                // update the setting tracker
+                localUsernameTracker = true;
+            } else {
+                localUsernameTracker = true;
+
+            }
+
+            this.localUsername = param;
+
+        }
+
+        /**
+         * field for Inputs This was an Array!
+         */
+
+        protected NameValue[] localInputs;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localInputsTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return NameValue[]
+         */
+        public NameValue[] getInputs() {
+            return localInputs;
+        }
+
+        /**
+         * validate the array for Inputs
+         */
+        protected void validateInputs(NameValue[] param) {
+
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            Inputs
+         */
+        public void setInputs(NameValue[] param) {
+
+            validateInputs(param);
+
+            if (param != null) {
+                // update the setting tracker
+                localInputsTracker = true;
+            } else {
+                localInputsTracker = true;
+
+            }
+
+            this.localInputs = param;
+        }
+
+        /**
+         * Auto generated add method for the array for convenience
+         * 
+         * @param param
+         *            NameValue
+         */
+        public void addInputs(NameValue param) {
+            if (localInputs == null) {
+                localInputs = new NameValue[] {};
+            }
+
+            // update the setting tracker
+            localInputsTracker = true;
+
+            java.util.List list = org.apache.axis2.databinding.utils.ConverterUtil.toList(localInputs);
+            list.add(param);
+            this.localInputs = (NameValue[]) list.toArray(new NameValue[list.size()]);
+
+        }
+
+        /**
+         * field for Configurations This was an Array!
+         */
+
+        protected NameValue[] localConfigurations;
+
+        /*
+         * This tracker boolean wil be used to detect whether the user called the set method for this attribute. It will
+         * be used to determine whether to include this field in the serialized XML
+         */
+        protected boolean localConfigurationsTracker = false;
+
+        /**
+         * Auto generated getter method
+         * 
+         * @return NameValue[]
+         */
+        public NameValue[] getConfigurations() {
+            return localConfigurations;
+        }
+
+        /**
+         * validate the array for Configurations
+         */
+        protected void validateConfigurations(NameValue[] param) {
+
+        }
+
+        /**
+         * Auto generated setter method
+         * 
+         * @param param
+         *            Configurations
+         */
+        public void setConfigurations(NameValue[] param) {
+
+            validateConfigurations(param);
+
+            if (param != null) {
+                // update the setting tracker
+                localConfigurationsTracker = true;
+            } else {
+                localConfigurationsTracker = true;
+
+            }
+
+            this.localConfigurations = param;
+        }
+
+        /**
+         * Auto generated add method for the array for convenience
+         * 
+         * @param param
+         *            NameValue
+         */
+        public void addConfigurations(NameValue param) {
+            if (localConfigurations == null) {
+                localConfigurations = new NameValue[] {};
+            }
+
+            // update the setting tracker
+            localConfigurationsTracker = true;
+
+            java.util.List list = org.apache.axis2.databinding.utils.ConverterUtil.toList(localConfigurations);
+            list.add(param);
+            this.localConfigurations = (NameValue[]) list.toArray(new NameValue[list.size()]);
+
+        }
+
+        /**
+         * isReaderMTOMAware
+         * 
+         * @return true if the reader supports MTOM
+         */
+        public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+            boolean isReaderMTOMAware = false;
+
+            try {
+                isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader
+                        .getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+            } catch (java.lang.IllegalArgumentException e) {
+                isReaderMTOMAware = false;
+            }
+            return isReaderMTOMAware;
+        }
+
+        /**
+         * 
+         * @param parentQName
+         * @param factory
+         * @return org.apache.axiom.om.OMElement
+         */
+        public org.apache.axiom.om.OMElement getOMElement(final javax.xml.namespace.QName parentQName,
+                final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException {
+
+            org.apache.axiom.om.OMDataSource dataSource = new org.apache.axis2.databinding.ADBDataSource(this, MY_QNAME) {
+
+                public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                        throws javax.xml.stream.XMLStreamException {
+                    LaunchWorkflow.this.serialize(MY_QNAME, factory, xmlWriter);
+                }
+            };
+            return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(MY_QNAME, factory, dataSource);
+
+        }
+
+        public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+                org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+            serialize(parentQName, factory, xmlWriter, false);
+        }
+
+        public void serialize(final javax.xml.namespace.QName parentQName, final org.apache.axiom.om.OMFactory factory,
+                org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter, boolean serializeType)
+                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException {
+
+            java.lang.String prefix = null;
+            java.lang.String namespace = null;
+
+            prefix = parentQName.getPrefix();
+            namespace = parentQName.getNamespaceURI();
+
+            if ((namespace != null) && (namespace.trim().length() > 0)) {
+                java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
+                if (writerPrefix != null) {
+                    xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+                } else {
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+                    }
+
+                    xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+                }
+            } else {
+                xmlWriter.writeStartElement(parentQName.getLocalPart());
+            }
+
+            if (serializeType) {
+
+                java.lang.String namespacePrefix = registerPrefix(xmlWriter,
+                        "http://interpretor.xbaya.airavata.apache.org");
+                if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)) {
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type", namespacePrefix
+                            + ":launchWorkflow", xmlWriter);
+                } else {
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "type", "launchWorkflow",
+                            xmlWriter);
+                }
+
+            }
+            if (localWorkflowAsStringTracker) {
+                namespace = "";
+                if (!namespace.equals("")) {
+                    prefix = xmlWriter.getPrefix(namespace);
+
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+
+                        xmlWriter.writeStartElement(prefix, "workflowAsString", namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+
+                    } else {
+                        xmlWriter.writeStartElement(namespace, "workflowAsString");
+                    }
+
+                } else {
+                    xmlWriter.writeStartElement("workflowAsString");
+                }
+
+                if (localWorkflowAsString == null) {
+                    // write the nil attribute
+
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+                } else {
+
+                    xmlWriter.writeCharacters(localWorkflowAsString);
+
+                }
+
+                xmlWriter.writeEndElement();
+            }
+            if (localTopicTracker) {
+                namespace = "";
+                if (!namespace.equals("")) {
+                    prefix = xmlWriter.getPrefix(namespace);
+
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+
+                        xmlWriter.writeStartElement(prefix, "topic", namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+
+                    } else {
+                        xmlWriter.writeStartElement(namespace, "topic");
+                    }
+
+                } else {
+                    xmlWriter.writeStartElement("topic");
+                }
+
+                if (localTopic == null) {
+                    // write the nil attribute
+
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+                } else {
+
+                    xmlWriter.writeCharacters(localTopic);
+
+                }
+
+                xmlWriter.writeEndElement();
+            }
+            if (localPasswordTracker) {
+                namespace = "";
+                if (!namespace.equals("")) {
+                    prefix = xmlWriter.getPrefix(namespace);
+
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+
+                        xmlWriter.writeStartElement(prefix, "password", namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+
+                    } else {
+                        xmlWriter.writeStartElement(namespace, "password");
+                    }
+
+                } else {
+                    xmlWriter.writeStartElement("password");
+                }
+
+                if (localPassword == null) {
+                    // write the nil attribute
+
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+                } else {
+
+                    xmlWriter.writeCharacters(localPassword);
+
+                }
+
+                xmlWriter.writeEndElement();
+            }
+            if (localUsernameTracker) {
+                namespace = "";
+                if (!namespace.equals("")) {
+                    prefix = xmlWriter.getPrefix(namespace);
+
+                    if (prefix == null) {
+                        prefix = generatePrefix(namespace);
+
+                        xmlWriter.writeStartElement(prefix, "username", namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+
+                    } else {
+                        xmlWriter.writeStartElement(namespace, "username");
+                    }
+
+                } else {
+                    xmlWriter.writeStartElement("username");
+                }
+
+                if (localUsername == null) {
+                    // write the nil attribute
+
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+
+                } else {
+
+                    xmlWriter.writeCharacters(localUsername);
+
+                }
+
+                xmlWriter.writeEndElement();
+            }
+            if (localInputsTracker) {
+                if (localInputs != null) {
+                    for (int i = 0; i < localInputs.length; i++) {
+                        if (localInputs[i] != null) {
+                            localInputs[i].serialize(new javax.xml.namespace.QName("", "inputs"), factory, xmlWriter);
+                        } else {
+
+                            // write null attribute
+                            java.lang.String namespace2 = "";
+                            if (!namespace2.equals("")) {
+                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                if (prefix2 == null) {
+                                    prefix2 = generatePrefix(namespace2);
+
+                                    xmlWriter.writeStartElement(prefix2, "inputs", namespace2);
+                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                } else {
+                                    xmlWriter.writeStartElement(namespace2, "inputs");
+                                }
+
+                            } else {
+                                xmlWriter.writeStartElement("inputs");
+                            }
+
+                            // write the nil attribute
+                            writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+                            xmlWriter.writeEndElement();
+
+                        }
+
+                    }
+                } else {
+
+                    // write null attribute
+                    java.lang.String namespace2 = "";
+                    if (!namespace2.equals("")) {
+                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                        if (prefix2 == null) {
+                            prefix2 = generatePrefix(namespace2);
+
+                            xmlWriter.writeStartElement(prefix2, "inputs", namespace2);
+                            xmlWriter.writeNamespace(prefix2, namespace2);
+                            xmlWriter.setPrefix(prefix2, namespace2);
+
+                        } else {
+                            xmlWriter.writeStartElement(namespace2, "inputs");
+                        }
+
+                    } else {
+                        xmlWriter.writeStartElement("inputs");
+                    }
+
+                    // write the nil attribute
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+                    xmlWriter.writeEndElement();
+
+                }
+            }
+            if (localConfigurationsTracker) {
+                if (localConfigurations != null) {
+                    for (int i = 0; i < localConfigurations.length; i++) {
+                        if (localConfigurations[i] != null) {
+                            localConfigurations[i].serialize(new javax.xml.namespace.QName("", "configurations"),
+                                    factory, xmlWriter);
+                        } else {
+
+                            // write null attribute
+                            java.lang.String namespace2 = "";
+                            if (!namespace2.equals("")) {
+                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                if (prefix2 == null) {
+                                    prefix2 = generatePrefix(namespace2);
+
+                                    xmlWriter.writeStartElement(prefix2, "configurations", namespace2);
+                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                } else {
+                                    xmlWriter.writeStartElement(namespace2, "configurations");
+                                }
+
+                            } else {
+                                xmlWriter.writeStartElement("configurations");
+                            }
+
+                            // write the nil attribute
+                            writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+                            xmlWriter.writeEndElement();
+
+                        }
+
+                    }
+                } else {
+
+                    // write null attribute
+                    java.lang.String namespace2 = "";
+                    if (!namespace2.equals("")) {
+                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                        if (prefix2 == null) {
+                            prefix2 = generatePrefix(namespace2);
+
+                            xmlWriter.writeStartElement(prefix2, "configurations", namespace2);
+                            xmlWriter.writeNamespace(prefix2, namespace2);
+                            xmlWriter.setPrefix(prefix2, namespace2);
+
+                        } else {
+                            xmlWriter.writeStartElement(namespace2, "configurations");
+                        }
+
+                    } else {
+                        xmlWriter.writeStartElement("configurations");
+                    }
+
+                    // write the nil attribute
+                    writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "nil", "1", xmlWriter);
+                    xmlWriter.writeEndElement();
+
+                }
+            }
+            xmlWriter.writeEndElement();
+
+        }
+
+        /**
+         * Util method to write an attribute with the ns prefix
+         */
+        private void writeAttribute(java.lang.String prefix, java.lang.String namespace, java.lang.String attName,
+                java.lang.String attValue, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+            if (xmlWriter.getPrefix(namespace) == null) {
+                xmlWriter.writeNamespace(prefix, namespace);
+                xmlWriter.setPrefix(prefix, namespace);
+
+            }
+
+            xmlWriter.writeAttribute(namespace, attName, attValue);
+
+        }
+
+        /**
+         * Util method to write an attribute without the ns prefix
+         */
+        private void writeAttribute(java.lang.String namespace, java.lang.String attName, java.lang.String attValue,
+                javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+            if (namespace.equals("")) {
+                xmlWriter.writeAttribute(attName, attValue);
+            } else {
+                registerPrefix(xmlWriter, namespace);
+                xmlWriter.writeAttribute(namespace, attName, attValue);
+            }
+        }
+
+        /**
+         * Util method to write an attribute without the ns prefix
+         */
+        private void writeQNameAttribute(java.lang.String namespace, java.lang.String attName,
+                javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+
+            java.lang.String attributeNamespace = qname.getNamespaceURI();
+            java.lang.String attributePrefix = xmlWriter.getPrefix(attributeNamespace);
+            if (attributePrefix == null) {
+                attributePrefix = registerPrefix(xmlWriter, attributeNamespace);
+            }
+            java.lang.String attributeValue;
+            if (attributePrefix.trim().length() > 0) {
+                attributeValue = attributePrefix + ":" + qname.getLocalPart();
+            } else {
+                attributeValue = qname.getLocalPart();
+            }
+
+            if (namespace.equals("")) {
+                xmlWriter.writeAttribute(attName, attributeValue);
+            } else {
+                registerPrefix(xmlWriter, namespace);
+                xmlWriter.writeAttribute(namespace, attName, attributeValue);
+            }
+        }
+
+        /**
+         * method to handle Qnames
+         */
+
+        private void writeQName(javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+            java.lang.String namespaceURI = qname.getNamespaceURI();
+            if (namespaceURI != null) {
+                java.lang.String prefix = xmlWriter.getPrefix(namespaceURI);
+                if (prefix == null) {
+                    prefix = generatePrefix(namespaceURI);
+                    xmlWriter.writeNamespace(prefix, namespaceURI);
+                    xmlWriter.setPrefix(prefix, namespaceURI);
+                }
+
+                if (prefix.trim().length() > 0) {
+                    xmlWriter.writeCharacters(prefix + ":"
+                            + org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                } else {
+                    // i.e this is the default namespace
+                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+                }
+
+            } else {
+                xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname));
+            }
+        }
+
+        private void writeQNames(javax.xml.namespace.QName[] qnames, javax.xml.stream.XMLStreamWriter xmlWriter)
+                throws javax.xml.stream.XMLStreamException {
+
+            if (qnames != null) {
+                // we have to store this data until last moment since it is not
+                // possible to write any
+                // namespace data after writing the charactor data
+                java.lang.StringBuffer stringToWrite = new java.lang.StringBuffer();
+                java.lang.String namespaceURI = null;
+                java.lang.String prefix = null;
+
+                for (int i = 0; i < qnames.length; i++) {
+                    if (i > 0) {
+                        stringToWrite.append(" ");
+                    }
+                    namespaceURI = qnames[i].getNamespaceURI();
+                    if (namespaceURI != null) {
+                        prefix = xmlWriter.getPrefix(namespaceURI);
+                        if ((prefix == null) || (prefix.length() == 0)) {
+                            prefix = generatePrefix(namespaceURI);
+                            xmlWriter.writeNamespace(prefix, namespaceURI);
+                            xmlWriter.setPrefix(prefix, namespaceURI);
+                        }
+
+                        if (prefix.trim().length() > 0) {
+                            stringToWrite
+                                    .append(prefix)
+                                    .append(":")
+                                    .append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+                        } else {
+                            stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil
+                                    .convertToString(qnames[i]));
+                        }
+                    } else {
+                        stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil
+                                .convertToString(qnames[i]));
+                    }
+                }
+                xmlWriter.writeCharacters(stringToWrite.toString());
+            }
+
+        }
+
+        /**
+         * Register a namespace prefix
+         */
+        private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace)
+                throws javax.xml.stream.XMLStreamException {
+            java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+            if (prefix == null) {
+                prefix = generatePrefix(namespace);
+
+                while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                    prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                }
+
+                xmlWriter.writeNamespace(prefix, namespace);
+                xmlWriter.setPrefix(prefix, namespace);
+            }
+
+            return prefix;
+        }
+
+        /**
+         * databinding method to get an XML representation of this object
+         * 
+         */
+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName)
+                throws org.apache.axis2.databinding.ADBException {
+
+            java.util.ArrayList elementList = new java.util.ArrayList();
+            java.util.ArrayList attribList = new java.util.ArrayList();
+
+            if (localWorkflowAsStringTracker) {
+                elementList.add(new javax.xml.namespace.QName("", "workflowAsString"));
+
+                elementList.add(localWorkflowAsString == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                        .convertToString(localWorkflowAsString));
+            }
+            if (localTopicTracker) {
+                elementList.add(new javax.xml.namespace.QName("", "topic"));
+
+                elementList.add(localTopic == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                        .convertToString(localTopic));
+            }
+            if (localPasswordTracker) {
+                elementList.add(new javax.xml.namespace.QName("", "password"));
+
+                elementList.add(localPassword == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                        .convertToString(localPassword));
+            }
+            if (localUsernameTracker) {
+                elementList.add(new javax.xml.namespace.QName("", "username"));
+
+                elementList.add(localUsername == null ? null : org.apache.axis2.databinding.utils.ConverterUtil
+                        .convertToString(localUsername));
+            }
+            if (localInputsTracker) {
+                if (localInputs != null) {
+                    for (int i = 0; i < localInputs.length; i++) {
+
+                        if (localInputs[i] != null) {
+                            elementList.add(new javax.xml.namespace.QName("", "inputs"));
+                            elementList.add(localInputs[i]);
+                        } else {
+
+                            elementList.add(new javax.xml.namespace.QName("", "inputs"));
+                            elementList.add(null);
+
+                        }
+
+                    }
+                } else {
+
+                    elementList.add(new javax.xml.namespace.QName("", "inputs"));
+                    elementList.add(localInputs);
+
+                }
+
+            }
+            if (localConfigurationsTracker) {
+                if (localConfigurations != null) {
+                    for (int i = 0; i < localConfigurations.length; i++) {
+
+                        if (localConfigurations[i] != null) {
+                            elementList.add(new javax.xml.namespace.QName("", "configurations"));
+                            elementList.add(localConfigurations[i]);
+                        } else {
+
+                            elementList.add(new javax.xml.namespace.QName("", "configurations"));
+                            elementList.add(null);
+
+                        }
+
+                    }
+                } else {
+
+                    elementList.add(new javax.xml.namespace.QName("", "configurations"));
+                    elementList.add(localConfigurations);
+
+                }
+
+            }
+
+            return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(),
+                    attribList.toArray());
+
+        }
+
+        /**
+         * Factory class that keeps the parse method
+         */
+        public static class Factory {
+
+            /**
+             * static method to create the object Precondition: If this object is an element, the current or next start
+             * element starts this object and any intervening reader events are ignorable If this object is not an
+             * element, it is a complex type and the reader is at the event just after the outer start element
+             * Postcondition: If this object is an element, the reader is positioned at its end element If this object
+             * is a complex type, the reader is positioned at the end element of its outer element
+             */
+            public static LaunchWorkflow parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception {
+                LaunchWorkflow object = new LaunchWorkflow();
+
+                java.lang.String nillableValue = null;
+                try {
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type") != null) {
+                        java.lang.String fullTypeName = reader.getAttributeValue(
+                                "http://www.w3.org/2001/XMLSchema-instance", "type");
+                        if (fullTypeName != null) {
+                            java.lang.String nsPrefix = null;
+                            if (fullTypeName.indexOf(":") > -1) {
+                                nsPrefix = fullTypeName.substring(0, fullTypeName.indexOf(":"));
+                            }
+                            nsPrefix = nsPrefix == null ? "" : nsPrefix;
+
+                            java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":") + 1);
+
+                            if (!"launchWorkflow".equals(type)) {
+                                // find namespace for the prefix
+                                java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                                return (LaunchWorkflow) ExtensionMapper.getTypeObject(nsUri, type, reader);
+                            }
+
+                        }
+
+                    }
+
+                    new java.util.Vector();
+
+                    reader.next();
+
+                    java.util.ArrayList list5 = new java.util.ArrayList();
+
+                    java.util.ArrayList list6 = new java.util.ArrayList();
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement()
+                            && new javax.xml.namespace.QName("", "workflowAsString").equals(reader.getName())) {
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                            java.lang.String content = reader.getElementText();
+
+                            object.setWorkflowAsString(org.apache.axis2.databinding.utils.ConverterUtil
+                                    .convertToString(content));
+
+                        } else {
+
+                            reader.getElementText(); // throw away text nodes if
+                                                     // any.
+                        }
+
+                        reader.next();
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement() && new javax.xml.namespace.QName("", "topic").equals(reader.getName())) {
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                            java.lang.String content = reader.getElementText();
+
+                            object.setTopic(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));
+
+                        } else {
+
+                            reader.getElementText(); // throw away text nodes if
+                                                     // any.
+                        }
+
+                        reader.next();
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement()
+                            && new javax.xml.namespace.QName("", "password").equals(reader.getName())) {
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                            java.lang.String content = reader.getElementText();
+
+                            object.setPassword(org.apache.axis2.databinding.utils.ConverterUtil
+                                    .convertToString(content));
+
+                        } else {
+
+                            reader.getElementText(); // throw away text nodes if
+                                                     // any.
+                        }
+
+                        reader.next();
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement()
+                            && new javax.xml.namespace.QName("", "username").equals(reader.getName())) {
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if (!"true".equals(nillableValue) && !"1".equals(nillableValue)) {
+
+                            java.lang.String content = reader.getElementText();
+
+                            object.setUsername(org.apache.axis2.databinding.utils.ConverterUtil
+                                    .convertToString(content));
+
+                        } else {
+
+                            reader.getElementText(); // throw away text nodes if
+                                                     // any.
+                        }
+
+                        reader.next();
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement() && new javax.xml.namespace.QName("", "inputs").equals(reader.getName())) {
+
+                        // Process the array and step past its final element's
+                        // end.
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if ("true".equals(nillableValue) || "1".equals(nillableValue)) {
+                            list5.add(null);
+                            reader.next();
+                        } else {
+                            list5.add(NameValue.Factory.parse(reader));
+                        }
+                        // loop until we find a start element that is not part
+                        // of this array
+                        boolean loopDone5 = false;
+                        while (!loopDone5) {
+                            // We should be at the end element, but make sure
+                            while (!reader.isEndElement())
+                                reader.next();
+                            // Step out of this element
+                            reader.next();
+                            // Step to next element event.
+                            while (!reader.isStartElement() && !reader.isEndElement())
+                                reader.next();
+                            if (reader.isEndElement()) {
+                                // two continuous end elements means we are
+                                // exiting the xml structure
+                                loopDone5 = true;
+                            } else {
+                                if (new javax.xml.namespace.QName("", "inputs").equals(reader.getName())) {
+
+                                    nillableValue = reader.getAttributeValue(
+                                            "http://www.w3.org/2001/XMLSchema-instance", "nil");
+                                    if ("true".equals(nillableValue) || "1".equals(nillableValue)) {
+                                        list5.add(null);
+                                        reader.next();
+                                    } else {
+                                        list5.add(NameValue.Factory.parse(reader));
+                                    }
+                                } else {
+                                    loopDone5 = true;
+                                }
+                            }
+                        }
+                        // call the converter utility to convert and set the
+                        // array
+
+                        object.setInputs((NameValue[]) org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                NameValue.class, list5));
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement()
+                            && new javax.xml.namespace.QName("", "configurations").equals(reader.getName())) {
+
+                        // Process the array and step past its final element's
+                        // end.
+
+                        nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "nil");
+                        if ("true".equals(nillableValue) || "1".equals(nillableValue)) {
+                            list6.add(null);
+                            reader.next();
+                        } else {
+                            list6.add(NameValue.Factory.parse(reader));
+                        }
+                        // loop until we find a start element that is not part
+                        // of this array
+                        boolean loopDone6 = false;
+                        while (!loopDone6) {
+                            // We should be at the end element, but make sure
+                            while (!reader.isEndElement())
+                                reader.next();
+                            // Step out of this element
+                            reader.next();
+                            // Step to next element event.
+                            while (!reader.isStartElement() && !reader.isEndElement())
+                                reader.next();
+                            if (reader.isEndElement()) {
+                                // two continuous end elements means we are
+                                // exiting the xml structure
+                                loopDone6 = true;
+                            } else {
+                                if (new javax.xml.namespace.QName("", "configurations").equals(reader.getName())) {
+
+                                    nillableValue = reader.getAttributeValue(
+                                            "http://www.w3.org/2001/XMLSchema-instance", "nil");
+                                    if ("true".equals(nillableValue) || "1".equals(nillableValue)) {
+                                        list6.add(null);
+                                        reader.next();
+                                    } else {
+                                        list6.add(NameValue.Factory.parse(reader));
+                                    }
+                                } else {
+                                    loopDone6 = true;
+                                }
+                            }
+                        }
+                        // call the converter utility to convert and set the
+                        // array
+
+                        object.setConfigurations((NameValue[]) org.apache.axis2.databinding.utils.ConverterUtil
+                                .convertToArray(NameValue.class, list6));
+
+                    } // End of if for expected property start element
+
+                    else {
+
+                    }
+
+                    while (!reader.isStartElement() && !reader.isEndElement())
+                        reader.next();
+
+                    if (reader.isStartElement())
+                        // A start element we are not expecting indicates a
+                        // trailing invalid property
+                        throw new org.apache.axis2.databinding.ADBException("Unexpected subelement "
+                                + reader.getLocalName());
+
+                } catch (javax.xml.stream.XMLStreamException e) {
+                    throw new java.lang.Exception(e);
+                }
+
+                return object;
+            }
+
+        }// end of factory class
+
+    }
+
+    private org.apache.axiom.om.OMElement toOM(WorkflowInterpretorStub.LaunchWorkflow param, boolean optimizeContent)
+            throws org.apache.axis2.AxisFault {
+
+        try {
+            return param.getOMElement(WorkflowInterpretorStub.LaunchWorkflow.MY_QNAME,
+                    org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+        } catch (org.apache.axis2.databinding.ADBException e) {
+            throw org.apache.axis2.AxisFault.makeFault(e);
+        }
+
+    }
+
+    private org.apache.axiom.om.OMElement toOM(WorkflowInterpretorStub.LaunchWorkflowResponse param,
+            boolean optimizeContent) throws org.apache.axis2.AxisFault {
+
+        try {
+            return param.getOMElement(WorkflowInterpretorStub.LaunchWorkflowResponse.MY_QNAME,
+                    org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+        } catch (org.apache.axis2.databinding.ADBException e) {
+            throw org.apache.axis2.AxisFault.makeFault(e);
+        }
+
+    }
+
+    private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory,
+            java.lang.String param1, java.lang.String param2,  NameValue[] param5, WorkflowInterpretorStub.LaunchWorkflow dummyWrappedType,
+            boolean optimizeContent) throws org.apache.axis2.AxisFault {
+
+        try {
+            WorkflowInterpretorStub.LaunchWorkflow wrappedType = new WorkflowInterpretorStub.LaunchWorkflow();
+            wrappedType.setWorkflowAsString(param1);
+            wrappedType.setTopic(param2);
+            wrappedType.setInputs(param5);
+            org.apache.axiom.soap.SOAPEnvelope emptyEnvelope = factory.getDefaultEnvelope();
+
+            emptyEnvelope.getBody().addChild(
+                    wrappedType.getOMElement(WorkflowInterpretorStub.LaunchWorkflow.MY_QNAME, factory));
+
+            return emptyEnvelope;
+        } catch (org.apache

<TRUNCATED>

[8/9] airavata git commit: Revert "removing previous airavata client API - AIRAVATA-1371"

Posted by sa...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataManager.java
new file mode 100644
index 0000000..6805dd2
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataManager.java
@@ -0,0 +1,137 @@
+/*
+ *
+ * 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.client.api;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+import java.net.URI;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *  This interface contains set of methods to access the basic configurations of AiravataClient required to connect to
+ *  Airvata services running at the backend
+ */
+public interface AiravataManager {
+	
+    /**
+     * Return a list of Workflow Interpreter service urls registered in the system
+     * @return 0 or more urls
+     * @throws AiravataAPIInvocationException
+     */
+	public List<URI> getWorkflowInterpreterServiceURLs() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first Workflow interpreter service url registered in the system
+     * @return url or null if a url is not registered
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getWorkflowInterpreterServiceURL() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first GFaC service url registered in the system orelse return the <code>defaultURL</code>
+     * @param defaultURL
+     * @return url
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getWorkflowInterpreterServiceURL(URI defaultURL) throws AiravataAPIInvocationException;
+
+    /**
+     * Return a list of Workflow Interpreter service urls registered in the system
+     * @return 0 or more urls
+     * @throws AiravataAPIInvocationException
+     */
+	public List<URI> getMessageBoxServiceURLs() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first Workflow interpreter service url registered in the system
+     * @return url or null if a url is not registered
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getMessageBoxServiceURL() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first GFaC service url registered in the system orelse return the <code>defaultURL</code>
+     * @param defaultURL
+     * @return url
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getMessageBoxServiceURL(URI defaultURL) throws AiravataAPIInvocationException;
+
+    /**
+     * Return a list of Workflow Interpreter service urls registered in the system
+     * @return 0 or more urls
+     * @throws AiravataAPIInvocationException
+     */
+	public List<URI> getEventingServiceURLs() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first Workflow interpreter service url registered in the system
+     * @return url or null if a url is not registered
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getEventingServiceURL() throws AiravataAPIInvocationException;
+
+    /**
+     * Return a the first GFaC service url registered in the system orelse return the <code>defaultURL</code>
+     * @param defaultURL
+     * @return url
+     * @throws AiravataAPIInvocationException
+     */
+	public URI getEventingServiceURL(URI defaultURL) throws AiravataAPIInvocationException;
+
+    public Object getConfiguration(String key) throws AiravataAPIInvocationException;
+
+    public List<Object> getConfigurationList(String key) throws AiravataAPIInvocationException;
+    
+	public void setConfiguration(String key, String value, Date expire) throws AiravataAPIInvocationException;
+
+    public void addConfiguration(String key, String value, Date expire) throws AiravataAPIInvocationException;
+
+    public void removeAllConfiguration(String key) throws AiravataAPIInvocationException;
+
+    public void removeConfiguration(String key, String value) throws AiravataAPIInvocationException;
+
+    public void addWorkflowInterpreterURI(URI uri) throws AiravataAPIInvocationException;
+
+    public void setEventingURI(URI uri) throws AiravataAPIInvocationException;
+
+    public void setMessageBoxURI(URI uri) throws AiravataAPIInvocationException;
+
+    public void addWorkflowInterpreterURI(URI uri, Date expire) throws AiravataAPIInvocationException;
+
+    public void setEventingURI(URI uri, Date expire) throws AiravataAPIInvocationException;
+
+    public void setMessageBoxURI(URI uri, Date expire) throws AiravataAPIInvocationException;
+
+    public void removeWorkflowInterpreterURI(URI uri) throws AiravataAPIInvocationException;
+
+    public void removeAllWorkflowInterpreterURI() throws AiravataAPIInvocationException;
+
+    public void unsetEventingURI() throws AiravataAPIInvocationException;
+
+    public void unsetMessageBoxURI() throws AiravataAPIInvocationException;
+
+//    public Gateway getGateway () throws AiravataAPIInvocationException;
+
+//    public AiravataUser getUser() throws AiravataAPIInvocationException;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AmazonWebServicesSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AmazonWebServicesSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AmazonWebServicesSettings.java
new file mode 100644
index 0000000..eaa924e
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AmazonWebServicesSettings.java
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.client.api;
+
+public interface AmazonWebServicesSettings {
+	public String getAccessKeyId();
+	public String getAMIId();
+	public String getInstanceId();
+	public String getInstanceType();
+	public String getSecretAccessKey();
+	public String getUsername();
+	
+	public void setAccessKeyId(String accessKeyId);
+	public void setAMIId(String amiId);
+	public void setInstanceId(String instanceId);
+	public void setInstanceType(String instanceType);
+	public void setSecretAccessKey(String secretAccessKey);
+	public void setUsername(String username);
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
new file mode 100644
index 0000000..fe00afd
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
@@ -0,0 +1,284 @@
+/*
+ *
+ * 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.client.api;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
+//import org.apache.airavata.commons.gfac.type.ApplicationDescription;
+//import org.apache.airavata.commons.gfac.type.HostDescription;
+//import org.apache.airavata.commons.gfac.type.ServiceDescription;
+
+public interface ApplicationManager {
+	//Service descriptors
+
+//    /**
+//     * Retrieve registered service description of the given service name
+//     * @param serviceName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public ServiceDescription getServiceDescription(String serviceName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all registered service descriptions
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ServiceDescription> getAllServiceDescriptions() throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Save service description on registry
+//     * @param service Service description information to update.
+//     * @return The service descriptor name.
+//     * @deprecated Deprecated since 0.6 release. User {@see #addServiceDescription} and {@see #updateServiceDescription}
+//     *             methods instead.
+//     * @throws AiravataAPIInvocationException If an error occurred while updating service descriptor.
+//     */
+//    @Deprecated
+//    public String saveServiceDescription(ServiceDescription service)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Adds a new Service descriptor to the system. If service descriptor already exists in the system
+//     * this will throw {@see DescriptorRecordAlreadyExistsException}. If you want to update an existing
+//     * service descriptor use {@see #updateServiceDescription}.
+//     * @param serviceDescription The service descriptor.
+//     * @throws AiravataAPIInvocationException If an error occurred while adding service description.
+//     * @throws DescriptorAlreadyExistsException If service descriptor already exists in the system.
+//     */
+//    public void addServiceDescription(ServiceDescription serviceDescription)throws AiravataAPIInvocationException,
+//            DescriptorAlreadyExistsException;
+//
+//    /**
+//     * Updates the service descriptor.
+//     * @param serviceDescription Service description information to update.
+//     * @throws AiravataAPIInvocationException If an error occurred while updating service description.
+//     */
+//    public void updateServiceDescription(ServiceDescription serviceDescription)throws AiravataAPIInvocationException;
+//
+//
+//
+//    /**
+//     * Delete service description from the registry
+//     * @param serviceName
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public void deleteServiceDescription(String serviceName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve a list of registered service descriptions of the given regex service name
+//     * @param nameRegEx
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ServiceDescription> searchServiceDescription(String nameRegEx) throws AiravataAPIInvocationException;
+//
+//    //Application descriptors
+//
+//    /**
+//     * Retrieve registered application description of the given service name & hostName
+//     * @param serviceName
+//     * @param hostName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public ApplicationDescription getApplicationDescription(String serviceName, String hostName)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Save deployment description on registry for a given service for a host
+//     * @param serviceId The service descriptor id.
+//     * @param hostId The host descriptor id.
+//     * @param app The application deployment descriptor.
+//     * @return The application deployment descriptor name.
+//     * @deprecated Deprecated since 0.6 release. Please use {@see #addApplicationDescription} and
+//     *              {@see #updateApplicationDescription}.
+//     * @throws AiravataAPIInvocationException If an error occurred while adding application deployment descriptor.
+//     */
+//    @Deprecated
+//    public String saveApplicationDescription(String serviceId, String hostId, ApplicationDescription app)throws AiravataAPIInvocationException;
+//
+//
+//    /**
+//     * Adds a new deployment description associating with given service description and given host description. If
+//     * an association already exists this will throw {@see DescriptorRecordAlreadyExistsException} exception. If you
+//     * want to update an existing deployment descriptor use {@see #updateApplicationDescription}.
+//     * @param serviceDescription The service description to associate. Should be saved before passing to this method.
+//     * @param hostDescription The host description to associate, should have been saved before calling this method.
+//     * @param applicationDeploymentDescription The application descriptor to save.
+//     * @throws AiravataAPIInvocationException If an error occurred while saving application descriptor.
+//     * @throws DescriptorAlreadyExistsException If deployment descriptor already exists in the system.
+//     */
+//    public void addApplicationDescription(ServiceDescription serviceDescription, HostDescription hostDescription,
+//                                          ApplicationDescription applicationDeploymentDescription)
+//        throws AiravataAPIInvocationException, DescriptorAlreadyExistsException;
+//
+//    /**
+//     * Adds a new deployment description associating with given service description and given host description. If
+//     * an association already exists this will throw {@see DescriptorRecordAlreadyExistsException} exception.
+//     * @param serviceDescription The service description to associate. Should be saved before passing to this method.
+//     * @param hostDescription The host description to associate, should have been saved before calling this method.
+//     * @param applicationDeploymentDescription The application descriptor to save.
+//     * @throws AiravataAPIInvocationException If an error occurred while saving application descriptor.
+//     */
+//    public void updateApplicationDescription(ServiceDescription serviceDescription, HostDescription hostDescription,
+//                                             ApplicationDescription applicationDeploymentDescription)
+//            throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve list of registered deployment descriptions of the given regex service name & regex host name
+//     * @param serviceName
+//     * @param hostName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ApplicationDescription> searchApplicationDescription(String serviceName, String hostName)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all registered deployment descriptions, The key represents the service name & host name in string array
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public Map<String[], ApplicationDescription> getAllApplicationDescriptions() throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve list of registered deployment descriptions of the given regex service name, regex host name & regex application name
+//     * @param serviceName
+//     * @param hostName
+//     * @param applicationName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ApplicationDescription> searchApplicationDescription(String serviceName, String hostName, String applicationName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve registered map of deployment descriptions for their host description of the given service name
+//     * @param serviceName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public Map<HostDescription, List<ApplicationDescription>> searchApplicationDescription(String serviceName)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Delete deployment description from the registry which is exposed as the service name in the host name
+//     * @param serviceName
+//     * @param hostName
+//     * @param applicationName
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public void deleteApplicationDescription(String serviceName, String hostName, String applicationName)throws AiravataAPIInvocationException;
+//
+//    //Host descriptors
+//
+//    /**
+//     * Retrieve registered host description of the given host name
+//     * @param hostName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public HostDescription getHostDescription(String hostName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all registered host descriptions
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<HostDescription> getAllHostDescriptions() throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Save host description on registry
+//     * @param host The host descriptor object to update in the database.
+//     * @deprecated Deprecated since 0.6 release. Please use {@see #addHostDescription} and {@see #updateHostDescription}
+//     * @throws AiravataAPIInvocationException If an error occurred while saving the host description.
+//     */
+//    @Deprecated
+//    public String saveHostDescription(HostDescription host)throws AiravataAPIInvocationException;
+//
+//
+//    /**
+//     * Adds a new host descriptor object. If adding host descriptor already exists in the system this will throw
+//     * DescriptorRecordAlreadyExistsException. If user wants to update an existing host descriptor use
+//     * {@see #updateHostDescription(HostDescription host)} method.
+//     * @param host The host descriptor object to save in the database.
+//     * @throws AiravataAPIInvocationException If an error occurred while saving the host description.
+//     * @throws DescriptorAlreadyExistsException If host descriptor object already exists in the system.
+//     */
+//    public void addHostDescription (HostDescription host) throws DescriptorAlreadyExistsException,
+//    		AiravataAPIInvocationException;
+//
+//
+//    /**
+//     * Updates an existing host descriptor. If you are not sure whether descriptor already exists try using
+//     * {@see #addHostDescription} and catch {@see DescriptorRecordAlreadyExistsException}. If caught use this method
+//     * to update the record.
+//     * @param host The host descriptor object to update in the database.
+//     * @throws AiravataAPIInvocationException If an error occurred while saving the host description.
+//     */
+//    public void updateHostDescription(HostDescription host)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve a list of registered hsot descriptions of the given regex host name
+//     * @param regExName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<HostDescription> searchHostDescription(String regExName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Delete host description from the registry
+//     * @param hostId
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public void deleteHostDescription(String hostId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Map services to possible hosts
+//     * @param serviceName
+//     * @param hostName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public boolean deployServiceOnHost(String serviceName, String hostName)throws AiravataAPIInvocationException;
+//
+//    public Map<String,ApplicationDescription> getApplicationDescriptors (String serviceName) throws AiravataAPIInvocationException;
+//
+//    public boolean isHostDescriptorExists(String descriptorName) throws AiravataAPIInvocationException;
+//
+//    public void removeHostDescriptor(String hostName) throws AiravataAPIInvocationException;
+//
+//    public boolean isServiceDescriptorExists(String descriptorName) throws AiravataAPIInvocationException;
+//
+//    public boolean isApplicationDescriptorExists(String serviceName, String hostName, String descriptorName)throws AiravataAPIInvocationException;
+//
+//    public void removeServiceDescriptor(String serviceName) throws AiravataAPIInvocationException;
+//
+//    public void removeApplicationDescriptor(String serviceName, String hostName, String applicationName) throws AiravataAPIInvocationException;
+//
+//    public void updateHostDescriptor(HostDescription descriptor) throws AiravataAPIInvocationException;
+//
+//    public void updateServiceDescriptor(ServiceDescription descriptor) throws AiravataAPIInvocationException;
+//
+//    public void updateApplicationDescriptor(String serviceName, String hostName, ApplicationDescription descriptor) throws AiravataAPIInvocationException;
+//
+//    public ApplicationDescription getApplicationDescriptor(String serviceName, String hostname, String applicationName) throws AiravataAPIInvocationException;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/BaseAPI.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/BaseAPI.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/BaseAPI.java
new file mode 100644
index 0000000..05b7bb2
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/BaseAPI.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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.client.api;
+
+import java.net.URI;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.common.utils.Version;
+
+public interface BaseAPI {
+
+    /**
+     * Retrieve the version associated with the Experiment Execution API
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public Version getVersion() throws AiravataAPIInvocationException;
+    
+    public String getUser();
+    
+    public String getGateway();
+    
+    public void initialize() throws AiravataAPIInvocationException;
+    
+	public URI getServiceURL() throws AiravataAPIInvocationException;
+//	public PasswordCallback getPasswordCallback() throws AiravataAPIInvocationException;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreManager.java
new file mode 100644
index 0000000..f79b8d4
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreManager.java
@@ -0,0 +1,62 @@
+/*
+ *
+ * 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.client.api;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+public interface CredentialStoreManager {
+
+	/**
+	 * Checks whether a credential exists in the credential store for given gateway and token
+	 * @param  gatewayId
+	 * @param  tokenId
+	 * @return a boolean (true is credential exists, false if not)
+	 */
+	public boolean isCredentialExist(String gatewayId, String tokenId) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Get the public key for a credential in the credential store for given gateway and token
+	 * @param  gatewayId
+	 * @param  tokenId
+	 * @return String The public key of the credential
+	 */
+	public String getCredentialPublicKey(String gatewayId, String tokenId) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Creates a new SSH credential for given gateway and token, encrypts it with the given password 
+	 * and stores it in the credential store
+	 * @param  gatewayId
+	 * @param  tokenId
+	 * @return String The public key of the credential
+	 */
+	public String createCredential(String gatewayId, String tokenId) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Creates a new SSH credential for given gateway and token, encrypts it with the given password 
+	 * and stores it in the credential store
+	 * @param  gatewayId
+	 * @param  tokenId
+	 * @param  username
+	 * @return String The public key of the credential
+	 */
+	public String createCredential(String gatewayId, String tokenId, String username) throws AiravataAPIInvocationException;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreSecuritySettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreSecuritySettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreSecuritySettings.java
new file mode 100644
index 0000000..e8a1d3d
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/CredentialStoreSecuritySettings.java
@@ -0,0 +1,69 @@
+/*
+ *
+ * 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.client.api;
+
+/**
+ * Encapsulates security information related to credential-store.
+ * Mainly we need information about the token id and and user id of the portal user
+ * who is invoking the workflow.
+ */
+public interface CredentialStoreSecuritySettings {
+
+    /**
+     * Returns the token id to get the credentials.
+     * @return The token id.
+     */
+    String getTokenId();
+
+    /**
+     * Sets the token to be used when accessing the credential store.
+     * @param token The token.
+     */
+    void setTokenId(String token);
+
+    /**
+     * Sets the portal user name.
+     * @param portalUserName The name of the portal user.
+     */
+    void setPortalUser(String portalUserName);
+
+    /**
+     * Gets the portal user name.
+     * @return portal user name.
+     */
+    String getPortalUser();
+
+    /**
+     * Sets the gateway id.
+     * @param gatewayId The gateway id.
+     */
+    void setGatewayId(String gatewayId);
+
+    /**
+     * Gets the gateway id.
+     * @return name of the gateway.
+     */
+    String getGatewayId();
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
new file mode 100644
index 0000000..fe7832f
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
@@ -0,0 +1,207 @@
+/*
+ *
+ * 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.client.api;
+
+import java.util.List;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
+import org.apache.airavata.ws.monitor.EventDataListener;
+import org.apache.airavata.ws.monitor.Monitor;
+
+public interface ExecutionManager {
+    /**
+     * Run an experiment containing single workflow
+     * @param workflow - Workflow template Id or Workflow Graph XML
+     * @param inputs
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public String runExperiment(String workflow,List<WorkflowInput> inputs) throws AiravataAPIInvocationException;
+
+    /**
+     * Run an experiment containing single workflow with custom settings for the experiment
+     * @param workflow - Workflow template Id or Workflow Graph XML
+     * @param inputs
+     * @param options
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public String runExperiment(String workflow,List<WorkflowInput> inputs, ExperimentAdvanceOptions options) throws AiravataAPIInvocationException;
+
+    /**
+     * Run an experiment containing single workflow with custom settings for the experiment & listen 
+     * for notification events 
+     * @param workflow - Workflow template Id or Workflow Graph XML
+     * @param inputs
+     * @param options
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public String runExperiment(String workflow,List<WorkflowInput> inputs, ExperimentAdvanceOptions options, EventDataListener listener) throws AiravataAPIInvocationException;
+	
+    /**
+     * Run an experiment containing single workflow
+     * @param workflow
+     * @param inputs
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public String runExperiment(Workflow workflow,List<WorkflowInput> inputs, ExperimentAdvanceOptions options) throws AiravataAPIInvocationException;
+
+    /**
+     * Get a monitor for a running experiment
+     * @param experimentId
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public Monitor getExperimentMonitor(String experimentId)throws AiravataAPIInvocationException;
+
+    /**
+     * Get a monitor for a running experiment
+     * @param experimentId
+     * @param listener
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+	public Monitor getExperimentMonitor(String experimentId, EventDataListener listener) throws AiravataAPIInvocationException;
+
+	/**
+	 * Create a new experiment advance options
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+    public ExperimentAdvanceOptions createExperimentAdvanceOptions() throws AiravataAPIInvocationException;
+    
+    /**
+     * Create a new experiment advance options
+     * @param experimentName - Name of the running experiment
+     * @param experimentUser - Experiment submission user
+     * @param experimentMetadata - Experiment metadata 
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public ExperimentAdvanceOptions createExperimentAdvanceOptions(String experimentName, String experimentUser, String experimentMetadata) throws AiravataAPIInvocationException;
+    
+    /**
+     * Returns when the given experiment has completed
+     * @param experimentId
+     * @throws AiravataAPIInvocationException
+     */
+    public void waitForExperimentTermination(String experimentId) throws AiravataAPIInvocationException;
+
+    /*
+     * Errors in experiment executions
+     */
+    
+    /**
+     * Return errors defined at the experiment level 
+     * @param experimentId
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+//    public List<ExperimentExecutionError> getExperimentExecutionErrors(String experimentId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Return errors defined at the workflow level
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<WorkflowExecutionError> getWorkflowExecutionErrors(String experimentId, String workflowInstanceId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Return errors defined at the node level
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<NodeExecutionError> getNodeExecutionErrors(String experimentId, String workflowInstanceId, String nodeId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Return errors defined for a Application job
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @param jobId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ApplicationJobExecutionError> getApplicationJobErrors(String experimentId, String workflowInstanceId, String nodeId, String jobId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Return errors defined for a Application job
+//     * @param jobId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ApplicationJobExecutionError> getApplicationJobErrors(String jobId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Return errors filtered by the parameters
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @param jobId
+//     * @param filterBy - what type of source types the results should contain
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public List<ExecutionError> getExecutionErrors(String experimentId, String workflowInstanceId, String nodeId, String jobId, ExecutionErrors.Source...filterBy) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Adds an experiment execution error
+//     * @param error
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public int addExperimentError(ExperimentExecutionError error) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Adds an workflow execution error
+//     * @param error
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public int addWorkflowExecutionError(WorkflowExecutionError error) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Adds an node execution error
+//     * @param error
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public int addNodeExecutionError(NodeExecutionError error) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Adds an Application job execution error
+//     * @param error
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public int addApplicationJobExecutionError(ApplicationJobExecutionError error) throws AiravataAPIInvocationException;
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
new file mode 100644
index 0000000..458ec8c
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
@@ -0,0 +1,160 @@
+/*
+ *
+ * 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.client.api;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.client.impl.SecuritySettingsImpl;
+import org.apache.airavata.client.impl.WorkflowOutputDataSettingsImpl;
+import org.apache.airavata.client.impl.WorkflowSchedulingSettingsImpl;
+
+import java.util.UUID;
+
+public class ExperimentAdvanceOptions {
+	private String executionUser;
+	private String metadata;
+	private String experimentName;
+	private String customExperimentId;
+	private WorkflowSchedulingSettings schedulingSettings;
+	private WorkflowOutputDataSettings outputDataSettings;
+    private SecuritySettings securitySettings;
+//	private AiravataAPI api;
+//
+//	public ExperimentAdvanceOptions(AiravataAPI api) {
+//		this.api=api;
+//	}
+	
+	/**
+	 * Get the user who will be running the experiment if different from the experiment
+	 * submitting user.
+	 * @return String representing the execution user
+	 */
+	public String getExperimentExecutionUser(){
+		return executionUser;
+	}
+	
+	/**
+	 * Get the metadata for the experiment.
+	 * @return String representing the custom metadata.
+	 */
+	public String getExperimentMetadata(){
+		return metadata;
+	}
+	
+	/**
+	 * Get the name of the experiment
+	 * @return String representing the experiment name.
+	 */
+	public String getExperimentName(){
+		return experimentName;
+	}
+	
+	/**
+	 * Get the custom Id that will be used as the experiment Id.
+	 * @return String representing the custom experiment Id.
+	 */
+	public String getCustomExperimentId(){
+		return customExperimentId;
+	}
+	
+	/**
+	 * Set a 3rd party user identity as the user who performed this experiment. If not specified 
+	 * the experiment submission user will be used as the execution user.
+	 * @param experimentExecutionUser - String representing the user.
+	 */
+	public void setExperimentExecutionUser(String experimentExecutionUser){
+		this.executionUser=experimentExecutionUser;
+	}
+	
+	/**
+	 * Set custom metadata for the experiment.<br />
+	 * <i><b>Note:</b> Users can store custom data related to experiment along with the experiment and 
+	 * retrieve them later on.</i> 
+	 * @param experimentMetadata - String representing the metadata.
+	 */
+	public void setExperimentCustomMetadata(String experimentMetadata){
+		this.metadata=experimentMetadata;
+	}
+	
+	/**
+	 * Set the name of the experiment. Must be unique. If not defined the name will be 
+	 * auto-generated using the worklfow template Id & & time of experiment submission .
+	 * @param experimentName - String representing experiment name.
+	 */
+	public void setExperimentName(String experimentName){
+		this.experimentName=experimentName;
+	}
+	
+	/**
+	 * Set a custom id as an experiment Id. If not specified the system will autogenerate an 
+	 * experiment id.
+	 * @param customExperimentId - String representing the experiment Id.
+	 */
+	public void setCustomExperimentId(String customExperimentId){
+		this.customExperimentId=customExperimentId;
+	}
+	
+	/**
+	 * Create a unique experiment Id.<br />
+	 * <i><b>Note:</b> This will not be set as the experiment Id for the experiment. Users should use the
+	 * function </i><code><b>setCustomExperimentId(...)</b></code><i> to do so.
+	 * @return A string representing a unique id.
+	 */
+	public String generatExperimentId(){
+		return UUID.randomUUID().toString();
+	}
+	
+	/**
+	 * Get custom workflow scheduling settings 
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public WorkflowSchedulingSettings getCustomWorkflowSchedulingSettings() throws AiravataAPIInvocationException{
+		if (schedulingSettings==null){
+			schedulingSettings=new WorkflowSchedulingSettingsImpl();
+		}
+		return schedulingSettings;
+	}
+	
+	/**
+	 * Get workflow intermediate output data settings for application executions
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public WorkflowOutputDataSettings getCustomWorkflowOutputDataSettings() throws AiravataAPIInvocationException{
+		if (outputDataSettings==null){
+			outputDataSettings=new WorkflowOutputDataSettingsImpl();
+		}
+		return outputDataSettings;
+	}
+	
+	/**
+	 * Get the custom security settings for running the experiment
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public SecuritySettings getCustomSecuritySettings() throws AiravataAPIInvocationException{
+        if (securitySettings==null){
+            securitySettings= new SecuritySettingsImpl();
+        }
+        return securitySettings;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/GridMyProxyRepositorySettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/GridMyProxyRepositorySettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/GridMyProxyRepositorySettings.java
new file mode 100644
index 0000000..e0a7091
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/GridMyProxyRepositorySettings.java
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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.client.api;
+
+public interface GridMyProxyRepositorySettings {
+	public String getUsername();
+	public String getPassword();
+	public String getMyProxyServer();
+	public int getLifeTime();
+	
+	public void setUsername(String username);
+	public void setPassword(String password);
+	public void setMyProxyServer(String myproxyServer);
+	public void setLifeTime(int lifeTime);
+	
+	public void resetUsername();
+	public void resetPassword();
+	public void resetMyProxyServer();
+	public void resetLifeTime();
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HPCSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HPCSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HPCSettings.java
new file mode 100644
index 0000000..7fe2c32
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HPCSettings.java
@@ -0,0 +1,111 @@
+/*
+ *
+ * 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.client.api;
+
+public interface HPCSettings {
+	
+	/**
+	 * Get the job manager to use for this job submission
+	 * @return
+	 */
+	public String getJobManager();
+	
+	/**
+	 * Get the no of CPU cores to allocate for this job 
+	 * @return
+	 */
+	public Integer getCPUCount();
+	
+	/**
+	 * Get the no of nodes to allocate for this job
+	 * @return
+	 */
+	public Integer getNodeCount();
+	
+	/**
+	 * Get the job queue name 
+	 * @return
+	 */
+	public String getQueueName();
+	
+	/**
+	 * Get the maximum time the job should be allocated for execution 
+	 * @return
+	 */
+	public Integer getMaxWallTime();
+	
+	/**
+	 * Set the job manager to use for this job submission
+	 * @param jobManager
+	 */
+	public void setJobManager(String jobManager);
+	
+	/**
+	 * Set the no of CPU cores to allocate for this job
+	 * @param cpuCount
+	 */
+	public void setCPUCount(Integer cpuCount);
+	
+	/**
+	 * Set the no of nodes to allocate for this job
+	 * @param nodeCount
+	 */
+	public void setNodeCount(Integer nodeCount);
+	
+	/**
+	 * Set the job queue name 
+	 * @param queueName
+	 */
+	public void setQueueName(String queueName);
+	
+	/**
+	 * Set the maximum time the job should be allocated for execution 
+	 * @param maxWallTime
+	 */
+	public void setMaxWallTime(Integer maxWallTime);
+	
+	/**
+	 * Reset the job manager values
+	 */
+	public void resetJobManager();
+	
+	/**
+	 * Reset the CPU count
+	 */
+	public void resetCPUCount();
+	
+	/**
+	 * Reset the Node count
+	 */
+	public void resetNodeCount();
+	
+	/**
+	 * Reset the queue name for the job
+	 */
+	public void resetQueueName();
+	
+	/**
+	 * Reset the maximum time allocated for the job
+	 */
+	public void resetMaxWallTime();
+	
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HostSchedulingSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HostSchedulingSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HostSchedulingSettings.java
new file mode 100644
index 0000000..2d7f919
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/HostSchedulingSettings.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * 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.client.api;
+
+public interface HostSchedulingSettings {
+	
+	/**
+	 * Get the id of the host descriptor
+	 * @return
+	 */
+	public String getHostId();
+	
+	/**
+	 * Using WS-Gram or not (Pre WS-GRAM) 
+	 * @return
+	 */
+	public Boolean isWSGRAMPreffered();
+	
+	/**
+	 * Get the gatekeeper endpoint reference
+	 * @return
+	 */
+	public String getGatekeeperEPR();
+	
+	/**
+	 * Set the id of the host descriptor use
+	 * @param hostId
+	 */
+	public void setHostId(String hostId);
+	
+	/**
+	 * Set whether to use WS-GRAM or Pre WS-GRAM
+	 * @param wsgramPreffered
+	 */
+	public void setWSGramPreffered(Boolean wsgramPreffered);
+	
+	/**
+	 * Set the gatekeeper endpoint reference
+	 * @param gatekeeperEPR
+	 */
+	public void setGatekeeperEPR(String gatekeeperEPR);
+	
+	/**
+	 * reset the values for the WS-GRAM preference
+	 */
+	public void resetWSGramPreffered();
+	
+	/**
+	 * Reset the values for gatekeeper endpoint reference
+	 */
+	public void resetGatekeeperEPR();
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/NodeSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/NodeSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/NodeSettings.java
new file mode 100644
index 0000000..9b33cf8
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/NodeSettings.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.client.api;
+
+import java.util.List;
+
+import org.apache.airavata.client.tools.NameValuePairType;
+
+public interface NodeSettings {
+	
+	/**
+	 * Get the id of the node in the workflow
+	 * @return
+	 */
+	public String getNodeId();
+	
+	/**
+	 * Get the id of the service descriptor which the node binds to
+	 * @return
+	 */
+	public String getServiceId();
+	
+	/**
+	 * host settings for the service descriptor 
+	 * @return
+	 */
+	public HostSchedulingSettings getHostSettings();
+	
+	/**
+	 * HPC settings for the grid application exposed by the service descriptor
+	 * @return
+	 */
+	public HPCSettings getHPCSettings();
+	
+	/**
+	 * get the list of name-value pair settings 
+	 * @return
+	 */
+	public List<NameValuePairType> getNameValuePair();
+	
+	/**
+	 * Set the node Id of the workflow
+	 * @param nodeId
+	 */
+	public void setNodeId(String nodeId);
+	
+	/**
+	 * Set the id of the service descriptor which the node should binds to 
+	 * @param serviceId
+	 */
+	public void setServiceId(String serviceId);
+	
+	/**
+	 * set host settings for the application
+	 * @param hostSchedulingSettings
+	 */
+	public void setHostSettings(HostSchedulingSettings hostSchedulingSettings);
+	
+	/**
+	 * Set HPC settings for the grid application
+	 * @param hpcSettings
+	 */
+	public void setHPCSettings(HPCSettings hpcSettings);
+	
+	/**
+	 * 
+	 * @param nameValuePair
+	 */
+	public void setNameValuePair(List<NameValuePairType> nameValuePair);
+	
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/OutputDataSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/OutputDataSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/OutputDataSettings.java
new file mode 100644
index 0000000..e1a8189
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/OutputDataSettings.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.client.api;
+
+public interface OutputDataSettings {
+	
+	/**
+	 * Retrieve the id of the node which these output data settings are relevant 
+	 * @return
+	 */
+	public String getNodeId();
+	
+	/**
+	 * Retrieve the pre-specified staging location for output data
+	 * @return
+	 */
+	public String getOutputDataDirectory();
+	
+	/**
+	 * Retrieve the associated data registry location for cataloging data separately
+	 * @return
+	 */
+	public String getDataRegistryUrl();
+	
+	/**
+	 * Should the intermediate workflow output data should be kept or discarded
+	 * @return
+	 */
+	public Boolean isDataPersistent();
+	
+	/**
+	 * Setup the id of the node which these output data settings are relevant
+	 */
+	public void setNodeId(String nodeId);
+	
+	/**
+	 * Setup a custom pre-specified staging location for output data 
+	 * @param outputDataDirectory - Path for output data directory
+	 */
+	public void setOutputDataDirectory(String outputDataDirectory);
+	
+	/**
+	 * Setup a URL for pre-specified data registry (instead of the default) which will 
+	 * catalog data  
+	 * @param dataRegistryUrl
+	 */
+	public void setDataRegistryUrl(String dataRegistryUrl);
+	
+	/**
+	 * Retain or discard intermediate output data 
+	 * @param isDataPersistance - if true (default value) the intermediate output data is 
+	 * kept, else discarded.
+	 */
+	public void setDataPersistent(Boolean isDataPersistance);
+	
+	/**
+	 * Default output data directory will be used.
+	 */
+	public void resetOutputDataDirectory();
+	
+	/**
+	 * Default data registry location will be used.
+	 */
+	public void resetDataRegistryUrl();
+	
+	/**
+	 * Default data persistent settings will be used.
+	 */
+	public void resetDataPersistent();
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java
new file mode 100644
index 0000000..5c248ae
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java
@@ -0,0 +1,461 @@
+///*
+// *
+// * 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.client.api;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.Map;
+//
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//
+///**
+// * This interface provide and API to manage all the provenance related methods, get Workflow inputs outputs
+// */
+//public interface ProvenanceManager {
+//
+//    /**
+//     * Add input port data for a node in a running instance of a Workflow
+//     * @param data
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceNodeInput(WorkflowInstanceNode node, String data) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Add input port data for a node in a running instance of a Workflow
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @param data
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceNodeInput(String experimentId, String workflowInstanceId, String nodeId, String data) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Add output port data for a node in a running instance of a Workflow
+//     * @param data
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceNodeOutput(WorkflowInstanceNode node, String data) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Add output port data for a node in a running instance of a Workflow
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @param data
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceNodeOutput(String experimentId, String workflowInstanceId, String nodeId, String data) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of input ports of a node in a running instance of a Workflow
+//     * @param node
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public String getWorkflowInstanceNodeInput(WorkflowInstanceNode node) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of input ports of a node in a running instance of a Workflow
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public String getWorkflowInstanceNodeInput(String experimentId, String workflowInstanceId, String nodeId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of input ports of a node in all the running instance of a particular Workflow template
+//     * @param workflowTemplateId
+//     * @param nodeId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public Map<WorkflowInstanceNode,String> getWorkflowInstanceNodeInput(String workflowTemplateId, String nodeId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of output ports of a node in a running instance of a Workflow
+//     * @param node
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public String getWorkflowInstanceNodeOutput(WorkflowInstanceNode node) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of output ports of a node in a running instance of a Workflow
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param nodeId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public String getWorkflowInstanceNodeOutput(String experimentId, String workflowInstanceId, String nodeId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Get data of output ports of a node in all the running instance of a particular Workflow template
+//     * @param workflowName
+//     * @param nodeId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public Map<WorkflowInstanceNode,String> getWorkflowInstanceNodeOutput(String workflowName, String nodeId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the status of the Workflow instance
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @param status
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceStatus(String experimentId, String workflowInstanceId, State status) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the status of the Workflow instance
+//     * @param status
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setWorkflowInstanceStatus(WorkflowExecutionStatus status) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the status of the Workflow instance
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public WorkflowExecutionStatus getWorkflowInstanceStatus(String experimentId, String workflowInstanceId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the status of the Workflow instance
+//     * @param workflowInstance
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public WorkflowExecutionStatus getWorkflowInstanceStatus(WorkflowExecution workflowInstance) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the User of the Workflow instance
+//     * @param experimentId
+//     * @param user
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentUser(String experimentId, String user) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the User of the Workflow instance
+//     * @param user
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentUser(ExperimentUser user) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the User of the Workflow instance
+//     * @param experimentId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public ExperimentUser getExperimentUser(String experimentId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the metadata of the Workflow instance
+//     * @param experimentId
+//     * @param metadata
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentMetadata(String experimentId, String metadata) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the metadata of the Workflow instance
+//     * @param experimentMetadata
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentMetadata(ExperimentMetadata experimentMetadata) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the metadata of the Workflow instance
+//     * @param experimentId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public ExperimentMetadata getExperimentMetadata(String experimentId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * check whether the experiment exists
+//     * @param experimentName
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public boolean isExperimentNameExist(String experimentName) throws AiravataAPIInvocationException;
+//
+//	   /**
+//     * Update the instance name of the Workflow
+//     * @param experimentId
+//     * @param instanceName
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentName(String experimentId, String instanceName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Update the instance name of the Workflow
+//     * @param experimentName
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public void setExperimentName(ExperimentName experimentName) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the metadata of the Workflow instance
+//     * @param experimentId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public ExperimentName getExperimentName(String experimentId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the id's of all the experiments run by the given owner
+//     * @param owner
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public List<String> getExperimentIdList(String owner) throws AiravataAPIInvocationException;
+//
+//	public ExperimentData getExperimentMetaInformation(String experimentId)throws AiravataAPIInvocationException;
+//
+//	public List<ExperimentData> getAllExperimentMetaInformation(String user)throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve the id's of all the experiments run by the current user
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public List<String> getExperimentIdList() throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all the experiments run by the current user
+//     * @deprecated
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public List<ExperimentData> getWorkflowExperimentDataList() throws AiravataAPIInvocationException;
+//
+//	public List<ExperimentData> getExperimentDataList() throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all the experiments run by the given owner
+//     * @deprecated
+//     * @param user
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public List<ExperimentData> getWorkflowExperimentDataList(String user) throws AiravataAPIInvocationException;
+//
+//	public List<ExperimentData> getExperimentDataList(String user) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve all the experiment data run by the given owner with paging
+//     * @deprecated
+//     * @param user
+//     * @param pageSize
+//     * @param pageNo
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public List<ExperimentData> getWorkflowExperimentData(String user, int pageSize, int pageNo) throws AiravataAPIInvocationException;
+//
+//	public List<ExperimentData> getExperimentData(String user, int pageSize, int pageNo) throws AiravataAPIInvocationException;
+//
+//	/**
+//     * Retrieve all the experiment data run by the given owner with paging
+//     * @deprecated
+//     * @param experimentId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public ExperimentData getWorkflowExperimentData(String experimentId) throws AiravataAPIInvocationException;
+//
+//	public ExperimentData getExperimentData(String experimentId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve experiment data for a given workflow instance
+//     * @param experimentId
+//     * @param workflowInstanceId
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public WorkflowExecutionData getWorkflowInstanceData(String experimentId, String workflowInstanceId) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve experiment data for a given workflow instance
+//     * @param workflowInstance
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public WorkflowExecutionData getWorkflowInstanceData(WorkflowExecution workflowInstance) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * Retrieve output node names of a experiment
+//     * @param experimentId
+//     * @deprecated
+//     * @return
+//     * @throws AiravataAPIInvocationException
+//     */
+//	public String[] getWorkflowExecutionOutputNames(String experimentId) throws AiravataAPIInvocationException;
+//
+//	public void setWorkflowInstanceNodeStatus(String experimentId, String workflowInstaceId, String nodeId, State status) throws AiravataAPIInvocationException;
+//
+//	public void setWorkflowInstanceNodeStatus(NodeExecutionStatus status) throws AiravataAPIInvocationException;
+//
+//	public NodeExecutionStatus getWorkflowInstanceNodeStatus(String experimentId, String workflowInstaceId, String nodeId) throws AiravataAPIInvocationException;
+//
+//	public NodeExecutionStatus getWorkflowInstanceNodeStatus(WorkflowInstanceNode node) throws AiravataAPIInvocationException;
+//
+//	public void addExperiment(String projectName, String experimentId, String experimentName) throws AiravataAPIInvocationException;
+//
+//	public void addWorkflowInstance(String experimentId, WorkflowExecution workflowInstance) throws AiravataAPIInvocationException;
+//
+//	//TODO setup node type for the node & gram data for the node
+//
+//    public List<WorkflowExecution> getExperimentWorkflowInstances(String experimentId) throws AiravataAPIInvocationException;
+//
+//    public void setWorkflowNodeType(WorkflowInstanceNode node, WorkflowNodeType type) throws AiravataAPIInvocationException;
+//
+//    public void setWorkflowInstanceTemplateName(String workflowInstanceId,String templateName) throws AiravataAPIInvocationException;
+//
+//    public void saveWorkflowExecutionOutput(String experimentId, String outputNodeName, String output) throws AiravataAPIInvocationException;
+//
+//    /**
+//     * @deprecated - Will be removed from 0.9 release onwards. Use {@see #addApplicationJob #updateApplicationJob(ApplucationJob) etc.} functions instead.
+//     * This will store the gram specific data in to repository, this can be called before submitting the workflow in to Grid
+//     * @param data
+//     * @throws AiravataAPIInvocationException
+//     */
+//    public void updateWorkflowNodeGramData(WorkflowNodeGramData data) throws AiravataAPIInvocationException;
+//
+// 	/*---------------------------------------  Managing Data for Application Jobs ------------------------------------------*/
+//
+//     /**
+//      * Returns <code>true</code> if a Application job data is existing in Airavata
+//      * @param jobId
+//      * @return
+//      * @throws org.apache.airavata.registry.api.exception.RegException
+//      */
+//     public boolean isApplicationJobExists(String jobId) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Adding data related to a new Application job submission
+//      * @param job - the <code>jobId</code> cannot be <code>null</code>.
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void addApplicationJob(ApplicationJob job) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Update data related to a existing Application job record in Airavata
+//      * @param job - the <code>jobId</code> cannot be <code>null</code> and should already exist in Airavata
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJob(ApplicationJob job) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Update the status of the job
+//      * @param jobId
+//      * @param status
+//      * @param statusUpdateTime
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJobStatus(String jobId, ApplicationJobStatus status, Date statusUpdateTime) throws AiravataAPIInvocationException;
+//
+//	 /**
+//	 * Update the status of the job for the current server time
+//	 * @param jobId
+//	 * @param status
+//	 * @throws org.apache.airavata.registry.api.exception.RegException
+//	 */
+//     public void updateApplicationJobStatus(String jobId, ApplicationJobStatus status) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Update the job data. GFacProvider implementation should decide the job data. Typically it'll
+//      * be a serialization of the submitted job query (eg: rsl for a GRAM job)
+//      * @param jobId
+//      * @param jobdata
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJobData(String jobId, String jobdata) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Update the time of job submission or job started executing
+//      * @param jobId
+//      * @param submitted
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJobSubmittedTime(String jobId, Date submitted) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Update the time of current job status is valid.
+//      * @param jobId
+//      * @param statusUpdateTime
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJobStatusUpdateTime(String jobId, Date statusUpdateTime) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Custom data field for users
+//      * @param jobId
+//      * @param metadata
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public void updateApplicationJobMetadata(String jobId, String metadata) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Retrieve the Application Job for the given job id
+//      * @param jobId
+//      * @return
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public ApplicationJob getApplicationJob(String jobId) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Retrieve a list of Application jobs executed for the given descriptors
+//      * @param serviceDescriptionId - should be <code>null</code> if user does not care what service description the job corresponds to
+//      * @param hostDescriptionId - should be <code>null</code> if user does not care what host description the job corresponds to
+//      * @param applicationDescriptionId - should be <code>null</code> if user does not care what application description the job corresponds to
+//      * @return
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public List<ApplicationJob> getApplicationJobsForDescriptors(String serviceDescriptionId, String hostDescriptionId, String applicationDescriptionId) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Retrieve a list of Application jobs executed for the given experiment credentials
+//      * @param experimentId - should be <code>null</code> if user does not care what experiment the job corresponds to
+//      * @param workflowExecutionId -  - should be <code>null</code> if user does not care what workflow execution the job corresponds to
+//      * @param nodeId  - should be <code>null</code> if user does not care what node id the job corresponds to
+//      * @return
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public List<ApplicationJob> getApplicationJobs(String experimentId, String workflowExecutionId, String nodeId) throws AiravataAPIInvocationException;
+//
+//     /**
+//      * Retrieve the list all the status updates for an application job.
+//      * @param jobId - Application job id
+//      * @return
+//      * @throws AiravataAPIInvocationException
+//      */
+//     public List<ApplicationJobStatusData> getApplicationJobStatusHistory(String jobId) throws AiravataAPIInvocationException;
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SSHAuthenticationSettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SSHAuthenticationSettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SSHAuthenticationSettings.java
new file mode 100644
index 0000000..2b8fa18
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SSHAuthenticationSettings.java
@@ -0,0 +1,30 @@
+/*
+ *
+ * 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.client.api;
+
+public interface SSHAuthenticationSettings {
+	public String getAccessKeyId();
+	public String getSecretAccessKey();
+	
+	public void setAccessKeyId(String accessKeyId);
+	public void setSecretAccessKey(String secretAccessKey);
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SecuritySettings.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SecuritySettings.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SecuritySettings.java
new file mode 100644
index 0000000..06cf8c6
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/SecuritySettings.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * 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.client.api;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+
+public interface SecuritySettings {
+	public AmazonWebServicesSettings getAmazonWSSettings() throws AiravataAPIInvocationException;
+	public CredentialStoreSecuritySettings getCredentialStoreSecuritySettings() throws AiravataAPIInvocationException;
+	public GridMyProxyRepositorySettings getGridMyProxyRepositorySettings() throws AiravataAPIInvocationException;
+	public SSHAuthenticationSettings getSSHAuthenticationSettings() throws AiravataAPIInvocationException;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2654424b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/UserManager.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/api/UserManager.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/UserManager.java
new file mode 100644
index 0000000..7487f7a
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/api/UserManager.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * 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.client.api;
+
+public interface UserManager {
+    /**
+     * Get the current user
+     * @return
+     */
+    public String getAiravataUser();
+	
+}