You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2013/12/26 18:31:40 UTC

svn commit: r1553518 [14/15] - in /airavata/sandbox: orchestrator-service/ orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/ o...

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/InvalidApplicationJobIDException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/InvalidApplicationJobIDException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/InvalidApplicationJobIDException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/InvalidApplicationJobIDException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class InvalidApplicationJobIDException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public InvalidApplicationJobIDException() {
+		super("The Application job ID cannot be null or empty!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowAlreadyExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowAlreadyExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowAlreadyExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class UserWorkflowAlreadyExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public UserWorkflowAlreadyExistsException(String workflowTemplateName) {
+		super("The workflow "+workflowTemplateName+" already exists in user space!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowDoesNotExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowDoesNotExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/UserWorkflowDoesNotExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class UserWorkflowDoesNotExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public UserWorkflowDoesNotExistsException(String workflowTemplateName) {
+		super("The workflow "+workflowTemplateName+" does not exists in user space!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceAlreadyExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceAlreadyExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceAlreadyExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkflowInstanceAlreadyExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkflowInstanceAlreadyExistsException(String instanceId) {
+		super("The workflow instance "+instanceId+" is already added to the registry & workflowInstanceId should be unique for the system!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceDoesNotExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceDoesNotExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceDoesNotExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkflowInstanceDoesNotExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkflowInstanceDoesNotExistsException(String instanceId) {
+		super("The workflow instance "+instanceId+" is not present in the registry!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeAlreadyExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeAlreadyExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeAlreadyExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkflowInstanceNodeAlreadyExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkflowInstanceNodeAlreadyExistsException(String instanceId, String nodeId) {
+		super("The node "+nodeId+" for the workflow instance "+instanceId+" is already in the registry!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeDoesNotExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeDoesNotExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkflowInstanceNodeDoesNotExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkflowInstanceNodeDoesNotExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkflowInstanceNodeDoesNotExistsException(String instanceId, String nodeId) {
+		super("The node "+nodeId+" for the workflow instance "+instanceId+" is not present in the registry!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkspaceProjectAlreadyExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkspaceProjectAlreadyExistsException(String projectName) {
+		super("The workspace project "+projectName+" already exists!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.exception.worker;
+
+import org.apache.airavata.registry.api.exception.RegistryException;
+
+public class WorkspaceProjectDoesNotExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkspaceProjectDoesNotExistsException(String projectName) {
+		super("The workspace project "+projectName+" does not exists!!!");
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/ExperimentDataImpl.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/ExperimentDataImpl.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/ExperimentDataImpl.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/ExperimentDataImpl.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,221 @@
+/*
+ *
+ * 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.registry.api.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.airavata.registry.api.exception.worker.ExperimentLazyLoadedException;
+import org.apache.airavata.registry.api.workflow.*;
+import org.apache.airavata.registry.api.workflow.WorkflowNodeType.WorkflowNode;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement
+public class ExperimentDataImpl implements ExperimentData{
+	private WorkflowExecutionStatus executionStatus;
+	private String user;
+	private List<WorkflowIOData> output;
+	private String experimentId;
+	private String metadata;
+	private String workflowInstanceName;
+	private List<WorkflowExecutionDataImpl> workflowInstanceDataList=new ArrayList<WorkflowExecutionDataImpl>();
+	private boolean lazyLoaded=false;
+
+    public ExperimentDataImpl() {
+        this(false);
+    }
+
+    public ExperimentDataImpl(boolean lazyLoaded) {
+        this.lazyLoaded = lazyLoaded;
+    }
+
+    public String getMetadata() {
+		return metadata;
+	}
+	public void setMetadata(String metadata) {
+		this.metadata = metadata;
+	}
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+    @Override
+    public String getTemplateName() throws ExperimentLazyLoadedException {
+        return getWorkflowExecutionDataList().get(0).getTemplateName();
+    }
+
+    @Override
+    public WorkflowExecutionStatus.State getState() throws ExperimentLazyLoadedException {
+        if (executionStatus != null)
+            return executionStatus.getExecutionStatus();
+        else
+            return getWorkflowExecutionDataList().get(0).getState();
+    }
+
+    @Override
+    public Date getStatusUpdateTime() throws ExperimentLazyLoadedException {
+        if (executionStatus != null)
+            return executionStatus.getStatusUpdateTime();
+        else
+            return getWorkflowExecutionDataList().get(0).getStatusUpdateTime();
+    }
+
+    @Override
+    public ExperimentData getExperimentData() throws ExperimentLazyLoadedException {
+        return getWorkflowExecutionDataList().get(0).getExperimentData();
+    }
+
+    @Override
+    public void setExperimentData(ExperimentDataImpl experimentData) throws ExperimentLazyLoadedException {
+        getWorkflowExecutionDataList().get(0).setExperimentData(experimentData);
+    }
+
+    public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+	public String getTopic() {
+		return experimentId;
+	}
+	public void setTopic(String topic) {
+		this.experimentId = topic;
+	}
+	public WorkflowExecutionStatus getExecutionStatus() {
+		return executionStatus;
+	}
+	public void setExecutionStatus(WorkflowExecutionStatus executionStatus) {
+		this.executionStatus = executionStatus;
+	}
+	public String getUser() {
+		return user;
+	}
+	public void setUser(String user) {
+		this.user = user;
+	}
+	public List<WorkflowIOData> getOutput() {
+		if (output==null){
+			output=new ArrayList<WorkflowIOData>();
+		}
+		return output;
+	}
+	public void setOutput(List<WorkflowIOData> output) {
+		this.output = output;
+	}
+	public void addOutput(WorkflowIOData output) {
+		getOutput().add(output);
+	}
+	public WorkflowIOData getOutput(String nodeId) {
+		return (WorkflowNodeIOData)getIOData(nodeId, getOutput());
+	}
+
+	private WorkflowIOData getIOData(String nodeId, List<?> list) {
+		for (Object data : list) {
+			WorkflowIOData iodata=(WorkflowIOData)data;
+			if (iodata.getNodeId().equals(nodeId)){
+				return iodata;
+			}
+		}
+		return null;
+	}
+	
+	@Override
+	public String getExperimentName() {
+		return workflowInstanceName;
+	}
+	
+	@Override
+	public void setExperimentName(String workflowInstanceName) {
+		this.workflowInstanceName=workflowInstanceName;
+		
+	}
+
+    @Override
+    public WorkflowExecutionData getWorkflowExecutionData(String workflowInstanceID) throws ExperimentLazyLoadedException {
+        for(WorkflowExecutionData workflowInstanceData : getWorkflowExecutionDataList()){
+            if(workflowInstanceData.getId().equals(workflowInstanceID)){
+                return workflowInstanceData;
+            }
+        }
+        return null;
+    }
+
+    @Override
+	public List<WorkflowExecutionDataImpl> getWorkflowExecutionDataList() throws ExperimentLazyLoadedException{
+		if (isLazyLoaded()){
+			throw new ExperimentLazyLoadedException(getExperimentId());
+		}
+		return workflowInstanceDataList;
+	}
+
+	public boolean isLazyLoaded() {
+		return lazyLoaded;
+	}
+
+	public void setLazyLoaded(boolean lazyLoaded) {
+		this.lazyLoaded = lazyLoaded;
+	}
+
+    @Override
+    public WorkflowExecution getWorkflowExecution() throws ExperimentLazyLoadedException{
+        return getWorkflowExecutionDataList().get(0).getWorkflowExecution();
+    }
+
+    @Override
+    public List<NodeExecutionData> getNodeDataList() throws ExperimentLazyLoadedException{
+        return getWorkflowExecutionDataList().get(0).getNodeDataList();
+    }
+
+    @Override
+    public void addNodeData(NodeExecutionData... nodeData) throws ExperimentLazyLoadedException {
+    	getWorkflowExecutionDataList().get(0).addNodeData(nodeData);
+    }
+
+    @Override
+    public NodeExecutionData getNodeData(String nodeId) throws ExperimentLazyLoadedException {
+        return getWorkflowExecutionDataList().get(0).getNodeData(nodeId);
+    }
+
+	@Override
+	public String getId() {
+		return getExperimentId();
+	}
+
+	@Override
+	public List<NodeExecutionData> getNodeDataList(WorkflowNode type)
+			throws ExperimentLazyLoadedException {
+		return getWorkflowExecutionDataList().get(0).getNodeDataList(type);
+	}
+
+	@Override
+	public List<InputData> getWorkflowInputs() throws ExperimentLazyLoadedException{
+		return getWorkflowExecutionDataList().get(0).getWorkflowInputs();
+	}
+
+	@Override
+	public List<OutputData> getWorkflowOutputs()throws ExperimentLazyLoadedException {
+		return getWorkflowExecutionDataList().get(0).getWorkflowOutputs();
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionDataImpl.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionDataImpl.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionDataImpl.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionDataImpl.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,182 @@
+/*
+ *
+ * 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.registry.api.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.airavata.registry.api.impl.ExperimentDataImpl;
+import org.apache.airavata.registry.api.workflow.*;
+import org.apache.airavata.registry.api.workflow.WorkflowExecutionStatus.State;
+import org.apache.airavata.registry.api.workflow.WorkflowNodeType.WorkflowNode;
+
+import javax.xml.bind.annotation.*;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement
+public class WorkflowExecutionDataImpl implements WorkflowExecutionData {
+	private WorkflowExecution workflowInstance;
+
+	@XmlTransient
+	private ExperimentDataImpl experimentData;
+
+	private WorkflowExecutionStatus workflowInstanceStatus;
+
+	private List<NodeExecutionData> nodeDataList;
+
+	public WorkflowExecutionDataImpl() {
+	}
+
+	public WorkflowExecutionDataImpl(ExperimentData experimentData,
+			WorkflowExecution workflowInstance,
+			WorkflowExecutionStatus workflowInstanceStatus,
+			List<NodeExecutionData> nodeDataList) {
+		this.experimentData = (ExperimentDataImpl) experimentData;
+		this.workflowInstance = workflowInstance;
+		this.workflowInstanceStatus = workflowInstanceStatus;
+		this.nodeDataList = nodeDataList;
+	}
+
+	public WorkflowExecution getWorkflowExecution() {
+		return workflowInstance;
+	}
+
+	public List<NodeExecutionData> getNodeDataList() {
+		if (nodeDataList == null) {
+			nodeDataList = new ArrayList<NodeExecutionData>();
+		}
+		return nodeDataList;
+	}
+
+	public void addNodeData(NodeExecutionData... nodeData) {
+		getNodeDataList().addAll(Arrays.asList(nodeData));
+	}
+
+	public String getExperimentId() {
+		return workflowInstance.getExperimentId();
+	}
+
+	/**
+	 * @deprecated Use "getWorkflowInstanceID() instead
+	 * @return
+	 */
+	public String getTopicId() {
+		return workflowInstance.getWorkflowExecutionId();
+	}
+
+	/**
+	 * @deprecated Use getId() instead
+	 */
+	public String getWorkflowInstanceId() {
+		return workflowInstance.getWorkflowExecutionId();
+	}
+
+	/**
+	 * @deprecated Use "WorkflowInstanceData.getTemplateName()" instead
+	 * @return
+	 */
+	public String getWorkflowName() {
+		return getTemplateName();
+	}
+
+	public String getTemplateName() {
+		return workflowInstance.getTemplateName();
+	}
+
+	public State getState() {
+		return workflowInstanceStatus.getExecutionStatus();
+	}
+
+	public Date getStatusUpdateTime() {
+		return workflowInstanceStatus.getStatusUpdateTime();
+	}
+
+	public NodeExecutionData getNodeData(String nodeId) {
+		for (NodeExecutionData nodeData : getNodeDataList()) {
+			if (nodeData.getWorkflowInstanceNode().getNodeId().equals(nodeId)) {
+				return nodeData;
+			}
+		}
+		return null;
+	}
+
+	public ExperimentData getExperimentData() {
+		return experimentData;
+	}
+
+	public void setExperimentData(ExperimentDataImpl experimentData) {
+		this.experimentData = experimentData;
+	}
+
+	public String getId() {
+		return workflowInstance.getWorkflowExecutionId();
+	}
+
+	@Override
+	public List<InputData> getWorkflowInputs() {
+		List<InputData> workflowInstanceNodePortDatas = new ArrayList<InputData>();
+		for (NodeExecutionData workflowInstanceNodeData : getNodeDataList(WorkflowNodeType.WorkflowNode.INPUTNODE)) {
+			workflowInstanceNodePortDatas.addAll(convertToInputDataList(workflowInstanceNodeData.getOutputData()));
+		}
+		return workflowInstanceNodePortDatas;
+	}
+
+	private List<InputData> convertToInputDataList(List<OutputData> outputData) {
+		List<InputData> i = new ArrayList<InputData>();
+		for (OutputData o : outputData) {
+			i.add(new InputData(o.getWorkflowInstanceNode(),o.getName(),o.getValue()));
+		}
+		return i;
+	}
+	private List<OutputData> convertToOutputDataList(List<InputData> outputData) {
+		List<OutputData> i = new ArrayList<OutputData>();
+		for (InputData o : outputData) {
+			i.add(new OutputData(o.getWorkflowInstanceNode(),o.getName(),o.getValue()));
+		}
+		return i;
+	}
+
+	@Override
+	public List<NodeExecutionData> getNodeDataList(WorkflowNode type) {
+		List<NodeExecutionData> workflowInstanceNodePortDatas = new ArrayList<NodeExecutionData>();
+		for (NodeExecutionData workflowInstanceNodeData : getNodeDataList()) {
+			if (workflowInstanceNodeData.getType().equals(type)) {
+				workflowInstanceNodePortDatas.add(workflowInstanceNodeData);
+			}
+		}
+		return workflowInstanceNodePortDatas;
+	}
+
+	@Override
+	public List<OutputData> getWorkflowOutputs() {
+		List<OutputData> workflowInstanceNodePortDatas = new ArrayList<OutputData>();
+		for (NodeExecutionData workflowInstanceNodeData : getNodeDataList(WorkflowNodeType.WorkflowNode.OUTPUTNODE)) {
+			workflowInstanceNodePortDatas.addAll(convertToOutputDataList(workflowInstanceNodeData
+					.getInputData()));
+		}
+		return workflowInstanceNodePortDatas;
+
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryConstants.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryConstants.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryConstants.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryConstants.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,36 @@
+/*
+ *
+ * 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.registry.api.util;
+
+public class RegistryConstants {
+    public static final String KEY_DEFAULT_GATEWAY_ID = "default.registry.gateway";
+    public static final String KEY_DEFAULT_REGISTRY_USER = "registry.user";
+    public static final String KEY_DEFAULT_REGISTRY_URL = "registry.jdbc.url";
+    public static final String CONFIGURATION_REGISTRY_ACCESSOR_CLASS = "class.configuration.registry.accessor";
+    public static final String DESCRIPTOR_REGISTRY_ACCESSOR_CLASS = "class.descriptor.registry.accessor";
+    public static final String PROJECT_REGISTRY_ACCESSOR_CLASS = "class.project.registry.accessor";
+    public static final String PROVENANCE_REGISTRY_ACCESSOR_CLASS = "class.provenance.registry.accessor";
+    public static final String USER_WF_REGISTRY_ACCESSOR_CLASS = "class.user.workflow.registry.accessor";
+    public static final String PUBLISHED_WF_REGISTRY_ACCESSOR_CLASS = "class.published.workflow.registry.accessor";
+    public static final String USER_REGISTRY_ACCESSOR_CLASS = "class.user.registry.accessor";
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,102 @@
+/*
+ *
+ * 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.registry.api.util;
+
+import java.net.URL;
+import java.util.Properties;
+
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.ApplicationSettings;
+import org.apache.airavata.registry.api.exception.RegistrySettingsException;
+import org.apache.airavata.registry.api.exception.RegistrySettingsLoadException;
+
+public class RegistrySettings {
+    private static final String REPOSITORY_PROPERTIES = "registry.properties";
+    private static Properties properties = new Properties();
+    private static Exception propertyLoadException;
+    private static final String REGISTRY_ACCESSOR_CLASS = "class.registry.accessor";
+    private static final String SAVE_APPLICATION_JOB_STATUS_HISTORY="enable.application.job.status.history";
+    
+    static{
+    	URL url = RegistrySettings.class.getClassLoader()
+				.getResource(REPOSITORY_PROPERTIES);
+		if (url == null) {
+    		if (AiravataUtils.isServer()){
+    			 url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.SERVER_PROPERTIES);
+                if(url == null){
+                    url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.CLIENT_PROPERTIES);
+                }
+    		}else if (AiravataUtils.isClient()){
+        		url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.CLIENT_PROPERTIES);
+                if(url == null){
+                    url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.SERVER_PROPERTIES);
+                }
+        	}else{
+        		//unknown execution mode... If so, first assume its client, if not server...
+        		url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.CLIENT_PROPERTIES);
+        		if (url==null){
+        			url=RegistrySettings.class.getClassLoader().getResource(ApplicationSettings.SERVER_PROPERTIES);
+        		}
+        	}
+		}
+        try {
+            properties.load(url.openStream());
+        } catch (Exception e) {
+        	propertyLoadException=e;
+        }
+    }
+    
+    private static void validateSuccessfulPropertyFileLoad() throws RegistrySettingsException{
+    	if (propertyLoadException!=null){
+    		throw new RegistrySettingsLoadException(propertyLoadException);
+    	}
+    }
+    
+    public static String getSetting(String key) throws RegistrySettingsException{
+    	validateSuccessfulPropertyFileLoad();
+    	if (properties.containsKey(key)){
+    		return properties.getProperty(key);
+    	}
+        return null;
+//    	throw new UnspecifiedRegistrySettingsException(key);
+    }
+    
+    public static String getSetting(String key, String defaultValue){
+    	try {
+			validateSuccessfulPropertyFileLoad();
+			if (properties.containsKey(key)){
+				return properties.getProperty(key);
+			}
+		} catch (RegistrySettingsException e) {
+			//we'll ignore this error since a default value is provided
+		}
+		return defaultValue;
+    }
+    
+    public static String getRegistryAccessorClass() throws RegistrySettingsException{
+    	return getSetting(REGISTRY_ACCESSOR_CLASS);
+    }
+    
+    public static boolean isApplicationJobStatusHistoryEnabled(){
+    	return "true".equalsIgnoreCase(getSetting(SAVE_APPLICATION_JOB_STATUS_HISTORY, "false"));
+    }
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryUtils.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryUtils.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryUtils.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistryUtils.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,127 @@
+/*
+ *
+ * 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.registry.api.util;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.airavata.common.exception.AiravataConfigurationException;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.registry.api.AiravataRegistryFactory;
+import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
+import org.apache.airavata.registry.api.exception.RegistryAccessorInstantiateException;
+import org.apache.airavata.registry.api.exception.RegistryAccessorInvalidException;
+import org.apache.airavata.registry.api.exception.RegistryAccessorNotFoundException;
+import org.apache.airavata.registry.api.exception.RegistryAccessorUndefinedException;
+import org.apache.airavata.registry.api.exception.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RegistryUtils {
+    private static final Logger log = LoggerFactory.getLogger(RegistryUtils.class);
+
+
+    public static String validateAxisService(String urlString)throws RegistryException {
+        if(!urlString.endsWith("?wsdl")){
+            urlString = urlString + "?wsdl";
+        }
+        try {
+            URL url = new URL(urlString);
+            URLConnection conn = url.openConnection();
+            conn.connect();
+        } catch (MalformedURLException e) {
+            // the URL is not in a valid form
+            throw new RegistryException("Given Axis2 Service URL : " + urlString + " is Invalid",e);
+        } catch (IOException e) {
+            // the connection couldn't be established
+            throw new RegistryException("Given Axis2 Service URL : " + urlString + " is Invalid",e);
+        }
+        return  urlString;
+    }
+    public static String validateURL(String urlString)throws RegistryException{
+        try {
+            URL url = new URL(urlString);
+            URLConnection conn = url.openConnection();
+            conn.connect();
+        } catch (MalformedURLException e) {
+            // the URL is not in a valid form
+            throw new RegistryException("Given URL: " + urlString + " is Invalid",e);
+        } catch (IOException e) {
+            // the connection couldn't be established
+            throw new RegistryException("Given URL: " + urlString + " is Invalid",e);
+        }
+        return  urlString;
+    }
+//    public static boolean validateRegistryCredentials(String userName,String password,String url)throws RegistryException{
+//        HashMap<String, String> map = new HashMap<String, String>();
+//        map.put("org.apache.jackrabbit.repository.uri", url);
+//        try {
+//            AiravataJCRRegistry airavataJCRRegistry = new AiravataJCRRegistry(new URI(url), "org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory", userName, password, map);
+//            airavataJCRRegistry.saveGFacDescriptor("dummy");
+////            airavataJCRRegistry.deleteGFacDescriptor("dummy");
+//        } catch (Exception e) {
+//            throw new RegistryException("Check the properties file for JCR Registry Configuration",e);
+//        }
+//        return true;
+//    }
+
+    public static AiravataRegistry2 getRegistryFromServerSettings() {
+        String username = "";
+//        Properties properties = new Properties();
+        AiravataRegistry2 registry = null;
+//        try {
+////            properties.load(url.openStream());
+//        	username=ServerSettings.getSystemUser();
+////            if (properties.get(REGISTRY_USER) != null) {
+////                username = (String) properties.get(REGISTRY_USER);
+////            }
+//        } catch (MalformedURLException e) {
+//            e.printStackTrace();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+        try {
+        	username=ServerSettings.getSystemUser();
+            registry = AiravataRegistryFactory.getRegistry(new Gateway(ServerSettings.getSystemUserGateway()),
+                    new AiravataUser(username));
+        } catch (AiravataConfigurationException e) {
+            log.error("Error initializing AiravataRegistry2");
+        } catch (RegistryAccessorNotFoundException e) {
+            log.error("Error initializing AiravataRegistry2");
+        } catch (RegistryAccessorInstantiateException e) {
+            log.error("Error initializing AiravataRegistry2");
+        } catch (RegistryAccessorInvalidException e) {
+            log.error("Error initializing AiravataRegistry2");
+        } catch (RegistryAccessorUndefinedException e) {
+            log.error("Error initializing AiravataRegistry2");
+        } catch (ApplicationSettingsException e) {
+        	log.error("Error initializing AiravataRegistry2",e);
+		} catch (RegistryException e) {
+            log.error("Error initializing AiravataRegistry2",e);
+        }
+        return registry;
+    }
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/WebServiceUtil.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/WebServiceUtil.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/WebServiceUtil.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/WebServiceUtil.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,202 @@
+/*
+ *
+ * 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.registry.api.util;
+
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.commons.gfac.wsdl.WSDLConstants;
+import org.apache.airavata.commons.gfac.wsdl.WSDLGenerator;
+import org.apache.airavata.schemas.gfac.*;
+
+import java.util.Hashtable;
+
+public class WebServiceUtil {
+
+
+
+    public static String generateWSDL(ServiceDescription service) {
+        StringBuilder builder = new StringBuilder();
+        builder.append("<wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:ns1=\"http://org.apache.axis2/xsd\" xmlns:ns=\"http://www.wso2.org/types\" xmlns:wsaw=\"http://www.w3.org/2006/05/addressing/wsdl\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" targetNamespace=\"http://www.wso2.org/types\">");
+        builder.append("<wsdl:documentation>");
+        builder.append(service.getType().getName());
+        builder.append("</wsdl:documentation>");
+        builder.append("<wsdl:types>");
+        builder.append("<xs:schema attributeFormDefault=\"qualified\" elementFormDefault=\"unqualified\" targetNamespace=\"http://www.wso2.org/types\">");
+
+        boolean isInputParametersPresent = service.getType().getInputParametersArray() != null
+                && service.getType().getInputParametersArray().length > 0;
+        if (isInputParametersPresent) {
+            builder.append("<xs:element name=\"invoke\">");
+            builder.append("<xs:complexType>");
+            builder.append("<xs:sequence>");
+
+            ServiceDescriptionType p = service.getType();
+
+            for (int i = 0; i < p.getInputParametersArray().length; i++) {
+                generateElementFromInputType(p.getInputParametersArray(i), builder);
+            }
+
+            builder.append("</xs:sequence>");
+            builder.append("</xs:complexType>");
+            builder.append("</xs:element>");
+        }
+
+        boolean isOutputParametersPresent = service.getType().getOutputParametersArray() != null
+                && service.getType().getOutputParametersArray().length > 0;
+        if (isOutputParametersPresent) {
+            builder.append("<xs:element name=\"invokeResponse\">");
+            builder.append("<xs:complexType>");
+            builder.append("<xs:sequence>");
+
+            ServiceDescriptionType p = service.getType();
+
+            for (int i = 0; i < p.getOutputParametersArray().length; i++) {
+                generateElementFromOutputType(p.getOutputParametersArray(i), builder);
+            }
+
+            builder.append("</xs:sequence>");
+            builder.append("</xs:complexType>");
+            builder.append("</xs:element>");
+        }
+
+        builder.append("</xs:schema>");
+        builder.append("</wsdl:types>");
+
+        builder.append("<wsdl:message name=\"invokeRequest\">");
+        if (isInputParametersPresent) {
+            builder.append("<wsdl:part name=\"parameters\" element=\"ns:invoke\"/>");
+        }
+        builder.append("</wsdl:message>");
+        if (isOutputParametersPresent) {
+            builder.append("<wsdl:message name=\"invokeResponse\">");
+            builder.append("<wsdl:part name=\"parameters\" element=\"ns:invokeResponse\"/>");
+            builder.append("</wsdl:message>");
+        }
+
+        builder.append("<wsdl:portType name=\"");
+        builder.append(service.getType().getName());
+        builder.append("\">");
+        builder.append("<wsdl:operation name=\"invoke\">");
+        builder.append("<wsdl:input message=\"ns:invokeRequest\" wsaw:Action=\"urn:invoke\"/>");
+        if (isOutputParametersPresent) {
+            builder.append("<wsdl:output message=\"ns:invokeResponse\" wsaw:Action=\"urn:invokeResponse\"/>");
+        }
+        builder.append("</wsdl:operation>");
+        builder.append("</wsdl:portType>");
+
+        builder.append("</wsdl:definitions>");
+
+        return builder.toString();
+    }
+
+    private static void generateElementFromInputType(InputParameterType parameter, StringBuilder builder) {
+
+        String type = parameter.getParameterType().getName();
+        if (type.equals("String")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" nillable=\"true\" type=\"xs:string\"/>");
+        } else if (type.equals("Integer")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:int\"/>");
+        } else if (type.equals("Boolean")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:boolean\"/>");
+        } else if (type.equals("Double")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:double\"/>");
+        } else if (type.equals("Float")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:float\"/>");
+        } else if (type.equals("File")) {
+            // TODO adding this means adding a new complex type for File type
+            // builder.append("<xs:element minOccurs=\"0\" name=\"");
+            // builder.append(parameter.getName());
+            // builder.append("\"  nillable=\"true\" type=\"ax22:File\"/>");
+        }
+
+    }
+
+        private static void generateElementFromOutputType(OutputParameterType parameter, StringBuilder builder) {
+
+        String type = parameter.getParameterType().getName();
+        if (type.equals("String")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" nillable=\"true\" type=\"xs:string\"/>");
+        } else if (type.equals("Integer")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:int\"/>");
+        } else if (type.equals("Boolean")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:boolean\"/>");
+        } else if (type.equals("Double")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:double\"/>");
+        } else if (type.equals("Float")) {
+            builder.append("<xs:element minOccurs=\"0\" name=\"");
+            builder.append(parameter.getParameterName());
+            builder.append("\" type=\"xs:float\"/>");
+        } else if (type.equals("File")) {
+            // TODO adding this means adding a new complex type for File type
+            // builder.append("<xs:element minOccurs=\"0\" name=\"");
+            // builder.append(parameter.getName());
+            // builder.append("\"  nillable=\"true\" type=\"ax22:File\"/>");
+        }
+
+    }
+
+    public static String getWSDL(ServiceDescription service) throws Exception{
+        try {
+
+            ServiceType type = service.getType().addNewService();
+            ServiceType.ServiceName name = type.addNewServiceName();
+            name.setStringValue(service.getType().getName());
+            name.setTargetNamespace("http://airavata.apache.org/schemas/gfac/2012/12");
+            if(service.getType().getPortType() == null){
+                PortTypeType portType = service.getType().addNewPortType();
+                MethodType methodType = portType.addNewMethod();
+                methodType.setMethodName("invoke");
+            }else{
+                MethodType method = service.getType().getPortType().getMethod();
+                if (method == null) {
+                    MethodType methodType = service.getType().getPortType().addNewMethod();
+                    methodType.setMethodName("invoke");
+                } else {
+                    service.getType().getPortType().getMethod().setMethodName("invoke");
+                }
+            }
+            WSDLGenerator generator = new WSDLGenerator();
+            Hashtable table = generator.generateWSDL(null, null, null, service.getType(), true);
+            return (String) table.get(WSDLConstants.AWSDL);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,295 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.Date;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ApplicationJob {
+	/**
+	 * Represents the status of the application job execution life cycle.<br /> 
+	 * <em><strong>Note</strong> : The applicable <code>ApplicationJobStatus</code> values and the 
+	 * particular actions that define or lead to those <code>ApplicationJobStatus</code> values is 
+	 * based on type of application (eg: GRAM, EC2) being executed</em>.   
+	 */
+	public static enum ApplicationJobStatus{
+
+        /**
+         * Job not yet submitted to Gram
+         */
+        UN_SUBMITTED,
+		/**
+		 * Validating the application job input data and configurations
+		 */
+		VALIDATE_INPUT,
+		/**
+		 * Input data/files is being staged for the application job.
+		 */
+		STAGING,
+		/**
+		 * Authenticating
+		 */
+		AUTHENTICATE,
+		/**
+		 * Application job is being initialized.
+		 */
+		INITIALIZE, 
+		/**
+		 * Application job is submitted, possibly waiting to start executing.
+		 */
+		SUBMITTED,
+		/**
+		 * Application job is waiting to start/continue its executing.
+		 */
+		PENDING,
+		/**
+		 * Application job is being executed.
+		 */
+		EXECUTING,
+        /**
+         * Application job is being active.
+         */
+        ACTIVE,
+        /**
+		 * Application job is paused/suspended
+		 */
+		SUSPENDED,
+		/**
+		 * Application job is waiting for data or a trigger to continue its execution.
+		 */
+		WAIT_FOR_DATA,
+		/**
+		 * Finalizing the execution of the application job.
+		 */
+		FINALIZE,
+		/**
+		 * Results of the application job execution are being generated.
+		 */
+		RESULTS_GEN,
+		/**
+		 * Generated results from the application job execution is being retrieved.
+		 */
+		RESULTS_RETRIEVE,
+		/**
+		 * Validating the application job execution results
+		 */
+		VALIDATE_OUTPUT,
+		/**
+		 * Application job completed successfully.
+		 */
+		FINISHED,
+		/**
+		 * Error occurred during the application job execution and the job was terminated.
+		 */
+		FAILED, 
+		/**
+		 * Execution of the application job was cancelled.
+		 */
+		CANCELLED,
+        /**
+         * Execution of the application job was cancelled.
+         */
+        CANCELED,
+		/**
+		 * Unable to determine the current status of the application job. <br />
+		 * <em><strong>Note: </strong>More information may be available on the application job 
+		 * </em><code>metadata</code>.
+		 */
+		UNKNOWN 
+	}
+	
+	private String experimentId;
+	private String workflowExecutionId;
+	private String nodeId;
+	
+	private String serviceDescriptionId;
+	private String hostDescriptionId;
+	private String applicationDescriptionId;
+	
+	private String jobId;
+	private String jobData;
+	
+	private Date submittedTime;
+	private Date statusUpdateTime;
+	private ApplicationJobStatus status;
+	
+	private String metadata;
+
+	/**
+	 * The id of the experiment which this application job corresponds to
+	 * @return
+	 */
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+
+	/**
+	 * The id of the workflow instance execution which this application job corresponds to
+	 */
+	public String getWorkflowExecutionId() {
+		return workflowExecutionId;
+	}
+
+	public void setWorkflowExecutionId(String workflowExecutionId) {
+		this.workflowExecutionId = workflowExecutionId;
+	}
+
+	/**
+	 * The id of the node which this application job corresponds to
+	 */
+	public String getNodeId() {
+		return nodeId;
+	}
+
+	public void setNodeId(String nodeId) {
+		this.nodeId = nodeId;
+	}
+
+	/**
+	 * The id of the service description which this application job corresponds to
+	 */
+	public String getServiceDescriptionId() {
+		return serviceDescriptionId;
+	}
+
+	public void setServiceDescriptionId(String serviceDescriptionId) {
+		this.serviceDescriptionId = serviceDescriptionId;
+	}
+	
+	/**
+	 * The id of the host description which this application job corresponds to <br />
+	 * <em><strong>Note: </strong>For data saved using the deprecated API function 
+	 * {@code updateWorkflowNodeGramData(...)} this will be the address of the host</em>
+	 */
+	public String getHostDescriptionId() {
+		return hostDescriptionId;
+	}
+
+	public void setHostDescriptionId(String hostDescriptionId) {
+		this.hostDescriptionId = hostDescriptionId;
+	}
+
+	/**
+	 * The id of the application description which this application job corresponds to 
+	 */
+	public String getApplicationDescriptionId() {
+		return applicationDescriptionId;
+	}
+
+	public void setApplicationDescriptionId(String applicationDescriptionId) {
+		this.applicationDescriptionId = applicationDescriptionId;
+	}
+
+	/**
+	 * id representing the application job uniquely identified in the Airavata system <br />
+	 * <em><strong>Note: </strong>This id may or may not correspond to an id that can identify a 
+	 * resource execution in the computational middleware</em>
+	 */
+	public String getJobId() {
+		return jobId;
+	}
+
+	/**
+	 * Set a unique id which represents this job in the Airavata system. 
+	 */
+	public void setJobId(String jobId) {
+		this.jobId = jobId;
+	}
+
+	/**
+	 * Configuration, execution and input data relating to the execution of the application job. <br /> 
+	 * <em><strong>Note: </strong>The structure of the data is determined by the type of application 
+	 * <code>(eg: GRAM, EC2) being executed.</code></em> 
+	 */
+	public String getJobData() {
+		return jobData;
+	}
+
+	/**
+	 * Set the configuration, execution and input data relating to the execution of the application. 
+	 * job. <br /> 
+	 * <em><strong>Note: </strong>The structure of the data is up to the Provider implementation 
+	 * <code>(eg: GRAMProvider, EC2Provider)</code>. It is strongly encouraged to include in this 
+	 * field all the information (excluding descriptor data & any sensitive data such as password 
+	 * credentials) necessary for a 3rd party to repeat the execution of application job if 
+	 * necessary.</em> 
+	 */
+	public void setJobData(String jobData) {
+		this.jobData = jobData;
+	}
+
+	/**
+	 * When was this application job was submitted.
+	 */
+	public Date getSubmittedTime() {
+		return submittedTime;
+	}
+
+	public void setSubmittedTime(Date submittedTime) {
+		this.submittedTime = submittedTime;
+	}
+
+	/**
+	 * When was the status of this application job was last updated.
+	 * @return
+	 */
+	public Date getStatusUpdateTime() {
+		return statusUpdateTime;
+	}
+
+	public void setStatusUpdateTime(Date statusUpdateTime) {
+		this.statusUpdateTime = statusUpdateTime;
+	}
+
+	/**
+	 * Get the currently recorded status of the application job. 
+	 * @return
+	 */
+	public ApplicationJobStatus getStatus() {
+		return status;
+	}
+
+	public void setStatus(ApplicationJobStatus status) {
+		this.status = status;
+	}
+
+	/**
+	 * Custom metadata maintained for the application job containing that may contain any additional 
+	 * information relating to the execution.
+	 * @return
+	 */
+	public String getMetadata() {
+		return metadata;
+	}
+
+	public void setMetadata(String metadata) {
+		this.metadata = metadata;
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobExecutionError.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobExecutionError.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobExecutionError.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobExecutionError.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ApplicationJobExecutionError extends ExecutionError {
+	private String experimentId;
+	private String workflowInstanceId;
+	private String nodeId;
+	private String jobId;
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+
+	public String getWorkflowInstanceId() {
+		return workflowInstanceId;
+	}
+
+	public void setWorkflowInstanceId(String workflowInstanceId) {
+		this.workflowInstanceId = workflowInstanceId;
+	}
+
+	public String getNodeId() {
+		return nodeId;
+	}
+
+	public void setNodeId(String nodeId) {
+		this.nodeId = nodeId;
+	}
+
+	public String getJobId() {
+		return jobId;
+	}
+
+	public void setJobId(String jobId) {
+		this.jobId = jobId;
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,63 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import java.util.Date;
+
+import org.apache.airavata.registry.api.workflow.ApplicationJob.ApplicationJobStatus;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ApplicationJobStatusData {
+	private String jobId;
+	private ApplicationJobStatus status;
+	private Date time;
+	
+	public ApplicationJobStatusData(String jobId, ApplicationJobStatus status, Date time) {
+		setJobId(jobId);
+		setStatus(status);
+		setTime(time);
+	}
+	
+	public String getJobId() {
+		return jobId;
+	}
+	private void setJobId(String jobId) {
+		this.jobId = jobId;
+	}
+	public ApplicationJobStatus getStatus() {
+		return status;
+	}
+	private void setStatus(ApplicationJobStatus status) {
+		this.status = status;
+	}
+	public Date getTime() {
+		return time;
+	}
+	private void setTime(Date time) {
+		this.time = time;
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExecutionError.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExecutionError.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExecutionError.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExecutionError.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,103 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import java.util.Date;
+
+import org.apache.airavata.registry.api.ExecutionErrors;
+import org.codehaus.jackson.annotate.JsonTypeInfo;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
+public abstract class ExecutionError {
+	public ExecutionErrors.Source source;
+	public Date errorTime;
+	public String errorCode;
+	public String errorMessage;
+	public String errorDescription;
+	public String errorLocation;
+	public String actionTaken;
+	private String errorReported;
+	private int errorReference;
+	
+	public ExecutionErrors.Source getSource() {
+		return source;
+	}
+	public void setSource(ExecutionErrors.Source source) {
+		this.source = source;
+	}
+	public Date getErrorTime() {
+		return errorTime;
+	}
+	public void setErrorTime(Date errorTime) {
+		this.errorTime = errorTime;
+	}
+	public String getErrorCode() {
+		return errorCode;
+	}
+	public void setErrorCode(String errorCode) {
+		this.errorCode = errorCode;
+	}
+	public String getErrorMessage() {
+		return errorMessage;
+	}
+	public void setErrorMessage(String errorMessage) {
+		this.errorMessage = errorMessage;
+	}
+	public String getErrorDescription() {
+		return errorDescription;
+	}
+	public void setErrorDescription(String errorDescription) {
+		this.errorDescription = errorDescription;
+	}
+	public String getErrorLocation() {
+		return errorLocation;
+	}
+	public void setErrorLocation(String errorLocation) {
+		this.errorLocation = errorLocation;
+	}
+	public String getActionTaken() {
+		return actionTaken;
+	}
+	public void setActionTaken(String actionTaken) {
+		this.actionTaken = actionTaken;
+	}
+	public String getErrorReported() {
+		return errorReported;
+	}
+	public void setErrorReported(String errorReported) {
+		this.errorReported = errorReported;
+	}
+	public int getErrorReference() {
+		return errorReference;
+	}
+	public void setErrorReference(int errorReference) {
+		this.errorReference = errorReference;
+	}
+	
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentData.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentData.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentData.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentData.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,123 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import java.util.List;
+
+import org.apache.airavata.registry.api.exception.worker.ExperimentLazyLoadedException;
+import org.apache.airavata.registry.api.impl.ExperimentDataImpl;
+import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
+
+import javax.jws.WebService;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+//@XmlRootElement
+//@XmlAccessorType(XmlAccessType.FIELD)
+@WebService
+@XmlSeeAlso(ExperimentDataImpl.class)
+public interface ExperimentData extends WorkflowExecutionData {
+    //Current Id and Topic values are similar
+
+    /**
+     * Returns the ExperimentID of the workflow Run
+     * @return
+     */
+    public String getId();
+
+    /**
+     * Returns the Experiment Topic... Currently the ID and the Topic are identical
+     * @return
+     */
+	public String getTopic();
+
+    /**
+     * Returns the user of the workflow run
+     * @return
+     */
+	public String getUser();
+
+    /**
+     * Returns metadata related to the workflow run
+     * @return
+     */
+	public String getMetadata();
+
+    /**
+     * Returns the Experiment Name of the workflow run, This is given in the XBaya-GUI when you user run a workflow
+     * @return
+     */
+	public String getExperimentName();
+
+    /**
+     * get data related to a particular experiment, this returns all the workflow runs for the given Experiment
+     * @return
+     * @throws ExperimentLazyLoadedException
+     */
+	public List<WorkflowExecutionDataImpl> getWorkflowExecutionDataList() throws ExperimentLazyLoadedException;
+
+    /**
+     * Reut
+     * @param workflowExecutionID
+     * @return
+     * @throws ExperimentLazyLoadedException
+     */
+    public WorkflowExecutionData getWorkflowExecutionData(String workflowExecutionID) throws ExperimentLazyLoadedException;
+
+    /**
+     *
+     * @param experimentId
+     */
+    public void setExperimentId(String experimentId);
+
+    /**
+     *
+     * @param topic
+     */
+	public void setTopic(String topic);
+
+    /**
+     *
+     * @param user
+     */
+	public void setUser(String user);
+
+    /**
+     *
+     * @param metadata
+     */
+	public void setMetadata(String metadata);
+
+    /**
+     *
+     * @param experimentName
+     */
+	public void setExperimentName(String experimentName);
+
+    /**
+     *
+     * @return
+     */
+	public String getExperimentId();
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentExecutionError.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentExecutionError.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentExecutionError.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentExecutionError.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,40 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ExperimentExecutionError extends ExecutionError {
+	private String experimentId;
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentMetadata.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentMetadata.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentMetadata.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentMetadata.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+public class ExperimentMetadata {
+	private String experimentId;
+	private String metadata;
+	
+	public ExperimentMetadata(String experimentId, String metadata) {
+		setExperimentId(experimentId);
+		setMetadata(metadata);
+	}
+
+	public String getMetadata() {
+		return metadata;
+	}
+
+	public void setMetadata(String metadata) {
+		this.metadata = metadata;
+	}
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentName.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentName.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentName.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentName.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+public class ExperimentName {
+	private String experimentId;
+	private String instanceName;
+	
+	public ExperimentName(String experimentId, String instanceName) {
+		setExperimentId(experimentId);
+		setInstanceName(instanceName);
+	}
+
+	public String getInstanceName() {
+		return instanceName;
+	}
+
+	public void setInstanceName(String instanceName) {
+		this.instanceName = instanceName;
+	}
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentUser.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentUser.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentUser.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ExperimentUser.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,48 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.api.workflow;
+
+public class ExperimentUser {
+	private String experimentId;
+	private String user;
+	
+	public ExperimentUser(String experimentId, String user) {
+		setExperimentId(experimentId);
+		setUser(user);
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+}

Added: airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/InputData.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/InputData.java?rev=1553518&view=auto
==============================================================================
--- airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/InputData.java (added)
+++ airavata/sandbox/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/InputData.java Thu Dec 26 17:31:35 2013
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+public class InputData extends WorkflowInstanceNodePortData {
+	public InputData() {
+		super();
+	}
+    public InputData(WorkflowInstanceNode workflowInstanceNode, String portName, String portValue) {
+		super(workflowInstanceNode, portName, portValue);
+	}
+	public InputData(WorkflowInstanceNode workflowInstanceNode, String data) {
+		super(workflowInstanceNode, data);
+	}
+}