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

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

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