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

[6/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/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;
+	}
+
+}