You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2016/02/08 17:48:43 UTC

[01/50] [abbrv] airavata git commit: Adding API method descriptions to App Catalog Airavata Thrift APIs

Repository: airavata
Updated Branches:
  refs/heads/master 1a30d7f08 -> 4c7907706


Adding API  method descriptions to App Catalog Airavata Thrift APIs


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

Branch: refs/heads/master
Commit: cda9014f87c4aa71d5dff2cd035593c5ee120bae
Parents: f1e1679
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Tue Jan 19 15:14:37 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Tue Jan 19 15:14:37 2016 -0500

----------------------------------------------------------------------
 thrift-interface-descriptions/airavata-apis/airavata_api.thrift | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/cda9014f/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 5de721f..521b24b 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2610,6 +2610,11 @@ service Airavata {
 
   /**
   * Fetch all gateway profiles registered
+  *
+  * @return GatewayResourceProfile
+  *   Returns all the GatewayResourcePrifle list object.
+  *
+  *
   **/
   list<gateway_resource_profile_model.GatewayResourceProfile>
               getAllGatewayResourceProfiles(1: required security_model.AuthzToken authzToken)


[33/50] [abbrv] airavata git commit: fixing compilation issue

Posted by ch...@apache.org.
fixing compilation issue


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

Branch: refs/heads/master
Commit: 14a566a47ce68d27684e1b891d1b39db2beba6ea
Parents: 2a2782a
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Feb 3 15:42:49 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Feb 3 15:42:49 2016 -0500

----------------------------------------------------------------------
 .../core/app/catalog/impl/AppCatalogImpl.java   |   1 +
 .../app/catalog/impl/WorkflowCatalogImpl.java   | 233 -------------------
 .../catalog/impl/WorkflowCatalogImpl.java       | 232 ++++++++++++++++++
 .../core/workflow/catalog/model/Edge_PK.java    |   8 +-
 .../core/workflow/catalog/model/Node_PK.java    |   8 +-
 .../core/workflow/catalog/model/Port_PK.java    |   8 +-
 .../catalog/model/WorkflowOutput_PK.java        |   8 +-
 .../catalog/model/WorkflowStatus_PK.java        |   8 +-
 8 files changed, 253 insertions(+), 253 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/AppCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/AppCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/AppCatalogImpl.java
index 27d2e14..60d4033 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/AppCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/AppCatalogImpl.java
@@ -22,6 +22,7 @@
 package org.apache.airavata.registry.core.app.catalog.impl;
 
 
+import org.apache.airavata.registry.core.workflow.catalog.impl.WorkflowCatalogImpl;
 import org.apache.airavata.registry.cpi.*;
 
 public class AppCatalogImpl implements AppCatalog {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
deleted file mode 100644
index 9c7df56..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.impl;
-
-import org.apache.airavata.model.Workflow;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.registry.core.workflow.catalog.resources.*;
-import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogThriftConversion;
-import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.apache.airavata.registry.cpi.WorkflowCatalog;
-import org.apache.airavata.registry.cpi.WorkflowCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class WorkflowCatalogImpl implements WorkflowCatalog {
-    private final static Logger logger = LoggerFactory.getLogger(WorkflowCatalogImpl.class);
-
-    @Override
-    public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException {
-        List<String> workflowIds = new ArrayList<String>();
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            resource.setGatewayId(gatewayId);
-            workflowIds = resource.getAllIds();
-        } catch (Exception e) {
-            logger.error("Error while retrieving all the workflow template ids...", e);
-            throw new WorkflowCatalogException(e);
-        }
-        return workflowIds;
-    }
-
-    @Override
-    public Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            WorkflowResource wfResource = (WorkflowResource)resource.get(workflowTemplateId);
-            return WorkflowCatalogThriftConversion.getWorkflow(wfResource);
-        } catch (Exception e) {
-            logger.error("Error while retrieving the workflow...", e);
-            throw new WorkflowCatalogException(e);
-        }
-    }
-
-    @Override
-    public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            resource.remove(workflowTemplateId);
-        } catch (Exception e) {
-            logger.error("Error while deleting the workflow...", e);
-            throw new WorkflowCatalogException(e);
-        }
-    }
-
-    @Override
-    public String registerWorkflow(Workflow workflow, String gatewayId) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            resource.setWfTemplateId(WorkflowCatalogUtils.getID(workflow.getName()));
-            resource.setWfName(workflow.getName());
-            resource.setGraph(workflow.getGraph());
-            resource.setGatewayId(gatewayId);
-            if (workflow.getImage() != null){
-                resource.setImage(new String(workflow.getImage()));
-            }
-            resource.save();
-            workflow.setTemplateId(resource.getWfTemplateId());
-            List<InputDataObjectType> workflowInputs = workflow.getWorkflowInputs();
-            if (workflowInputs != null && workflowInputs.size() != 0){
-                for (InputDataObjectType input : workflowInputs){
-                    WorkflowInputResource wfInputResource = new WorkflowInputResource();
-                    wfInputResource.setWorkflowResource(resource);
-                    wfInputResource.setInputKey(input.getName());
-                    wfInputResource.setInputVal(input.getValue());
-                    wfInputResource.setWfTemplateId(resource.getWfTemplateId());
-                    wfInputResource.setDataType(input.getType().toString());
-                    wfInputResource.setAppArgument(input.getApplicationArgument());
-                    wfInputResource.setStandardInput(input.isStandardInput());
-                    wfInputResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
-                    wfInputResource.setMetadata(input.getMetaData());
-                    wfInputResource.save();
-                }
-            }
-            List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
-            if (workflowOutputs != null && workflowOutputs.size() != 0){
-                for (OutputDataObjectType output : workflowOutputs){
-                    WorkflowOutputResource outputResource = new WorkflowOutputResource();
-                    outputResource.setWorkflowResource(resource);
-                    outputResource.setOutputKey(output.getName());
-                    outputResource.setOutputVal(output.getValue());
-                    outputResource.setWfTemplateId(resource.getWfTemplateId());
-                    outputResource.setDataType(output.getType().toString());
-                    outputResource.save();
-                }
-            }
-            return resource.getWfTemplateId();
-        } catch (Exception e) {
-            logger.error("Error while saving the workflow...", e);
-            throw new WorkflowCatalogException(e);
-        }
-    }
-
-    @Override
-    public void updateWorkflow(String workflowTemplateId, Workflow workflow) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
-            existingWF.setWfName(workflow.getName());
-            existingWF.setGraph(workflow.getGraph());
-            if (workflow.getImage() != null){
-                existingWF.setImage(new String(workflow.getImage()));
-            }
-            existingWF.save();
-            List<InputDataObjectType> existingwFInputs = workflow.getWorkflowInputs();
-            if (existingwFInputs != null && existingwFInputs.size() != 0){
-                for (InputDataObjectType input : existingwFInputs){
-                    WorkflowInputResource wfInputResource = new WorkflowInputResource();
-                    Map<String, String> ids = new HashMap<String, String>();
-                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
-                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.INPUT_KEY,input.getName());
-                    WorkflowInputResource existingInput = (WorkflowInputResource)wfInputResource.get(ids);
-                    existingInput.setWorkflowResource(existingWF);
-                    existingInput.setInputKey(input.getName());
-                    existingInput.setInputVal(input.getValue());
-                    existingInput.setWfTemplateId(existingWF.getWfTemplateId());
-                    existingInput.setDataType(input.getType().toString());
-                    existingInput.setAppArgument(input.getApplicationArgument());
-                    existingInput.setStandardInput(input.isStandardInput());
-                    existingInput.setUserFriendlyDesc(input.getUserFriendlyDescription());
-                    existingInput.setMetadata(input.getMetaData());
-                    existingInput.save();
-                }
-            }
-            List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
-            if (workflowOutputs != null && workflowOutputs.size() != 0){
-                for (OutputDataObjectType output : workflowOutputs){
-                    WorkflowOutputResource outputResource = new WorkflowOutputResource();
-                    Map<String, String> ids = new HashMap<String, String>();
-                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
-                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY,output.getName());
-                    WorkflowOutputResource existingOutput = (WorkflowOutputResource)outputResource.get(ids);
-                    existingOutput.setWorkflowResource(existingWF);
-                    existingOutput.setOutputKey(output.getName());
-                    existingOutput.setOutputVal(output.getValue());
-                    existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
-                    existingOutput.setDataType(output.getType().toString());
-                    existingOutput.save();
-                }
-            }
-        } catch (Exception e) {
-            logger.error("Error while updating the workflow...", e);
-            throw new WorkflowCatalogException(e);
-        }
-    }
-
-    @Override
-    public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
-            if (resourceList != null && !resourceList.isEmpty()){
-                WorkflowResource wfResource = (WorkflowResource)resourceList.get(0);
-                return wfResource.getWfTemplateId();
-            }
-        } catch (Exception e) {
-            logger.error("Error while retrieving the workflow with the workflow name...", e);
-            throw new WorkflowCatalogException(e);
-        }
-        return null;
-    }
-
-    @Override
-    public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException {
-        try {
-            WorkflowResource resource = new WorkflowResource();
-            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
-            if (resourceList != null && !resourceList.isEmpty()){
-                return true;
-            }
-        } catch (Exception e) {
-            logger.error("Error while retrieving the workflow with the workflow name...", e);
-            throw new WorkflowCatalogException(e);
-        }
-        return false;
-    }
-
-    @Override
-    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException {
-        WorkflowResource resource = new WorkflowResource();
-        WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
-        if (workflowOutputs != null && workflowOutputs.size() != 0) {
-            for (OutputDataObjectType output : workflowOutputs) {
-                WorkflowOutputResource outputResource = new WorkflowOutputResource();
-                Map<String, String> ids = new HashMap<String, String>();
-                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID, existingWF.getWfTemplateId());
-                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY, output.getName());
-                WorkflowOutputResource existingOutput = (WorkflowOutputResource) outputResource.get(ids);
-                existingOutput.setWorkflowResource(existingWF);
-                existingOutput.setOutputKey(output.getName());
-                existingOutput.setOutputVal(output.getValue());
-                existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
-                existingOutput.setDataType(output.getType().toString());
-                existingOutput.save();
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
new file mode 100644
index 0000000..8c0ced4
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
@@ -0,0 +1,232 @@
+/*
+ *
+ * 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.core.workflow.catalog.impl;
+
+import org.apache.airavata.model.Workflow;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.registry.core.workflow.catalog.resources.*;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogThriftConversion;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
+import org.apache.airavata.registry.cpi.WorkflowCatalog;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowCatalogImpl implements WorkflowCatalog {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowCatalogImpl.class);
+
+    @Override
+    public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException {
+        List<String> workflowIds = new ArrayList<String>();
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            resource.setGatewayId(gatewayId);
+            workflowIds = resource.getAllIds();
+        } catch (Exception e) {
+            logger.error("Error while retrieving all the workflow template ids...", e);
+            throw new WorkflowCatalogException(e);
+        }
+        return workflowIds;
+    }
+
+    @Override
+    public Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            WorkflowResource wfResource = (WorkflowResource)resource.get(workflowTemplateId);
+            return WorkflowCatalogThriftConversion.getWorkflow(wfResource);
+        } catch (Exception e) {
+            logger.error("Error while retrieving the workflow...", e);
+            throw new WorkflowCatalogException(e);
+        }
+    }
+
+    @Override
+    public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            resource.remove(workflowTemplateId);
+        } catch (Exception e) {
+            logger.error("Error while deleting the workflow...", e);
+            throw new WorkflowCatalogException(e);
+        }
+    }
+
+    @Override
+    public String registerWorkflow(Workflow workflow, String gatewayId) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            resource.setWfTemplateId(WorkflowCatalogUtils.getID(workflow.getName()));
+            resource.setWfName(workflow.getName());
+            resource.setGraph(workflow.getGraph());
+            resource.setGatewayId(gatewayId);
+            if (workflow.getImage() != null){
+                resource.setImage(new String(workflow.getImage()));
+            }
+            resource.save();
+            workflow.setTemplateId(resource.getWfTemplateId());
+            List<InputDataObjectType> workflowInputs = workflow.getWorkflowInputs();
+            if (workflowInputs != null && workflowInputs.size() != 0){
+                for (InputDataObjectType input : workflowInputs){
+                    WorkflowInputResource wfInputResource = new WorkflowInputResource();
+                    wfInputResource.setWorkflowResource(resource);
+                    wfInputResource.setInputKey(input.getName());
+                    wfInputResource.setInputVal(input.getValue());
+                    wfInputResource.setWfTemplateId(resource.getWfTemplateId());
+                    wfInputResource.setDataType(input.getType().toString());
+                    wfInputResource.setAppArgument(input.getApplicationArgument());
+                    wfInputResource.setStandardInput(input.isStandardInput());
+                    wfInputResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
+                    wfInputResource.setMetadata(input.getMetaData());
+                    wfInputResource.save();
+                }
+            }
+            List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
+            if (workflowOutputs != null && workflowOutputs.size() != 0){
+                for (OutputDataObjectType output : workflowOutputs){
+                    WorkflowOutputResource outputResource = new WorkflowOutputResource();
+                    outputResource.setWorkflowResource(resource);
+                    outputResource.setOutputKey(output.getName());
+                    outputResource.setOutputVal(output.getValue());
+                    outputResource.setWfTemplateId(resource.getWfTemplateId());
+                    outputResource.setDataType(output.getType().toString());
+                    outputResource.save();
+                }
+            }
+            return resource.getWfTemplateId();
+        } catch (Exception e) {
+            logger.error("Error while saving the workflow...", e);
+            throw new WorkflowCatalogException(e);
+        }
+    }
+
+    @Override
+    public void updateWorkflow(String workflowTemplateId, Workflow workflow) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
+            existingWF.setWfName(workflow.getName());
+            existingWF.setGraph(workflow.getGraph());
+            if (workflow.getImage() != null){
+                existingWF.setImage(new String(workflow.getImage()));
+            }
+            existingWF.save();
+            List<InputDataObjectType> existingwFInputs = workflow.getWorkflowInputs();
+            if (existingwFInputs != null && existingwFInputs.size() != 0){
+                for (InputDataObjectType input : existingwFInputs){
+                    WorkflowInputResource wfInputResource = new WorkflowInputResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.INPUT_KEY,input.getName());
+                    WorkflowInputResource existingInput = (WorkflowInputResource)wfInputResource.get(ids);
+                    existingInput.setWorkflowResource(existingWF);
+                    existingInput.setInputKey(input.getName());
+                    existingInput.setInputVal(input.getValue());
+                    existingInput.setWfTemplateId(existingWF.getWfTemplateId());
+                    existingInput.setDataType(input.getType().toString());
+                    existingInput.setAppArgument(input.getApplicationArgument());
+                    existingInput.setStandardInput(input.isStandardInput());
+                    existingInput.setUserFriendlyDesc(input.getUserFriendlyDescription());
+                    existingInput.setMetadata(input.getMetaData());
+                    existingInput.save();
+                }
+            }
+            List<OutputDataObjectType> workflowOutputs = workflow.getWorkflowOutputs();
+            if (workflowOutputs != null && workflowOutputs.size() != 0){
+                for (OutputDataObjectType output : workflowOutputs){
+                    WorkflowOutputResource outputResource = new WorkflowOutputResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY,output.getName());
+                    WorkflowOutputResource existingOutput = (WorkflowOutputResource)outputResource.get(ids);
+                    existingOutput.setWorkflowResource(existingWF);
+                    existingOutput.setOutputKey(output.getName());
+                    existingOutput.setOutputVal(output.getValue());
+                    existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
+                    existingOutput.setDataType(output.getType().toString());
+                    existingOutput.save();
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating the workflow...", e);
+            throw new WorkflowCatalogException(e);
+        }
+    }
+
+    @Override
+    public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
+            if (resourceList != null && !resourceList.isEmpty()){
+                WorkflowResource wfResource = (WorkflowResource)resourceList.get(0);
+                return wfResource.getWfTemplateId();
+            }
+        } catch (Exception e) {
+            logger.error("Error while retrieving the workflow with the workflow name...", e);
+            throw new WorkflowCatalogException(e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException {
+        try {
+            WorkflowResource resource = new WorkflowResource();
+            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
+            if (resourceList != null && !resourceList.isEmpty()){
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("Error while retrieving the workflow with the workflow name...", e);
+            throw new WorkflowCatalogException(e);
+        }
+        return false;
+    }
+
+    @Override
+    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException {
+        WorkflowResource resource = new WorkflowResource();
+        WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
+        if (workflowOutputs != null && workflowOutputs.size() != 0) {
+            for (OutputDataObjectType output : workflowOutputs) {
+                WorkflowOutputResource outputResource = new WorkflowOutputResource();
+                Map<String, String> ids = new HashMap<String, String>();
+                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID, existingWF.getWfTemplateId());
+                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY, output.getName());
+                WorkflowOutputResource existingOutput = (WorkflowOutputResource) outputResource.get(ids);
+                existingOutput.setWorkflowResource(existingWF);
+                existingOutput.setOutputKey(output.getName());
+                existingOutput.setOutputVal(output.getValue());
+                existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
+                existingOutput.setDataType(output.getType().toString());
+                existingOutput.save();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
index dedbb45..8d472f0 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
@@ -24,11 +24,11 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 import java.io.Serializable;
 
 public class Edge_PK implements Serializable {
-    private String templateID;
+    private String templateId;
     private String edgeId;
 
     public Edge_PK(String templateId, String edgeId) {
-        this.templateID = templateId;
+        this.templateId = templateId;
         this.edgeId = edgeId;
     }
 
@@ -47,11 +47,11 @@ public class Edge_PK implements Serializable {
     }
 
     public String getTemplateID() {
-        return templateID;
+        return templateId;
     }
 
     public void setTemplateID(String templateID) {
-        this.templateID = templateID;
+        this.templateId = templateID;
     }
 
     public String getEdgeId() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
index d9ee7a2..8f3c72f 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
@@ -24,11 +24,11 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 import java.io.Serializable;
 
 public class Node_PK implements Serializable {
-    private String templateID;
+    private String templateId;
     private String nodeId;
 
     public Node_PK(String templateId, String nodeId) {
-        this.templateID = templateId;
+        this.templateId = templateId;
         this.nodeId = nodeId;
     }
 
@@ -47,11 +47,11 @@ public class Node_PK implements Serializable {
     }
 
     public String getTemplateID() {
-        return templateID;
+        return templateId;
     }
 
     public void setTemplateID(String templateID) {
-        this.templateID = templateID;
+        this.templateId = templateID;
     }
 
     public String getNodeId() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
index a0305ed..ff43ece 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
@@ -24,11 +24,11 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 import java.io.Serializable;
 
 public class Port_PK implements Serializable {
-    private String templateID;
+    private String templateId;
     private String portId;
 
     public Port_PK(String templateId, String portId) {
-        this.templateID = templateId;
+        this.templateId = templateId;
         this.portId = portId;
     }
 
@@ -47,11 +47,11 @@ public class Port_PK implements Serializable {
     }
 
     public String getTemplateID() {
-        return templateID;
+        return templateId;
     }
 
     public void setTemplateID(String templateID) {
-        this.templateID = templateID;
+        this.templateId = templateID;
     }
 
     public String getPortId() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
index d36f2ca..0c1552c 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
@@ -24,11 +24,11 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 import java.io.Serializable;
 
 public class WorkflowOutput_PK implements Serializable {
-    private String templateID;
+    private String templateId;
     private String outputKey;
 
     public WorkflowOutput_PK(String templateId, String outputKey) {
-        this.templateID = templateId;
+        this.templateId = templateId;
         this.outputKey = outputKey;
     }
 
@@ -47,11 +47,11 @@ public class WorkflowOutput_PK implements Serializable {
     }
 
     public String getTemplateID() {
-        return templateID;
+        return templateId;
     }
 
     public void setTemplateID(String templateID) {
-        this.templateID = templateID;
+        this.templateId = templateID;
     }
 
     public String getOutputKey() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14a566a4/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
index ac33cc9..4e1fbfa 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
@@ -24,11 +24,11 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 import java.io.Serializable;
 
 public class WorkflowStatus_PK implements Serializable {
-    private String templateID;
+    private String templateId;
     private String statusId;
 
     public WorkflowStatus_PK(String templateId, String statusId) {
-        this.templateID = templateId;
+        this.templateId = templateId;
         this.statusId = statusId;
     }
 
@@ -47,11 +47,11 @@ public class WorkflowStatus_PK implements Serializable {
     }
 
     public String getTemplateID() {
-        return templateID;
+        return templateId;
     }
 
     public void setTemplateID(String templateID) {
-        this.templateID = templateID;
+        this.templateId = templateID;
     }
 
     public String getStatusId() {


[43/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workflow/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workflow/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workflow/ttypes.py
index 8aa21e7..a18a061 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workflow/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workflow/ttypes.py
@@ -19,16 +19,77 @@ except:
   fastbinary = None
 
 
+class WorkflowState:
+  CREATED = 0
+  STARTED = 1
+  EXECUTING = 2
+  COMPLETED = 3
+  FAILED = 4
+  CANCELLING = 5
+  CANCELED = 6
 
-class Workflow:
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "STARTED",
+    2: "EXECUTING",
+    3: "COMPLETED",
+    4: "FAILED",
+    5: "CANCELLING",
+    6: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "STARTED": 1,
+    "EXECUTING": 2,
+    "COMPLETED": 3,
+    "FAILED": 4,
+    "CANCELLING": 5,
+    "CANCELED": 6,
+  }
+
+class ComponentState:
+  CREATED = 0
+  WAITING = 1
+  READY = 2
+  RUNNING = 3
+  COMPLETED = 4
+  FAILED = 5
+  CANCELED = 6
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "WAITING",
+    2: "READY",
+    3: "RUNNING",
+    4: "COMPLETED",
+    5: "FAILED",
+    6: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "WAITING": 1,
+    "READY": 2,
+    "RUNNING": 3,
+    "COMPLETED": 4,
+    "FAILED": 5,
+    "CANCELED": 6,
+  }
+
+
+class WorkflowModel:
   """
   Attributes:
    - templateId
    - name
    - graph
+   - gatewayId
+   - createdUser
    - image
    - workflowInputs
    - workflowOutputs
+   - creationTime
   """
 
   thrift_spec = (
@@ -36,18 +97,24 @@ class Workflow:
     (1, TType.STRING, 'templateId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
     (2, TType.STRING, 'name', None, None, ), # 2
     (3, TType.STRING, 'graph', None, None, ), # 3
-    (4, TType.STRING, 'image', None, None, ), # 4
-    (5, TType.LIST, 'workflowInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 5
-    (6, TType.LIST, 'workflowOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 6
+    (4, TType.STRING, 'gatewayId', None, None, ), # 4
+    (5, TType.STRING, 'createdUser', None, None, ), # 5
+    (6, TType.STRING, 'image', None, None, ), # 6
+    (7, TType.LIST, 'workflowInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'workflowOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 8
+    (9, TType.I64, 'creationTime', None, None, ), # 9
   )
 
-  def __init__(self, templateId=thrift_spec[1][4], name=None, graph=None, image=None, workflowInputs=None, workflowOutputs=None,):
+  def __init__(self, templateId=thrift_spec[1][4], name=None, graph=None, gatewayId=None, createdUser=None, image=None, workflowInputs=None, workflowOutputs=None, creationTime=None,):
     self.templateId = templateId
     self.name = name
     self.graph = graph
+    self.gatewayId = gatewayId
+    self.createdUser = createdUser
     self.image = image
     self.workflowInputs = workflowInputs
     self.workflowOutputs = workflowOutputs
+    self.creationTime = creationTime
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -75,10 +142,20 @@ class Workflow:
           iprot.skip(ftype)
       elif fid == 4:
         if ftype == TType.STRING:
-          self.image = iprot.readString()
+          self.gatewayId = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 5:
+        if ftype == TType.STRING:
+          self.createdUser = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.image = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
         if ftype == TType.LIST:
           self.workflowInputs = []
           (_etype3, _size0) = iprot.readListBegin()
@@ -89,7 +166,7 @@ class Workflow:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 6:
+      elif fid == 8:
         if ftype == TType.LIST:
           self.workflowOutputs = []
           (_etype9, _size6) = iprot.readListBegin()
@@ -100,6 +177,11 @@ class Workflow:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -109,7 +191,7 @@ class Workflow:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Workflow')
+    oprot.writeStructBegin('WorkflowModel')
     if self.templateId is not None:
       oprot.writeFieldBegin('templateId', TType.STRING, 1)
       oprot.writeString(self.templateId)
@@ -122,24 +204,36 @@ class Workflow:
       oprot.writeFieldBegin('graph', TType.STRING, 3)
       oprot.writeString(self.graph)
       oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.createdUser is not None:
+      oprot.writeFieldBegin('createdUser', TType.STRING, 5)
+      oprot.writeString(self.createdUser)
+      oprot.writeFieldEnd()
     if self.image is not None:
-      oprot.writeFieldBegin('image', TType.STRING, 4)
+      oprot.writeFieldBegin('image', TType.STRING, 6)
       oprot.writeString(self.image)
       oprot.writeFieldEnd()
     if self.workflowInputs is not None:
-      oprot.writeFieldBegin('workflowInputs', TType.LIST, 5)
+      oprot.writeFieldBegin('workflowInputs', TType.LIST, 7)
       oprot.writeListBegin(TType.STRUCT, len(self.workflowInputs))
       for iter12 in self.workflowInputs:
         iter12.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.workflowOutputs is not None:
-      oprot.writeFieldBegin('workflowOutputs', TType.LIST, 6)
+      oprot.writeFieldBegin('workflowOutputs', TType.LIST, 8)
       oprot.writeListBegin(TType.STRUCT, len(self.workflowOutputs))
       for iter13 in self.workflowOutputs:
         iter13.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 9)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -148,6 +242,12 @@ class Workflow:
       raise TProtocol.TProtocolException(message='Required field templateId is unset!')
     if self.name is None:
       raise TProtocol.TProtocolException(message='Required field name is unset!')
+    if self.graph is None:
+      raise TProtocol.TProtocolException(message='Required field graph is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.createdUser is None:
+      raise TProtocol.TProtocolException(message='Required field createdUser is unset!')
     return
 
 
@@ -156,9 +256,558 @@ class Workflow:
     value = (value * 31) ^ hash(self.templateId)
     value = (value * 31) ^ hash(self.name)
     value = (value * 31) ^ hash(self.graph)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.createdUser)
     value = (value * 31) ^ hash(self.image)
     value = (value * 31) ^ hash(self.workflowInputs)
     value = (value * 31) ^ hash(self.workflowOutputs)
+    value = (value * 31) ^ hash(self.creationTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComponentStatus:
+  """
+  Attributes:
+   - state
+   - reason
+   - timeofStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None,     0, ), # 1
+    (2, TType.STRING, 'reason', None, None, ), # 2
+    (3, TType.I64, 'timeofStateChange', None, None, ), # 3
+  )
+
+  def __init__(self, state=thrift_spec[1][4], reason=None, timeofStateChange=None,):
+    self.state = state
+    self.reason = reason
+    self.timeofStateChange = timeofStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.timeofStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComponentStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 2)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    if self.timeofStateChange is not None:
+      oprot.writeFieldBegin('timeofStateChange', TType.I64, 3)
+      oprot.writeI64(self.timeofStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.reason)
+    value = (value * 31) ^ hash(self.timeofStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class EdgeModel:
+  """
+  Attributes:
+   - edgeId
+   - name
+   - status
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'edgeId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+  )
+
+  def __init__(self, edgeId=thrift_spec[1][4], name=None, status=None, description=None,):
+    self.edgeId = edgeId
+    self.name = name
+    self.status = status
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.edgeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('EdgeModel')
+    if self.edgeId is not None:
+      oprot.writeFieldBegin('edgeId', TType.STRING, 1)
+      oprot.writeString(self.edgeId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 3)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.edgeId is None:
+      raise TProtocol.TProtocolException(message='Required field edgeId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.edgeId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class PortModel:
+  """
+  Attributes:
+   - portId
+   - name
+   - status
+   - value
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'portId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'value', None, None, ), # 4
+    (5, TType.STRING, 'description', None, None, ), # 5
+  )
+
+  def __init__(self, portId=thrift_spec[1][4], name=None, status=None, value=None, description=None,):
+    self.portId = portId
+    self.name = name
+    self.status = status
+    self.value = value
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.portId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('PortModel')
+    if self.portId is not None:
+      oprot.writeFieldBegin('portId', TType.STRING, 1)
+      oprot.writeString(self.portId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 3)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 4)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 5)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.portId is None:
+      raise TProtocol.TProtocolException(message='Required field portId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.portId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class NodeModel:
+  """
+  Attributes:
+   - nodeId
+   - name
+   - applicationId
+   - applicationName
+   - status
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'nodeId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'applicationId', None, None, ), # 3
+    (4, TType.STRING, 'applicationName', None, None, ), # 4
+    (5, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'description', None, None, ), # 6
+  )
+
+  def __init__(self, nodeId=thrift_spec[1][4], name=None, applicationId=None, applicationName=None, status=None, description=None,):
+    self.nodeId = nodeId
+    self.name = name
+    self.applicationId = applicationId
+    self.applicationName = applicationName
+    self.status = status
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.nodeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('NodeModel')
+    if self.nodeId is not None:
+      oprot.writeFieldBegin('nodeId', TType.STRING, 1)
+      oprot.writeString(self.nodeId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.applicationId is not None:
+      oprot.writeFieldBegin('applicationId', TType.STRING, 3)
+      oprot.writeString(self.applicationId)
+      oprot.writeFieldEnd()
+    if self.applicationName is not None:
+      oprot.writeFieldBegin('applicationName', TType.STRING, 4)
+      oprot.writeString(self.applicationName)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 5)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 6)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.nodeId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.nodeId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.applicationId)
+    value = (value * 31) ^ hash(self.applicationName)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.description)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
index 020d395..f26fd55 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ComponentStatus implements org.apache.thrift.TBase<ComponentStatus, ComponentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
index c71df88..1fd0a86 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class EdgeModel implements org.apache.thrift.TBase<EdgeModel, EdgeModel._Fields>, java.io.Serializable, Cloneable, Comparable<EdgeModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EdgeModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
index e01c8d2..6658673 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._Fields>, java.io.Serializable, Cloneable, Comparable<NodeModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NodeModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
index 41cf054..b5b31dc 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._Fields>, java.io.Serializable, Cloneable, Comparable<PortModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PortModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
deleted file mode 100644
index 3460f9c..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
+++ /dev/null
@@ -1,1055 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-package org.apache.airavata.model;
-
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
-public class Workflow implements org.apache.thrift.TBase<Workflow, Workflow._Fields>, java.io.Serializable, Cloneable, Comparable<Workflow> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Workflow");
-
-  private static final org.apache.thrift.protocol.TField TEMPLATE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("templateId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField GRAPH_FIELD_DESC = new org.apache.thrift.protocol.TField("graph", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField IMAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("image", org.apache.thrift.protocol.TType.STRING, (short)4);
-  private static final org.apache.thrift.protocol.TField WORKFLOW_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowInputs", org.apache.thrift.protocol.TType.LIST, (short)5);
-  private static final org.apache.thrift.protocol.TField WORKFLOW_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowOutputs", org.apache.thrift.protocol.TType.LIST, (short)6);
-
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new WorkflowStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new WorkflowTupleSchemeFactory());
-  }
-
-  private String templateId; // required
-  private String name; // required
-  private String graph; // optional
-  private ByteBuffer image; // optional
-  private List<org.apache.airavata.model.application.io.InputDataObjectType> workflowInputs; // optional
-  private List<org.apache.airavata.model.application.io.OutputDataObjectType> workflowOutputs; // optional
-
-  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
-  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-    TEMPLATE_ID((short)1, "templateId"),
-    NAME((short)2, "name"),
-    GRAPH((short)3, "graph"),
-    IMAGE((short)4, "image"),
-    WORKFLOW_INPUTS((short)5, "workflowInputs"),
-    WORKFLOW_OUTPUTS((short)6, "workflowOutputs");
-
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
-
-    static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
-        byName.put(field.getFieldName(), field);
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, or null if its not found.
-     */
-    public static _Fields findByThriftId(int fieldId) {
-      switch(fieldId) {
-        case 1: // TEMPLATE_ID
-          return TEMPLATE_ID;
-        case 2: // NAME
-          return NAME;
-        case 3: // GRAPH
-          return GRAPH;
-        case 4: // IMAGE
-          return IMAGE;
-        case 5: // WORKFLOW_INPUTS
-          return WORKFLOW_INPUTS;
-        case 6: // WORKFLOW_OUTPUTS
-          return WORKFLOW_OUTPUTS;
-        default:
-          return null;
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, throwing an exception
-     * if it is not found.
-     */
-    public static _Fields findByThriftIdOrThrow(int fieldId) {
-      _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-      return fields;
-    }
-
-    /**
-     * Find the _Fields constant that matches name, or null if its not found.
-     */
-    public static _Fields findByName(String name) {
-      return byName.get(name);
-    }
-
-    private final short _thriftId;
-    private final String _fieldName;
-
-    _Fields(short thriftId, String fieldName) {
-      _thriftId = thriftId;
-      _fieldName = fieldName;
-    }
-
-    public short getThriftFieldId() {
-      return _thriftId;
-    }
-
-    public String getFieldName() {
-      return _fieldName;
-    }
-  }
-
-  // isset id assignments
-  private static final _Fields optionals[] = {_Fields.GRAPH,_Fields.IMAGE,_Fields.WORKFLOW_INPUTS,_Fields.WORKFLOW_OUTPUTS};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-  static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-    tmpMap.put(_Fields.TEMPLATE_ID, new org.apache.thrift.meta_data.FieldMetaData("templateId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.GRAPH, new org.apache.thrift.meta_data.FieldMetaData("graph", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.IMAGE, new org.apache.thrift.meta_data.FieldMetaData("image", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
-    tmpMap.put(_Fields.WORKFLOW_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.InputDataObjectType.class))));
-    tmpMap.put(_Fields.WORKFLOW_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Workflow.class, metaDataMap);
-  }
-
-  public Workflow() {
-    this.templateId = "DO_NOT_SET_AT_CLIENTS";
-
-  }
-
-  public Workflow(
-    String templateId,
-    String name)
-  {
-    this();
-    this.templateId = templateId;
-    this.name = name;
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public Workflow(Workflow other) {
-    if (other.isSetTemplateId()) {
-      this.templateId = other.templateId;
-    }
-    if (other.isSetName()) {
-      this.name = other.name;
-    }
-    if (other.isSetGraph()) {
-      this.graph = other.graph;
-    }
-    if (other.isSetImage()) {
-      this.image = org.apache.thrift.TBaseHelper.copyBinary(other.image);
-    }
-    if (other.isSetWorkflowInputs()) {
-      List<org.apache.airavata.model.application.io.InputDataObjectType> __this__workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(other.workflowInputs.size());
-      for (org.apache.airavata.model.application.io.InputDataObjectType other_element : other.workflowInputs) {
-        __this__workflowInputs.add(new org.apache.airavata.model.application.io.InputDataObjectType(other_element));
-      }
-      this.workflowInputs = __this__workflowInputs;
-    }
-    if (other.isSetWorkflowOutputs()) {
-      List<org.apache.airavata.model.application.io.OutputDataObjectType> __this__workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(other.workflowOutputs.size());
-      for (org.apache.airavata.model.application.io.OutputDataObjectType other_element : other.workflowOutputs) {
-        __this__workflowOutputs.add(new org.apache.airavata.model.application.io.OutputDataObjectType(other_element));
-      }
-      this.workflowOutputs = __this__workflowOutputs;
-    }
-  }
-
-  public Workflow deepCopy() {
-    return new Workflow(this);
-  }
-
-  @Override
-  public void clear() {
-    this.templateId = "DO_NOT_SET_AT_CLIENTS";
-
-    this.name = null;
-    this.graph = null;
-    this.image = null;
-    this.workflowInputs = null;
-    this.workflowOutputs = null;
-  }
-
-  public String getTemplateId() {
-    return this.templateId;
-  }
-
-  public void setTemplateId(String templateId) {
-    this.templateId = templateId;
-  }
-
-  public void unsetTemplateId() {
-    this.templateId = null;
-  }
-
-  /** Returns true if field templateId is set (has been assigned a value) and false otherwise */
-  public boolean isSetTemplateId() {
-    return this.templateId != null;
-  }
-
-  public void setTemplateIdIsSet(boolean value) {
-    if (!value) {
-      this.templateId = null;
-    }
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public void unsetName() {
-    this.name = null;
-  }
-
-  /** Returns true if field name is set (has been assigned a value) and false otherwise */
-  public boolean isSetName() {
-    return this.name != null;
-  }
-
-  public void setNameIsSet(boolean value) {
-    if (!value) {
-      this.name = null;
-    }
-  }
-
-  public String getGraph() {
-    return this.graph;
-  }
-
-  public void setGraph(String graph) {
-    this.graph = graph;
-  }
-
-  public void unsetGraph() {
-    this.graph = null;
-  }
-
-  /** Returns true if field graph is set (has been assigned a value) and false otherwise */
-  public boolean isSetGraph() {
-    return this.graph != null;
-  }
-
-  public void setGraphIsSet(boolean value) {
-    if (!value) {
-      this.graph = null;
-    }
-  }
-
-  public byte[] getImage() {
-    setImage(org.apache.thrift.TBaseHelper.rightSize(image));
-    return image == null ? null : image.array();
-  }
-
-  public ByteBuffer bufferForImage() {
-    return org.apache.thrift.TBaseHelper.copyBinary(image);
-  }
-
-  public void setImage(byte[] image) {
-    this.image = image == null ? (ByteBuffer)null : ByteBuffer.wrap(Arrays.copyOf(image, image.length));
-  }
-
-  public void setImage(ByteBuffer image) {
-    this.image = org.apache.thrift.TBaseHelper.copyBinary(image);
-  }
-
-  public void unsetImage() {
-    this.image = null;
-  }
-
-  /** Returns true if field image is set (has been assigned a value) and false otherwise */
-  public boolean isSetImage() {
-    return this.image != null;
-  }
-
-  public void setImageIsSet(boolean value) {
-    if (!value) {
-      this.image = null;
-    }
-  }
-
-  public int getWorkflowInputsSize() {
-    return (this.workflowInputs == null) ? 0 : this.workflowInputs.size();
-  }
-
-  public java.util.Iterator<org.apache.airavata.model.application.io.InputDataObjectType> getWorkflowInputsIterator() {
-    return (this.workflowInputs == null) ? null : this.workflowInputs.iterator();
-  }
-
-  public void addToWorkflowInputs(org.apache.airavata.model.application.io.InputDataObjectType elem) {
-    if (this.workflowInputs == null) {
-      this.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>();
-    }
-    this.workflowInputs.add(elem);
-  }
-
-  public List<org.apache.airavata.model.application.io.InputDataObjectType> getWorkflowInputs() {
-    return this.workflowInputs;
-  }
-
-  public void setWorkflowInputs(List<org.apache.airavata.model.application.io.InputDataObjectType> workflowInputs) {
-    this.workflowInputs = workflowInputs;
-  }
-
-  public void unsetWorkflowInputs() {
-    this.workflowInputs = null;
-  }
-
-  /** Returns true if field workflowInputs is set (has been assigned a value) and false otherwise */
-  public boolean isSetWorkflowInputs() {
-    return this.workflowInputs != null;
-  }
-
-  public void setWorkflowInputsIsSet(boolean value) {
-    if (!value) {
-      this.workflowInputs = null;
-    }
-  }
-
-  public int getWorkflowOutputsSize() {
-    return (this.workflowOutputs == null) ? 0 : this.workflowOutputs.size();
-  }
-
-  public java.util.Iterator<org.apache.airavata.model.application.io.OutputDataObjectType> getWorkflowOutputsIterator() {
-    return (this.workflowOutputs == null) ? null : this.workflowOutputs.iterator();
-  }
-
-  public void addToWorkflowOutputs(org.apache.airavata.model.application.io.OutputDataObjectType elem) {
-    if (this.workflowOutputs == null) {
-      this.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>();
-    }
-    this.workflowOutputs.add(elem);
-  }
-
-  public List<org.apache.airavata.model.application.io.OutputDataObjectType> getWorkflowOutputs() {
-    return this.workflowOutputs;
-  }
-
-  public void setWorkflowOutputs(List<org.apache.airavata.model.application.io.OutputDataObjectType> workflowOutputs) {
-    this.workflowOutputs = workflowOutputs;
-  }
-
-  public void unsetWorkflowOutputs() {
-    this.workflowOutputs = null;
-  }
-
-  /** Returns true if field workflowOutputs is set (has been assigned a value) and false otherwise */
-  public boolean isSetWorkflowOutputs() {
-    return this.workflowOutputs != null;
-  }
-
-  public void setWorkflowOutputsIsSet(boolean value) {
-    if (!value) {
-      this.workflowOutputs = null;
-    }
-  }
-
-  public void setFieldValue(_Fields field, Object value) {
-    switch (field) {
-    case TEMPLATE_ID:
-      if (value == null) {
-        unsetTemplateId();
-      } else {
-        setTemplateId((String)value);
-      }
-      break;
-
-    case NAME:
-      if (value == null) {
-        unsetName();
-      } else {
-        setName((String)value);
-      }
-      break;
-
-    case GRAPH:
-      if (value == null) {
-        unsetGraph();
-      } else {
-        setGraph((String)value);
-      }
-      break;
-
-    case IMAGE:
-      if (value == null) {
-        unsetImage();
-      } else {
-        setImage((ByteBuffer)value);
-      }
-      break;
-
-    case WORKFLOW_INPUTS:
-      if (value == null) {
-        unsetWorkflowInputs();
-      } else {
-        setWorkflowInputs((List<org.apache.airavata.model.application.io.InputDataObjectType>)value);
-      }
-      break;
-
-    case WORKFLOW_OUTPUTS:
-      if (value == null) {
-        unsetWorkflowOutputs();
-      } else {
-        setWorkflowOutputs((List<org.apache.airavata.model.application.io.OutputDataObjectType>)value);
-      }
-      break;
-
-    }
-  }
-
-  public Object getFieldValue(_Fields field) {
-    switch (field) {
-    case TEMPLATE_ID:
-      return getTemplateId();
-
-    case NAME:
-      return getName();
-
-    case GRAPH:
-      return getGraph();
-
-    case IMAGE:
-      return getImage();
-
-    case WORKFLOW_INPUTS:
-      return getWorkflowInputs();
-
-    case WORKFLOW_OUTPUTS:
-      return getWorkflowOutputs();
-
-    }
-    throw new IllegalStateException();
-  }
-
-  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
-  public boolean isSet(_Fields field) {
-    if (field == null) {
-      throw new IllegalArgumentException();
-    }
-
-    switch (field) {
-    case TEMPLATE_ID:
-      return isSetTemplateId();
-    case NAME:
-      return isSetName();
-    case GRAPH:
-      return isSetGraph();
-    case IMAGE:
-      return isSetImage();
-    case WORKFLOW_INPUTS:
-      return isSetWorkflowInputs();
-    case WORKFLOW_OUTPUTS:
-      return isSetWorkflowOutputs();
-    }
-    throw new IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof Workflow)
-      return this.equals((Workflow)that);
-    return false;
-  }
-
-  public boolean equals(Workflow that) {
-    if (that == null)
-      return false;
-
-    boolean this_present_templateId = true && this.isSetTemplateId();
-    boolean that_present_templateId = true && that.isSetTemplateId();
-    if (this_present_templateId || that_present_templateId) {
-      if (!(this_present_templateId && that_present_templateId))
-        return false;
-      if (!this.templateId.equals(that.templateId))
-        return false;
-    }
-
-    boolean this_present_name = true && this.isSetName();
-    boolean that_present_name = true && that.isSetName();
-    if (this_present_name || that_present_name) {
-      if (!(this_present_name && that_present_name))
-        return false;
-      if (!this.name.equals(that.name))
-        return false;
-    }
-
-    boolean this_present_graph = true && this.isSetGraph();
-    boolean that_present_graph = true && that.isSetGraph();
-    if (this_present_graph || that_present_graph) {
-      if (!(this_present_graph && that_present_graph))
-        return false;
-      if (!this.graph.equals(that.graph))
-        return false;
-    }
-
-    boolean this_present_image = true && this.isSetImage();
-    boolean that_present_image = true && that.isSetImage();
-    if (this_present_image || that_present_image) {
-      if (!(this_present_image && that_present_image))
-        return false;
-      if (!this.image.equals(that.image))
-        return false;
-    }
-
-    boolean this_present_workflowInputs = true && this.isSetWorkflowInputs();
-    boolean that_present_workflowInputs = true && that.isSetWorkflowInputs();
-    if (this_present_workflowInputs || that_present_workflowInputs) {
-      if (!(this_present_workflowInputs && that_present_workflowInputs))
-        return false;
-      if (!this.workflowInputs.equals(that.workflowInputs))
-        return false;
-    }
-
-    boolean this_present_workflowOutputs = true && this.isSetWorkflowOutputs();
-    boolean that_present_workflowOutputs = true && that.isSetWorkflowOutputs();
-    if (this_present_workflowOutputs || that_present_workflowOutputs) {
-      if (!(this_present_workflowOutputs && that_present_workflowOutputs))
-        return false;
-      if (!this.workflowOutputs.equals(that.workflowOutputs))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_templateId = true && (isSetTemplateId());
-    list.add(present_templateId);
-    if (present_templateId)
-      list.add(templateId);
-
-    boolean present_name = true && (isSetName());
-    list.add(present_name);
-    if (present_name)
-      list.add(name);
-
-    boolean present_graph = true && (isSetGraph());
-    list.add(present_graph);
-    if (present_graph)
-      list.add(graph);
-
-    boolean present_image = true && (isSetImage());
-    list.add(present_image);
-    if (present_image)
-      list.add(image);
-
-    boolean present_workflowInputs = true && (isSetWorkflowInputs());
-    list.add(present_workflowInputs);
-    if (present_workflowInputs)
-      list.add(workflowInputs);
-
-    boolean present_workflowOutputs = true && (isSetWorkflowOutputs());
-    list.add(present_workflowOutputs);
-    if (present_workflowOutputs)
-      list.add(workflowOutputs);
-
-    return list.hashCode();
-  }
-
-  @Override
-  public int compareTo(Workflow other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = Boolean.valueOf(isSetTemplateId()).compareTo(other.isSetTemplateId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetTemplateId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.templateId, other.templateId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetGraph()).compareTo(other.isSetGraph());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetGraph()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.graph, other.graph);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetImage()).compareTo(other.isSetImage());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetImage()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.image, other.image);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetWorkflowInputs()).compareTo(other.isSetWorkflowInputs());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetWorkflowInputs()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowInputs, other.workflowInputs);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetWorkflowOutputs()).compareTo(other.isSetWorkflowOutputs());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetWorkflowOutputs()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowOutputs, other.workflowOutputs);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    return 0;
-  }
-
-  public _Fields fieldForId(int fieldId) {
-    return _Fields.findByThriftId(fieldId);
-  }
-
-  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
-  }
-
-  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Workflow(");
-    boolean first = true;
-
-    sb.append("templateId:");
-    if (this.templateId == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.templateId);
-    }
-    first = false;
-    if (!first) sb.append(", ");
-    sb.append("name:");
-    if (this.name == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.name);
-    }
-    first = false;
-    if (isSetGraph()) {
-      if (!first) sb.append(", ");
-      sb.append("graph:");
-      if (this.graph == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.graph);
-      }
-      first = false;
-    }
-    if (isSetImage()) {
-      if (!first) sb.append(", ");
-      sb.append("image:");
-      if (this.image == null) {
-        sb.append("null");
-      } else {
-        org.apache.thrift.TBaseHelper.toString(this.image, sb);
-      }
-      first = false;
-    }
-    if (isSetWorkflowInputs()) {
-      if (!first) sb.append(", ");
-      sb.append("workflowInputs:");
-      if (this.workflowInputs == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.workflowInputs);
-      }
-      first = false;
-    }
-    if (isSetWorkflowOutputs()) {
-      if (!first) sb.append(", ");
-      sb.append("workflowOutputs:");
-      if (this.workflowOutputs == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.workflowOutputs);
-      }
-      first = false;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    if (!isSetTemplateId()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'templateId' is unset! Struct:" + toString());
-    }
-
-    if (!isSetName()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'name' is unset! Struct:" + toString());
-    }
-
-    // check for sub-struct validity
-  }
-
-  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-    try {
-      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
-    try {
-      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private static class WorkflowStandardSchemeFactory implements SchemeFactory {
-    public WorkflowStandardScheme getScheme() {
-      return new WorkflowStandardScheme();
-    }
-  }
-
-  private static class WorkflowStandardScheme extends StandardScheme<Workflow> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, Workflow struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TField schemeField;
-      iprot.readStructBegin();
-      while (true)
-      {
-        schemeField = iprot.readFieldBegin();
-        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
-          break;
-        }
-        switch (schemeField.id) {
-          case 1: // TEMPLATE_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.templateId = iprot.readString();
-              struct.setTemplateIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 2: // NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.name = iprot.readString();
-              struct.setNameIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 3: // GRAPH
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.graph = iprot.readString();
-              struct.setGraphIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // IMAGE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.image = iprot.readBinary();
-              struct.setImageIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 5: // WORKFLOW_INPUTS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list0.size);
-                org.apache.airavata.model.application.io.InputDataObjectType _elem1;
-                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
-                {
-                  _elem1 = new org.apache.airavata.model.application.io.InputDataObjectType();
-                  _elem1.read(iprot);
-                  struct.workflowInputs.add(_elem1);
-                }
-                iprot.readListEnd();
-              }
-              struct.setWorkflowInputsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 6: // WORKFLOW_OUTPUTS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
-                struct.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list3.size);
-                org.apache.airavata.model.application.io.OutputDataObjectType _elem4;
-                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
-                {
-                  _elem4 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-                  _elem4.read(iprot);
-                  struct.workflowOutputs.add(_elem4);
-                }
-                iprot.readListEnd();
-              }
-              struct.setWorkflowOutputsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          default:
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-        }
-        iprot.readFieldEnd();
-      }
-      iprot.readStructEnd();
-      struct.validate();
-    }
-
-    public void write(org.apache.thrift.protocol.TProtocol oprot, Workflow struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.templateId != null) {
-        oprot.writeFieldBegin(TEMPLATE_ID_FIELD_DESC);
-        oprot.writeString(struct.templateId);
-        oprot.writeFieldEnd();
-      }
-      if (struct.name != null) {
-        oprot.writeFieldBegin(NAME_FIELD_DESC);
-        oprot.writeString(struct.name);
-        oprot.writeFieldEnd();
-      }
-      if (struct.graph != null) {
-        if (struct.isSetGraph()) {
-          oprot.writeFieldBegin(GRAPH_FIELD_DESC);
-          oprot.writeString(struct.graph);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.image != null) {
-        if (struct.isSetImage()) {
-          oprot.writeFieldBegin(IMAGE_FIELD_DESC);
-          oprot.writeBinary(struct.image);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.workflowInputs != null) {
-        if (struct.isSetWorkflowInputs()) {
-          oprot.writeFieldBegin(WORKFLOW_INPUTS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.workflowInputs.size()));
-            for (org.apache.airavata.model.application.io.InputDataObjectType _iter6 : struct.workflowInputs)
-            {
-              _iter6.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.workflowOutputs != null) {
-        if (struct.isSetWorkflowOutputs()) {
-          oprot.writeFieldBegin(WORKFLOW_OUTPUTS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.workflowOutputs.size()));
-            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter7 : struct.workflowOutputs)
-            {
-              _iter7.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class WorkflowTupleSchemeFactory implements SchemeFactory {
-    public WorkflowTupleScheme getScheme() {
-      return new WorkflowTupleScheme();
-    }
-  }
-
-  private static class WorkflowTupleScheme extends TupleScheme<Workflow> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, Workflow struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      oprot.writeString(struct.templateId);
-      oprot.writeString(struct.name);
-      BitSet optionals = new BitSet();
-      if (struct.isSetGraph()) {
-        optionals.set(0);
-      }
-      if (struct.isSetImage()) {
-        optionals.set(1);
-      }
-      if (struct.isSetWorkflowInputs()) {
-        optionals.set(2);
-      }
-      if (struct.isSetWorkflowOutputs()) {
-        optionals.set(3);
-      }
-      oprot.writeBitSet(optionals, 4);
-      if (struct.isSetGraph()) {
-        oprot.writeString(struct.graph);
-      }
-      if (struct.isSetImage()) {
-        oprot.writeBinary(struct.image);
-      }
-      if (struct.isSetWorkflowInputs()) {
-        {
-          oprot.writeI32(struct.workflowInputs.size());
-          for (org.apache.airavata.model.application.io.InputDataObjectType _iter8 : struct.workflowInputs)
-          {
-            _iter8.write(oprot);
-          }
-        }
-      }
-      if (struct.isSetWorkflowOutputs()) {
-        {
-          oprot.writeI32(struct.workflowOutputs.size());
-          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter9 : struct.workflowOutputs)
-          {
-            _iter9.write(oprot);
-          }
-        }
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, Workflow struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      struct.templateId = iprot.readString();
-      struct.setTemplateIdIsSet(true);
-      struct.name = iprot.readString();
-      struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(4);
-      if (incoming.get(0)) {
-        struct.graph = iprot.readString();
-        struct.setGraphIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.image = iprot.readBinary();
-        struct.setImageIsSet(true);
-      }
-      if (incoming.get(2)) {
-        {
-          org.apache.thrift.protocol.TList _list10 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list10.size);
-          org.apache.airavata.model.application.io.InputDataObjectType _elem11;
-          for (int _i12 = 0; _i12 < _list10.size; ++_i12)
-          {
-            _elem11 = new org.apache.airavata.model.application.io.InputDataObjectType();
-            _elem11.read(iprot);
-            struct.workflowInputs.add(_elem11);
-          }
-        }
-        struct.setWorkflowInputsIsSet(true);
-      }
-      if (incoming.get(3)) {
-        {
-          org.apache.thrift.protocol.TList _list13 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list13.size);
-          org.apache.airavata.model.application.io.OutputDataObjectType _elem14;
-          for (int _i15 = 0; _i15 < _list13.size; ++_i15)
-          {
-            _elem14 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-            _elem14.read(iprot);
-            struct.workflowOutputs.add(_elem14);
-          }
-        }
-        struct.setWorkflowOutputsIsSet(true);
-      }
-    }
-  }
-
-}
-


[12/50] [abbrv] airavata git commit: validate job submission output for lonestar

Posted by ch...@apache.org.
validate job submission output for lonestar


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

Branch: refs/heads/master
Commit: fa4c1876244fead06addc49cd75d256594925089
Parents: e2b2951
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 26 12:15:07 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 26 12:15:07 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fa4c1876/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
index e5249e0..1c39258 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
@@ -126,7 +126,7 @@ public class UGEOutputParser implements OutputParser {
 
 	public String parseJobSubmission(String rawOutput) {
 		log.debug(rawOutput);
-		if (rawOutput != null && !rawOutput.isEmpty()) {
+		if (rawOutput != null && !rawOutput.isEmpty() && !isJobSubmissionFailed(rawOutput)) {
 			String[] info = rawOutput.split("\n");
 			String lastLine = info[info.length - 1];
 			return lastLine.split(" ")[2]; // In PBS stdout is going to be directly the jobID


[41/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
index d9ac26b..b4837d9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentSummaryModel implements org.apache.thrift.TBase<ExperimentSummaryModel, ExperimentSummaryModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentSummaryModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentSummaryModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
index 5629c80..5091cf0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserConfigurationDataModel, UserConfigurationDataModel._Fields>, java.io.Serializable, Cloneable, Comparable<UserConfigurationDataModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserConfigurationDataModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
index 8a285a2..d62b842 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
index 19e47e6..56177a9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentStatusChangeEvent implements org.apache.thrift.TBase<ExperimentStatusChangeEvent, ExperimentStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
index db6d647..980b477 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobIdentifier implements org.apache.thrift.TBase<JobIdentifier, JobIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<JobIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
index f8e8ae1..2bd311b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobStatusChangeEvent implements org.apache.thrift.TBase<JobStatusChangeEvent, JobStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
index 5351eb6..8b3717a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobStatusChangeRequestEvent implements org.apache.thrift.TBase<JobStatusChangeRequestEvent, JobStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
index 1c7cff4..4ef449d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class Message implements org.apache.thrift.TBase<Message, Message._Fields>, java.io.Serializable, Cloneable, Comparable<Message> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Message");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
index 54ca8ed..4c4dbbf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessIdentifier implements org.apache.thrift.TBase<ProcessIdentifier, ProcessIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
index ba08d22..f6bc9c2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessStatusChangeEvent implements org.apache.thrift.TBase<ProcessStatusChangeEvent, ProcessStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
index b31a3e8..fefa146 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessStatusChangeRequestEvent implements org.apache.thrift.TBase<ProcessStatusChangeRequestEvent, ProcessStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
index 295eafc..b36b681 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessSubmitEvent implements org.apache.thrift.TBase<ProcessSubmitEvent, ProcessSubmitEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessSubmitEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessSubmitEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
index 6cb3ce8..9b15ff6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessTerminateEvent implements org.apache.thrift.TBase<ProcessTerminateEvent, ProcessTerminateEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessTerminateEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessTerminateEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
index 331c487..883a9e9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskIdentifier implements org.apache.thrift.TBase<TaskIdentifier, TaskIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<TaskIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
index e29f3fd..af54a6c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskOutputChangeEvent implements org.apache.thrift.TBase<TaskOutputChangeEvent, TaskOutputChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskOutputChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskOutputChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
index 0f1afce..91f853b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskStatusChangeEvent implements org.apache.thrift.TBase<TaskStatusChangeEvent, TaskStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
index 8abd6fa..c5ecf6c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskStatusChangeRequestEvent implements org.apache.thrift.TBase<TaskStatusChangeRequestEvent, TaskStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 9ba0c30..c055a52 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, ProcessModel._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
index f6dfa61..a66ad1b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ComputationalResourceSchedulingModel implements org.apache.thrift.TBase<ComputationalResourceSchedulingModel, ComputationalResourceSchedulingModel._Fields>, java.io.Serializable, Cloneable, Comparable<ComputationalResourceSchedulingModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputationalResourceSchedulingModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
index b58b053..b5e2264 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class AuthzToken implements org.apache.thrift.TBase<AuthzToken, AuthzToken._Fields>, java.io.Serializable, Cloneable, Comparable<AuthzToken> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthzToken");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
index 668271a..d7bcc3c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   User friendly reason on how the state is inferred.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentStatus implements org.apache.thrift.TBase<ExperimentStatus, ExperimentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
index 3d3f1a8..f3c4511 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobStatus implements org.apache.thrift.TBase<JobStatus, JobStatus._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
index 65648f7..0393545 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProcessStatus implements org.apache.thrift.TBase<ProcessStatus, ProcessStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
index 9812e13..1a17bef 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskStatus implements org.apache.thrift.TBase<TaskStatus, TaskStatus._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
index f137daa..2fcd7d6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class DataStagingTaskModel implements org.apache.thrift.TBase<DataStagingTaskModel, DataStagingTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataStagingTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataStagingTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
index 5f2f962..18d8450 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
  * EnvironmentSetupTaskModel: A structure holding the environment creation task details
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<EnvironmentSetupTaskModel, EnvironmentSetupTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<EnvironmentSetupTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EnvironmentSetupTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
index 27eaf94..e54f4c7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobSubmissionTaskModel implements org.apache.thrift.TBase<JobSubmissionTaskModel, JobSubmissionTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
index f435e5b..a2e9dc1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class MonitorTaskModel implements org.apache.thrift.TBase<MonitorTaskModel, MonitorTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<MonitorTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("MonitorTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
index 83f7662..4b899a2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * subTaskModel:
  *   A generic byte object for the Task developer to store internal serialized data into registry catalogs.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<TaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
index dec3a3a..532313f 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class Gateway implements org.apache.thrift.TBase<Gateway, Gateway._Fields>, java.io.Serializable, Cloneable, Comparable<Gateway> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Gateway");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
index 428ee9f..abefca3 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class Group implements org.apache.thrift.TBase<Group, Group._Fields>, java.io.Serializable, Cloneable, Comparable<Group> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Group");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
index e11ddf3..bdcb7b7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class Project implements org.apache.thrift.TBase<Project, Project._Fields>, java.io.Serializable, Cloneable, Comparable<Project> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Project");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
index d709357..0570b5d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class User implements org.apache.thrift.TBase<User, User._Fields>, java.io.Serializable, Cloneable, Comparable<User> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("User");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
index e5e1d0c..e8456e9 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
@@ -21,7 +21,7 @@
 
 package org.apache.airavata.registry.core.workflow.catalog.impl;
 
-import org.apache.airavata.model.Workflow;
+import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.registry.core.workflow.catalog.resources.*;
@@ -55,7 +55,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
     }
 
     @Override
-    public Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
+    public WorkflowModel getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             WorkflowResource wfResource = (WorkflowResource)resource.get(workflowTemplateId);
@@ -78,7 +78,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
     }
 
     @Override
-    public String registerWorkflow(Workflow workflow, String gatewayId) throws WorkflowCatalogException {
+    public String registerWorkflow(WorkflowModel workflow, String gatewayId) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             resource.setWfTemplateId(WorkflowCatalogUtils.getID(workflow.getName()));
@@ -132,7 +132,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
     }
 
     @Override
-    public void updateWorkflow(String workflowTemplateId, Workflow workflow) throws WorkflowCatalogException {
+    public void updateWorkflow(String workflowTemplateId, WorkflowModel workflow) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
index 68b42e3..82fdaa2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
@@ -21,7 +21,7 @@
 
 package org.apache.airavata.registry.core.workflow.catalog.utils;
 
-import org.apache.airavata.model.Workflow;
+import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.registry.core.workflow.catalog.resources.WorkflowCatAbstractResource;
@@ -59,8 +59,8 @@ public class WorkflowCatalogThriftConversion {
         return inputResources;
     }
 
-    public static Workflow getWorkflow (WorkflowResource resource) throws WorkflowCatalogException {
-        Workflow workflow = new Workflow();
+    public static WorkflowModel getWorkflow (WorkflowResource resource) throws WorkflowCatalogException {
+        WorkflowModel workflow = new WorkflowModel();
         workflow.setTemplateId(resource.getWfTemplateId());
         workflow.setGraph(resource.getGraph());
         workflow.setName(resource.getWfName());

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
index ae7f839..49ae4a2 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
@@ -22,6 +22,7 @@
 package org.apache.airavata.registry.cpi;
 
 
+import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 
 import java.util.List;
@@ -30,13 +31,13 @@ public interface WorkflowCatalog {
 
     public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException;
 
-    public org.apache.airavata.model.Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException;
+    public WorkflowModel getWorkflow(String workflowTemplateId) throws WorkflowCatalogException;
 
     public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException;
 
-    public String registerWorkflow(org.apache.airavata.model.Workflow workflow, String gatewayId) throws WorkflowCatalogException;
+    public String registerWorkflow(WorkflowModel workflow, String gatewayId) throws WorkflowCatalogException;
 
-    public void updateWorkflow(String workflowTemplateId, org.apache.airavata.model.Workflow workflow) throws WorkflowCatalogException;
+    public void updateWorkflow(String workflowTemplateId, WorkflowModel workflow) throws WorkflowCatalogException;
 
     public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException;
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index a49564f..8e11897 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2904,7 +2904,7 @@ service Airavata {
    *
   */
 
-  workflow_data_model.Workflow getWorkflow (1: required security_model.AuthzToken authzToken, 2: required string workflowTemplateId)
+  workflow_data_model.WorkflowModel getWorkflow (1: required security_model.AuthzToken authzToken, 2: required string workflowTemplateId)
         throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
                 3: airavata_errors.AiravataSystemException ase,
@@ -2917,14 +2917,14 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   string registerWorkflow(1: required security_model.AuthzToken authzToken, 2: required string gatewayId,
-                          3: required workflow_data_model.Workflow workflow)
+                          3: required workflow_data_model.WorkflowModel workflow)
           throws (1: airavata_errors.InvalidRequestException ire,
                   2: airavata_errors.AiravataClientException ace,
                   3: airavata_errors.AiravataSystemException ase,
                   4: airavata_errors.AuthorizationException ae)
 
   void updateWorkflow (1: required security_model.AuthzToken authzToken, 2: required string workflowTemplateId,
-                       3: required workflow_data_model.Workflow workflow)
+                       3: required workflow_data_model.WorkflowModel workflow)
           throws (1: airavata_errors.InvalidRequestException ire,
                   2: airavata_errors.AiravataClientException ace,
                   3: airavata_errors.AiravataSystemException ase,


[46/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.h
index 9ef1ada..831bc02 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.h
@@ -38,33 +38,74 @@
 
 
 
-class Workflow;
+struct WorkflowState {
+  enum type {
+    CREATED = 0,
+    STARTED = 1,
+    EXECUTING = 2,
+    COMPLETED = 3,
+    FAILED = 4,
+    CANCELLING = 5,
+    CANCELED = 6
+  };
+};
+
+extern const std::map<int, const char*> _WorkflowState_VALUES_TO_NAMES;
+
+struct ComponentState {
+  enum type {
+    CREATED = 0,
+    WAITING = 1,
+    READY = 2,
+    RUNNING = 3,
+    COMPLETED = 4,
+    FAILED = 5,
+    CANCELED = 6
+  };
+};
+
+extern const std::map<int, const char*> _ComponentState_VALUES_TO_NAMES;
+
+class WorkflowModel;
+
+class ComponentStatus;
 
-typedef struct _Workflow__isset {
-  _Workflow__isset() : graph(false), image(false), workflowInputs(false), workflowOutputs(false) {}
-  bool graph :1;
+class WorkflowStatus;
+
+class EdgeModel;
+
+class PortModel;
+
+class NodeModel;
+
+typedef struct _WorkflowModel__isset {
+  _WorkflowModel__isset() : image(false), workflowInputs(false), workflowOutputs(false), creationTime(false) {}
   bool image :1;
   bool workflowInputs :1;
   bool workflowOutputs :1;
-} _Workflow__isset;
+  bool creationTime :1;
+} _WorkflowModel__isset;
 
-class Workflow {
+class WorkflowModel {
  public:
 
-  Workflow(const Workflow&);
-  Workflow& operator=(const Workflow&);
-  Workflow() : templateId("DO_NOT_SET_AT_CLIENTS"), name(), graph(), image() {
+  WorkflowModel(const WorkflowModel&);
+  WorkflowModel& operator=(const WorkflowModel&);
+  WorkflowModel() : templateId("DO_NOT_SET_AT_CLIENTS"), name(), graph(), gatewayId(), createdUser(), image(), creationTime(0) {
   }
 
-  virtual ~Workflow() throw();
+  virtual ~WorkflowModel() throw();
   std::string templateId;
   std::string name;
   std::string graph;
+  std::string gatewayId;
+  std::string createdUser;
   std::string image;
   std::vector< ::apache::airavata::model::application::io::InputDataObjectType>  workflowInputs;
   std::vector< ::apache::airavata::model::application::io::OutputDataObjectType>  workflowOutputs;
+  int64_t creationTime;
 
-  _Workflow__isset __isset;
+  _WorkflowModel__isset __isset;
 
   void __set_templateId(const std::string& val);
 
@@ -72,21 +113,29 @@ class Workflow {
 
   void __set_graph(const std::string& val);
 
+  void __set_gatewayId(const std::string& val);
+
+  void __set_createdUser(const std::string& val);
+
   void __set_image(const std::string& val);
 
   void __set_workflowInputs(const std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & val);
 
   void __set_workflowOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val);
 
-  bool operator == (const Workflow & rhs) const
+  void __set_creationTime(const int64_t val);
+
+  bool operator == (const WorkflowModel & rhs) const
   {
     if (!(templateId == rhs.templateId))
       return false;
     if (!(name == rhs.name))
       return false;
-    if (__isset.graph != rhs.__isset.graph)
+    if (!(graph == rhs.graph))
       return false;
-    else if (__isset.graph && !(graph == rhs.graph))
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
+    if (!(createdUser == rhs.createdUser))
       return false;
     if (__isset.image != rhs.__isset.image)
       return false;
@@ -100,13 +149,372 @@ class Workflow {
       return false;
     else if (__isset.workflowOutputs && !(workflowOutputs == rhs.workflowOutputs))
       return false;
+    if (__isset.creationTime != rhs.__isset.creationTime)
+      return false;
+    else if (__isset.creationTime && !(creationTime == rhs.creationTime))
+      return false;
+    return true;
+  }
+  bool operator != (const WorkflowModel &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const WorkflowModel & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(WorkflowModel &a, WorkflowModel &b);
+
+inline std::ostream& operator<<(std::ostream& out, const WorkflowModel& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _ComponentStatus__isset {
+  _ComponentStatus__isset() : reason(false), timeofStateChange(false) {}
+  bool reason :1;
+  bool timeofStateChange :1;
+} _ComponentStatus__isset;
+
+class ComponentStatus {
+ public:
+
+  ComponentStatus(const ComponentStatus&);
+  ComponentStatus& operator=(const ComponentStatus&);
+  ComponentStatus() : state((ComponentState::type)0), reason(), timeofStateChange(0) {
+    state = (ComponentState::type)0;
+
+  }
+
+  virtual ~ComponentStatus() throw();
+  ComponentState::type state;
+  std::string reason;
+  int64_t timeofStateChange;
+
+  _ComponentStatus__isset __isset;
+
+  void __set_state(const ComponentState::type val);
+
+  void __set_reason(const std::string& val);
+
+  void __set_timeofStateChange(const int64_t val);
+
+  bool operator == (const ComponentStatus & rhs) const
+  {
+    if (!(state == rhs.state))
+      return false;
+    if (__isset.reason != rhs.__isset.reason)
+      return false;
+    else if (__isset.reason && !(reason == rhs.reason))
+      return false;
+    if (__isset.timeofStateChange != rhs.__isset.timeofStateChange)
+      return false;
+    else if (__isset.timeofStateChange && !(timeofStateChange == rhs.timeofStateChange))
+      return false;
+    return true;
+  }
+  bool operator != (const ComponentStatus &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const ComponentStatus & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(ComponentStatus &a, ComponentStatus &b);
+
+inline std::ostream& operator<<(std::ostream& out, const ComponentStatus& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _WorkflowStatus__isset {
+  _WorkflowStatus__isset() : timeOfStateChange(false), reason(false) {}
+  bool timeOfStateChange :1;
+  bool reason :1;
+} _WorkflowStatus__isset;
+
+class WorkflowStatus {
+ public:
+
+  WorkflowStatus(const WorkflowStatus&);
+  WorkflowStatus& operator=(const WorkflowStatus&);
+  WorkflowStatus() : state((WorkflowState::type)0), timeOfStateChange(0), reason() {
+  }
+
+  virtual ~WorkflowStatus() throw();
+  WorkflowState::type state;
+  int64_t timeOfStateChange;
+  std::string reason;
+
+  _WorkflowStatus__isset __isset;
+
+  void __set_state(const WorkflowState::type val);
+
+  void __set_timeOfStateChange(const int64_t val);
+
+  void __set_reason(const std::string& val);
+
+  bool operator == (const WorkflowStatus & rhs) const
+  {
+    if (!(state == rhs.state))
+      return false;
+    if (__isset.timeOfStateChange != rhs.__isset.timeOfStateChange)
+      return false;
+    else if (__isset.timeOfStateChange && !(timeOfStateChange == rhs.timeOfStateChange))
+      return false;
+    if (__isset.reason != rhs.__isset.reason)
+      return false;
+    else if (__isset.reason && !(reason == rhs.reason))
+      return false;
+    return true;
+  }
+  bool operator != (const WorkflowStatus &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const WorkflowStatus & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(WorkflowStatus &a, WorkflowStatus &b);
+
+inline std::ostream& operator<<(std::ostream& out, const WorkflowStatus& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _EdgeModel__isset {
+  _EdgeModel__isset() : name(false), status(false), description(false) {}
+  bool name :1;
+  bool status :1;
+  bool description :1;
+} _EdgeModel__isset;
+
+class EdgeModel {
+ public:
+
+  EdgeModel(const EdgeModel&);
+  EdgeModel& operator=(const EdgeModel&);
+  EdgeModel() : edgeId("DO_NOT_SET_AT_CLIENTS"), name(), description() {
+  }
+
+  virtual ~EdgeModel() throw();
+  std::string edgeId;
+  std::string name;
+  ComponentStatus status;
+  std::string description;
+
+  _EdgeModel__isset __isset;
+
+  void __set_edgeId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_status(const ComponentStatus& val);
+
+  void __set_description(const std::string& val);
+
+  bool operator == (const EdgeModel & rhs) const
+  {
+    if (!(edgeId == rhs.edgeId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.status != rhs.__isset.status)
+      return false;
+    else if (__isset.status && !(status == rhs.status))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    return true;
+  }
+  bool operator != (const EdgeModel &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const EdgeModel & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(EdgeModel &a, EdgeModel &b);
+
+inline std::ostream& operator<<(std::ostream& out, const EdgeModel& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _PortModel__isset {
+  _PortModel__isset() : name(false), status(false), value(false), description(false) {}
+  bool name :1;
+  bool status :1;
+  bool value :1;
+  bool description :1;
+} _PortModel__isset;
+
+class PortModel {
+ public:
+
+  PortModel(const PortModel&);
+  PortModel& operator=(const PortModel&);
+  PortModel() : portId("DO_NOT_SET_AT_CLIENTS"), name(), value(), description() {
+  }
+
+  virtual ~PortModel() throw();
+  std::string portId;
+  std::string name;
+  ComponentStatus status;
+  std::string value;
+  std::string description;
+
+  _PortModel__isset __isset;
+
+  void __set_portId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_status(const ComponentStatus& val);
+
+  void __set_value(const std::string& val);
+
+  void __set_description(const std::string& val);
+
+  bool operator == (const PortModel & rhs) const
+  {
+    if (!(portId == rhs.portId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.status != rhs.__isset.status)
+      return false;
+    else if (__isset.status && !(status == rhs.status))
+      return false;
+    if (__isset.value != rhs.__isset.value)
+      return false;
+    else if (__isset.value && !(value == rhs.value))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
+    return true;
+  }
+  bool operator != (const PortModel &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const PortModel & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  virtual void printTo(std::ostream& out) const;
+};
+
+void swap(PortModel &a, PortModel &b);
+
+inline std::ostream& operator<<(std::ostream& out, const PortModel& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
+typedef struct _NodeModel__isset {
+  _NodeModel__isset() : name(false), applicationId(false), applicationName(false), status(false), description(false) {}
+  bool name :1;
+  bool applicationId :1;
+  bool applicationName :1;
+  bool status :1;
+  bool description :1;
+} _NodeModel__isset;
+
+class NodeModel {
+ public:
+
+  NodeModel(const NodeModel&);
+  NodeModel& operator=(const NodeModel&);
+  NodeModel() : nodeId("DO_NOT_SET_AT_CLIENTS"), name(), applicationId(), applicationName(), description() {
+  }
+
+  virtual ~NodeModel() throw();
+  std::string nodeId;
+  std::string name;
+  std::string applicationId;
+  std::string applicationName;
+  ComponentStatus status;
+  std::string description;
+
+  _NodeModel__isset __isset;
+
+  void __set_nodeId(const std::string& val);
+
+  void __set_name(const std::string& val);
+
+  void __set_applicationId(const std::string& val);
+
+  void __set_applicationName(const std::string& val);
+
+  void __set_status(const ComponentStatus& val);
+
+  void __set_description(const std::string& val);
+
+  bool operator == (const NodeModel & rhs) const
+  {
+    if (!(nodeId == rhs.nodeId))
+      return false;
+    if (__isset.name != rhs.__isset.name)
+      return false;
+    else if (__isset.name && !(name == rhs.name))
+      return false;
+    if (__isset.applicationId != rhs.__isset.applicationId)
+      return false;
+    else if (__isset.applicationId && !(applicationId == rhs.applicationId))
+      return false;
+    if (__isset.applicationName != rhs.__isset.applicationName)
+      return false;
+    else if (__isset.applicationName && !(applicationName == rhs.applicationName))
+      return false;
+    if (__isset.status != rhs.__isset.status)
+      return false;
+    else if (__isset.status && !(status == rhs.status))
+      return false;
+    if (__isset.description != rhs.__isset.description)
+      return false;
+    else if (__isset.description && !(description == rhs.description))
+      return false;
     return true;
   }
-  bool operator != (const Workflow &rhs) const {
+  bool operator != (const NodeModel &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const Workflow & ) const;
+  bool operator < (const NodeModel & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -114,9 +522,9 @@ class Workflow {
   virtual void printTo(std::ostream& out) const;
 };
 
-void swap(Workflow &a, Workflow &b);
+void swap(NodeModel &a, NodeModel &b);
 
-inline std::ostream& operator<<(std::ostream& out, const Workflow& obj)
+inline std::ostream& operator<<(std::ostream& out, const NodeModel& obj)
 {
   obj.printTo(out);
   return out;

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
index 8529b1a..df39f6f 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
@@ -194,6 +194,7 @@ interface AiravataIf {
    */
   public function getSSHPubKey(\Airavata\Model\Security\AuthzToken $authzToken, $airavataCredStoreToken, $gatewayId);
   /**
+   * 
    * Get a Public Key by Providing the Token
    * 
    * @param CredStoreToken
@@ -215,6 +216,7 @@ interface AiravataIf {
    */
   public function getAllUserSSHPubKeys(\Airavata\Model\Security\AuthzToken $authzToken, $userName);
   /**
+   * 
    * Get all Public Keys of the Gateway
    * 
    * @param CredStoreToken
@@ -236,6 +238,7 @@ interface AiravataIf {
    */
   public function getAllGatewaySSHPubKeys(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
+   * 
    * Delete a Gateway
    * 
    * @param gatewayId
@@ -256,6 +259,7 @@ interface AiravataIf {
    */
   public function deleteSSHPubKey(\Airavata\Model\Security\AuthzToken $authzToken, $airavataCredStoreToken, $gatewayId);
   /**
+   * 
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
    * 
@@ -263,7 +267,7 @@ interface AiravataIf {
    *    The identifier for the requested gateway.
    * 
    * @param Project
-   *    The Project Object described in the workspace_model
+   *    The Project Object described in the workspace_model.
    * 
    * 
    * 
@@ -278,6 +282,7 @@ interface AiravataIf {
    */
   public function createProject(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\Workspace\Project $project);
   /**
+   * 
    * Update an Existing Project
    * 
    * @param projectId
@@ -299,14 +304,15 @@ interface AiravataIf {
    */
   public function updateProject(\Airavata\Model\Security\AuthzToken $authzToken, $projectId, \Airavata\Model\Workspace\Project $updatedProject);
   /**
+   * 
    * Get a Project by ID
-   *    This method is to obtain a project by providing a projectId
+   *    This method is to obtain a project by providing a projectId.
    * 
    * @param projectId
-   *    projectId of the project you require
+   *    projectId of the project you require.
    * 
    * @return project
-   *    project data model will be returned
+   *    project data model will be returned.
    * 
    * 
    * 
@@ -321,15 +327,18 @@ interface AiravataIf {
    */
   public function getProject(\Airavata\Model\Security\AuthzToken $authzToken, $projectId);
   /**
+   * 
    * Delete a Project
-   *    This method is used to delete an existing Project
+   *    This method is used to delete an existing Project.
    * 
    * @param projectId
-   *    projectId of the project you want to delete
+   *    projectId of the project you want to delete.
    * 
    * @return boolean
    *    Boolean identifier for the success or failure of the deletion operation.
    * 
+   *    NOTE: This method is not used within gateways connected with Airavata.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -343,20 +352,21 @@ interface AiravataIf {
    */
   public function deleteProject(\Airavata\Model\Security\AuthzToken $authzToken, $projectId);
   /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
+   * 
+   * Get All User Projects
+   * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
    *    The identifier for the requested gateway.
    * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
    * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
    * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
    * 
    * 
    * 
@@ -373,19 +383,25 @@ interface AiravataIf {
    */
   public function getUserProjects(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $limit, $offset);
   /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
+   * 
+   * Search User Projects by Project Name
+   * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier for the requested gateway.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param projectName
-   *    The name of the project on which the results to be fetched
+   *    The name of the project on which the results to be fetched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -402,19 +418,25 @@ interface AiravataIf {
    */
   public function searchProjectsByProjectName(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $projectName, $limit, $offset);
   /**
-   * Search and get all Projects for user by project description with pagination. Results
-   * will be ordered based on creation time DESC
+   * 
+   * Search User Projects by Project Description
+   * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier of the gateway making the request.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param description
-   *    The description to be matched
+   *    The description to be matched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -431,19 +453,25 @@ interface AiravataIf {
    */
   public function searchProjectsByProjectDesc(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $description, $limit, $offset);
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Name
+   * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user who created the experiments.
+   * 
    * @param expName
-   *       Experiment name to be matched
+   *       Experiment name to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -460,19 +488,25 @@ interface AiravataIf {
    */
   public function searchExperimentsByName(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $expName, $limit, $offset);
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search By Experiment Description
+   * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param description
-   *       Experiment description to be matched
+   *       Experiment description to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -489,19 +523,25 @@ interface AiravataIf {
    */
   public function searchExperimentsByDesc(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $description, $limit, $offset);
   /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search Experiment By the Application
+   * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param applicationId
-   *       Application id to be matched
+   *       Application id to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -518,19 +558,25 @@ interface AiravataIf {
    */
   public function searchExperimentsByApplication(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $applicationId, $limit, $offset);
   /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Status
+   * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user making the request.
+   * 
    * @param experimentState
-   *       Experiement state to be matched
+   *       Experiement state to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -547,21 +593,31 @@ interface AiravataIf {
    */
   public function searchExperimentsByStatus(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $experimentState, $limit, $offset);
   /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by the Creation Time
+   * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param fromTime
-   *       Start time of the experiments creation time
+   *       Start time of the experiments creation time.
+   * 
    * @param toTime
-   *       End time of the  experiement creation time
+   *       End time of the  experiement creation time.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -579,19 +635,27 @@ interface AiravataIf {
    */
   public function searchExperimentsByCreationTime(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $fromTime, $toTime, $limit, $offset);
   /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
+   * Search Experiments.
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user requesting the search function.
+   * 
    * @param filters
-   *       map of multiple filter criteria.
+   *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -608,13 +672,19 @@ interface AiravataIf {
    */
   public function searchExperiments(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, array $filters, $limit, $offset);
   /**
-   * Get Experiment Statisitics for the given gateway for a specific time period
+   * 
+   * Get Experiment Statistics
+   * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+   * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the gateway making the request to fetch statistics.
+   * 
    * @param fromTime
-   *       Starting date time
+   *       Starting date time.
+   * 
    * @param toTime
-   *       Ending data time
+   *       Ending data time.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -629,15 +699,19 @@ interface AiravataIf {
    */
   public function getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime);
   /**
-   * Get Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the Project
+   * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param projectId
-   *       Identifier of the project
+   *       Uniqie identifier of the project.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -653,17 +727,22 @@ interface AiravataIf {
    */
   public function getExperimentsInProject(\Airavata\Model\Security\AuthzToken $authzToken, $projectId, $limit, $offset);
   /**
-   * Get experiments by user with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the User
+   * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requesting gateway
+   *       Identifier of the requesting gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested end user.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -679,12 +758,17 @@ interface AiravataIf {
    */
   public function getUserExperiments(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $userName, $limit, $offset);
   /**
+   *   *
+   *   * Create New Experiment
    *   * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
    *   *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
    *   *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
    *   *   registering the experiment in a persistent store.
    *   *
-   *   * @param basicExperimentMetadata
+   *   * @param gatewayId
+   *   *    The unique ID of the gateway where the experiment is been created.
+   *   *
+   *   * @param ExperimentModel
    *   *    The create experiment will require the basic experiment metadata like the name and description, intended user,
    *   *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
    *   *      the ExperimentMetadata is a required field.
@@ -725,8 +809,8 @@ interface AiravataIf {
    */
   public function createExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\Experiment\ExperimentModel $experiment);
   /**
-   * Delete an Experiment
    * 
+   * Delete an Experiment
    * If the experiment is not already launched experiment can be deleted.
    * 
    * @param authzToken
@@ -735,7 +819,7 @@ interface AiravataIf {
    *     Experiment ID of the experimnet you want to delete.
    * 
    * @return boolean
-   *     Identifier for the success or failure of the deletion operation
+   *     Identifier for the success or failure of the deletion operation.
    * 
    * 
    * 
@@ -749,12 +833,14 @@ interface AiravataIf {
    */
   public function deleteExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $experimentId);
   /**
+   *   *
+   *   * Get Experiment
    *   * Fetch previously created experiment metadata.
    *   *
    *   * @param airavataExperimentId
-   *   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
    *   *
-   *   * @return experimentMetada
+   *   * @return ExperimentModel
    *   *   This method will return the previously stored experiment metadata.
    *   *
    *   * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -807,14 +893,17 @@ interface AiravataIf {
    */
   public function getExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
+   * 
+   * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
    * tasks -> jobs information.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
+   * @return ExperimentModel
+   *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+   *   information, special input output handling and additional quality of service parameters.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -865,14 +954,15 @@ interface AiravataIf {
    */
   public function getDetailedExperimentTree(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
+   * 
+   * Update a Previously Created Experiment
+   * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+   * The experiment has to be launched to make it actionable by the server.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @param experimentConfigurationData
+   * @param ExperimentModel
    *    The configuration information of the experiment with application input parameters, computational resource scheduling
    *      information, special input output handling and additional quality of service parameters.
    * 
@@ -929,13 +1019,14 @@ interface AiravataIf {
   public function updateResourceScheduleing(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId, \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel $resourceScheduling);
   /**
    *  *
-   *  * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-   *  *
-   *  * @param experimentId
+   *  * Validate experiment configuration.
+   *  * A true in general indicates, the experiment is ready to be launched.
    *  *
+   *  * @param airavataExperimentId
+   *  *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
    *  *
    *  * @return boolean
-   *  *      Identifier for the success or failure of the validation operation
+   *  *      Identifier for the success or failure of the validation operation.
    *  *
    * *
    * 
@@ -950,8 +1041,12 @@ interface AiravataIf {
    */
   public function validateExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * Launch a Previously Created & Configured Experiment.
+   * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will launch the experiment.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -994,17 +1089,18 @@ interface AiravataIf {
    */
   public function launchExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId, $gatewayId);
   /**
+   * 
    * Get Experiment Status
    * 
-   * Obtain the status os an experiment by providing the Experiment Id
+   * Obtain the status of an experiment by providing the Experiment Id
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you require the status
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you require the status.
    * 
    * @return ExperimentStatus
-   *     ExperimentStatus model with current status will be returned.
+   *     ExperimentStatus model with the current status will be returned.
    * 
    * 
    * 
@@ -1030,16 +1126,17 @@ interface AiravataIf {
    */
   public function getExperimentStatus(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
+   * 
    * Get Experiment Outputs
-   * This method to be used when need to obtain outputs of a certain Experiment
+   * This method to be used when need to obtain final outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need the outputs.
    * 
    * @return list
-   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -1054,16 +1151,17 @@ interface AiravataIf {
    */
   public function getExperimentOutputs(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
+   * 
    * Get Intermediate Experiment Outputs
    * This method to be used when need to obtain intermediate outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need intermediate outputs.
    * 
    * @return list
-   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -1078,13 +1176,14 @@ interface AiravataIf {
    */
   public function getIntermediateOutputs(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
-   * Get Job Status for an Experiment
+   * 
+   * Get Job Statuses for an Experiment
    * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   *     Experiment ID of the experimnet you need the job statuses.
    * 
    * @return JobStatus
    *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -1102,16 +1201,17 @@ interface AiravataIf {
    */
   public function getJobStatuses(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
-   * Get Job Details for all the jobs within an Experiment
+   * 
+   * Get Job Details for all the jobs within an Experiment.
    * This method to be used when need to get the job details for one or many jobs of an Experiment.
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need job details
+   *     Experiment ID of the experimnet you need job details.
    * 
    * @return list of JobDetails
-   *     Job details
+   *     Job details.
    * 
    * 
    * 
@@ -1126,7 +1226,9 @@ interface AiravataIf {
    */
   public function getJobDetails(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId);
   /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   * 
+   * Clone an Existing Experiment
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
    * 
    * @param newExperimentName
@@ -1138,7 +1240,7 @@ interface AiravataIf {
    *      should be shared public by default.
    * 
    * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -1176,12 +1278,16 @@ interface AiravataIf {
    */
   public function cloneExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $existingExperimentID, $newExperimentName);
   /**
-   * Terminate a running experiment.
+   * 
+   * Terminate a running Experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will terminate the running Experiment.
    * 
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
    * 
-   * @return
+   * @return status
    *   This method call does not have a return value.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1219,13 +1325,17 @@ interface AiravataIf {
    */
   public function terminateExperiment(\Airavata\Model\Security\AuthzToken $authzToken, $airavataExperimentId, $gatewayId);
   /**
+   * 
    * Register a Application Module.
    * 
+   * @gatewayId
+   *    ID of the gateway which is registering the new Application Module.
+   * 
    * @param applicationModule
    *    Application Module Object created from the datamodel.
    * 
    * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *   Returns the server-side generated airavata appModule globally unique identifier.
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1239,13 +1349,14 @@ interface AiravataIf {
    */
   public function registerApplicationModule(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule);
   /**
+   * 
    * Fetch a Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module
+   *   The unique identifier of the application module required
    * 
    * @return applicationModule
-   *   Returns a application Module Object.
+   *   Returns an Application Module Object.
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1271,6 +1382,7 @@ interface AiravataIf {
    */
   public function getApplicationModule(\Airavata\Model\Security\AuthzToken $authzToken, $appModuleId);
   /**
+   * 
    * Update a Application Module.
    * 
    * @param appModuleId
@@ -1294,6 +1406,16 @@ interface AiravataIf {
    */
   public function updateApplicationModule(\Airavata\Model\Security\AuthzToken $authzToken, $appModuleId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule);
   /**
+   * 
+   * Fetch all Application Module Descriptions.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
+   * @return list
+   *    Returns the list of all Application Module Objects.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayId
    * @return \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule[]
@@ -1304,10 +1426,11 @@ interface AiravataIf {
    */
   public function getAllAppModules(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
-   * Delete a Application Module.
+   * 
+   * Delete an Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
+   *   The identifier of the Application Module to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1323,9 +1446,13 @@ interface AiravataIf {
    */
   public function deleteApplicationModule(\Airavata\Model\Security\AuthzToken $authzToken, $appModuleId);
   /**
-   * Register a Application Deployment.
    * 
-   * @param applicationModule
+   * Register an Application Deployment.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which is registering the new Application Deployment.
+   * 
+   * @param applicationDeployment
    *    Application Module Object created from the datamodel.
    * 
    * @return appDeploymentId
@@ -1343,6 +1470,7 @@ interface AiravataIf {
    */
   public function registerApplicationDeployment(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment);
   /**
+   * 
    * Fetch a Application Deployment.
    * 
    * @param appDeploymentId
@@ -1386,10 +1514,11 @@ interface AiravataIf {
    */
   public function getApplicationDeployment(\Airavata\Model\Security\AuthzToken $authzToken, $appDeploymentId);
   /**
-   * Update a Application Deployment.
+   * 
+   * Update an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appDeployment
    *    Application Deployment Object created from the datamodel.
@@ -1409,10 +1538,11 @@ interface AiravataIf {
    */
   public function updateApplicationDeployment(\Airavata\Model\Security\AuthzToken $authzToken, $appDeploymentId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment);
   /**
-   * Delete a Application deployment.
+   * 
+   * Delete an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
+   *   The unique identifier of application deployment to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1428,10 +1558,14 @@ interface AiravataIf {
    */
   public function deleteApplicationDeployment(\Airavata\Model\Security\AuthzToken $authzToken, $appDeploymentId);
   /**
+   * 
    * Fetch all Application Deployment Descriptions.
    * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
    * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
+   *    Returns the list of all application Deployment Objects.
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1463,9 +1597,10 @@ interface AiravataIf {
    */
   public function getAppModuleDeployedResources(\Airavata\Model\Security\AuthzToken $authzToken, $appModuleId);
   /**
+   * 
    * Register a Application Interface.
    * 
-   * @param applicationModule
+   * @param applicationInterface
    *    Application Module Object created from the datamodel.
    * 
    * @return appInterfaceId
@@ -1483,6 +1618,22 @@ interface AiravataIf {
    */
   public function registerApplicationInterface(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface);
   /**
+   * 
+   * Clone an Application Interface.
+   * 
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   * 
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   * 
+   * @param newApplicationName
+   *    Name for the new application interface.
+   * 
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $existingAppInterfaceID
    * @param string $newApplicationName
@@ -1495,14 +1646,14 @@ interface AiravataIf {
    */
   public function cloneApplicationInterface(\Airavata\Model\Security\AuthzToken $authzToken, $existingAppInterfaceID, $newApplicationName, $gatewayId);
   /**
-   * Fetch a Application Interface.
+   * 
+   * Fetch an Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application module
+   *   The identifier for the requested application interface.
    * 
    * @return applicationInterface
-   *   Returns a application Interface Object.
-   * 
+   *   Returns an application Interface Object.
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1526,10 +1677,11 @@ interface AiravataIf {
    */
   public function getApplicationInterface(\Airavata\Model\Security\AuthzToken $authzToken, $appInterfaceId);
   /**
+   * 
    * Update a Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appInterface
    *    Application Interface Object created from the datamodel.
@@ -1538,7 +1690,6 @@ interface AiravataIf {
    *   Returns a success/failure of the update.
    * 
    * 
-   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $appInterfaceId
    * @param \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface
@@ -1550,7 +1701,8 @@ interface AiravataIf {
    */
   public function updateApplicationInterface(\Airavata\Model\Security\AuthzToken $authzToken, $appInterfaceId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface);
   /**
-   * Delete a Application Interface.
+   * 
+   * Delete an Application Interface.
    * 
    * @param appInterfaceId
    *   The identifier for the requested application interface to be deleted.
@@ -1559,7 +1711,6 @@ interface AiravataIf {
    *   Returns a success/failure of the deletion.
    * 
    * 
-   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $appInterfaceId
    * @return bool
@@ -1570,11 +1721,12 @@ interface AiravataIf {
    */
   public function deleteApplicationInterface(\Airavata\Model\Security\AuthzToken $authzToken, $appInterfaceId);
   /**
-   * Fetch name and id of  Application Interface documents.
+   * 
+   * Fetch name and ID of  Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
+   *   Returns a list of application interfaces with corresponsing ID's
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1587,11 +1739,12 @@ interface AiravataIf {
    */
   public function getAllApplicationInterfaceNames(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
+   * 
    * Fetch all Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
+   *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1604,10 +1757,11 @@ interface AiravataIf {
    */
   public function getAllApplicationInterfaces(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
+   * 
    * Fetch the list of Application Inputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need inputs to be fetched.
    * 
    * @return list<application_interface_model.InputDataObjectType>
    *   Returns a list of application inputs.
@@ -1623,10 +1777,11 @@ interface AiravataIf {
    */
   public function getApplicationInputs(\Airavata\Model\Security\AuthzToken $authzToken, $appInterfaceId);
   /**
-   * Fetch the list of Application Outputs.
+   * 
+   * Fetch list of Application Outputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need outputs to be fetched.
    * 
    * @return list<application_interface_model.OutputDataObjectType>
    *   Returns a list of application outputs.
@@ -1642,14 +1797,15 @@ interface AiravataIf {
    */
   public function getApplicationOutputs(\Airavata\Model\Security\AuthzToken $authzToken, $appInterfaceId);
   /**
+   * 
    * Fetch a list of all deployed Compute Hosts for a given application interfaces.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier for the requested application interface.
    * 
    * @return map<computeResourceId, computeResourceName>
    *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
+   *   Deployments of each modules listed within the interfaces will be listed.
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -1727,6 +1883,7 @@ interface AiravataIf {
    */
   public function getComputeResource(\Airavata\Model\Security\AuthzToken $authzToken, $computeResourceId);
   /**
+   * 
    * Fetch all registered Compute Resources.
    * 
    * @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1852,7 +2009,7 @@ interface AiravataIf {
    */
   public function getAllStorageResourceNames(\Airavata\Model\Security\AuthzToken $authzToken);
   /**
-   * Update a Compute Resource.
+   * Update a Storage Resource.
    * 
    * @param storageResourceId
    *   The identifier for the requested compute resource to be updated.
@@ -1878,7 +2035,7 @@ interface AiravataIf {
    * Delete a Storage Resource.
    * 
    * @param storageResourceId
-   *   The identifier for the requested compute resource to be deleted.
+   *   The identifier of the requested compute resource to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -2054,6 +2211,7 @@ interface AiravataIf {
    */
   public function getSSHJobSubmission(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionId);
   /**
+   * 
    * Add a UNICORE Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    * 
@@ -2082,10 +2240,13 @@ interface AiravataIf {
    */
   public function addUNICOREJobSubmissionDetails(\Airavata\Model\Security\AuthzToken $authzToken, $computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission);
   /**
+   *   *
    *   * This method returns UnicoreJobSubmission object
+   *   *
    *   * @param jobSubmissionInterfaceId
    *   *   The identifier of the JobSubmission Interface to be retrieved.
    *   *  @return UnicoreJobSubmission instance
+   *   *
    * *
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -2104,6 +2265,7 @@ interface AiravataIf {
    */
   public function getUnicoreJobSubmission(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionId);
   /**
+   *    *
    *    * Add a Cloud Job Submission details to a compute resource
    *    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *    *
@@ -2118,6 +2280,7 @@ interface AiravataIf {
    *    *
    *    * @return status
    *    *   Returns the unique job submission id.
+   *    *
    * *
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -2132,6 +2295,7 @@ interface AiravataIf {
    */
   public function addCloudJobSubmissionDetails(\Airavata\Model\Security\AuthzToken $authzToken, $computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $cloudSubmission);
   /**
+   *    *
    *    * This method returns cloudJobSubmission object
    *    * @param jobSubmissionInterfaceI
    *        *   The identifier of the JobSubmission Interface to be retrieved.
@@ -2151,6 +2315,7 @@ interface AiravataIf {
    */
   public function getCloudJobSubmission(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionId);
   /**
+   * 
    * Update the given SSH Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -2174,6 +2339,7 @@ interface AiravataIf {
    */
   public function updateSSHJobSubmissionDetails(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission);
   /**
+   * 
    * Update the cloud Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -2197,6 +2363,7 @@ interface AiravataIf {
    */
   public function updateCloudJobSubmissionDetails(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $sshJobSubmission);
   /**
+   * 
    * Update the UNIOCRE Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -2221,6 +2388,7 @@ interface AiravataIf {
    */
   public function updateUnicoreJobSubmissionDetails(\Airavata\Model\Security\AuthzToken $authzToken, $jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission);
   /**
+   * 
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2254,6 +2422,7 @@ interface AiravataIf {
    */
   public function addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $resourceId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement);
   /**
+   * 
    * Update the given Local data movement details
    * 
    * @param dataMovementInterfaceId
@@ -2278,7 +2447,8 @@ interface AiravataIf {
    */
   public function updateLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $dataMovementInterfaceId, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement);
   /**
-   * This method returns local datamovement object
+   * 
+   * This method returns local datamovement object.
    * 
    * @param dataMovementId
    *   The identifier of the datamovement Interface to be retrieved.
@@ -2304,6 +2474,7 @@ interface AiravataIf {
    */
   public function getLocalDataMovement(\Airavata\Model\Security\AuthzToken $authzToken, $dataMovementId);
   /**
+   * 
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2333,6 +2504,7 @@ interface AiravataIf {
    */
   public function addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $resourceId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement);
   /**
+   * 
    * Update the given scp data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2383,6 +2555,7 @@ interface AiravataIf {
    */
   public function getSCPDataMovement(\Airavata\Model\Security\AuthzToken $authzToken, $dataMovementId);
   /**
+   * 
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2412,6 +2585,7 @@ interface AiravataIf {
    */
   public function addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $resourceId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement);
   /**
+   * 
    * Update a selected UNICORE data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2437,6 +2611,7 @@ interface AiravataIf {
    */
   public function updateUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $dataMovementInterfaceId, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement);
   /**
+   * 
    * This method returns UNICORE datamovement object
    * 
    * @param dataMovementId
@@ -2460,6 +2635,7 @@ interface AiravataIf {
    */
   public function getUnicoreDataMovement(\Airavata\Model\Security\AuthzToken $authzToken, $dataMovementId);
   /**
+   * 
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2777,7 +2953,7 @@ interface AiravataIf {
    * Fetch the given Gateway Resource Profile.
    * 
    * @param gatewayID
-   *   The identifier for the requested gateway resource
+   *   The identifier for the requested gateway resource.
    * 
    * @return gatewayResourceProfile
    *    Gateway Resource Profile Object.
@@ -2874,6 +3050,22 @@ interface AiravataIf {
    */
   public function addGatewayComputeResourcePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $computeResourceId, \Airavata\Model\AppCatalog\GatewayProfile\ComputeResourcePreference $computeResourcePreference);
   /**
+   * Add a Storage Resource Preference to a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be added.
+   * 
+   * @param storageResourceId
+   *   Preferences related to a particular compute resource
+   * 
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
    * @param string $storageResourceId
@@ -2886,6 +3078,7 @@ interface AiravataIf {
    */
   public function addGatewayStoragePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $storageResourceId, \Airavata\Model\AppCatalog\GatewayProfile\StoragePreference $storagePreference);
   /**
+   * 
    * Fetch a Compute Resource Preference of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2941,6 +3134,19 @@ interface AiravataIf {
    */
   public function getGatewayComputeResourcePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $computeResourceId);
   /**
+   * 
+   * Fetch a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+   * 
+   * @param storageResourceId
+   *   Identifier of the Stprage Preference required to be fetched.
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
    * @param string $storageResourceId
@@ -2952,6 +3158,7 @@ interface AiravataIf {
    */
   public function getGatewayStoragePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $storageResourceId);
   /**
+   * 
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2971,6 +3178,15 @@ interface AiravataIf {
    */
   public function getAllGatewayComputeResourcePreferences(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID);
   /**
+   * Fetch all Storage Resource Preferences of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
    * @return \Airavata\Model\AppCatalog\GatewayProfile\StoragePreference[]
@@ -2981,7 +3197,12 @@ interface AiravataIf {
    */
   public function getAllGatewayStoragePreferences(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID);
   /**
-   * Fetch all gateway profiles registered
+   * 
+   * Fetch all Gateway Profiles registered
+   * 
+   * @return GatewayResourceProfile
+   *   Returns all the GatewayResourcePrifle list object.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -3020,6 +3241,21 @@ interface AiravataIf {
    */
   public function updateGatewayComputeResourcePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $computeResourceId, \Airavata\Model\AppCatalog\GatewayProfile\ComputeResourcePreference $computeResourcePreference);
   /**
+   * Update a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be updated.
+   * 
+   * @param storageId
+   *   The Storage resource identifier of the one that you want to update
+   * 
+   * @param storagePreference
+   *   The storagePreference object to be updated to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the updation.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
    * @param string $storageId
@@ -3055,6 +3291,18 @@ interface AiravataIf {
    */
   public function deleteGatewayComputeResourcePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $computeResourceId);
   /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
    * @param string $storageId
@@ -3066,6 +3314,18 @@ interface AiravataIf {
    */
   public function deleteGatewayStoragePreference(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayID, $storageId);
   /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayId
    * @return string[]
@@ -3076,9 +3336,13 @@ interface AiravataIf {
    */
   public function getAllWorkflows(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId);
   /**
+   * 
+   * API Methods Related for Work-Flow Submission Features.
+   * 
+   * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $workflowTemplateId
-   * @return \Airavata\Model\Workflow
+   * @return \Airavata\Model\WorkflowModel
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
@@ -3097,24 +3361,24 @@ interface AiravataIf {
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayId
-   * @param \Airavata\Model\Workflow $workflow
+   * @param \Airavata\Model\WorkflowModel $workflow
    * @return string
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\Workflow $workflow);
+  public function registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\WorkflowModel $workflow);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $workflowTemplateId
-   * @param \Airavata\Model\Workflow $workflow
+   * @param \Airavata\Model\WorkflowModel $workflow
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\Workflow $workflow);
+  public function updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\WorkflowModel $workflow);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $workflowName
@@ -3136,7 +3400,9 @@ interface AiravataIf {
    */
   public function isWorkflowExistWithName(\Airavata\Model\Security\AuthzToken $authzToken, $workflowName);
   /**
-   *  * Data Manager Related API Methods
+   *  *
+   *  * Data Manager Related API Methods.
+   *  *
    * *
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -11571,13 +11837,13 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     return;
   }
 
-  public function registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\Workflow $workflow)
+  public function registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\WorkflowModel $workflow)
   {
     $this->send_registerWorkflow($authzToken, $gatewayId, $workflow);
     return $this->recv_registerWorkflow();
   }
 
-  public function send_registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\Workflow $workflow)
+  public function send_registerWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, \Airavata\Model\WorkflowModel $workflow)
   {
     $args = new \Airavata\API\Airavata_registerWorkflow_args();
     $args->authzToken = $authzToken;
@@ -11636,13 +11902,13 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("registerWorkflow failed: unknown result");
   }
 
-  public function updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\Workflow $workflow)
+  public function updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\WorkflowModel $workflow)
   {
     $this->send_updateWorkflow($authzToken, $workflowTemplateId, $workflow);
     $this->recv_updateWorkflow();
   }
 
-  public function send_updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\Workflow $workflow)
+  public function send_updateWorkflow(\Airavata\Model\Security\AuthzToken $authzToken, $workflowTemplateId, \Airavata\Model\WorkflowModel $workflow)
   {
     $args = new \Airavata\API\Airavata_updateWorkflow_args();
     $args->authzToken = $authzToken;
@@ -51488,7 +51754,7 @@ class Airavata_getWorkflow_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Workflow
+   * @var \Airavata\Model\WorkflowModel
    */
   public $success = null;
   /**
@@ -51514,7 +51780,7 @@ class Airavata_getWorkflow_result {
         0 => array(
           'var' => 'success',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workflow',
+          'class' => '\Airavata\Model\WorkflowModel',
           ),
         1 => array(
           'var' => 'ire',
@@ -51578,7 +51844,7 @@ class Airavata_getWorkflow_result {
       {
         case 0:
           if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Workflow();
+            $this->success = new \Airavata\Model\WorkflowModel();
             $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
@@ -51931,7 +52197,7 @@ class Airavata_registerWorkflow_args {
    */
   public $gatewayId = null;
   /**
-   * @var \Airavata\Model\Workflow
+   * @var \Airavata\Model\WorkflowModel
    */
   public $workflow = null;
 
@@ -51950,7 +52216,7 @@ class Airavata_registerWorkflow_args {
         3 => array(
           'var' => 'workflow',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workflow',
+          'class' => '\Airavata\Model\WorkflowModel',
           ),
         );
     }
@@ -52003,7 +52269,7 @@ class Airavata_registerWorkflow_args {
           break;
         case 3:
           if ($ftype == TType::STRUCT) {
-            $this->workflow = new \Airavata\Model\Workflow();
+            $this->workflow = new \Airavata\Model\WorkflowModel();
             $xfer += $this->workflow->read($input);
           } else {
             $xfer += $input->skip($ftype);
@@ -52237,7 +52503,7 @@ class Airavata_updateWorkflow_args {
    */
   public $workflowTemplateId = null;
   /**
-   * @var \Airavata\Model\Workflow
+   * @var \Airavata\Model\WorkflowModel
    */
   public $workflow = null;
 
@@ -52256,7 +52522,7 @@ class Airavata_updateWorkflow_args {
         3 => array(
           'var' => 'workflow',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workflow',
+          'class' => '\Airavata\Model\WorkflowModel',
           ),
         );
     }
@@ -52309,7 +52575,7 @@ class Airavata_updateWorkflow_args {
           break;
         case 3:
           if ($ftype == TType::STRUCT) {
-            $this->workflow = new \Airavata\Model\Workflow();
+            $this->workflow = new \Airavata\Model\WorkflowModel();
             $xfer += $this->workflow->read($input);
           } else {
             $xfer += $input->skip($ftype);


[37/50] [abbrv] airavata git commit: adding workflow catalog properties and fixing issues with starting up databases

Posted by ch...@apache.org.
adding workflow catalog properties and fixing issues with starting up databases


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

Branch: refs/heads/master
Commit: e21fae79eeb6c7aae6f482db3e20e5745ccac6ed
Parents: fb75a2f
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Fri Feb 5 14:40:04 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Fri Feb 5 14:40:04 2016 -0500

----------------------------------------------------------------------
 .../airavata/api/server/AiravataAPIServer.java  |  13 +-
 .../api/server/util/AppCatalogInitUtil.java     |   4 +-
 .../server/util/ExperimentCatalogInitUtil.java  | 203 +++++++++++++++++++
 .../api/server/util/RegistryInitUtil.java       | 203 -------------------
 .../server/util/WorkflowCatalogInitUtil.java    |   4 +-
 .../handler/AiravataServerHandlerTest.java      |   4 +-
 .../main/resources/airavata-server.properties   |  16 +-
 .../main/resources/workflowcatalog-derby.sql    |  14 +-
 .../main/resources/workflowcatalog-mysql.sql    |  16 +-
 9 files changed, 238 insertions(+), 239 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
index 49ddec7..d2e50ef 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
@@ -32,14 +32,13 @@ import org.apache.airavata.api.server.security.SecurityManagerFactory;
 import org.apache.airavata.api.server.security.interceptor.SecurityModule;
 import org.apache.airavata.api.server.util.AppCatalogInitUtil;
 import org.apache.airavata.api.server.util.Constants;
-import org.apache.airavata.api.server.util.RegistryInitUtil;
+import org.apache.airavata.api.server.util.ExperimentCatalogInitUtil;
 import org.apache.airavata.api.server.util.WorkflowCatalogInitUtil;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.IServer;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.model.error.AiravataErrorType;
 import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
 import org.apache.airavata.security.AiravataSecurityException;
 import org.apache.thrift.server.TServer;
 import org.apache.thrift.server.TThreadPoolServer;
@@ -68,9 +67,9 @@ public class AiravataAPIServer implements IServer{
 	
     public void startAiravataServer(Airavata.Processor<Airavata.Iface> airavataAPIServer) throws AiravataSystemException {
         try {
-            RegistryInitUtil.initializeDB();
+            ExperimentCatalogInitUtil.initializeDB();
             AppCatalogInitUtil.initializeDB();
-//            WorkflowCatalogInitUtil.initializeDB();
+            WorkflowCatalogInitUtil.initializeDB();
             final String serverHost = ServerSettings.getSetting(Constants.API_SERVER_HOST, null);
             if (!ServerSettings.isTLSEnabled()) {
                 final int serverPort = Integer.parseInt(ServerSettings.getSetting(Constants.API_SERVER_PORT, "8930"));
@@ -102,7 +101,7 @@ public class AiravataAPIServer implements IServer{
 				new Thread() {
 					public void run() {
                         server.serve();
-						RegistryInitUtil.stopDerbyInServerMode();
+						ExperimentCatalogInitUtil.stopDerbyInServerMode();
 						setStatus(ServerStatus.STOPPED);
 						logger.info("Airavata API Server Stopped.");
 					}
@@ -140,7 +139,7 @@ public class AiravataAPIServer implements IServer{
                 new Thread() {
                     public void run() {
                         TLSServer.serve();
-                        RegistryInitUtil.stopDerbyInServerMode();
+                        ExperimentCatalogInitUtil.stopDerbyInServerMode();
                         setStatus(ServerStatus.STOPPED);
                         logger.info("Airavata API Server over TLS Stopped.");
                     }
@@ -169,7 +168,7 @@ public class AiravataAPIServer implements IServer{
         } catch (TTransportException e) {
             logger.error(e.getMessage());
             setStatus(ServerStatus.FAILED);
-            RegistryInitUtil.stopDerbyInServerMode();
+            ExperimentCatalogInitUtil.stopDerbyInServerMode();
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         } catch (ApplicationSettingsException e) {
             logger.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AppCatalogInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AppCatalogInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AppCatalogInitUtil.java
index c6dcd22..0be8922 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AppCatalogInitUtil.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AppCatalogInitUtil.java
@@ -74,9 +74,9 @@ public class AppCatalogInitUtil {
             conn = db.connect();
             if (!DatabaseCreator.isDatabaseStructureCreated(COMPUTE_RESOURCE, conn)) {
                 DatabaseCreator.createRegistryDatabase("database_scripts/appcatalog", conn);
-                logger.info("New Database created for App Catalog");
+                logger.info("New Database created for App Catalog !!!");
             } else {
-                logger.info("Database already created for App Catalog!");
+                logger.info("Database already created for App Catalog !!!");
             }
             GatewayProfileResource gatewayProfileResource = new GatewayProfileResource();
             if (!gatewayProfileResource.isExists(ServerSettings.getDefaultUserGateway())){

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/ExperimentCatalogInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/ExperimentCatalogInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/ExperimentCatalogInitUtil.java
new file mode 100644
index 0000000..5e68c40
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/ExperimentCatalogInitUtil.java
@@ -0,0 +1,203 @@
+/*
+*
+* 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.api.server.util;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URI;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
+import org.apache.airavata.registry.core.experiment.catalog.ResourceType;
+import org.apache.airavata.registry.core.experiment.catalog.resources.GatewayResource;
+import org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource;
+import org.apache.airavata.registry.core.experiment.catalog.resources.UserResource;
+import org.apache.airavata.registry.core.experiment.catalog.resources.WorkerResource;
+import org.apache.derby.drda.NetworkServerControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ExperimentCatalogInitUtil {
+    public static final String CONFIGURATION_TABLE = "CONFIGURATION";
+    private static final Logger logger = LoggerFactory.getLogger(ExperimentCatalogInitUtil.class);
+    public static final String REGISTRY_JDBC_DRIVER = "registry.jdbc.driver";
+    public static final String REGISTRY_JDBC_URL = "registry.jdbc.url";
+    public static final String REGISTRY_JDBC_USER = "registry.jdbc.user";
+    public static final String REGISTRY_JDBC_PASSWORD = "registry.jdbc.password";
+    public static final String START_DERBY_ENABLE = "start.derby.server.mode";
+    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
+    public static final String DEFAULT_PROJECT_NAME = "default";
+    private static NetworkServerControl server;
+    private static JdbcStorage db;
+    private static String jdbcURl;
+    private static String jdbcDriver;
+    private static String jdbcUser;
+    private static String jdbcPassword;
+
+
+    public static void initializeDB() {
+        System.setProperty("registry.initialize.state", "0");
+        try{
+            jdbcDriver = ServerSettings.getSetting(REGISTRY_JDBC_DRIVER);
+            jdbcURl = ServerSettings.getSetting(REGISTRY_JDBC_URL);
+            jdbcUser = ServerSettings.getSetting(REGISTRY_JDBC_USER);
+            jdbcPassword = ServerSettings.getSetting(REGISTRY_JDBC_PASSWORD);
+            jdbcURl = jdbcURl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", e.getMessage());
+        }
+
+        if (getDBType(jdbcURl).equals("derby") && isDerbyStartEnabled()) {
+            startDerbyInServerMode();
+        }
+        db = new JdbcStorage(10, 50, jdbcURl, jdbcDriver, true);
+
+        Connection conn = null;
+        try {
+            conn = db.connect();
+            if (!DatabaseCreator.isDatabaseStructureCreated(CONFIGURATION_TABLE, conn)) {
+                DatabaseCreator.createRegistryDatabase("database_scripts/expcatalog", conn);
+                logger.info("New Database created for Experiment Catalog !!!");
+            } else {
+                logger.info("Database already created for Experiment Catalog !!!");
+            }
+            try{
+                GatewayResource gateway;
+                if (!ExpCatResourceUtils.isGatewayExist(ServerSettings.getDefaultUserGateway())){
+                    gateway = (GatewayResource)ExpCatResourceUtils.createGateway(ServerSettings.getDefaultUserGateway());
+                    gateway.save();
+                }else {
+                    gateway = (GatewayResource)ExpCatResourceUtils.getGateway(ServerSettings.getDefaultUserGateway());
+                }
+
+                UserResource user;
+                if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway())){
+                    user = ExpCatResourceUtils.createUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserPassword(), ServerSettings.getDefaultUserGateway());
+                    user.save();
+                }else {
+                    user = (UserResource)ExpCatResourceUtils.getUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway());
+                }
+
+                WorkerResource workerResource;
+                if (!gateway.isExists(ResourceType.GATEWAY_WORKER, ServerSettings.getDefaultUserGateway())){
+                    workerResource = (WorkerResource)gateway.create(ResourceType.GATEWAY_WORKER);
+                    workerResource.setUser(user.getUserName());
+                    workerResource.save();
+                }else {
+                    workerResource =  (WorkerResource)gateway.get(ResourceType.GATEWAY_WORKER, ServerSettings.getDefaultUser());
+                }
+                ProjectResource projectResource;
+                if (!workerResource.isExists(ResourceType.PROJECT, DEFAULT_PROJECT_NAME)){
+                    projectResource = workerResource.createProject(DEFAULT_PROJECT_NAME);
+                    projectResource.setName(DEFAULT_PROJECT_NAME);
+                    projectResource.setGatewayId(gateway.getGatewayId());
+                    projectResource.save();
+                }
+
+            } catch (ApplicationSettingsException e) {
+                logger.error("Unable to read airavata-server properties...", e.getMessage());
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RuntimeException("Database failure", e);
+        } finally {
+            db.closeConnection(conn);
+            try {
+                if(conn != null){
+                    if (!conn.getAutoCommit()) {
+                        conn.commit();
+                    }
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                logger.error("Error while closing database connection...", e.getMessage(), e);
+            }
+        }
+        System.setProperty("registry.initialize.state", "1");
+    }
+
+    public static String getDBType(String jdbcUrl){
+        try{
+            String cleanURI = jdbcUrl.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getScheme();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return null;
+        }
+    }
+
+    public static boolean isDerbyStartEnabled(){
+        try {
+            String s = ServerSettings.getSetting(START_DERBY_ENABLE);
+            if("true".equals(s)){
+                return true;
+            }
+        }  catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", e.getMessage(), e);
+            return false;
+        }
+        return false;
+    }
+
+    public static void startDerbyInServerMode() {
+        try {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+                    getPort(jdbcURl),
+                    jdbcUser, jdbcPassword);
+            java.io.PrintWriter consoleWriter = new java.io.PrintWriter(System.out, true);
+            server.start(consoleWriter);
+        } catch (IOException e) {
+            logger.error("Unable to start Apache derby in the server mode! Check whether " +
+                    "specified port is available");
+        } catch (Exception e) {
+            logger.error("Unable to start Apache derby in the server mode! Check whether " +
+                    "specified port is available");
+        }
+    }
+    
+    public static void stopDerbyInServerMode() {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false");
+            if (server!=null){
+            	try {
+					server.shutdown();
+				} catch (Exception e) {
+		            logger.error("Error when stopping the derby server : "+e.getLocalizedMessage());
+				}
+            }
+    }
+
+    public static int getPort(String jdbcURL){
+        try{
+            String cleanURI = jdbcURL.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getPort();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return -1;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
deleted file mode 100644
index 9f61c65..0000000
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*   http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*
-*/
-
-package org.apache.airavata.api.server.util;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.URI;
-import java.sql.Connection;
-import java.sql.SQLException;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
-import org.apache.airavata.registry.core.experiment.catalog.ResourceType;
-import org.apache.airavata.registry.core.experiment.catalog.resources.GatewayResource;
-import org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource;
-import org.apache.airavata.registry.core.experiment.catalog.resources.UserResource;
-import org.apache.airavata.registry.core.experiment.catalog.resources.WorkerResource;
-import org.apache.derby.drda.NetworkServerControl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RegistryInitUtil {
-    public static final String CONFIGURATION_TABLE = "CONFIGURATION";
-    private static final Logger logger = LoggerFactory.getLogger(RegistryInitUtil.class);
-    public static final String REGISTRY_JDBC_DRIVER = "registry.jdbc.driver";
-    public static final String REGISTRY_JDBC_URL = "registry.jdbc.url";
-    public static final String REGISTRY_JDBC_USER = "registry.jdbc.user";
-    public static final String REGISTRY_JDBC_PASSWORD = "registry.jdbc.password";
-    public static final String START_DERBY_ENABLE = "start.derby.server.mode";
-    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
-    public static final String DEFAULT_PROJECT_NAME = "default";
-    private static NetworkServerControl server;
-    private static JdbcStorage db;
-    private static String jdbcURl;
-    private static String jdbcDriver;
-    private static String jdbcUser;
-    private static String jdbcPassword;
-
-
-    public static void initializeDB() {
-        System.setProperty("registry.initialize.state", "0");
-        try{
-            jdbcDriver = ServerSettings.getSetting(REGISTRY_JDBC_DRIVER);
-            jdbcURl = ServerSettings.getSetting(REGISTRY_JDBC_URL);
-            jdbcUser = ServerSettings.getSetting(REGISTRY_JDBC_USER);
-            jdbcPassword = ServerSettings.getSetting(REGISTRY_JDBC_PASSWORD);
-            jdbcURl = jdbcURl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
-        } catch (ApplicationSettingsException e) {
-            logger.error("Unable to read airavata server properties", e.getMessage());
-        }
-
-        if (getDBType(jdbcURl).equals("derby") && isDerbyStartEnabled()) {
-            startDerbyInServerMode();
-        }
-        db = new JdbcStorage(10, 50, jdbcURl, jdbcDriver, true);
-
-        Connection conn = null;
-        try {
-            conn = db.connect();
-            if (!DatabaseCreator.isDatabaseStructureCreated(CONFIGURATION_TABLE, conn)) {
-                DatabaseCreator.createRegistryDatabase("database_scripts/expcatalog", conn);
-                logger.info("New Database created for Registry");
-            } else {
-                logger.info("Database already created for Registry!");
-            }
-            try{
-                GatewayResource gateway;
-                if (!ExpCatResourceUtils.isGatewayExist(ServerSettings.getDefaultUserGateway())){
-                    gateway = (GatewayResource)ExpCatResourceUtils.createGateway(ServerSettings.getDefaultUserGateway());
-                    gateway.save();
-                }else {
-                    gateway = (GatewayResource)ExpCatResourceUtils.getGateway(ServerSettings.getDefaultUserGateway());
-                }
-
-                UserResource user;
-                if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway())){
-                    user = ExpCatResourceUtils.createUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserPassword(), ServerSettings.getDefaultUserGateway());
-                    user.save();
-                }else {
-                    user = (UserResource)ExpCatResourceUtils.getUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway());
-                }
-
-                WorkerResource workerResource;
-                if (!gateway.isExists(ResourceType.GATEWAY_WORKER, ServerSettings.getDefaultUserGateway())){
-                    workerResource = (WorkerResource)gateway.create(ResourceType.GATEWAY_WORKER);
-                    workerResource.setUser(user.getUserName());
-                    workerResource.save();
-                }else {
-                    workerResource =  (WorkerResource)gateway.get(ResourceType.GATEWAY_WORKER, ServerSettings.getDefaultUser());
-                }
-                ProjectResource projectResource;
-                if (!workerResource.isExists(ResourceType.PROJECT, DEFAULT_PROJECT_NAME)){
-                    projectResource = workerResource.createProject(DEFAULT_PROJECT_NAME);
-                    projectResource.setName(DEFAULT_PROJECT_NAME);
-                    projectResource.setGatewayId(gateway.getGatewayId());
-                    projectResource.save();
-                }
-
-            } catch (ApplicationSettingsException e) {
-                logger.error("Unable to read airavata-server properties...", e.getMessage());
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException("Database failure", e);
-        } finally {
-            db.closeConnection(conn);
-            try {
-                if(conn != null){
-                    if (!conn.getAutoCommit()) {
-                        conn.commit();
-                    }
-                    conn.close();
-                }
-            } catch (SQLException e) {
-                logger.error("Error while closing database connection...", e.getMessage(), e);
-            }
-        }
-        System.setProperty("registry.initialize.state", "1");
-    }
-
-    public static String getDBType(String jdbcUrl){
-        try{
-            String cleanURI = jdbcUrl.substring(5);
-            URI uri = URI.create(cleanURI);
-            return uri.getScheme();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            return null;
-        }
-    }
-
-    public static boolean isDerbyStartEnabled(){
-        try {
-            String s = ServerSettings.getSetting(START_DERBY_ENABLE);
-            if("true".equals(s)){
-                return true;
-            }
-        }  catch (ApplicationSettingsException e) {
-            logger.error("Unable to read airavata server properties", e.getMessage(), e);
-            return false;
-        }
-        return false;
-    }
-
-    public static void startDerbyInServerMode() {
-        try {
-            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
-            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
-                    getPort(jdbcURl),
-                    jdbcUser, jdbcPassword);
-            java.io.PrintWriter consoleWriter = new java.io.PrintWriter(System.out, true);
-            server.start(consoleWriter);
-        } catch (IOException e) {
-            logger.error("Unable to start Apache derby in the server mode! Check whether " +
-                    "specified port is available");
-        } catch (Exception e) {
-            logger.error("Unable to start Apache derby in the server mode! Check whether " +
-                    "specified port is available");
-        }
-    }
-    
-    public static void stopDerbyInServerMode() {
-            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false");
-            if (server!=null){
-            	try {
-					server.shutdown();
-				} catch (Exception e) {
-		            logger.error("Error when stopping the derby server : "+e.getLocalizedMessage());
-				}
-            }
-    }
-
-    public static int getPort(String jdbcURL){
-        try{
-            String cleanURI = jdbcURL.substring(5);
-            URI uri = URI.create(cleanURI);
-            return uri.getPort();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            return -1;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
index 2a8b75b..ea20c63 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
@@ -74,9 +74,9 @@ public class WorkflowCatalogInitUtil {
             conn = db.connect();
             if (!DatabaseCreator.isDatabaseStructureCreated(WORKFLOW, conn)) {
                 DatabaseCreator.createRegistryDatabase("database_scripts/workflowcatalog", conn);
-                logger.info("New Database created for Workflow Catalog");
+                logger.info("New Database created for Workflow Catalog !!! ");
             } else {
-                logger.info("Database already created for Workflow Catalog!");
+                logger.info("Database already created for Workflow Catalog!!!");
             }
         } catch (Exception e) {
             logger.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
index 228ac05..453d17d 100644
--- a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/AiravataServerHandlerTest.java
@@ -23,7 +23,7 @@ package org.apache.airavata.api.server.handler;
 import junit.framework.Assert;
 import org.apache.airavata.api.server.handler.utils.AppCatInit;
 import org.apache.airavata.api.server.handler.utils.ExpCatInit;
-import org.apache.airavata.api.server.util.RegistryInitUtil;
+import org.apache.airavata.api.server.util.ExperimentCatalogInitUtil;
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
@@ -76,7 +76,7 @@ public class AiravataServerHandlerTest {
 
     @AfterClass
     public static void tearDown(){
-        RegistryInitUtil.stopDerbyInServerMode();
+        ExperimentCatalogInitUtil.stopDerbyInServerMode();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 9275e56..160f49d 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -80,17 +80,17 @@ datacatalog.jdbc.password=airavata
 datacatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ###########################################################################
-#  Data Catalog DB Configuration
+#  Workflow Catalog DB Configuration
 ###########################################################################
 #for derby [AiravataJPARegistry]
-datacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
-datacatalog.jdbc.url=jdbc:derby://localhost:1527/data_catalog;create=true;user=airavata;password=airavata
+workflowcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+workflowcatalog.jdbc.url=jdbc:derby://localhost:1527/workflow_catalog;create=true;user=airavata;password=airavata
 # MySql database configuration
-#datacatalog.jdbc.driver=com.mysql.jdbc.Driver
-#datacatalog.jdbc.url=jdbc:mysql://localhost:3306/data_catalog
-datacatalog.jdbc.user=airavata
-datacatalog.jdbc.password=airavata
-datacatalog.validationQuery=SELECT 1 from CONFIGURATION
+#workflowcatalog.jdbc.driver=com.mysql.jdbc.Driver
+#workflowcatalog.jdbc.url=jdbc:mysql://localhost:3306/workflow_catalog
+workflowcatalog.jdbc.user=airavata
+workflowcatalog.jdbc.password=airavata
+workflowcatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ###########################################################################
 #  Server module Configuration

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
index 8c590f8..51a6ddf 100644
--- a/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
@@ -28,7 +28,7 @@ CREATE TABLE WORKFLOW
         GRAPH CLOB,
         IMAGE BLOB,
         CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT '0000-00-00 00:00:00',
         PRIMARY KEY (TEMPLATE_ID)
 );
 
@@ -73,8 +73,8 @@ CREATE TABLE COMPONENT_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID)
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
@@ -84,7 +84,7 @@ CREATE TABLE WORKFLOW_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -96,7 +96,7 @@ CREATE TABLE EDGE
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -108,7 +108,7 @@ CREATE TABLE PORT
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (PORT_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -122,7 +122,7 @@ CREATE TABLE NODE
         APPLICATION_NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (NODE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e21fae79/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
index 3527d60..5a8ef97 100644
--- a/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
@@ -27,8 +27,8 @@ CREATE TABLE WORKFLOW
         GATEWAY_ID VARCHAR (255),
         GRAPH LONGTEXT,
         IMAGE BLOB,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATION_TIME timestamp DEFAULT NOW(),
+        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         PRIMARY KEY (TEMPLATE_ID)
 );
 
@@ -73,8 +73,8 @@ CREATE TABLE COMPONENT_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID)
+        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
+        PRIMARY KEY (STATUS_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
@@ -84,7 +84,7 @@ CREATE TABLE WORKFLOW_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -96,7 +96,7 @@ CREATE TABLE EDGE
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -108,7 +108,7 @@ CREATE TABLE PORT
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         PRIMARY KEY (PORT_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -122,7 +122,7 @@ CREATE TABLE NODE
         APPLICATION_NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         PRIMARY KEY (NODE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
\ No newline at end of file


[04/50] [abbrv] airavata git commit: publishing experiment statuses

Posted by ch...@apache.org.
publishing experiment statuses


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

Branch: refs/heads/master
Commit: 20fe7b44a1353b9b5ee060bcf0820b1265951e13
Parents: 70358df
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 19 16:43:57 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 19 16:43:57 2016 -0500

----------------------------------------------------------------------
 .../server/OrchestratorServerHandler.java       | 19 +++++-------------
 .../orchestrator/util/OrchestratorUtils.java    | 21 ++++++++++++++++----
 2 files changed, 22 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/20fe7b44/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 66861dd..f04fdae 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -27,7 +27,6 @@ import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.common.utils.ZkConstants;
-import org.apache.airavata.credential.store.store.CredentialReader;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.scheduler.HostScheduler;
 import org.apache.airavata.messaging.core.MessageContext;
@@ -44,7 +43,6 @@ import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfil
 import org.apache.airavata.model.error.LaunchValidationException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
 import org.apache.airavata.model.messaging.event.MessageType;
 import org.apache.airavata.model.messaging.event.ProcessIdentifier;
@@ -180,15 +178,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
                 ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
                 status.setReason("submitted all processes");
                 status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-                OrchestratorUtils.updageExperimentStatus(experimentId, status);
+                OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status, publisher, gatewayId);
                 log.info("expId: {}, Launched experiment ", experimentId);
-	            ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.LAUNCHED,
-			            experimentId,
-			            gatewayId);
-	            String messageId = AiravataUtils.getId("EXPERIMENT");
-	            MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId);
-	            messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
-	            publisher.publish(messageContext);
                 OrchestratorServerThreadPoolExecutor.getCachedThreadPool().execute(new SingleAppExperimentRunner(experimentId, token, gatewayId));
             } else if (executionType == ExperimentType.WORKFLOW) {
                 //its a workflow execution experiment
@@ -368,7 +359,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 					ExperimentStatus status = new ExperimentStatus(ExperimentState.CANCELING);
 					status.setReason("Experiment cancel request processed");
 					status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-					OrchestratorUtils.updageExperimentStatus(experimentId, status);
+					OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status, publisher, gatewayId);
 					log.info("expId : " + experimentId + " :- Experiment status updated to " + status.getState());
 					return true;
 				}
@@ -423,12 +414,12 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 //				ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
 //				status.setReason("submitted all processes");
 //				status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-//				OrchestratorUtils.updageExperimentStatus(experimentId, status);
+//				OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status);
 //				log.info("expId: {}, Launched experiment ", experimentId);
 			} catch (Exception e) {
 	            ExperimentStatus status = new ExperimentStatus(ExperimentState.FAILED);
 	            status.setReason("Error while updating task status");
-	            OrchestratorUtils.updageExperimentStatus(experimentId, status);
+	            OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status, publisher, gatewayId);
 	            log.error("expId: " + experimentId + ", Error while updating task status, hence updated experiment status to " +
 			            ExperimentState.FAILED, e);
                 ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.FAILED,
@@ -547,7 +538,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 					}
 					if (status.getState() != null) {
 						status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-						OrchestratorUtils.updageExperimentStatus(processIdentity.getExperimentId(), status);
+						OrchestratorUtils.updageAndPublishExperimentStatus(processIdentity.getExperimentId(), status, publisher, gatewayName);
 						log.info("expId : " + processIdentity.getExperimentId() + " :- Experiment status updated to " +
 								status.getState());
 					}

http://git-wip-us.apache.org/repos/asf/airavata/blob/20fe7b44/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/util/OrchestratorUtils.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/util/OrchestratorUtils.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/util/OrchestratorUtils.java
index 834d3b6..0a9617d 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/util/OrchestratorUtils.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/util/OrchestratorUtils.java
@@ -20,8 +20,12 @@
  */
 package org.apache.airavata.orchestrator.util;
 
+import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.model.status.ExperimentState;
+import org.apache.airavata.messaging.core.MessageContext;
+import org.apache.airavata.messaging.core.Publisher;
+import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.MessageType;
 import org.apache.airavata.model.status.ExperimentStatus;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
@@ -32,14 +36,23 @@ import org.slf4j.LoggerFactory;
 public class OrchestratorUtils {
 	private static final Logger log = LoggerFactory.getLogger(OrchestratorUtils.class);
 
-	public static void updageExperimentStatus(String experimentId, ExperimentStatus status) {
+	public static void updageAndPublishExperimentStatus(String experimentId, ExperimentStatus status, Publisher publisher, String gatewayId) {
 		try {
 			RegistryFactory.getDefaultExpCatalog().update(ExperimentCatalogModelType.EXPERIMENT_STATUS, status,
 					experimentId);
+            ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(status.getState(),
+                    experimentId,
+                    gatewayId);
+            String messageId = AiravataUtils.getId("EXPERIMENT");
+            MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId);
+            messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
+            publisher.publish(messageContext);
 		} catch (RegistryException e) {
 			log.error("expId : " + experimentId + " Error while updating experiment status to " + status.toString(), e);
-		}
-	}
+		} catch (AiravataException e) {
+            log.error("expId : " + experimentId + " Error while publishing experiment status to " + status.toString(), e);
+        }
+    }
 
 	public static ExperimentStatus getExperimentStatus(String experimentId) throws RegistryException {
 		return ((ExperimentStatus) RegistryFactory.getDefaultExpCatalog().get(ExperimentCatalogModelType


[29/50] [abbrv] airavata git commit: adding workflow related resource layer

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowInputResource.java
new file mode 100644
index 0000000..5cda60b
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowInputResource.java
@@ -0,0 +1,496 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowInput;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowInput_PK;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowInputResource extends WorkflowCatAbstractResource {
+
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowInputResource.class);
+
+    private String wfTemplateId;
+    private String inputKey;
+    private String dataType;
+    private String inputVal;
+    private String metadata;
+    private String appArgument;
+    private String userFriendlyDesc;
+    private boolean standardInput;
+    private int inputOrder;
+    private boolean isRequired;
+    private boolean requiredToCMD;
+    private boolean dataStaged;
+
+    private WorkflowResource workflowResource;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_INPUT);
+            generator.setParameter(WorkflowInputConstants.WF_TEMPLATE_ID, ids.get(WorkflowInputConstants.WF_TEMPLATE_ID));
+            generator.setParameter(WorkflowInputConstants.INPUT_KEY, ids.get(WorkflowInputConstants.INPUT_KEY));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_INPUT);
+            generator.setParameter(WorkflowInputConstants.WF_TEMPLATE_ID, ids.get(WorkflowInputConstants.WF_TEMPLATE_ID));
+            generator.setParameter(WorkflowInputConstants.INPUT_KEY, ids.get(WorkflowInputConstants.INPUT_KEY));
+            Query q = generator.selectQuery(em);
+            WorkflowInput workflowInput = (WorkflowInput) q.getSingleResult();
+            WorkflowInputResource workflowInputResource =
+                    (WorkflowInputResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW_INPUT
+                            , workflowInput);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflowInputResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> wfInputResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_INPUT);
+            List results;
+            if (fieldName.equals(WorkflowInputConstants.WF_TEMPLATE_ID)) {
+                generator.setParameter(WorkflowInputConstants.WF_TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        WorkflowInputResource workflowInputResource =
+                                (WorkflowInputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_INPUT, workflowInput);
+                        wfInputResources.add(workflowInputResource);
+                    }
+                }
+            } else if (fieldName.equals(WorkflowInputConstants.INPUT_KEY)) {
+                generator.setParameter(WorkflowInputConstants.INPUT_KEY, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        WorkflowInputResource workflowInputResource =
+                                (WorkflowInputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_INPUT, workflowInput);
+                        wfInputResources.add(workflowInputResource);
+                    }
+                }
+            } else if (fieldName.equals(WorkflowInputConstants.DATA_TYPE)) {
+                generator.setParameter(WorkflowInputConstants.DATA_TYPE, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        WorkflowInputResource workflowInputResource =
+                                (WorkflowInputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_INPUT, workflowInput);
+                        wfInputResources.add(workflowInputResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for WFInput Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for WFInput Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return wfInputResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> wfInputResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_INPUT);
+            List results;
+            if (fieldName.equals(WorkflowInputConstants.WF_TEMPLATE_ID)) {
+                generator.setParameter(WorkflowInputConstants.WF_TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        wfInputResourceIDs.add(workflowInput.getTemplateID());
+                    }
+                }
+            } else if (fieldName.equals(WorkflowInputConstants.INPUT_KEY)) {
+                generator.setParameter(WorkflowInputConstants.INPUT_KEY, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        wfInputResourceIDs.add(workflowInput.getTemplateID());
+                    }
+                }
+            } else if (fieldName.equals(WorkflowInputConstants.DATA_TYPE)) {
+                generator.setParameter(WorkflowInputConstants.DATA_TYPE, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowInput workflowInput = (WorkflowInput) result;
+                        wfInputResourceIDs.add(workflowInput.getTemplateID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for WFInput resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for WFInput Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return wfInputResourceIDs;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowInput existingWFInput = em.find(WorkflowInput.class, new WorkflowInput_PK(wfTemplateId, inputKey));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            WorkflowInput workflowInput;
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingWFInput == null) {
+                workflowInput = new WorkflowInput();
+            } else {
+            	workflowInput=existingWFInput;
+            }
+            workflowInput.setTemplateID(wfTemplateId);
+            Workflow workflow = em.find(Workflow.class, wfTemplateId);
+            workflowInput.setWorkflow(workflow);
+            workflowInput.setDataType(dataType);
+            workflowInput.setInputKey(inputKey);
+            if (inputVal != null){
+                workflowInput.setInputVal(inputVal.toCharArray());
+            }
+            workflowInput.setMetadata(metadata);
+            workflowInput.setAppArgument(appArgument);
+            workflowInput.setUserFriendlyDesc(userFriendlyDesc);
+            workflowInput.setStandardInput(standardInput);
+            workflowInput.setRequiredToCMD(requiredToCMD);
+            workflowInput.setRequired(isRequired);
+            workflowInput.setDataStaged(dataStaged);
+            if (existingWFInput == null) {
+                em.persist(workflowInput);
+            } else {
+                em.merge(workflowInput);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowInput workflowInput = em.find(WorkflowInput.class, new WorkflowInput_PK(
+                    ids.get(WorkflowInputConstants.WF_TEMPLATE_ID),
+                    ids.get(WorkflowInputConstants.INPUT_KEY)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflowInput != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getWfTemplateId() {
+        return wfTemplateId;
+    }
+
+    public void setWfTemplateId(String wfTemplateId) {
+        this.wfTemplateId = wfTemplateId;
+    }
+
+    public String getInputKey() {
+        return inputKey;
+    }
+
+    public void setInputKey(String inputKey) {
+        this.inputKey = inputKey;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getInputVal() {
+        return inputVal;
+    }
+
+    public void setInputVal(String inputVal) {
+        this.inputVal = inputVal;
+    }
+
+    public String getMetadata() {
+        return metadata;
+    }
+
+    public void setMetadata(String metadata) {
+        this.metadata = metadata;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
+    public String getUserFriendlyDesc() {
+        return userFriendlyDesc;
+    }
+
+    public void setUserFriendlyDesc(String userFriendlyDesc) {
+        this.userFriendlyDesc = userFriendlyDesc;
+    }
+
+    public WorkflowResource getWorkflowResource() {
+        return workflowResource;
+    }
+
+    public void setWorkflowResource(WorkflowResource workflowResource) {
+        this.workflowResource = workflowResource;
+    }
+
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    public boolean getRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean required) {
+        this.isRequired = required;
+    }
+
+    public boolean getRequiredToCMD() {
+        return requiredToCMD;
+    }
+
+    public void setRequiredToCMD(boolean requiredToCMD) {
+        this.requiredToCMD = requiredToCMD;
+    }
+
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowOutputResource.java
new file mode 100644
index 0000000..910136f
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowOutputResource.java
@@ -0,0 +1,489 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowOutput;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowOutput_PK;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowOutputResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowOutputResource.class);
+
+    private String wfTemplateId;
+    private String outputKey;
+    private String outputVal;
+    private String dataType;
+    private boolean isRequired;
+    private boolean dataMovement;
+    private String dataNameLocation;
+    private boolean requiredToCMD;
+    private String searchQuery;
+    private String appArgument;
+    private boolean outputStreaming;
+
+    private WorkflowResource workflowResource;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_OUTPUT);
+            generator.setParameter(WorkflowOutputConstants.WF_TEMPLATE_ID, ids.get(WorkflowOutputConstants.WF_TEMPLATE_ID));
+            generator.setParameter(WorkflowOutputConstants.OUTPUT_KEY, ids.get(WorkflowOutputConstants.OUTPUT_KEY));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_OUTPUT);
+            generator.setParameter(WorkflowOutputConstants.WF_TEMPLATE_ID, ids.get(WorkflowOutputConstants.WF_TEMPLATE_ID));
+            generator.setParameter(WorkflowOutputConstants.OUTPUT_KEY, ids.get(WorkflowOutputConstants.OUTPUT_KEY));
+            Query q = generator.selectQuery(em);
+            WorkflowOutput wfOutput = (WorkflowOutput) q.getSingleResult();
+            WorkflowOutputResource workflowOutputResource =
+                    (WorkflowOutputResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW_OUTPUT
+                            , wfOutput);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflowOutputResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> wfOutputResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_OUTPUT);
+            List results;
+            if (fieldName.equals(WorkflowOutputConstants.WF_TEMPLATE_ID)) {
+                generator.setParameter(WorkflowOutputConstants.WF_TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput wfOutput = (WorkflowOutput) result;
+                        WorkflowOutputResource workflowOutputResource =
+                                (WorkflowOutputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_OUTPUT, wfOutput);
+                        wfOutputResources.add(workflowOutputResource);
+                    }
+                }
+            } else if (fieldName.equals(WorkflowOutputConstants.OUTPUT_KEY)) {
+                generator.setParameter(WorkflowOutputConstants.OUTPUT_KEY, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
+                        WorkflowOutputResource workflowOutputResource =
+                                (WorkflowOutputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_OUTPUT, workflowOutput);
+                        wfOutputResources.add(workflowOutputResource);
+                    }
+                }
+            } else if (fieldName.equals(WorkflowOutputConstants.DATA_TYPE)) {
+                generator.setParameter(WorkflowOutputConstants.DATA_TYPE, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
+                        WorkflowOutputResource workflowOutputResource =
+                                (WorkflowOutputResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_OUTPUT, workflowOutput);
+                        wfOutputResources.add(workflowOutputResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for WF Output Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for WF Output Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return wfOutputResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> wfOutputResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_OUTPUT);
+            List results;
+            if (fieldName.equals(WorkflowOutputConstants.WF_TEMPLATE_ID)) {
+                generator.setParameter(WorkflowOutputConstants.WF_TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
+                        wfOutputResourceIDs.add(workflowOutput.getTemplateId());
+                    }
+                }
+            }
+            if (fieldName.equals(WorkflowOutputConstants.OUTPUT_KEY)) {
+                generator.setParameter(WorkflowOutputConstants.OUTPUT_KEY, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
+                        wfOutputResourceIDs.add(workflowOutput.getTemplateId());
+                    }
+                }
+            } else if (fieldName.equals(WorkflowOutputConstants.DATA_TYPE)) {
+                generator.setParameter(WorkflowOutputConstants.DATA_TYPE, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
+                        wfOutputResourceIDs.add(workflowOutput.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for WF Output resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for WF Output Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return wfOutputResourceIDs;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowOutput existingWorkflowOutput = em.find(WorkflowOutput.class,
+                    new WorkflowOutput_PK(wfTemplateId, outputKey));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingWorkflowOutput != null) {
+                existingWorkflowOutput.setTemplateId(wfTemplateId);
+                Workflow workflow = em.find(Workflow.class, wfTemplateId);
+                existingWorkflowOutput.setWorkflow(workflow);
+                existingWorkflowOutput.setDataType(dataType);
+                existingWorkflowOutput.setOutputKey(outputKey);
+                if (outputVal != null){
+                    existingWorkflowOutput.setOutputVal(outputVal.toCharArray());
+                }
+                existingWorkflowOutput.setDataMovement(dataMovement);
+                existingWorkflowOutput.setDataNameLocation(dataNameLocation);
+                em.merge(existingWorkflowOutput);
+            } else {
+                WorkflowOutput workflowOutput = new WorkflowOutput();
+                workflowOutput.setTemplateId(wfTemplateId);
+                Workflow workflow = em.find(Workflow.class, wfTemplateId);
+                workflowOutput.setWorkflow(workflow);
+                workflowOutput.setDataType(dataType);
+                workflowOutput.setOutputKey(outputKey);
+                if (outputVal != null){
+                    workflowOutput.setOutputVal(outputVal.toCharArray());
+                }
+                workflowOutput.setDataMovement(dataMovement);
+                workflowOutput.setDataNameLocation(dataNameLocation);
+                em.persist(workflowOutput);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowOutput workflowOutput = em.find(WorkflowOutput.class, new WorkflowOutput_PK(
+                    ids.get(WorkflowOutputConstants.WF_TEMPLATE_ID),
+                    ids.get(WorkflowOutputConstants.OUTPUT_KEY)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflowOutput != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getWfTemplateId() {
+        return wfTemplateId;
+    }
+
+    public void setWfTemplateId(String wfTemplateId) {
+        this.wfTemplateId = wfTemplateId;
+    }
+
+    public String getOutputKey() {
+        return outputKey;
+    }
+
+    public void setOutputKey(String outputKey) {
+        this.outputKey = outputKey;
+    }
+
+    public String getOutputVal() {
+        return outputVal;
+    }
+
+    public void setOutputVal(String outputVal) {
+        this.outputVal = outputVal;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public WorkflowResource getWorkflowResource() {
+        return workflowResource;
+    }
+
+    public void setWorkflowResource(WorkflowResource workflowResource) {
+        this.workflowResource = workflowResource;
+    }
+
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    public String getDataNameLocation() {
+        return dataNameLocation;
+    }
+
+    public void setDataNameLocation(String dataNameLocation) {
+        this.dataNameLocation = dataNameLocation;
+    }
+
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    public boolean isRequiredToCMD() {
+        return requiredToCMD;
+    }
+
+    public void setRequiredToCMD(boolean requiredToCMD) {
+        this.requiredToCMD = requiredToCMD;
+    }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowResource.java
new file mode 100644
index 0000000..d487742
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowResource.java
@@ -0,0 +1,437 @@
+/*
+ *
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkflowResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowResource.class);
+    private String wfName;
+    private String createdUser;
+    private String graph;
+    private String wfTemplateId;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+    private String image;
+    private String gatewayId;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Override
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            generator.setParameter(WorkflowConstants.TEMPLATE_ID, identifier);
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            generator.setParameter(WorkflowConstants.TEMPLATE_ID, identifier);
+            Query q = generator.selectQuery(em);
+            Workflow workflow = (Workflow) q.getSingleResult();
+            WorkflowResource workflowResource = (WorkflowResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW, workflow);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflowResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> workflowResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            Query q;
+            if ((fieldName.equals(WorkflowConstants.TEMPLATE_ID)) || (fieldName.equals(WorkflowConstants.GATEWAY_ID))) {
+                generator.setParameter(fieldName, value);
+                q = generator.selectQuery(em);
+                List<?> results = q.getResultList();
+                for (Object result : results) {
+                    Workflow workflow = (Workflow) result;
+                    WorkflowResource workflowResource = (WorkflowResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW, workflow);
+                    workflowResources.add(workflowResource);
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return workflowResources;
+    }
+
+    @Override
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> workflows = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId);
+            Query q = generator.selectQuery(em);
+            List results = q.getResultList();
+            if (results.size() != 0) {
+                for (Object result : results) {
+                    Workflow workflow = (Workflow) result;
+                    WorkflowResource wfResource =
+                            (WorkflowResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW, workflow);
+                    workflows.add(wfResource);
+                }
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return workflows;
+    }
+
+    @Override
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        List<String> workflowIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId);
+            Query q = generator.selectQuery(em);
+            List results = q.getResultList();
+            if (results.size() != 0) {
+                for (Object result : results) {
+                    Workflow workflow = (Workflow) result;
+                    workflowIds.add(workflow.getTemplateId());
+                }
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return workflowIds;
+    }
+
+    @Override
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> workflowResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW);
+            Query q;
+            if ((fieldName.equals(WorkflowConstants.TEMPLATE_ID)) || (fieldName.equals(WorkflowConstants.GATEWAY_ID))) {
+                generator.setParameter(fieldName, value);
+                q = generator.selectQuery(em);
+                List<?> results = q.getResultList();
+                for (Object result : results) {
+                    Workflow workflow = (Workflow) result;
+                    WorkflowResource workflowResource = (WorkflowResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW, workflow);
+                    workflowResourceIDs.add(workflowResource.getWfTemplateId());
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return workflowResourceIDs;
+    }
+
+    @Override
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Workflow existingWorkflow = em.find(Workflow.class, wfTemplateId);
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            Workflow workflow;
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingWorkflow == null) {
+                workflow = new Workflow();
+                workflow.setCreationTime(AiravataUtils.getCurrentTimestamp());
+            } else {
+                workflow = existingWorkflow;
+                workflow.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+            }
+            workflow.setWorkflowName(getWfName());
+            workflow.setCreatedUser(getCreatedUser());
+            workflow.setGatewayId(gatewayId);
+            if (getGraph() != null){
+                workflow.setGraph(getGraph().toCharArray());
+            }
+            if (image != null){
+                workflow.setImage(image.getBytes());
+            }
+            workflow.setTemplateId(getWfTemplateId());
+            if (existingWorkflow == null) {
+                em.persist(workflow);
+            } else {
+                em.merge(workflow);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Workflow workflow = em.find(Workflow.class, identifier);
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return workflow != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getWfName() {
+        return wfName;
+    }
+
+    public String getCreatedUser() {
+        return createdUser;
+    }
+
+    public String getGraph() {
+        return graph;
+    }
+
+    public String getWfTemplateId() {
+        return wfTemplateId;
+    }
+
+    public void setWfName(String wfName) {
+        this.wfName=wfName;
+    }
+
+    public void setCreatedUser(String createdUser) {
+        this.createdUser=createdUser;
+    }
+
+    public void setGraph(String graph) {
+        this.graph=graph;
+    }
+
+    public void setWfTemplateId(String wfTemplateId) {
+        this.wfTemplateId=wfTemplateId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowStatusResource.java
new file mode 100644
index 0000000..3e0c034
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowStatusResource.java
@@ -0,0 +1,369 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowStatus;
+import org.apache.airavata.registry.core.workflow.catalog.model.WorkflowStatus_PK;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WorkflowStatusResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowStatusResource.class);
+
+    private String statusId;
+    private String state;
+    private String reason;
+    private String templateId;
+    private Timestamp updatedTime;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_STATUS);
+            generator.setParameter(WorkflowStatusConstants.STATUS_ID, ids.get(WorkflowStatusConstants.STATUS_ID));
+            generator.setParameter(WorkflowStatusConstants.TEMPLATE_ID, ids.get(WorkflowStatusConstants.TEMPLATE_ID));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_STATUS);
+            generator.setParameter(WorkflowStatusConstants.STATUS_ID, ids.get(WorkflowStatusConstants.STATUS_ID));
+            generator.setParameter(WorkflowStatusConstants.TEMPLATE_ID, ids.get(WorkflowStatusConstants.TEMPLATE_ID));
+            Query q = generator.selectQuery(em);
+            WorkflowStatus status = (WorkflowStatus) q.getSingleResult();
+            WorkflowStatusResource statusResource =
+                    (WorkflowStatusResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.WORKFLOW_STATUS
+                            , status);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return statusResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> statusResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_STATUS);
+            List results;
+            if (fieldName.equals(WorkflowStatusConstants.TEMPLATE_ID)) {
+                generator.setParameter(WorkflowStatusConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowStatus WorkflowStatus = (WorkflowStatus) result;
+                        WorkflowStatusResource statusResource =
+                                (WorkflowStatusResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.WORKFLOW_STATUS, WorkflowStatus);
+                        statusResources.add(statusResource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow status Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow status Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return statusResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> statusResourceIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(WORKFLOW_STATUS);
+            List results;
+            if (fieldName.equals(WorkflowStatusConstants.TEMPLATE_ID)) {
+                generator.setParameter(WorkflowStatusConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        WorkflowStatus WorkflowStatus = (WorkflowStatus) result;
+                        statusResourceIds.add(WorkflowStatus.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow Status resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow Status Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return statusResourceIds;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowStatus existingStatus = em.find(WorkflowStatus.class,new WorkflowStatus_PK(templateId, statusId));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingStatus != null) {
+                existingStatus.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                existingStatus.setWorkflow(workflow);
+                existingStatus.setReason(reason);
+                existingStatus.setState(state);
+                existingStatus.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                em.merge(existingStatus);
+            } else {
+                WorkflowStatus status = new WorkflowStatus();
+                status.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                status.setWorkflow(workflow);
+                status.setReason(reason);
+                status.setState(state);
+                status.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                em.persist(status);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            WorkflowStatus status = em.find(WorkflowStatus.class, new WorkflowStatus_PK(ids.get(WorkflowStatusConstants.TEMPLATE_ID),ids.get(WorkflowStatusConstants.STATUS_ID)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return status != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogJPAUtils.java
new file mode 100644
index 0000000..c78ef9b
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogJPAUtils.java
@@ -0,0 +1,270 @@
+/*
+ *
+ * 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.core.workflow.catalog.utils;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.core.workflow.catalog.model.*;
+import org.apache.airavata.registry.core.workflow.catalog.resources.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+import java.util.HashMap;
+import java.util.Map;
+
+public class WorkflowCatalogJPAUtils {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowCatalogJPAUtils.class);
+    private static final String PERSISTENCE_UNIT_NAME = "workflowcatalog_data";
+    private static final String WFCATALOG_JDBC_DRIVER = "wfcatalog.jdbc.driver";
+    private static final String WFCATALOG_JDBC_URL = "wfcatalog.jdbc.url";
+    private static final String WFCATALOG_JDBC_USER = "wfcatalog.jdbc.user";
+    private static final String WFCATALOG_JDBC_PASSWORD = "wfcatalog.jdbc.password";
+    private static final String WFCATALOG_VALIDATION_QUERY = "wfcatalog.validationQuery";
+    private static final String JPA_CACHE_SIZE = "jpa.cache.size";
+    private static final String JPA_CACHE_ENABLED = "cache.enable";
+    @PersistenceUnit(unitName="workflowcatalog_data")
+    protected static EntityManagerFactory factory;
+    @PersistenceContext(unitName="worlkflowcatalog_data")
+    private static EntityManager wfCatEntityManager;
+
+    public static EntityManager getEntityManager() throws ApplicationSettingsException {
+        if (factory == null) {
+            String connectionProperties = "DriverClassName=" + readServerProperties(WFCATALOG_JDBC_DRIVER) + "," +
+                    "Url=" + readServerProperties(WFCATALOG_JDBC_URL) + "?autoReconnect=true," +
+                    "Username=" + readServerProperties(WFCATALOG_JDBC_USER) + "," +
+                    "Password=" + readServerProperties(WFCATALOG_JDBC_PASSWORD) +
+                    ",validationQuery=" + readServerProperties(WFCATALOG_VALIDATION_QUERY);
+            System.out.println(connectionProperties);
+            Map<String, String> properties = new HashMap<String, String>();
+            properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");
+            properties.put("openjpa.ConnectionProperties", connectionProperties);
+            properties.put("openjpa.DynamicEnhancementAgent", "true");
+            properties.put("openjpa.RuntimeUnenhancedClasses", "unsupported");
+            // For app catalog, we don't need caching
+//            properties.put("openjpa.DataCache","" + readServerProperties(JPA_CACHE_ENABLED) + "(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)");
+//            properties.put("openjpa.QueryCache","" + readServerProperties(JPA_CACHE_ENABLED) + "(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)");
+            properties.put("openjpa.RemoteCommitProvider","sjvm");
+            properties.put("openjpa.Log","DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
+            properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
+            properties.put("openjpa.jdbc.QuerySQLCache", "false");
+            properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000,  autoReconnect=true");
+            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
+        }
+        wfCatEntityManager = factory.createEntityManager();
+        return wfCatEntityManager;
+    }
+
+    private static String readServerProperties (String propertyName) throws ApplicationSettingsException {
+        try {
+            return ServerSettings.getSetting(propertyName);
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata-server.properties...", e);
+            throw new ApplicationSettingsException("Unable to read airavata-server.properties...");
+        }
+    }
+
+    /**
+     *
+     * @param type model type
+     * @param o model type instance
+     * @return corresponding resource object
+     */
+    public static WorkflowCatalogResource getResource(WorkflowCatalogResourceType type, Object o) {
+        switch (type){
+            case WORKFLOW:
+                if (o instanceof Workflow) {
+                    return createWorkflow((Workflow) o);
+                } else {
+                    logger.error("Object should be a Workflow.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Workflow.");
+                }
+            case WORKFLOW_INPUT:
+                if (o instanceof WorkflowInput){
+                    return createWorflowInput((WorkflowInput) o);
+                }else {
+                    logger.error("Object should be a Workflow Input.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Workflow Input.");
+                }
+            case WORKFLOW_OUTPUT:
+                if (o instanceof WorkflowOutput){
+                    return createWorkflowOutput((WorkflowOutput) o);
+                }else {
+                    logger.error("Object should be a Workflow Output.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Workflow Output.");
+                }
+            case COMPONENT_STATUS:
+                if (o instanceof ComponentStatus){
+                    return createComponentStatus((ComponentStatus) o);
+                }else {
+                    logger.error("Object should be a Workflow Output.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Workflow Output.");
+                }
+            case NODE:
+                if (o instanceof Node){
+                    return createNode((Node) o);
+                }else {
+                    logger.error("Object should be a Node.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Node.");
+                }
+            case PORT:
+                if (o instanceof Port){
+                    return createPort((Port) o);
+                }else {
+                    logger.error("Object should be a Port.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Port.");
+                }
+            case EDGE:
+                if (o instanceof Edge){
+                    return createEdge((Edge) o);
+                }else {
+                    logger.error("Object should be a Edge.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Edge.");
+                }
+            default:
+                logger.error("Illegal data type..", new IllegalArgumentException());
+                throw new IllegalArgumentException("Illegal data type..");
+        }
+    }
+	
+    private static WorkflowCatalogResource createWorflowInput(WorkflowInput o) {
+        WorkflowInputResource resource = new WorkflowInputResource();
+        if (o != null){
+            resource.setWfTemplateId(o.getTemplateID());
+            resource.setInputKey(o.getInputKey());
+            if (o.getInputVal() != null){
+                resource.setInputVal(new String(o.getInputVal()));
+            }
+            resource.setDataType(o.getDataType());
+            resource.setMetadata(o.getMetadata());
+            resource.setAppArgument(o.getAppArgument());
+            resource.setInputOrder(o.getInputOrder());
+            resource.setUserFriendlyDesc(o.getUserFriendlyDesc());
+            resource.setStandardInput(o.isStandardInput());
+            resource.setRequired(o.isRequired());
+            resource.setRequiredToCMD(o.isRequiredToCMD());
+            resource.setDataStaged(o.isDataStaged());
+            resource.setWorkflowResource((WorkflowResource)createWorkflow(o.getWorkflow()));
+        }
+        return resource;
+    }
+
+    private static WorkflowCatalogResource createWorkflowOutput(WorkflowOutput o) {
+        WorkflowOutputResource resource = new WorkflowOutputResource();
+        if (o != null){
+            resource.setWfTemplateId(o.getTemplateId());
+            resource.setOutputKey(o.getOutputKey());
+            if (o.getOutputVal() != null){
+                resource.setOutputVal(new String(o.getOutputVal()));
+            }
+            resource.setDataType(o.getDataType());
+            resource.setDataMovement(o.isDataMovement());
+            resource.setDataNameLocation(o.getDataNameLocation());
+            resource.setWorkflowResource((WorkflowResource)createWorkflow(o.getWorkflow()));
+        }
+        return resource;
+    }
+
+    private static ComponentStatusResource createComponentStatus(ComponentStatus o) {
+        ComponentStatusResource resource = new ComponentStatusResource();
+        if (o != null){
+            resource.setStatusId(o.getStatusId());
+            resource.setTemplateId(o.getTemplateId());
+            resource.setUpdatedTime(o.getUpdateTime());
+            resource.setReason(o.getReason());
+            resource.setState(o.getState());
+        }
+        return resource;
+    }
+
+    private static WorkflowStatusResource createWorkflowStatus(WorkflowStatus o) {
+        WorkflowStatusResource resource = new WorkflowStatusResource();
+        if (o != null){
+            resource.setStatusId(o.getStatusId());
+            resource.setTemplateId(o.getTemplateId());
+            resource.setReason(o.getReason());
+            resource.setState(o.getState());
+            resource.setUpdatedTime(o.getUpdateTime());
+        }
+        return resource;
+    }
+
+    private static EdgeResource createEdge(Edge o) {
+        EdgeResource resource = new EdgeResource();
+        if (o != null){
+            resource.setStatusId(o.getComponentStatusId());
+            resource.setTemplateId(o.getTemplateId());
+            resource.setEdgeId(o.getEdgeId());
+            resource.setDescription(o.getDescription());
+            resource.setName(o.getName());
+            resource.setCreatedTime(o.getCreatedTime());
+        }
+        return resource;
+    }
+
+    private static PortResource createPort(Port o) {
+        PortResource resource = new PortResource();
+        if (o != null){
+            resource.setStatusId(o.getComponentStatusId());
+            resource.setTemplateId(o.getTemplateId());
+            resource.setPortId(o.getPortId());
+            resource.setDescription(o.getDescription());
+            resource.setName(o.getName());
+            resource.setCreatedTime(o.getCreatedTime());
+        }
+        return resource;
+    }
+
+    private static NodeResource createNode(Node o) {
+        NodeResource resource = new NodeResource();
+        if (o != null){
+            resource.setStatusId(o.getComponentStatusId());
+            resource.setTemplateId(o.getTemplateId());
+            resource.setNodeId(o.getNodeId());
+            resource.setDescription(o.getDescription());
+            resource.setName(o.getName());
+            resource.setCreatedTime(o.getCreatedTime());
+            resource.setApplicationId(o.getApplicationId());
+            resource.setApplicationName(o.getApplicationName());
+        }
+        return resource;
+    }
+
+    private static WorkflowCatalogResource createWorkflow(Workflow o) {
+        WorkflowResource workflowResource = new WorkflowResource();
+        workflowResource.setWfName(o.getWorkflowName());
+        workflowResource.setCreatedUser(o.getCreatedUser());
+        if (o.getGraph() != null){
+            workflowResource.setGraph(new String(o.getGraph()));
+        }
+        if (o.getImage() != null){
+            workflowResource.setImage(new String(o.getImage()));
+        }
+        workflowResource.setCreatedTime(o.getCreationTime());
+        if (o.getUpdateTime() != null){
+            workflowResource.setUpdatedTime(o.getUpdateTime());
+        }
+        workflowResource.setWfTemplateId(o.getTemplateId());
+        workflowResource.setGatewayId(o.getGatewayId());
+        return workflowResource;
+    }
+}


[50/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
update generated code and fixing compilation issues


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

Branch: refs/heads/master
Commit: 4c790770685a77b1b43c7dadbea55396e983c465
Parents: b4ca1eb
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Feb 8 11:45:01 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Feb 8 11:45:01 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |    8 +-
 .../java/org/apache/airavata/api/Airavata.java  |  724 +++++++----
 .../main/resources/lib/airavata/Airavata.cpp    |   24 +-
 .../src/main/resources/lib/airavata/Airavata.h  |  691 ++++++++---
 .../lib/airavata/Airavata_server.skeleton.cpp   |  628 +++++++---
 .../lib/airavata/workflow_data_model_types.cpp  |  966 ++++++++++++++-
 .../lib/airavata/workflow_data_model_types.h    |  444 ++++++-
 .../resources/lib/Airavata/API/Airavata.php     |  614 ++++++---
 .../main/resources/lib/Airavata/Model/Types.php |  885 ++++++++++++-
 .../lib/apache/airavata/api/Airavata-remote     |    6 +-
 .../lib/apache/airavata/api/Airavata.py         | 1168 +++++++++++++-----
 .../apache/airavata/model/workflow/ttypes.py    |  671 +++++++++-
 .../apache/airavata/model/ComponentStatus.java  |    2 +-
 .../org/apache/airavata/model/EdgeModel.java    |    2 +-
 .../org/apache/airavata/model/NodeModel.java    |    2 +-
 .../org/apache/airavata/model/PortModel.java    |    2 +-
 .../org/apache/airavata/model/Workflow.java     | 1055 ----------------
 .../apache/airavata/model/WorkflowModel.java    |  339 ++++-
 .../apache/airavata/model/WorkflowStatus.java   |    2 +-
 .../ApplicationDeploymentDescription.java       |    2 +-
 .../appdeployment/ApplicationModule.java        |    2 +-
 .../appcatalog/appdeployment/CommandObject.java |    2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |    2 +-
 .../ApplicationInterfaceDescription.java        |    2 +-
 .../appcatalog/computeresource/BatchQueue.java  |    2 +-
 .../computeresource/CloudJobSubmission.java     |    2 +-
 .../ComputeResourceDescription.java             |    2 +-
 .../computeresource/GlobusJobSubmission.java    |    2 +-
 .../computeresource/JobSubmissionInterface.java |    2 +-
 .../computeresource/LOCALSubmission.java        |    2 +-
 .../computeresource/ResourceJobManager.java     |    2 +-
 .../computeresource/SSHJobSubmission.java       |    2 +-
 .../computeresource/UnicoreJobSubmission.java   |    2 +-
 .../ComputeResourcePreference.java              |    2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |    2 +-
 .../gatewayprofile/StoragePreference.java       |    2 +-
 .../StorageResourceDescription.java             |    2 +-
 .../application/io/InputDataObjectType.java     |    2 +-
 .../application/io/OutputDataObjectType.java    |    2 +-
 .../airavata/model/commons/ErrorModel.java      |    2 +-
 .../model/commons/ValidationResults.java        |    2 +-
 .../airavata/model/commons/ValidatorResult.java |    2 +-
 .../data/movement/DataMovementInterface.java    |    2 +-
 .../data/movement/GridFTPDataMovement.java      |    2 +-
 .../model/data/movement/LOCALDataMovement.java  |    2 +-
 .../model/data/movement/SCPDataMovement.java    |    2 +-
 .../data/movement/UnicoreDataMovement.java      |    2 +-
 .../data/resource/DataReplicaLocationModel.java |    2 +-
 .../model/data/resource/DataResourceModel.java  |    2 +-
 .../model/error/AiravataClientException.java    |    2 +-
 .../model/error/AiravataSystemException.java    |    2 +-
 .../model/error/AuthenticationException.java    |    2 +-
 .../model/error/AuthorizationException.java     |    2 +-
 .../error/ExperimentNotFoundException.java      |    2 +-
 .../model/error/InvalidRequestException.java    |    2 +-
 .../model/error/LaunchValidationException.java  |    2 +-
 .../model/error/ProjectNotFoundException.java   |    2 +-
 .../airavata/model/error/TimedOutException.java |    2 +-
 .../airavata/model/error/ValidationResults.java |    2 +-
 .../airavata/model/error/ValidatorResult.java   |    2 +-
 .../model/experiment/ExperimentModel.java       |    2 +-
 .../model/experiment/ExperimentStatistics.java  |    2 +-
 .../experiment/ExperimentSummaryModel.java      |    2 +-
 .../experiment/UserConfigurationDataModel.java  |    2 +-
 .../org/apache/airavata/model/job/JobModel.java |    2 +-
 .../event/ExperimentStatusChangeEvent.java      |    2 +-
 .../model/messaging/event/JobIdentifier.java    |    2 +-
 .../messaging/event/JobStatusChangeEvent.java   |    2 +-
 .../event/JobStatusChangeRequestEvent.java      |    2 +-
 .../airavata/model/messaging/event/Message.java |    2 +-
 .../messaging/event/ProcessIdentifier.java      |    2 +-
 .../event/ProcessStatusChangeEvent.java         |    2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |    2 +-
 .../messaging/event/ProcessSubmitEvent.java     |    2 +-
 .../messaging/event/ProcessTerminateEvent.java  |    2 +-
 .../model/messaging/event/TaskIdentifier.java   |    2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |    2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |    2 +-
 .../event/TaskStatusChangeRequestEvent.java     |    2 +-
 .../airavata/model/process/ProcessModel.java    |    2 +-
 .../ComputationalResourceSchedulingModel.java   |    2 +-
 .../airavata/model/security/AuthzToken.java     |    2 +-
 .../airavata/model/status/ExperimentStatus.java |    2 +-
 .../apache/airavata/model/status/JobStatus.java |    2 +-
 .../airavata/model/status/ProcessStatus.java    |    2 +-
 .../airavata/model/status/TaskStatus.java       |    2 +-
 .../model/task/DataStagingTaskModel.java        |    2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |    2 +-
 .../model/task/JobSubmissionTaskModel.java      |    2 +-
 .../airavata/model/task/MonitorTaskModel.java   |    2 +-
 .../apache/airavata/model/task/TaskModel.java   |    2 +-
 .../airavata/model/workspace/Gateway.java       |    2 +-
 .../apache/airavata/model/workspace/Group.java  |    2 +-
 .../airavata/model/workspace/Project.java       |    2 +-
 .../apache/airavata/model/workspace/User.java   |    2 +-
 .../catalog/impl/WorkflowCatalogImpl.java       |    8 +-
 .../utils/WorkflowCatalogThriftConversion.java  |    6 +-
 .../airavata/registry/cpi/WorkflowCatalog.java  |    7 +-
 .../airavata-apis/airavata_api.thrift           |    6 +-
 99 files changed, 6116 insertions(+), 2296 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 8bf0ee1..03b4e11 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -38,7 +38,7 @@ import org.apache.airavata.data.manager.cpi.DataManagerException;
 import org.apache.airavata.messaging.core.MessageContext;
 import org.apache.airavata.messaging.core.Publisher;
 import org.apache.airavata.messaging.core.PublisherFactory;
-import org.apache.airavata.model.Workflow;
+import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
@@ -4159,7 +4159,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 
 	@Override
     @SecurityCheck
-	public Workflow getWorkflow(AuthzToken authzToken, String workflowTemplateId)
+	public WorkflowModel getWorkflow(AuthzToken authzToken, String workflowTemplateId)
 			throws InvalidRequestException, AiravataClientException, AuthorizationException, AiravataSystemException, TException {
 		try {
 			return getWorkflowCatalog().getWorkflow(workflowTemplateId);
@@ -4189,7 +4189,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 
 	@Override
     @SecurityCheck
-	public String registerWorkflow(AuthzToken authzToken, String gatewayId, Workflow workflow)
+	public String registerWorkflow(AuthzToken authzToken, String gatewayId, WorkflowModel workflow)
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         if (!isGatewayExistInternal(gatewayId)){
             logger.error("Gateway does not exist.Please provide a valid gateway id...");
@@ -4208,7 +4208,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 
 	@Override
     @SecurityCheck
-	public void updateWorkflow(AuthzToken authzToken, String workflowTemplateId, Workflow workflow)
+	public void updateWorkflow(AuthzToken authzToken, String workflowTemplateId, WorkflowModel workflow)
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 		try {
 			getWorkflowCatalog().updateWorkflow(workflowTemplateId, workflow);


[05/50] [abbrv] airavata git commit: Merge remote-tracking branch 'origin/develop' into develop

Posted by ch...@apache.org.
Merge remote-tracking branch 'origin/develop' into develop


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

Branch: refs/heads/master
Commit: 8e421f42c34013a9ad4020f8f1f8441470458b16
Parents: 101c8d4 20fe7b4
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Tue Jan 19 16:44:13 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Tue Jan 19 16:44:13 2016 -0500

----------------------------------------------------------------------
 .../server/OrchestratorServerHandler.java       | 19 +++++-------------
 .../orchestrator/util/OrchestratorUtils.java    | 21 ++++++++++++++++----
 2 files changed, 22 insertions(+), 18 deletions(-)
----------------------------------------------------------------------



[48/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
index 1c6b7e7..8d4b714 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
@@ -52566,7 +52566,7 @@ void AiravataClient::recv_getAllWorkflows(std::vector<std::string> & _return)
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllWorkflows failed: unknown result");
 }
 
-void AiravataClient::getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
+void AiravataClient::getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
   send_getWorkflow(authzToken, workflowTemplateId);
   recv_getWorkflow(_return);
@@ -52587,7 +52587,7 @@ void AiravataClient::send_getWorkflow(const  ::apache::airavata::model::security
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getWorkflow( ::Workflow& _return)
+void AiravataClient::recv_getWorkflow( ::WorkflowModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52703,13 +52703,13 @@ void AiravataClient::recv_deleteWorkflow()
   return;
 }
 
-void AiravataClient::registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow)
+void AiravataClient::registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow)
 {
   send_registerWorkflow(authzToken, gatewayId, workflow);
   recv_registerWorkflow(_return);
 }
 
-void AiravataClient::send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow)
+void AiravataClient::send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("registerWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
@@ -52775,13 +52775,13 @@ void AiravataClient::recv_registerWorkflow(std::string& _return)
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerWorkflow failed: unknown result");
 }
 
-void AiravataClient::updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow)
+void AiravataClient::updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow)
 {
   send_updateWorkflow(authzToken, workflowTemplateId, workflow);
   recv_updateWorkflow();
 }
 
-void AiravataClient::send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow)
+void AiravataClient::send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("updateWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
@@ -75524,7 +75524,7 @@ void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
+void AiravataConcurrentClient::getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
   int32_t seqid = send_getWorkflow(authzToken, workflowTemplateId);
   recv_getWorkflow(_return, seqid);
@@ -75549,7 +75549,7 @@ int32_t AiravataConcurrentClient::send_getWorkflow(const  ::apache::airavata::mo
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getWorkflow( ::Workflow& _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -75720,13 +75720,13 @@ void AiravataConcurrentClient::recv_deleteWorkflow(const int32_t seqid)
   } // end while(true)
 }
 
-void AiravataConcurrentClient::registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow)
+void AiravataConcurrentClient::registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow)
 {
   int32_t seqid = send_registerWorkflow(authzToken, gatewayId, workflow);
   recv_registerWorkflow(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow)
+int32_t AiravataConcurrentClient::send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
@@ -75822,13 +75822,13 @@ void AiravataConcurrentClient::recv_registerWorkflow(std::string& _return, const
   } // end while(true)
 }
 
-void AiravataConcurrentClient::updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow)
+void AiravataConcurrentClient::updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow)
 {
   int32_t seqid = send_updateWorkflow(authzToken, workflowTemplateId, workflow);
   recv_updateWorkflow(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow)
+int32_t AiravataConcurrentClient::send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 76b51e5..a8e91cc 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -183,6 +183,7 @@ class AiravataIf {
   virtual void getSSHPubKey(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Get a Public Key by Providing the Token
    * 
    * @param CredStoreToken
@@ -201,6 +202,7 @@ class AiravataIf {
   virtual void getAllUserSSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName) = 0;
 
   /**
+   * 
    * Get all Public Keys of the Gateway
    * 
    * @param CredStoreToken
@@ -219,6 +221,7 @@ class AiravataIf {
   virtual void getAllGatewaySSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Delete a Gateway
    * 
    * @param gatewayId
@@ -236,6 +239,7 @@ class AiravataIf {
   virtual bool deleteSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
    * 
@@ -243,7 +247,7 @@ class AiravataIf {
    *    The identifier for the requested gateway.
    * 
    * @param Project
-   *    The Project Object described in the workspace_model
+   *    The Project Object described in the workspace_model.
    * 
    * 
    * 
@@ -254,6 +258,7 @@ class AiravataIf {
   virtual void createProject(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Project& project) = 0;
 
   /**
+   * 
    * Update an Existing Project
    * 
    * @param projectId
@@ -271,14 +276,15 @@ class AiravataIf {
   virtual void updateProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const  ::apache::airavata::model::workspace::Project& updatedProject) = 0;
 
   /**
+   * 
    * Get a Project by ID
-   *    This method is to obtain a project by providing a projectId
+   *    This method is to obtain a project by providing a projectId.
    * 
    * @param projectId
-   *    projectId of the project you require
+   *    projectId of the project you require.
    * 
    * @return project
-   *    project data model will be returned
+   *    project data model will be returned.
    * 
    * 
    * 
@@ -288,15 +294,18 @@ class AiravataIf {
   virtual void getProject( ::apache::airavata::model::workspace::Project& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId) = 0;
 
   /**
+   * 
    * Delete a Project
-   *    This method is used to delete an existing Project
+   *    This method is used to delete an existing Project.
    * 
    * @param projectId
-   *    projectId of the project you want to delete
+   *    projectId of the project you want to delete.
    * 
    * @return boolean
    *    Boolean identifier for the success or failure of the deletion operation.
    * 
+   *    NOTE: This method is not used within gateways connected with Airavata.
+   * 
    * 
    * 
    * @param authzToken
@@ -305,20 +314,21 @@ class AiravataIf {
   virtual bool deleteProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId) = 0;
 
   /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
+   * 
+   * Get All User Projects
+   * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
    *    The identifier for the requested gateway.
    * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
    * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
    * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
    * 
    * 
    * 
@@ -331,19 +341,25 @@ class AiravataIf {
   virtual void getUserProjects(std::vector< ::apache::airavata::model::workspace::Project> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
+   * 
+   * Search User Projects by Project Name
+   * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier for the requested gateway.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param projectName
-   *    The name of the project on which the results to be fetched
+   *    The name of the project on which the results to be fetched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -356,19 +372,25 @@ class AiravataIf {
   virtual void searchProjectsByProjectName(std::vector< ::apache::airavata::model::workspace::Project> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::string& projectName, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search and get all Projects for user by project description with pagination. Results
-   * will be ordered based on creation time DESC
+   * 
+   * Search User Projects by Project Description
+   * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier of the gateway making the request.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param description
-   *    The description to be matched
+   *    The description to be matched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -381,19 +403,25 @@ class AiravataIf {
   virtual void searchProjectsByProjectDesc(std::vector< ::apache::airavata::model::workspace::Project> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Name
+   * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user who created the experiments.
+   * 
    * @param expName
-   *       Experiment name to be matched
+   *       Experiment name to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -406,19 +434,25 @@ class AiravataIf {
   virtual void searchExperimentsByName(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::string& expName, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search By Experiment Description
+   * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param description
-   *       Experiment description to be matched
+   *       Experiment description to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -431,19 +465,25 @@ class AiravataIf {
   virtual void searchExperimentsByDesc(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::string& description, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search Experiment By the Application
+   * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param applicationId
-   *       Application id to be matched
+   *       Application id to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -456,19 +496,25 @@ class AiravataIf {
   virtual void searchExperimentsByApplication(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::string& applicationId, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Status
+   * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user making the request.
+   * 
    * @param experimentState
-   *       Experiement state to be matched
+   *       Experiement state to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -481,21 +527,31 @@ class AiravataIf {
   virtual void searchExperimentsByStatus(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const  ::apache::airavata::model::status::ExperimentState::type experimentState, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by the Creation Time
+   * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param fromTime
-   *       Start time of the experiments creation time
+   *       Start time of the experiments creation time.
+   * 
    * @param toTime
-   *       End time of the  experiement creation time
+   *       End time of the  experiement creation time.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -509,19 +565,27 @@ class AiravataIf {
   virtual void searchExperimentsByCreationTime(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const int64_t fromTime, const int64_t toTime, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
+   * Search Experiments.
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user requesting the search function.
+   * 
    * @param filters
-   *       map of multiple filter criteria.
+   *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -534,13 +598,19 @@ class AiravataIf {
   virtual void searchExperiments(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const std::map< ::apache::airavata::model::experiment::ExperimentSearchFields::type, std::string> & filters, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Get Experiment Statisitics for the given gateway for a specific time period
+   * 
+   * Get Experiment Statistics
+   * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+   * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the gateway making the request to fetch statistics.
+   * 
    * @param fromTime
-   *       Starting date time
+   *       Starting date time.
+   * 
    * @param toTime
-   *       Ending data time
+   *       Ending data time.
+   * 
    * 
    * 
    * @param authzToken
@@ -551,15 +621,19 @@ class AiravataIf {
   virtual void getExperimentStatistics( ::apache::airavata::model::experiment::ExperimentStatistics& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const int64_t fromTime, const int64_t toTime) = 0;
 
   /**
-   * Get Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the Project
+   * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param projectId
-   *       Identifier of the project
+   *       Uniqie identifier of the project.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -570,17 +644,22 @@ class AiravataIf {
   virtual void getExperimentsInProject(std::vector< ::apache::airavata::model::experiment::ExperimentModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const int32_t limit, const int32_t offset) = 0;
 
   /**
-   * Get experiments by user with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the User
+   * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requesting gateway
+   *       Identifier of the requesting gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested end user.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -592,12 +671,17 @@ class AiravataIf {
   virtual void getUserExperiments(std::vector< ::apache::airavata::model::experiment::ExperimentModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset) = 0;
 
   /**
+   *   *
+   *   * Create New Experiment
    *   * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
    *   *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
    *   *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
    *   *   registering the experiment in a persistent store.
    *   *
-   *   * @param basicExperimentMetadata
+   *   * @param gatewayId
+   *   *    The unique ID of the gateway where the experiment is been created.
+   *   *
+   *   * @param ExperimentModel
    *   *    The create experiment will require the basic experiment metadata like the name and description, intended user,
    *   *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
    *   *      the ExperimentMetadata is a required field.
@@ -634,8 +718,8 @@ class AiravataIf {
   virtual void createExperiment(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::experiment::ExperimentModel& experiment) = 0;
 
   /**
-   * Delete an Experiment
    * 
+   * Delete an Experiment
    * If the experiment is not already launched experiment can be deleted.
    * 
    * @param authzToken
@@ -644,7 +728,7 @@ class AiravataIf {
    *     Experiment ID of the experimnet you want to delete.
    * 
    * @return boolean
-   *     Identifier for the success or failure of the deletion operation
+   *     Identifier for the success or failure of the deletion operation.
    * 
    * 
    * 
@@ -654,12 +738,14 @@ class AiravataIf {
   virtual bool deleteExperiment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& experimentId) = 0;
 
   /**
+   *   *
+   *   * Get Experiment
    *   * Fetch previously created experiment metadata.
    *   *
    *   * @param airavataExperimentId
-   *   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
    *   *
-   *   * @return experimentMetada
+   *   * @return ExperimentModel
    *   *   This method will return the previously stored experiment metadata.
    *   *
    *   * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -693,14 +779,17 @@ class AiravataIf {
   virtual void getExperiment( ::apache::airavata::model::experiment::ExperimentModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
+   * 
+   * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
    * tasks -> jobs information.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
+   * @return ExperimentModel
+   *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+   *   information, special input output handling and additional quality of service parameters.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -732,14 +821,15 @@ class AiravataIf {
   virtual void getDetailedExperimentTree( ::apache::airavata::model::experiment::ExperimentModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
+   * 
+   * Update a Previously Created Experiment
+   * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+   * The experiment has to be launched to make it actionable by the server.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @param experimentConfigurationData
+   * @param ExperimentModel
    *    The configuration information of the experiment with application input parameters, computational resource scheduling
    *      information, special input output handling and additional quality of service parameters.
    * 
@@ -780,13 +870,14 @@ class AiravataIf {
 
   /**
    *  *
-   *  * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-   *  *
-   *  * @param experimentId
+   *  * Validate experiment configuration.
+   *  * A true in general indicates, the experiment is ready to be launched.
    *  *
+   *  * @param airavataExperimentId
+   *  *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
    *  *
    *  * @return boolean
-   *  *      Identifier for the success or failure of the validation operation
+   *  *      Identifier for the success or failure of the validation operation.
    *  *
    * *
    * 
@@ -796,8 +887,12 @@ class AiravataIf {
   virtual bool validateExperiment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * Launch a Previously Created & Configured Experiment.
+   * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will launch the experiment.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -836,17 +931,18 @@ class AiravataIf {
   virtual void launchExperiment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Get Experiment Status
    * 
-   * Obtain the status os an experiment by providing the Experiment Id
+   * Obtain the status of an experiment by providing the Experiment Id
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you require the status
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you require the status.
    * 
    * @return ExperimentStatus
-   *     ExperimentStatus model with current status will be returned.
+   *     ExperimentStatus model with the current status will be returned.
    * 
    * 
    * 
@@ -856,16 +952,17 @@ class AiravataIf {
   virtual void getExperimentStatus( ::apache::airavata::model::status::ExperimentStatus& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
+   * 
    * Get Experiment Outputs
-   * This method to be used when need to obtain outputs of a certain Experiment
+   * This method to be used when need to obtain final outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need the outputs.
    * 
    * @return list
-   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -875,16 +972,17 @@ class AiravataIf {
   virtual void getExperimentOutputs(std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
+   * 
    * Get Intermediate Experiment Outputs
    * This method to be used when need to obtain intermediate outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need intermediate outputs.
    * 
    * @return list
-   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -894,13 +992,14 @@ class AiravataIf {
   virtual void getIntermediateOutputs(std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
-   * Get Job Status for an Experiment
+   * 
+   * Get Job Statuses for an Experiment
    * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   *     Experiment ID of the experimnet you need the job statuses.
    * 
    * @return JobStatus
    *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -913,16 +1012,17 @@ class AiravataIf {
   virtual void getJobStatuses(std::map<std::string,  ::apache::airavata::model::status::JobStatus> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
-   * Get Job Details for all the jobs within an Experiment
+   * 
+   * Get Job Details for all the jobs within an Experiment.
    * This method to be used when need to get the job details for one or many jobs of an Experiment.
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need job details
+   *     Experiment ID of the experimnet you need job details.
    * 
    * @return list of JobDetails
-   *     Job details
+   *     Job details.
    * 
    * 
    * 
@@ -932,7 +1032,9 @@ class AiravataIf {
   virtual void getJobDetails(std::vector< ::apache::airavata::model::job::JobModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId) = 0;
 
   /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   * 
+   * Clone an Existing Experiment
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
    * 
    * @param newExperimentName
@@ -944,7 +1046,7 @@ class AiravataIf {
    *      should be shared public by default.
    * 
    * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -977,12 +1079,16 @@ class AiravataIf {
   virtual void cloneExperiment(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& existingExperimentID, const std::string& newExperimentName) = 0;
 
   /**
-   * Terminate a running experiment.
+   * 
+   * Terminate a running Experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will terminate the running Experiment.
    * 
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
    * 
-   * @return
+   * @return status
    *   This method call does not have a return value.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1016,13 +1122,17 @@ class AiravataIf {
   virtual void terminateExperiment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataExperimentId, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Register a Application Module.
    * 
+   * @gatewayId
+   *    ID of the gateway which is registering the new Application Module.
+   * 
    * @param applicationModule
    *    Application Module Object created from the datamodel.
    * 
    * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *   Returns the server-side generated airavata appModule globally unique identifier.
    * 
    * 
    * @param authzToken
@@ -1032,13 +1142,14 @@ class AiravataIf {
   virtual void registerApplicationModule(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule) = 0;
 
   /**
+   * 
    * Fetch a Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module
+   *   The unique identifier of the application module required
    * 
    * @return applicationModule
-   *   Returns a application Module Object.
+   *   Returns an Application Module Object.
    * 
    * 
    * @param authzToken
@@ -1047,6 +1158,7 @@ class AiravataIf {
   virtual void getApplicationModule( ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appModuleId) = 0;
 
   /**
+   * 
    * Update a Application Module.
    * 
    * @param appModuleId
@@ -1064,13 +1176,29 @@ class AiravataIf {
    * @param applicationModule
    */
   virtual bool updateApplicationModule(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appModuleId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule& applicationModule) = 0;
+
+  /**
+   * 
+   * Fetch all Application Module Descriptions.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
+   * @return list
+   *    Returns the list of all Application Module Objects.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   virtual void getAllAppModules(std::vector< ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) = 0;
 
   /**
-   * Delete a Application Module.
+   * 
+   * Delete an Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
+   *   The identifier of the Application Module to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1082,9 +1210,13 @@ class AiravataIf {
   virtual bool deleteApplicationModule(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appModuleId) = 0;
 
   /**
-   * Register a Application Deployment.
    * 
-   * @param applicationModule
+   * Register an Application Deployment.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which is registering the new Application Deployment.
+   * 
+   * @param applicationDeployment
    *    Application Module Object created from the datamodel.
    * 
    * @return appDeploymentId
@@ -1098,6 +1230,7 @@ class AiravataIf {
   virtual void registerApplicationDeployment(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationDeploymentDescription& applicationDeployment) = 0;
 
   /**
+   * 
    * Fetch a Application Deployment.
    * 
    * @param appDeploymentId
@@ -1113,10 +1246,11 @@ class AiravataIf {
   virtual void getApplicationDeployment( ::apache::airavata::model::appcatalog::appdeployment::ApplicationDeploymentDescription& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appDeploymentId) = 0;
 
   /**
-   * Update a Application Deployment.
+   * 
+   * Update an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appDeployment
    *    Application Deployment Object created from the datamodel.
@@ -1132,10 +1266,11 @@ class AiravataIf {
   virtual bool updateApplicationDeployment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appDeploymentId, const  ::apache::airavata::model::appcatalog::appdeployment::ApplicationDeploymentDescription& applicationDeployment) = 0;
 
   /**
-   * Delete a Application deployment.
+   * 
+   * Delete an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
+   *   The unique identifier of application deployment to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1147,10 +1282,14 @@ class AiravataIf {
   virtual bool deleteApplicationDeployment(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appDeploymentId) = 0;
 
   /**
+   * 
    * Fetch all Application Deployment Descriptions.
    * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
    * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
+   *    Returns the list of all application Deployment Objects.
    * 
    * 
    * @param authzToken
@@ -1174,9 +1313,10 @@ class AiravataIf {
   virtual void getAppModuleDeployedResources(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appModuleId) = 0;
 
   /**
+   * 
    * Register a Application Interface.
    * 
-   * @param applicationModule
+   * @param applicationInterface
    *    Application Module Object created from the datamodel.
    * 
    * @return appInterfaceId
@@ -1188,17 +1328,40 @@ class AiravataIf {
    * @param applicationInterface
    */
   virtual void registerApplicationInterface(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::appcatalog::appinterface::ApplicationInterfaceDescription& applicationInterface) = 0;
+
+  /**
+   * 
+   * Clone an Application Interface.
+   * 
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   * 
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   * 
+   * @param newApplicationName
+   *    Name for the new application interface.
+   * 
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   * 
+   * 
+   * @param authzToken
+   * @param existingAppInterfaceID
+   * @param newApplicationName
+   * @param gatewayId
+   */
   virtual void cloneApplicationInterface(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& existingAppInterfaceID, const std::string& newApplicationName, const std::string& gatewayId) = 0;
 
   /**
-   * Fetch a Application Interface.
+   * 
+   * Fetch an Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application module
+   *   The identifier for the requested application interface.
    * 
    * @return applicationInterface
-   *   Returns a application Interface Object.
-   * 
+   *   Returns an application Interface Object.
    * 
    * 
    * @param authzToken
@@ -1207,10 +1370,11 @@ class AiravataIf {
   virtual void getApplicationInterface( ::apache::airavata::model::appcatalog::appinterface::ApplicationInterfaceDescription& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appInterfaceId) = 0;
 
   /**
+   * 
    * Update a Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appInterface
    *    Application Interface Object created from the datamodel.
@@ -1219,7 +1383,6 @@ class AiravataIf {
    *   Returns a success/failure of the update.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    * @param applicationInterface
@@ -1227,7 +1390,8 @@ class AiravataIf {
   virtual bool updateApplicationInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appInterfaceId, const  ::apache::airavata::model::appcatalog::appinterface::ApplicationInterfaceDescription& applicationInterface) = 0;
 
   /**
-   * Delete a Application Interface.
+   * 
+   * Delete an Application Interface.
    * 
    * @param appInterfaceId
    *   The identifier for the requested application interface to be deleted.
@@ -1236,18 +1400,18 @@ class AiravataIf {
    *   Returns a success/failure of the deletion.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    */
   virtual bool deleteApplicationInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appInterfaceId) = 0;
 
   /**
-   * Fetch name and id of  Application Interface documents.
+   * 
+   * Fetch name and ID of  Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
+   *   Returns a list of application interfaces with corresponsing ID's
    * 
    * 
    * @param authzToken
@@ -1256,11 +1420,12 @@ class AiravataIf {
   virtual void getAllApplicationInterfaceNames(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Fetch all Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
+   *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
    * 
    * 
    * @param authzToken
@@ -1269,10 +1434,11 @@ class AiravataIf {
   virtual void getAllApplicationInterfaces(std::vector< ::apache::airavata::model::appcatalog::appinterface::ApplicationInterfaceDescription> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) = 0;
 
   /**
+   * 
    * Fetch the list of Application Inputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need inputs to be fetched.
    * 
    * @return list<application_interface_model.InputDataObjectType>
    *   Returns a list of application inputs.
@@ -1284,10 +1450,11 @@ class AiravataIf {
   virtual void getApplicationInputs(std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appInterfaceId) = 0;
 
   /**
-   * Fetch the list of Application Outputs.
+   * 
+   * Fetch list of Application Outputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need outputs to be fetched.
    * 
    * @return list<application_interface_model.OutputDataObjectType>
    *   Returns a list of application outputs.
@@ -1299,14 +1466,15 @@ class AiravataIf {
   virtual void getApplicationOutputs(std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& appInterfaceId) = 0;
 
   /**
+   * 
    * Fetch a list of all deployed Compute Hosts for a given application interfaces.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier for the requested application interface.
    * 
    * @return map<computeResourceId, computeResourceName>
    *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
+   *   Deployments of each modules listed within the interfaces will be listed.
    * 
    * 
    * @param authzToken
@@ -1345,6 +1513,7 @@ class AiravataIf {
   virtual void getComputeResource( ::apache::airavata::model::appcatalog::computeresource::ComputeResourceDescription& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId) = 0;
 
   /**
+   * 
    * Fetch all registered Compute Resources.
    * 
    * @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1431,7 +1600,7 @@ class AiravataIf {
   virtual void getAllStorageResourceNames(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken) = 0;
 
   /**
-   * Update a Compute Resource.
+   * Update a Storage Resource.
    * 
    * @param storageResourceId
    *   The identifier for the requested compute resource to be updated.
@@ -1453,7 +1622,7 @@ class AiravataIf {
    * Delete a Storage Resource.
    * 
    * @param storageResourceId
-   *   The identifier for the requested compute resource to be deleted.
+   *   The identifier of the requested compute resource to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1580,6 +1749,7 @@ class AiravataIf {
   virtual void getSSHJobSubmission( ::apache::airavata::model::appcatalog::computeresource::SSHJobSubmission& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionId) = 0;
 
   /**
+   * 
    * Add a UNICORE Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    * 
@@ -1604,10 +1774,13 @@ class AiravataIf {
   virtual void addUNICOREJobSubmissionDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const int32_t priorityOrder, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission) = 0;
 
   /**
+   *   *
    *   * This method returns UnicoreJobSubmission object
+   *   *
    *   * @param jobSubmissionInterfaceId
    *   *   The identifier of the JobSubmission Interface to be retrieved.
    *   *  @return UnicoreJobSubmission instance
+   *   *
    * *
    * 
    * @param authzToken
@@ -1616,6 +1789,7 @@ class AiravataIf {
   virtual void getUnicoreJobSubmission( ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionId) = 0;
 
   /**
+   *    *
    *    * Add a Cloud Job Submission details to a compute resource
    *    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *    *
@@ -1630,6 +1804,7 @@ class AiravataIf {
    *    *
    *    * @return status
    *    *   Returns the unique job submission id.
+   *    *
    * *
    * 
    * @param authzToken
@@ -1640,6 +1815,7 @@ class AiravataIf {
   virtual void addCloudJobSubmissionDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const int32_t priorityOrder, const  ::apache::airavata::model::appcatalog::computeresource::CloudJobSubmission& cloudSubmission) = 0;
 
   /**
+   *    *
    *    * This method returns cloudJobSubmission object
    *    * @param jobSubmissionInterfaceI
    *        *   The identifier of the JobSubmission Interface to be retrieved.
@@ -1652,6 +1828,7 @@ class AiravataIf {
   virtual void getCloudJobSubmission( ::apache::airavata::model::appcatalog::computeresource::CloudJobSubmission& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionId) = 0;
 
   /**
+   * 
    * Update the given SSH Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1671,6 +1848,7 @@ class AiravataIf {
   virtual bool updateSSHJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::SSHJobSubmission& sshJobSubmission) = 0;
 
   /**
+   * 
    * Update the cloud Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1690,6 +1868,7 @@ class AiravataIf {
   virtual bool updateCloudJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::CloudJobSubmission& sshJobSubmission) = 0;
 
   /**
+   * 
    * Update the UNIOCRE Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1710,6 +1889,7 @@ class AiravataIf {
   virtual bool updateUnicoreJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission) = 0;
 
   /**
+   * 
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -1739,6 +1919,7 @@ class AiravataIf {
   virtual void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& resourceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) = 0;
 
   /**
+   * 
    * Update the given Local data movement details
    * 
    * @param dataMovementInterfaceId
@@ -1759,7 +1940,8 @@ class AiravataIf {
   virtual bool updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) = 0;
 
   /**
-   * This method returns local datamovement object
+   * 
+   * This method returns local datamovement object.
    * 
    * @param dataMovementId
    *   The identifier of the datamovement Interface to be retrieved.
@@ -1774,6 +1956,7 @@ class AiravataIf {
   virtual void getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId) = 0;
 
   /**
+   * 
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -1799,6 +1982,7 @@ class AiravataIf {
   virtual void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& resourceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) = 0;
 
   /**
+   * 
    * Update the given scp data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -1834,6 +2018,7 @@ class AiravataIf {
   virtual void getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId) = 0;
 
   /**
+   * 
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -1859,6 +2044,7 @@ class AiravataIf {
   virtual void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& resourceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) = 0;
 
   /**
+   * 
    * Update a selected UNICORE data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -1880,6 +2066,7 @@ class AiravataIf {
   virtual bool updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) = 0;
 
   /**
+   * 
    * This method returns UNICORE datamovement object
    * 
    * @param dataMovementId
@@ -1895,6 +2082,7 @@ class AiravataIf {
   virtual void getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId) = 0;
 
   /**
+   * 
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2109,7 +2297,7 @@ class AiravataIf {
    * Fetch the given Gateway Resource Profile.
    * 
    * @param gatewayID
-   *   The identifier for the requested gateway resource
+   *   The identifier for the requested gateway resource.
    * 
    * @return gatewayResourceProfile
    *    Gateway Resource Profile Object.
@@ -2177,9 +2365,33 @@ class AiravataIf {
    * @param computeResourcePreference
    */
   virtual bool addGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference) = 0;
+
+  /**
+   * Add a Storage Resource Preference to a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be added.
+   * 
+   * @param storageResourceId
+   *   Preferences related to a particular compute resource
+   * 
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   * @param storagePreference
+   */
   virtual bool addGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) = 0;
 
   /**
+   * 
    * Fetch a Compute Resource Preference of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2197,9 +2409,29 @@ class AiravataIf {
    * @param computeResourceId
    */
   virtual void getGatewayComputeResourcePreference( ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId) = 0;
+
+  /**
+   * 
+   * Fetch a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+   * 
+   * @param storageResourceId
+   *   Identifier of the Stprage Preference required to be fetched.
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   */
   virtual void getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId) = 0;
 
   /**
+   * 
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2213,10 +2445,29 @@ class AiravataIf {
    * @param gatewayID
    */
   virtual void getAllGatewayComputeResourcePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID) = 0;
+
+  /**
+   * Fetch all Storage Resource Preferences of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   */
   virtual void getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID) = 0;
 
   /**
-   * Fetch all gateway profiles registered
+   * 
+   * Fetch all Gateway Profiles registered
+   * 
+   * @return GatewayResourceProfile
+   *   Returns all the GatewayResourcePrifle list object.
+   * 
    * 
    * 
    * @param authzToken
@@ -2245,6 +2496,28 @@ class AiravataIf {
    * @param computeResourcePreference
    */
   virtual bool updateGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference) = 0;
+
+  /**
+   * Update a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be updated.
+   * 
+   * @param storageId
+   *   The Storage resource identifier of the one that you want to update
+   * 
+   * @param storagePreference
+   *   The storagePreference object to be updated to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the updation.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   * @param storagePreference
+   */
   virtual bool updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) = 0;
 
   /**
@@ -2265,17 +2538,63 @@ class AiravataIf {
    * @param computeResourceId
    */
   virtual bool deleteGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId) = 0;
+
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   */
   virtual bool deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId) = 0;
+
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   virtual void getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) = 0;
-  virtual void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) = 0;
+
+  /**
+   * 
+   * API Methods Related for Work-Flow Submission Features.
+   * 
+   * 
+   * @param authzToken
+   * @param workflowTemplateId
+   */
+  virtual void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) = 0;
   virtual void deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) = 0;
-  virtual void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow) = 0;
-  virtual void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow) = 0;
+  virtual void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow) = 0;
+  virtual void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow) = 0;
   virtual void getWorkflowTemplateId(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName) = 0;
   virtual bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName) = 0;
 
   /**
-   *  * Data Manager Related API Methods
+   *  *
+   *  * Data Manager Related API Methods.
+   *  *
    * *
    * 
    * @param authzToken
@@ -2738,16 +3057,16 @@ class AiravataNull : virtual public AiravataIf {
   void getAllWorkflows(std::vector<std::string> & /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* gatewayId */) {
     return;
   }
-  void getWorkflow( ::Workflow& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowTemplateId */) {
+  void getWorkflow( ::WorkflowModel& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowTemplateId */) {
     return;
   }
   void deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowTemplateId */) {
     return;
   }
-  void registerWorkflow(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* gatewayId */, const  ::Workflow& /* workflow */) {
+  void registerWorkflow(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* gatewayId */, const  ::WorkflowModel& /* workflow */) {
     return;
   }
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowTemplateId */, const  ::Workflow& /* workflow */) {
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowTemplateId */, const  ::WorkflowModel& /* workflow */) {
     return;
   }
   void getWorkflowTemplateId(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* workflowName */) {
@@ -20788,7 +21107,7 @@ class Airavata_getWorkflow_result {
   }
 
   virtual ~Airavata_getWorkflow_result() throw();
-   ::Workflow success;
+   ::WorkflowModel success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
@@ -20796,7 +21115,7 @@ class Airavata_getWorkflow_result {
 
   _Airavata_getWorkflow_result__isset __isset;
 
-  void __set_success(const  ::Workflow& val);
+  void __set_success(const  ::WorkflowModel& val);
 
   void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
 
@@ -20845,7 +21164,7 @@ class Airavata_getWorkflow_presult {
 
 
   virtual ~Airavata_getWorkflow_presult() throw();
-   ::Workflow* success;
+   ::WorkflowModel* success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
@@ -20997,13 +21316,13 @@ class Airavata_registerWorkflow_args {
   virtual ~Airavata_registerWorkflow_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
   std::string gatewayId;
-   ::Workflow workflow;
+   ::WorkflowModel workflow;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
   void __set_gatewayId(const std::string& val);
 
-  void __set_workflow(const  ::Workflow& val);
+  void __set_workflow(const  ::WorkflowModel& val);
 
   bool operator == (const Airavata_registerWorkflow_args & rhs) const
   {
@@ -21034,7 +21353,7 @@ class Airavata_registerWorkflow_pargs {
   virtual ~Airavata_registerWorkflow_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
   const std::string* gatewayId;
-  const  ::Workflow* workflow;
+  const  ::WorkflowModel* workflow;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -21139,13 +21458,13 @@ class Airavata_updateWorkflow_args {
   virtual ~Airavata_updateWorkflow_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
   std::string workflowTemplateId;
-   ::Workflow workflow;
+   ::WorkflowModel workflow;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
   void __set_workflowTemplateId(const std::string& val);
 
-  void __set_workflow(const  ::Workflow& val);
+  void __set_workflow(const  ::WorkflowModel& val);
 
   bool operator == (const Airavata_updateWorkflow_args & rhs) const
   {
@@ -21176,7 +21495,7 @@ class Airavata_updateWorkflow_pargs {
   virtual ~Airavata_updateWorkflow_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
   const std::string* workflowTemplateId;
-  const  ::Workflow* workflow;
+  const  ::WorkflowModel* workflow;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -22769,17 +23088,17 @@ class AiravataClient : virtual public AiravataIf {
   void getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId);
   void send_getAllWorkflows(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId);
   void recv_getAllWorkflows(std::vector<std::string> & _return);
-  void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
+  void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   void send_getWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
-  void recv_getWorkflow( ::Workflow& _return);
+  void recv_getWorkflow( ::WorkflowModel& _return);
   void deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   void send_deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   void recv_deleteWorkflow();
-  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow);
-  void send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow);
+  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow);
+  void send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow);
   void recv_registerWorkflow(std::string& _return);
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow);
-  void send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow);
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow);
+  void send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow);
   void recv_updateWorkflow();
   void getWorkflowTemplateId(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   void send_getWorkflowTemplateId(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
@@ -24351,7 +24670,7 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
+  void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24370,7 +24689,7 @@ class AiravataMultiface : virtual public AiravataIf {
     ifaces_[i]->deleteWorkflow(authzToken, workflowTemplateId);
   }
 
-  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow) {
+  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24380,7 +24699,7 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow) {
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24877,17 +25196,17 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId);
   int32_t send_getAllWorkflows(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId);
   void recv_getAllWorkflows(std::vector<std::string> & _return, const int32_t seqid);
-  void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
+  void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   int32_t send_getWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
-  void recv_getWorkflow( ::Workflow& _return, const int32_t seqid);
+  void recv_getWorkflow( ::WorkflowModel& _return, const int32_t seqid);
   void deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   int32_t send_deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId);
   void recv_deleteWorkflow(const int32_t seqid);
-  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow);
-  int32_t send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow);
+  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow);
+  int32_t send_registerWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow);
   void recv_registerWorkflow(std::string& _return, const int32_t seqid);
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow);
-  int32_t send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow);
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow);
+  int32_t send_updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow);
   void recv_updateWorkflow(const int32_t seqid);
   void getWorkflowTemplateId(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   int32_t send_getWorkflowTemplateId(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);


[13/50] [abbrv] airavata git commit: throwing experiment not found exception instead of system exception

Posted by ch...@apache.org.
throwing experiment not found exception instead of system exception


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

Branch: refs/heads/master
Commit: 819c5e286eda098b7c47bd30391fbd477665ba31
Parents: fa4c187
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Jan 27 15:26:00 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Jan 27 15:26:00 2016 -0500

----------------------------------------------------------------------
 .../apache/airavata/api/server/handler/AiravataServerHandler.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/819c5e28/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 0212163..c8de2b7 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -1425,7 +1425,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
             }
             return (ExperimentModel) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, airavataExperimentId);
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             logger.error("Error while retrieving the experiment", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);


[16/50] [abbrv] airavata git commit: Added workflow data models

Posted by ch...@apache.org.
Added workflow data models


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

Branch: refs/heads/master
Commit: 1ec4efbfa7bba2e1f606f1fce58729dfc3079d26
Parents: b65079a
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 12:02:26 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 12:02:26 2016 -0500

----------------------------------------------------------------------
 .../workflow-models/workflow_data_model.thrift  | 58 +++++++++++++++++++-
 1 file changed, 56 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1ec4efbf/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
index 6b3dfad..7b7922a 100644
--- a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
+++ b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
@@ -33,11 +33,65 @@ include "../../airavata-apis/airavata_commons.thrift"
 */
 
 
-struct Workflow {
+struct WorkflowModel {
     1: required string templateId = airavata_commons.DEFAULT_ID,
     2: required string name,
-    3: optional string graph,
+    3: required string graph,
     4: optional binary image,
     5: optional list<application_io_models.InputDataObjectType> workflowInputs,
     6: optional list<application_io_models.OutputDataObjectType> workflowOutputs
 }
+
+enum WorkflowState {
+    CREATED,
+    STARTED,
+    EXECUTING,
+    COMPLETED,
+    FAILED,
+    CANCELLING,
+    CANCELED
+}
+
+enum ComponentState {
+    CREATED,
+    WAITING,
+    READY,
+    RUNNING,
+    COMPLETED,
+    FAILED,
+    CANCELED
+}
+
+struct ComponentStatus {
+    1: required ComponentState state = ComponentState.CREATED,
+    2: optional string reason,
+    3: optional i64 timeofStateChange
+}
+
+struct WorkflowStatus {
+    1: required WorkflowState state,
+    2: optional i64 timeOfStateChange,
+    3: optional string reason
+}
+
+struct EdgeModel {
+    1: required string edgeId = airavata_commons.DEFAULT_ID,
+    2: optional string name,
+    3: optional ComponentStatus status,
+    4: optional string description
+}
+
+struct PortModel {
+    1: required string portId = airavata_commons.DEFAULT_ID,
+    2: optional string name
+    3: optional ComponentStatus status,
+    4: optional string description
+
+}
+
+struct NodeModel {
+    1: required string nodeId= airavata_commons.DEFAULT_ID,
+    2: optional string name,
+    3: optional ComponentStatus status,
+    4: optional string description
+}


[02/50] [abbrv] airavata git commit: Adding API method descriptions to App Catalog Airavata Thrift APIs

Posted by ch...@apache.org.
Adding API  method descriptions to App Catalog Airavata Thrift APIs


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

Branch: refs/heads/master
Commit: 70358dff34c253cf73020c389080f03fc4927a98
Parents: cda9014
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Tue Jan 19 15:41:04 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Tue Jan 19 15:41:04 2016 -0500

----------------------------------------------------------------------
 .../airavata-apis/airavata_api.thrift           | 86 +++++++++++++++++++-
 1 file changed, 83 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/70358dff/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 521b24b..8c0b14a 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2555,6 +2555,7 @@ service Airavata {
               3: airavata_errors.AiravataSystemException ase,
               4: airavata_errors.AuthorizationException ae)
   /**
+   *
    * Fetch a Compute Resource Preference of a registered gateway profile.
    *
    * @param gatewayID
@@ -2575,6 +2576,20 @@ service Airavata {
             3: airavata_errors.AiravataSystemException ase,
             4: airavata_errors.AuthorizationException ae)
 
+  /**
+   *
+   * Fetch a Storage Resource Preference of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+   *
+   * @param storageResourceId
+   *   Identifier of the Stprage Preference required to be fetched.
+   *
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   *
+  */
   gateway_resource_profile_model.StoragePreference getGatewayStoragePreference(1: required security_model.AuthzToken authzToken,
               2: required string gatewayID,
               3: required string storageResourceId)
@@ -2584,6 +2599,7 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    *
    * @param gatewayID
@@ -2600,6 +2616,16 @@ service Airavata {
             3: airavata_errors.AiravataSystemException ase,
             4: airavata_errors.AuthorizationException ae)
 
+  /**
+  * Fetch all Storage Resource Preferences of a registered gateway profile.
+  *
+  * @param gatewayID
+  *   The identifier for the gateway profile to be requested
+  *
+  * @return StoragePreference
+  *   Returns the StoragePreference object.
+  *
+ */
 
   list<gateway_resource_profile_model.StoragePreference>
               getAllGatewayStoragePreferences(1: required security_model.AuthzToken authzToken, 2: required string gatewayID)
@@ -2609,12 +2635,12 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
   /**
-  * Fetch all gateway profiles registered
+  *
+  * Fetch all Gateway Profiles registered
   *
   * @return GatewayResourceProfile
   *   Returns all the GatewayResourcePrifle list object.
   *
-  *
   **/
   list<gateway_resource_profile_model.GatewayResourceProfile>
               getAllGatewayResourceProfiles(1: required security_model.AuthzToken authzToken)
@@ -2647,6 +2673,23 @@ service Airavata {
             3: airavata_errors.AiravataSystemException ase,
             4: airavata_errors.AuthorizationException ae)
 
+    /**
+     * Update a Storage Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID
+     *   The identifier of the gateway profile to be updated.
+     *
+     * @param storageId
+     *   The Storage resource identifier of the one that you want to update
+     *
+     * @param storagePreference
+     *   The storagePreference object to be updated to the resource profile.
+     *
+     * @return status
+     *   Returns a success/failure of the updation.
+     *
+    */
+
   bool updateGatewayStoragePreference(1: required security_model.AuthzToken authzToken, 2: required string gatewayID,
               3: required string storageId,
               4: required gateway_resource_profile_model.StoragePreference storagePreference)
@@ -2675,6 +2718,21 @@ service Airavata {
             3: airavata_errors.AiravataSystemException ase,
             4: airavata_errors.AuthorizationException ae)
 
+
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   *
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+
   bool deleteGatewayStoragePreference(1: required security_model.AuthzToken authzToken, 2: required string gatewayID,
               3: required string storageId)
     	throws (1: airavata_errors.InvalidRequestException ire,
@@ -2682,12 +2740,32 @@ service Airavata {
               3: airavata_errors.AiravataSystemException ase,
               4: airavata_errors.AuthorizationException ae)
 
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   *
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+
   list<string> getAllWorkflows(1: required security_model.AuthzToken authzToken, 2: required string gatewayId)
           throws (1: airavata_errors.InvalidRequestException ire,
                   2: airavata_errors.AiravataClientException ace,
                   3: airavata_errors.AiravataSystemException ase,
                   4: airavata_errors.AuthorizationException ae)
 
+  /**
+   *
+   * API Methods Related for Work-Flow Submission Features.
+   *
+  */
+
   workflow_data_model.Workflow getWorkflow (1: required security_model.AuthzToken authzToken, 2: required string workflowTemplateId)
         throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -2727,7 +2805,9 @@ service Airavata {
                   4: airavata_errors.AuthorizationException ae)
 
  /**
-  * Data Manager Related API Methods
+  *
+  * Data Manager Related API Methods.
+  *
  **/
  string registerDataResource(1: required security_model.AuthzToken authzToken, 2: required replica_catalog_models.DataResourceModel dataResourceModel)
           throws (1: airavata_errors.InvalidRequestException ire,


[23/50] [abbrv] airavata git commit: Changed dag classes to work with thrift workflow data models

Posted by ch...@apache.org.
Changed dag classes to work with thrift workflow data models


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

Branch: refs/heads/master
Commit: 9859af32bfd71aa95ec0e5e170d4937398899ecd
Parents: 494e0d7
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 13:17:05 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 13:17:05 2016 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/model/PortModel.java    | 122 +++++++++++++++++--
 .../workflow/core/dag/edge/DirectedEdge.java    |  12 ++
 .../airavata/workflow/core/dag/edge/Edge.java   |   5 +
 .../core/dag/nodes/ApplicationNode.java         |   2 +
 .../core/dag/nodes/ApplicationNodeImpl.java     |  62 +++++-----
 .../core/dag/nodes/WorkflowInputNodeImpl.java   |  44 ++++---
 .../workflow/core/dag/nodes/WorkflowNode.java   |  14 ++-
 .../core/dag/nodes/WorkflowOutputNodeImpl.java  |  44 ++++---
 .../workflow/core/dag/port/InputPortIml.java    |  24 ++--
 .../workflow/core/dag/port/OutPortImpl.java     |  19 ++-
 .../airavata/workflow/core/dag/port/Port.java   |   5 +
 .../workflow-models/workflow_data_model.thrift  |   5 +-
 12 files changed, 270 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
index 5b5c9fd..41cf054 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
@@ -58,7 +58,8 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
   private static final org.apache.thrift.protocol.TField PORT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("portId", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)3);
-  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("value", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)5);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -69,6 +70,7 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
   private String portId; // required
   private String name; // optional
   private ComponentStatus status; // optional
+  private String value; // optional
   private String description; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -76,7 +78,8 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
     PORT_ID((short)1, "portId"),
     NAME((short)2, "name"),
     STATUS((short)3, "status"),
-    DESCRIPTION((short)4, "description");
+    VALUE((short)4, "value"),
+    DESCRIPTION((short)5, "description");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -97,7 +100,9 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
           return NAME;
         case 3: // STATUS
           return STATUS;
-        case 4: // DESCRIPTION
+        case 4: // VALUE
+          return VALUE;
+        case 5: // DESCRIPTION
           return DESCRIPTION;
         default:
           return null;
@@ -139,7 +144,7 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.DESCRIPTION};
+  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.VALUE,_Fields.DESCRIPTION};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -149,6 +154,8 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentStatus.class)));
+    tmpMap.put(_Fields.VALUE, new org.apache.thrift.meta_data.FieldMetaData("value", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
@@ -180,6 +187,9 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
     if (other.isSetStatus()) {
       this.status = new ComponentStatus(other.status);
     }
+    if (other.isSetValue()) {
+      this.value = other.value;
+    }
     if (other.isSetDescription()) {
       this.description = other.description;
     }
@@ -195,6 +205,7 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
 
     this.name = null;
     this.status = null;
+    this.value = null;
     this.description = null;
   }
 
@@ -267,6 +278,29 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
     }
   }
 
+  public String getValue() {
+    return this.value;
+  }
+
+  public void setValue(String value) {
+    this.value = value;
+  }
+
+  public void unsetValue() {
+    this.value = null;
+  }
+
+  /** Returns true if field value is set (has been assigned a value) and false otherwise */
+  public boolean isSetValue() {
+    return this.value != null;
+  }
+
+  public void setValueIsSet(boolean value) {
+    if (!value) {
+      this.value = null;
+    }
+  }
+
   public String getDescription() {
     return this.description;
   }
@@ -316,6 +350,14 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
       }
       break;
 
+    case VALUE:
+      if (value == null) {
+        unsetValue();
+      } else {
+        setValue((String)value);
+      }
+      break;
+
     case DESCRIPTION:
       if (value == null) {
         unsetDescription();
@@ -338,6 +380,9 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
     case STATUS:
       return getStatus();
 
+    case VALUE:
+      return getValue();
+
     case DESCRIPTION:
       return getDescription();
 
@@ -358,6 +403,8 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
       return isSetName();
     case STATUS:
       return isSetStatus();
+    case VALUE:
+      return isSetValue();
     case DESCRIPTION:
       return isSetDescription();
     }
@@ -404,6 +451,15 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
         return false;
     }
 
+    boolean this_present_value = true && this.isSetValue();
+    boolean that_present_value = true && that.isSetValue();
+    if (this_present_value || that_present_value) {
+      if (!(this_present_value && that_present_value))
+        return false;
+      if (!this.value.equals(that.value))
+        return false;
+    }
+
     boolean this_present_description = true && this.isSetDescription();
     boolean that_present_description = true && that.isSetDescription();
     if (this_present_description || that_present_description) {
@@ -435,6 +491,11 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
     if (present_status)
       list.add(status);
 
+    boolean present_value = true && (isSetValue());
+    list.add(present_value);
+    if (present_value)
+      list.add(value);
+
     boolean present_description = true && (isSetDescription());
     list.add(present_description);
     if (present_description)
@@ -481,6 +542,16 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetValue()).compareTo(other.isSetValue());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValue()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.value, other.value);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetDescription()).compareTo(other.isSetDescription());
     if (lastComparison != 0) {
       return lastComparison;
@@ -538,6 +609,16 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
       }
       first = false;
     }
+    if (isSetValue()) {
+      if (!first) sb.append(", ");
+      sb.append("value:");
+      if (this.value == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.value);
+      }
+      first = false;
+    }
     if (isSetDescription()) {
       if (!first) sb.append(", ");
       sb.append("description:");
@@ -623,7 +704,15 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // DESCRIPTION
+          case 4: // VALUE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.value = iprot.readString();
+              struct.setValueIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // DESCRIPTION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.description = iprot.readString();
               struct.setDescriptionIsSet(true);
@@ -663,6 +752,13 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
           oprot.writeFieldEnd();
         }
       }
+      if (struct.value != null) {
+        if (struct.isSetValue()) {
+          oprot.writeFieldBegin(VALUE_FIELD_DESC);
+          oprot.writeString(struct.value);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.description != null) {
         if (struct.isSetDescription()) {
           oprot.writeFieldBegin(DESCRIPTION_FIELD_DESC);
@@ -695,16 +791,22 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
       if (struct.isSetStatus()) {
         optionals.set(1);
       }
-      if (struct.isSetDescription()) {
+      if (struct.isSetValue()) {
         optionals.set(2);
       }
-      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetDescription()) {
+        optionals.set(3);
+      }
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetName()) {
         oprot.writeString(struct.name);
       }
       if (struct.isSetStatus()) {
         struct.status.write(oprot);
       }
+      if (struct.isSetValue()) {
+        oprot.writeString(struct.value);
+      }
       if (struct.isSetDescription()) {
         oprot.writeString(struct.description);
       }
@@ -715,7 +817,7 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.portId = iprot.readString();
       struct.setPortIdIsSet(true);
-      BitSet incoming = iprot.readBitSet(3);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.name = iprot.readString();
         struct.setNameIsSet(true);
@@ -726,6 +828,10 @@ public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._
         struct.setStatusIsSet(true);
       }
       if (incoming.get(2)) {
+        struct.value = iprot.readString();
+        struct.setValueIsSet(true);
+      }
+      if (incoming.get(3)) {
         struct.description = iprot.readString();
         struct.setDescriptionIsSet(true);
       }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
index 91118cc..b1d79b1 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.workflow.core.dag.edge;
 
+import org.apache.airavata.model.EdgeModel;
 import org.apache.airavata.workflow.core.dag.port.InPort;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 
@@ -29,6 +30,17 @@ public class DirectedEdge implements Edge {
 
     private InPort inPort;
     private OutPort outPort;
+    private EdgeModel edgeModel;
+
+    @Override
+    public void setEdgeModel(EdgeModel edgeModel) {
+        this.edgeModel = edgeModel;
+    }
+
+    @Override
+    public EdgeModel getEdgeModel() {
+        return edgeModel;
+    }
 
     @Override
     public InPort getToPort() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
index ee11371..d1c340e 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.workflow.core.dag.edge;
 
+import org.apache.airavata.model.EdgeModel;
 import org.apache.airavata.workflow.core.dag.port.InPort;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 
@@ -31,6 +32,10 @@ import org.apache.airavata.workflow.core.dag.port.OutPort;
 
 public interface Edge {
 
+    public void setEdgeModel(EdgeModel edgeModel);
+
+    public EdgeModel getEdgeModel();
+
     public InPort getToPort();
 
     public void setToPort(InPort inPort);

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNode.java
index d775bf4..ab876cc 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNode.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNode.java
@@ -30,6 +30,8 @@ public interface ApplicationNode extends WorkflowNode {
 
     public String getApplicationId();
 
+    public String getApplicationName();
+
     public void addInPort(InPort inPort);
 
     public List<InPort> getInputPorts();

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNodeImpl.java
index ad7bd63..adc865f 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNodeImpl.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/ApplicationNodeImpl.java
@@ -21,6 +21,9 @@
 
 package org.apache.airavata.workflow.core.dag.nodes;
 
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
 import org.apache.airavata.workflow.core.dag.port.InPort;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 
@@ -29,35 +32,32 @@ import java.util.List;
 
 public class ApplicationNodeImpl implements ApplicationNode {
 
-    private final String nodeId;
-    private NodeState myState = NodeState.WAITING;
-    private String applicationId;
-    private List<InPort> inPorts = new ArrayList<InPort>();
-    private List<OutPort> outPorts = new ArrayList<OutPort>();
-    private String applicationName;
+    private NodeModel nodeModel;
+    private List<InPort> inPorts = new ArrayList<>();
+    private List<OutPort> outPorts = new ArrayList<>();
 
-//    public ApplicationNodeImpl(String nodeId) {
-//        this(nodeId, null);
-//    }
-//
-//    public ApplicationNodeImpl(String nodeId, String applicationId) {
-//        this(nodeId, null, applicationId);
-//    }
+    public ApplicationNodeImpl(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public void setNodeModel(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
 
-    public ApplicationNodeImpl(String nodeId, String applicationName, String applicationId) {
-        this.nodeId = nodeId;
-        this.applicationName = applicationName;
-        this.applicationId = applicationId;
+    @Override
+    public NodeModel getNodeModel() {
+        return nodeModel;
     }
 
     @Override
     public String getId() {
-        return this.nodeId;
+        return nodeModel.getNodeId();
     }
 
     @Override
     public String getName() {
-        return applicationName;
+        return getNodeModel().getName();
     }
 
     @Override
@@ -66,17 +66,18 @@ public class ApplicationNodeImpl implements ApplicationNode {
     }
 
     @Override
-    public NodeState getState() {
-        return myState;
+    public ComponentState getState() {
+        return getStatus().getState();
     }
 
     @Override
-    public void setState(NodeState newState) {
-        if (newState.getLevel() > myState.getLevel()) {
-            myState = newState;
-        } else {
-            throw new IllegalStateException("Node state can't be reversed. currentState : " + myState.toString() + " , newState " + newState.toString());
-        }
+    public ComponentStatus getStatus() {
+        return getNodeModel().getStatus();
+    }
+
+    @Override
+    public void setStatus(ComponentStatus newStatus) {
+        getNodeModel().setStatus(newStatus);
     }
 
     @Override
@@ -91,7 +92,12 @@ public class ApplicationNodeImpl implements ApplicationNode {
 
     @Override
     public String getApplicationId() {
-        return this.applicationId;
+        return getNodeModel().getApplicationId();
+    }
+
+    @Override
+    public String getApplicationName() {
+        return null;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
index 608bdbd..3ecc865 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
@@ -19,35 +19,40 @@
 
 package org.apache.airavata.workflow.core.dag.nodes;
 
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 
 public class WorkflowInputNodeImpl implements WorkflowInputNode {
 
-    private NodeState myState = NodeState.READY;
-    private final String nodeId;
-    private String nodeName;
+    private NodeModel nodeModel;
     private OutPort outPort;
     private InputDataObjectType inputDataObjectType;
-    private String name;
 
-    public WorkflowInputNodeImpl(String nodeId) {
-        this(nodeId, null);
+    public WorkflowInputNodeImpl(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
     }
 
-    public WorkflowInputNodeImpl(String nodeId, String nodeName) {
-        this.nodeId = nodeId;
-        this.nodeName = nodeName;
+    @Override
+    public void setNodeModel(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public NodeModel getNodeModel() {
+        return nodeModel;
     }
 
     @Override
     public String getId() {
-        return this.nodeId;
+        return getNodeModel().getNodeId();
     }
 
     @Override
     public String getName() {
-        return this.nodeName;
+        return getNodeModel().getName();
     }
 
     @Override
@@ -56,17 +61,18 @@ public class WorkflowInputNodeImpl implements WorkflowInputNode {
     }
 
     @Override
-    public NodeState getState() {
-        return myState;
+    public ComponentState getState() {
+        return getStatus().getState();
+    }
+
+    @Override
+    public ComponentStatus getStatus() {
+        return getNodeModel().getStatus();
     }
 
     @Override
-    public void setState(NodeState newState) {
-        if (newState.getLevel() > myState.getLevel()) {
-            myState = newState;
-        } else {
-            throw new IllegalStateException("Node state can't be reversed. currentState : " + myState.toString() + " , newState " + newState.toString());
-        }
+    public void setStatus(ComponentStatus newStatus) {
+        getNodeModel().setStatus(newStatus);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowNode.java
index e86a740..b774465 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowNode.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowNode.java
@@ -21,17 +21,27 @@
 
 package org.apache.airavata.workflow.core.dag.nodes;
 
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
+
 public interface WorkflowNode {
 
+    public void setNodeModel(NodeModel nodeModel);
+
+    public NodeModel getNodeModel();
+
     public String getId();
 
     public String getName();
 
     public NodeType getType();
 
-    public NodeState getState();
+    public ComponentState getState();
+
+    public ComponentStatus getStatus();
 
-    public void setState(NodeState newState);
+    public void setStatus(ComponentStatus newStatus);
 
     public boolean isReady();
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
index b592de8..5844753 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
@@ -21,34 +21,40 @@
 
 package org.apache.airavata.workflow.core.dag.nodes;
 
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.workflow.core.dag.port.InPort;
 
 public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
 
-    private NodeState myState = NodeState.WAITING;
-    private final String nodeId;
-    private String nodeName;
+    private NodeModel nodeModel;
     private OutputDataObjectType outputDataObjectType;
     private InPort inPort;
 
-    public WorkflowOutputNodeImpl(String nodeId) {
-        this(nodeId, null);
+    public WorkflowOutputNodeImpl(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
     }
 
-    public WorkflowOutputNodeImpl(String nodeId, String nodeName) {
-        this.nodeId = nodeId;
-        this.nodeName = nodeName;
+    @Override
+    public void setNodeModel(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public NodeModel getNodeModel() {
+        return nodeModel;
     }
 
     @Override
     public String getId() {
-        return this.nodeId;
+        return getNodeModel().getNodeId();
     }
 
     @Override
     public String getName() {
-        return this.nodeName;
+        return getNodeModel().getName();
     }
 
     @Override
@@ -57,20 +63,22 @@ public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
     }
 
     @Override
-    public NodeState getState() {
-        return myState;
+    public ComponentState getState() {
+        return getStatus().getState();
     }
 
     @Override
-    public void setState(NodeState newState) {
-        if (newState.getLevel() > myState.getLevel()) {
-            myState = newState;
-        } else {
-            throw new IllegalStateException("Node state can't be reversed. currentState : " + myState.toString() + " , newState " + newState.toString());
-        }
+    public ComponentStatus getStatus() {
+        return getNodeModel().getStatus();
     }
 
     @Override
+    public void setStatus(ComponentStatus newStatus) {
+        getNodeModel().setStatus(newStatus);
+    }
+
+
+    @Override
     public boolean isReady() {
         return !(inPort.getInputObject() == null || inPort.getInputObject().getValue() == null
                 || inPort.getInputObject().getValue().equals(""));

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/InputPortIml.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/InputPortIml.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/InputPortIml.java
index 0341dd7..3f5d036 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/InputPortIml.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/InputPortIml.java
@@ -19,6 +19,7 @@
 
 package org.apache.airavata.workflow.core.dag.port;
 
+import org.apache.airavata.model.PortModel;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
@@ -27,13 +28,12 @@ public class InputPortIml implements InPort {
 
     private InputDataObjectType inputDataObjectType;
     private boolean ready = false;
-    private String portId;
     private Edge edge;
     private WorkflowNode node;
-    private String defaultValue;
+    private PortModel portModel;
 
-    public InputPortIml(String portId) {
-        this.portId = portId;
+    public InputPortIml(PortModel portModel) {
+        this.portModel = portModel;
     }
 
     @Override
@@ -60,11 +60,21 @@ public class InputPortIml implements InPort {
 
     @Override
     public String getDefaultValue() {
-        return defaultValue;
+        return getPortModel().getValue();
     }
 
     public void setDefaultValue(String defaultValue) {
-        this.defaultValue = defaultValue;
+        getPortModel().setValue(defaultValue);
+    }
+
+    @Override
+    public void setPortModel(PortModel portModel) {
+        this.portModel = portModel;
+    }
+
+    @Override
+    public PortModel getPortModel() {
+        return portModel;
     }
 
     @Override
@@ -85,7 +95,7 @@ public class InputPortIml implements InPort {
 
     @Override
     public String getId() {
-        return this.portId;
+        return getPortModel().getPortId();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
index fd3045d..4d90308 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.workflow.core.dag.port;
 
+import org.apache.airavata.model.PortModel;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
@@ -33,11 +34,11 @@ public class OutPortImpl implements OutPort {
     private OutputDataObjectType outputDataObjectType;
     private List<Edge> outEdges = new ArrayList<Edge>();
     private boolean isSatisfy = false;
-    private String portId;
     private WorkflowNode node;
+    private PortModel portModel;
 
-    public OutPortImpl(String portId) {
-        this.portId = portId;
+    public OutPortImpl(PortModel portModel) {
+        this.portModel = portModel;
     }
 
     @Override
@@ -61,6 +62,16 @@ public class OutPortImpl implements OutPort {
     }
 
     @Override
+    public void setPortModel(PortModel portModel) {
+        this.portModel = portModel;
+    }
+
+    @Override
+    public PortModel getPortModel() {
+        return portModel;
+    }
+
+    @Override
     public boolean isReady() {
         return this.outputDataObjectType.getValue() != null
                 && !this.outputDataObjectType.getValue().equals("");
@@ -78,6 +89,6 @@ public class OutPortImpl implements OutPort {
 
     @Override
     public String getId() {
-        return portId;
+        return getPortModel().getPortId();
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/Port.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/Port.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/Port.java
index e3756cf..9fda882 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/Port.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/Port.java
@@ -21,10 +21,15 @@
 
 package org.apache.airavata.workflow.core.dag.port;
 
+import org.apache.airavata.model.PortModel;
 import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
 
 public interface Port {
 
+    public void setPortModel(PortModel portModel);
+
+    public PortModel getPortModel();
+
     public boolean isReady();
 
     public WorkflowNode getNode();

http://git-wip-us.apache.org/repos/asf/airavata/blob/9859af32/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
index 62ed885..547ac3a 100644
--- a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
+++ b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
@@ -83,9 +83,10 @@ struct EdgeModel {
 
 struct PortModel {
     1: required string portId = airavata_commons.DEFAULT_ID,
-    2: optional string name
+    2: optional string name,
     3: optional ComponentStatus status,
-    4: optional string description
+    4: optional string value,
+    5: optional string description
 
 }
 


[17/50] [abbrv] airavata git commit: Added generated thrift files

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
index 3bce5f2..9812e13 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskStatus implements org.apache.thrift.TBase<TaskStatus, TaskStatus._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
index 2419efd..f137daa 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class DataStagingTaskModel implements org.apache.thrift.TBase<DataStagingTaskModel, DataStagingTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataStagingTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataStagingTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
index 2d7d613..5f2f962 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
  * EnvironmentSetupTaskModel: A structure holding the environment creation task details
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<EnvironmentSetupTaskModel, EnvironmentSetupTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<EnvironmentSetupTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EnvironmentSetupTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
index 7a17687..27eaf94 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobSubmissionTaskModel implements org.apache.thrift.TBase<JobSubmissionTaskModel, JobSubmissionTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
index 0a0babb..f435e5b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class MonitorTaskModel implements org.apache.thrift.TBase<MonitorTaskModel, MonitorTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<MonitorTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("MonitorTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
index 780b5af..83f7662 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * subTaskModel:
  *   A generic byte object for the Task developer to store internal serialized data into registry catalogs.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<TaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
index 7eb17ed..dec3a3a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class Gateway implements org.apache.thrift.TBase<Gateway, Gateway._Fields>, java.io.Serializable, Cloneable, Comparable<Gateway> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Gateway");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
index 4120651..428ee9f 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class Group implements org.apache.thrift.TBase<Group, Group._Fields>, java.io.Serializable, Cloneable, Comparable<Group> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Group");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
index 245bd33..e11ddf3 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class Project implements org.apache.thrift.TBase<Project, Project._Fields>, java.io.Serializable, Cloneable, Comparable<Project> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Project");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
index 7e0d98d..d709357 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class User implements org.apache.thrift.TBase<User, User._Fields>, java.io.Serializable, Cloneable, Comparable<User> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("User");
 


[08/50] [abbrv] airavata git commit: fixing AIRAVATA-1852

Posted by ch...@apache.org.
fixing AIRAVATA-1852


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

Branch: refs/heads/master
Commit: d527fc5a50665802569676d65df63c4372c9c3b2
Parents: 9ce83af
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Jan 20 12:05:47 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Jan 20 12:05:47 2016 -0500

----------------------------------------------------------------------
 .../src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java  | 6 ++++++
 .../org/apache/airavata/gfac/impl/task/SCPDataStageTask.java   | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d527fc5a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
index a110956..2281ebc 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
@@ -346,6 +346,11 @@ public class SSHUtils {
                         break;
                     }
                 }
+                if (fileSize == 0L){
+                    String error = "Input file is empty...";
+                    log.error(error);
+                    throw new JSchException(error);
+                }
                 String initData = "C0644 " + fileSize + " " + fileName + "\n";
                 assert dout != null;
                 dout.write(initData.getBytes());
@@ -396,6 +401,7 @@ public class SSHUtils {
 
         } catch (Exception e) {
             log.error(e.getMessage(), e);
+            throw new JSchException(e.getMessage());
         } finally {
             try {
                 if (dout != null) dout.close();

http://git-wip-us.apache.org/repos/asf/airavata/blob/d527fc5a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index ac001ca..605b972 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@ -206,7 +206,7 @@ public class SCPDataStageTask implements Task {
             errorModel.setUserFriendlyMessage(msg);
             taskContext.getTaskModel().setTaskError(errorModel);
         } catch (SSHApiException e) {
-            String msg = "Failed to do scp with compute resource";
+            String msg = e.getMessage();
             log.error(msg, e);
             status.setState(TaskState.FAILED);
             status.setReason(msg);


[11/50] [abbrv] airavata git commit: parsing job output for lonestar

Posted by ch...@apache.org.
parsing job output for lonestar


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

Branch: refs/heads/master
Commit: e2b2951271f42011ce2ae8af232a15de9e53c3dd
Parents: 462843a
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 25 15:09:07 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 25 15:09:07 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e2b29512/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
index f19d4f7..e5249e0 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
@@ -137,7 +137,9 @@ public class UGEOutputParser implements OutputParser {
 
     @Override
     public boolean isJobSubmissionFailed(String rawOutput) {
-        return false;
+        Pattern pattern = Pattern.compile("Rejecting");
+        Matcher matcher = pattern.matcher(rawOutput);
+        return matcher.find();
     }
 
     public JobStatus parseJobStatus(String jobID, String rawOutput) {


[35/50] [abbrv] airavata git commit: adding starting scripts to workflow catalog

Posted by ch...@apache.org.
adding starting scripts to workflow catalog


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

Branch: refs/heads/master
Commit: d2501c332826cebf3b972cbc499b10e1743f53ff
Parents: d1bb382
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Thu Feb 4 13:41:18 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Thu Feb 4 13:41:18 2016 -0500

----------------------------------------------------------------------
 .../airavata/api/server/AiravataAPIServer.java  |   3 +
 .../server/handler/AiravataServerHandler.java   |  14 +-
 .../server/util/WorkflowCatalogInitUtil.java    | 162 +++++++++++++++++++
 .../catalog/impl/WorkflowCatalogImpl.java       |  20 +++
 .../src/main/resources/workflow-derby.sql       | 128 ---------------
 .../src/main/resources/workflow-mysql.sql       | 128 ---------------
 .../main/resources/workflowcatalog-derby.sql    | 128 +++++++++++++++
 .../main/resources/workflowcatalog-mysql.sql    | 128 +++++++++++++++
 .../airavata/registry/cpi/WorkflowCatalog.java  |   2 +
 .../workflow-models/workflow_data_model.thrift  |   9 +-
 10 files changed, 456 insertions(+), 266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
index d4eee2c..09d4c3f 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
@@ -33,11 +33,13 @@ import org.apache.airavata.api.server.security.interceptor.SecurityModule;
 import org.apache.airavata.api.server.util.AppCatalogInitUtil;
 import org.apache.airavata.api.server.util.Constants;
 import org.apache.airavata.api.server.util.RegistryInitUtil;
+import org.apache.airavata.api.server.util.WorkflowCatalogInitUtil;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.IServer;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.model.error.AiravataErrorType;
 import org.apache.airavata.model.error.AiravataSystemException;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
 import org.apache.airavata.security.AiravataSecurityException;
 import org.apache.thrift.server.TServer;
 import org.apache.thrift.server.TThreadPoolServer;
@@ -68,6 +70,7 @@ public class AiravataAPIServer implements IServer{
         try {
             RegistryInitUtil.initializeDB();
             AppCatalogInitUtil.initializeDB();
+            WorkflowCatalogInitUtil.initializeDB();
             final String serverHost = ServerSettings.getSetting(Constants.API_SERVER_HOST, null);
             if (!ServerSettings.isTLSEnabled()) {
                 final int serverPort = Integer.parseInt(ServerSettings.getSetting(Constants.API_SERVER_PORT, "8930"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index c8de2b7..78e39d2 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -4147,7 +4147,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
 			return getWorkflowCatalog().getAllWorkflows(gatewayId);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in retrieving all workflow template Ids.";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4162,7 +4162,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			throws InvalidRequestException, AiravataClientException, AuthorizationException, AiravataSystemException, TException {
 		try {
 			return getWorkflowCatalog().getWorkflow(workflowTemplateId);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in retrieving the workflow "+workflowTemplateId+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4177,7 +4177,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 		try {
 			getWorkflowCatalog().deleteWorkflow(workflowTemplateId);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in deleting the workflow "+workflowTemplateId+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4196,7 +4196,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
 			return getWorkflowCatalog().registerWorkflow(workflow, gatewayId);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in registering the workflow "+workflow.getName()+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4211,7 +4211,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 		try {
 			getWorkflowCatalog().updateWorkflow(workflowTemplateId, workflow);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in updating the workflow "+workflow.getName()+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4226,7 +4226,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 		try {
 			return getWorkflowCatalog().getWorkflowTemplateId(workflowName);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in retrieving the workflow template id for "+workflowName+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4241,7 +4241,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 		try {
 			return getWorkflowCatalog().isWorkflowExistWithName(workflowName);
-		} catch (AppCatalogException e) {
+		} catch (WorkflowCatalogException e) {
 			String msg = "Error in veriying the workflow for workflow name "+workflowName+".";
 			logger.error(msg, e);
 			AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
new file mode 100644
index 0000000..2a8b75b
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/WorkflowCatalogInitUtil.java
@@ -0,0 +1,162 @@
+/*
+*
+* 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.api.server.util;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.core.app.catalog.resources.GatewayProfileResource;
+import org.apache.derby.drda.NetworkServerControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URI;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+public class WorkflowCatalogInitUtil {
+    private static final Logger logger = LoggerFactory.getLogger(WorkflowCatalogInitUtil.class);
+    public static final String WORKFLOW = "WORKFLOW";
+    public static final String WORKFLOWCATALOG_JDBC_DRIVER = "workflowcatalog.jdbc.driver";
+    public static final String WORKFLOWCATALOG_JDBC_URL = "workflowcatalog.jdbc.url";
+    public static final String WORKFLOWCATALOG_JDBC_USER = "workflowcatalog.jdbc.user";
+    public static final String WORKFLOWCATALOG_JDBC_PASSWORD = "workflowcatalog.jdbc.password";
+    public static final String START_DERBY_ENABLE = "start.derby.server.mode";
+    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
+    private static NetworkServerControl server;
+    private static JdbcStorage db;
+    private static String jdbcURl;
+    private static String jdbcDriver;
+    private static String jdbcUser;
+    private static String jdbcPassword;
+
+
+    public static void initializeDB() {
+//        System.setProperty("appcatalog.initialize.state", "0");
+        try{
+            jdbcDriver = ServerSettings.getSetting(WORKFLOWCATALOG_JDBC_DRIVER);
+            jdbcURl = ServerSettings.getSetting(WORKFLOWCATALOG_JDBC_URL);
+            jdbcUser = ServerSettings.getSetting(WORKFLOWCATALOG_JDBC_USER);
+            jdbcPassword = ServerSettings.getSetting(WORKFLOWCATALOG_JDBC_PASSWORD);
+            jdbcURl = jdbcURl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", e.getMessage());
+        }
+
+        if (getDBType(jdbcURl).equals("derby") && isDerbyStartEnabled()) {
+            startDerbyInServerMode();
+        }
+        db = new JdbcStorage(10, 50, jdbcURl, jdbcDriver, true);
+
+        Connection conn = null;
+        try {
+            conn = db.connect();
+            if (!DatabaseCreator.isDatabaseStructureCreated(WORKFLOW, conn)) {
+                DatabaseCreator.createRegistryDatabase("database_scripts/workflowcatalog", conn);
+                logger.info("New Database created for Workflow Catalog");
+            } else {
+                logger.info("Database already created for Workflow Catalog!");
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RuntimeException("Database failure", e);
+        } finally {
+            db.closeConnection(conn);
+            try {
+                if(conn != null){
+                    if (!conn.getAutoCommit()) {
+                        conn.commit();
+                    }
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                logger.error("Error while closing database connection...", e.getMessage(), e);
+            }
+        }
+//        System.setProperty("appcatalog.initialize.state", "1");
+    }
+
+    public static String getDBType(String jdbcUrl){
+        try{
+            String cleanURI = jdbcUrl.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getScheme();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return null;
+        }
+    }
+
+    public static boolean isDerbyStartEnabled(){
+        try {
+            String s = ServerSettings.getSetting(START_DERBY_ENABLE);
+            if("true".equals(s)){
+                return true;
+            }
+        }  catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", e.getMessage(), e);
+            return false;
+        }
+        return false;
+    }
+
+    public static void startDerbyInServerMode() {
+        try {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+                    getPort(jdbcURl),
+                    jdbcUser, jdbcPassword);
+            java.io.PrintWriter consoleWriter = new java.io.PrintWriter(System.out, true);
+            server.start(consoleWriter);
+        } catch (IOException e) {
+            logger.error("Unable to start Apache derby in the server mode! Check whether " +
+                    "specified port is available");
+        } catch (Exception e) {
+            logger.error("Unable to start Apache derby in the server mode! Check whether " +
+                    "specified port is available");
+        }
+    }
+    
+    public static void stopDerbyInServerMode() {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false");
+            if (server!=null){
+            	try {
+					server.shutdown();
+				} catch (Exception e) {
+		            logger.error("Error when stopping the derby server : "+e.getLocalizedMessage());
+				}
+            }
+    }
+
+    public static int getPort(String jdbcURL){
+        try{
+            String cleanURI = jdbcURL.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getPort();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return -1;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
index 8c0ced4..e5e1d0c 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/impl/WorkflowCatalogImpl.java
@@ -115,6 +115,12 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                     outputResource.setOutputVal(output.getValue());
                     outputResource.setWfTemplateId(resource.getWfTemplateId());
                     outputResource.setDataType(output.getType().toString());
+                    outputResource.setAppArgument(output.getApplicationArgument());
+                    outputResource.setDataNameLocation(output.getLocation());
+                    outputResource.setRequired(output.isIsRequired());
+                    outputResource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+                    outputResource.setOutputStreaming(output.isOutputStreaming());
+                    outputResource.setDataMovement(output.isDataMovement());
                     outputResource.save();
                 }
             }
@@ -169,6 +175,13 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                     existingOutput.setOutputVal(output.getValue());
                     existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
                     existingOutput.setDataType(output.getType().toString());
+                    existingOutput.setDataType(output.getType().toString());
+                    existingOutput.setAppArgument(output.getApplicationArgument());
+                    existingOutput.setDataNameLocation(output.getLocation());
+                    existingOutput.setRequired(output.isIsRequired());
+                    existingOutput.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+                    existingOutput.setOutputStreaming(output.isOutputStreaming());
+                    existingOutput.setDataMovement(output.isDataMovement());
                     existingOutput.save();
                 }
             }
@@ -225,6 +238,13 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                 existingOutput.setOutputVal(output.getValue());
                 existingOutput.setWfTemplateId(existingWF.getWfTemplateId());
                 existingOutput.setDataType(output.getType().toString());
+                existingOutput.setDataType(output.getType().toString());
+                existingOutput.setAppArgument(output.getApplicationArgument());
+                existingOutput.setDataNameLocation(output.getLocation());
+                existingOutput.setRequired(output.isIsRequired());
+                existingOutput.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
+                existingOutput.setOutputStreaming(output.isOutputStreaming());
+                existingOutput.setDataMovement(output.isDataMovement());
                 existingOutput.save();
             }
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-core/src/main/resources/workflow-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-derby.sql b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
deleted file mode 100644
index 8c590f8..0000000
--- a/modules/registry/registry-core/src/main/resources/workflow-derby.sql
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE WORKFLOW
-(
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_NAME VARCHAR (255) NOT NULL,
-        CREATED_USER VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        GRAPH CLOB,
-        IMAGE BLOB,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (TEMPLATE_ID)
-);
-
-CREATE TABLE WORKFLOW_INPUT
-(
-         TEMPLATE_ID VARCHAR(255),
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE CLOB,
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_OUTPUT
-(
-         TEMPLATE_ID VARCHAR(255),
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPONENT_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID)
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EDGE
-(
-        EDGE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PORT
-(
-        PORT_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE
-(
-        NODE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        APPLICATION_ID VARCHAR (255),
-        APPLICATION_NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
deleted file mode 100644
index 3527d60..0000000
--- a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE WORKFLOW
-(
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_NAME VARCHAR (255) NOT NULL,
-        CREATED_USER VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        GRAPH LONGTEXT,
-        IMAGE BLOB,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (TEMPLATE_ID)
-);
-
-CREATE TABLE WORKFLOW_INPUT
-(
-         TEMPLATE_ID VARCHAR(255),
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_OUTPUT
-(
-         TEMPLATE_ID VARCHAR(255),
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE LONGTEXT,
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPONENT_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID)
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EDGE
-(
-        EDGE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PORT
-(
-        PORT_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE
-(
-        NODE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        APPLICATION_ID VARCHAR (255),
-        APPLICATION_NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
new file mode 100644
index 0000000..8c590f8
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/workflowcatalog-derby.sql
@@ -0,0 +1,128 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+CREATE TABLE WORKFLOW
+(
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        CREATED_USER VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
+        GRAPH CLOB,
+        IMAGE BLOB,
+        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (TEMPLATE_ID)
+);
+
+CREATE TABLE WORKFLOW_INPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         INPUT_KEY VARCHAR(255),
+         INPUT_VALUE CLOB,
+         DATA_TYPE VARCHAR(255),
+         METADATA VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
+         INPUT_ORDER INTEGER,
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_STAGED SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_OUTPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         OUTPUT_KEY VARCHAR(255),
+         OUTPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_MOVEMENT SMALLINT,
+         DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         OUTPUT_STREAMING SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMPONENT_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID)
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EDGE
+(
+        EDGE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT
+(
+        PORT_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE
+(
+        NODE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        APPLICATION_ID VARCHAR (255),
+        APPLICATION_NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
new file mode 100644
index 0000000..3527d60
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/workflowcatalog-mysql.sql
@@ -0,0 +1,128 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+CREATE TABLE WORKFLOW
+(
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        CREATED_USER VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
+        GRAPH LONGTEXT,
+        IMAGE BLOB,
+        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (TEMPLATE_ID)
+);
+
+CREATE TABLE WORKFLOW_INPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         INPUT_KEY VARCHAR(255),
+         INPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         METADATA VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
+         INPUT_ORDER INTEGER,
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_STAGED SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_OUTPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         OUTPUT_KEY VARCHAR(255),
+         OUTPUT_VALUE LONGTEXT,
+         DATA_TYPE VARCHAR(255),
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_MOVEMENT SMALLINT,
+         DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         OUTPUT_STREAMING SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMPONENT_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID)
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EDGE
+(
+        EDGE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT
+(
+        PORT_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE
+(
+        NODE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        APPLICATION_ID VARCHAR (255),
+        APPLICATION_NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
index 34c8ff6..ae7f839 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
@@ -43,4 +43,6 @@ public interface WorkflowCatalog {
     public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException;
 
     public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException;
+
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d2501c33/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
index 547ac3a..f688e67 100644
--- a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
+++ b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
@@ -37,9 +37,12 @@ struct WorkflowModel {
     1: required string templateId = airavata_commons.DEFAULT_ID,
     2: required string name,
     3: required string graph,
-    4: optional binary image,
-    5: optional list<application_io_models.InputDataObjectType> workflowInputs,
-    6: optional list<application_io_models.OutputDataObjectType> workflowOutputs
+    4: required string gatewayId,
+    5: required string createdUser,
+    6: optional binary image,
+    7: optional list<application_io_models.InputDataObjectType> workflowInputs,
+    8: optional list<application_io_models.OutputDataObjectType> workflowOutputs,
+    9: optional i64 creationTime,
 }
 
 enum WorkflowState {


[30/50] [abbrv] airavata git commit: adding workflow related resource layer

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput.java
new file mode 100644
index 0000000..c9a319a
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput.java
@@ -0,0 +1,167 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "WORKFLOW_INPUT")
+@IdClass(WorkflowInput_PK.class)
+public class WorkflowInput implements Serializable {
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateID;
+    @Id
+    @Column(name = "INPUT_KEY")
+    private String inputKey;
+    @Lob
+    @Column(name = "INPUT_VALUE")
+    private char[] inputVal;
+    @Column(name = "DATA_TYPE")
+    private String dataType;
+    @Column(name = "METADATA")
+    private String metadata;
+    @Column(name = "APP_ARGUMENT")
+    private String appArgument;
+    @Column(name = "USER_FRIENDLY_DESC")
+    private String userFriendlyDesc;
+    @Column(name = "STANDARD_INPUT")
+    private boolean standardInput;
+    @Column(name="INPUT_ORDER")
+    private int inputOrder;
+    @Column(name="IS_REQUIRED")
+    private boolean isRequired;
+    @Column(name="REQUIRED_TO_COMMANDLINE")
+    private boolean requiredToCMD;
+    @Column(name = "DATA_STAGED")
+    private boolean dataStaged;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getInputKey() {
+        return inputKey;
+    }
+
+    public void setInputKey(String inputKey) {
+        this.inputKey = inputKey;
+    }
+
+    public char[] getInputVal() {
+        return inputVal;
+    }
+
+    public void setInputVal(char[] inputVal) {
+        this.inputVal = inputVal;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getMetadata() {
+        return metadata;
+    }
+
+    public void setMetadata(String metadata) {
+        this.metadata = metadata;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
+    public String getUserFriendlyDesc() {
+        return userFriendlyDesc;
+    }
+
+    public void setUserFriendlyDesc(String userFriendlyDesc) {
+        this.userFriendlyDesc = userFriendlyDesc;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    public boolean isRequiredToCMD() {
+        return requiredToCMD;
+    }
+
+    public void setRequiredToCMD(boolean requiredToCMD) {
+        this.requiredToCMD = requiredToCMD;
+    }
+
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
deleted file mode 100644
index c8d4952..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.workflow.catalog.model;
-
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-@Table(name = "WORKFLOW_INPUT")
-@IdClass(WorkflowInput_PK.class)
-public class WorkflowIntInput implements Serializable {
-    @Id
-    @Column(name = "INTERFACE_ID")
-    private String templateID;
-    @Id
-    @Column(name = "INPUT_KEY")
-    private String inputKey;
-    @Column(name = "INPUT_VALUE")
-    private String inputVal;
-    @Column(name = "DATA_TYPE")
-    private String dataType;
-    @Column(name = "METADATA")
-    private String metadata;
-    @Column(name = "APP_ARGUMENT")
-    private String appArgument;
-    @Column(name = "USER_FRIENDLY_DESC")
-    private String userFriendlyDesc;
-    @Column(name = "STANDARD_INPUT")
-    private boolean standardInput;
-    @Column(name="INPUT_ORDER")
-    private int inputOrder;
-    @Column(name="IS_REQUIRED")
-    private boolean isRequired;
-    @Column(name="REQUIRED_TO_COMMANDLINE")
-    private boolean requiredToCMD;
-    @Column(name = "DATA_STAGED")
-    private boolean dataStaged;
-
-    @ManyToOne(cascade= CascadeType.MERGE)
-    @JoinColumn(name = "TEMPLATE_ID")
-    private Workflow workflow;
-
-    public String getTemplateID() {
-        return templateID;
-    }
-
-    public void setTemplateID(String templateID) {
-        this.templateID = templateID;
-    }
-
-    public String getInputKey() {
-        return inputKey;
-    }
-
-    public void setInputKey(String inputKey) {
-        this.inputKey = inputKey;
-    }
-
-    public String getInputVal() {
-        return inputVal;
-    }
-
-    public void setInputVal(String inputVal) {
-        this.inputVal = inputVal;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    public String getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(String metadata) {
-        this.metadata = metadata;
-    }
-
-    public String getAppArgument() {
-        return appArgument;
-    }
-
-    public void setAppArgument(String appArgument) {
-        this.appArgument = appArgument;
-    }
-
-    public String getUserFriendlyDesc() {
-        return userFriendlyDesc;
-    }
-
-    public void setUserFriendlyDesc(String userFriendlyDesc) {
-        this.userFriendlyDesc = userFriendlyDesc;
-    }
-
-    public Workflow getWorkflow() {
-        return workflow;
-    }
-
-    public void setWorkflow(Workflow workflow) {
-        this.workflow = workflow;
-    }
-
-    public boolean isStandardInput() {
-        return standardInput;
-    }
-
-    public void setStandardInput(boolean standardInput) {
-        this.standardInput = standardInput;
-    }
-
-    public int getInputOrder() {
-        return inputOrder;
-    }
-
-    public void setInputOrder(int inputOrder) {
-        this.inputOrder = inputOrder;
-    }
-
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-    public boolean isRequiredToCMD() {
-        return requiredToCMD;
-    }
-
-    public void setRequiredToCMD(boolean requiredToCMD) {
-        this.requiredToCMD = requiredToCMD;
-    }
-
-    public boolean isDataStaged() {
-        return dataStaged;
-    }
-
-    public void setDataStaged(boolean dataStaged) {
-        this.dataStaged = dataStaged;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
index 2131557..4a79ce8 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
@@ -35,8 +35,9 @@ public class WorkflowOutput implements Serializable {
     @Id
     @Column(name = "OUTPUT_KEY")
     private String outputKey;
+    @Lob
     @Column(name = "OUTPUT_VALUE")
-    private String outputVal;
+    private char[] outputVal;
     @Column(name = "DATA_TYPE")
     private String dataType;
     @Column(name = "IS_REQUIRED")
@@ -90,11 +91,11 @@ public class WorkflowOutput implements Serializable {
         this.outputKey = outputKey;
     }
 
-    public String getOutputVal() {
+    public char[] getOutputVal() {
         return outputVal;
     }
 
-    public void setOutputVal(String outputVal) {
+    public void setOutputVal(char[] outputVal) {
         this.outputVal = outputVal;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/ComponentStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/ComponentStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/ComponentStatusResource.java
new file mode 100644
index 0000000..f6d2ce6
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/ComponentStatusResource.java
@@ -0,0 +1,340 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.ComponentStatus;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ComponentStatusResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(ComponentStatusResource.class);
+
+    private String statusId;
+    private String state;
+    private String reason;
+    private String templateId;
+    private Timestamp updatedTime;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(COMPONENT_STATUS);
+            generator.setParameter(ComponentStatusConstants.STATUS_ID, identifier.toString());
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(COMPONENT_STATUS);
+            generator.setParameter(ComponentStatusConstants.STATUS_ID, identifier.toString());
+            Query q = generator.selectQuery(em);
+            ComponentStatus status = (ComponentStatus) q.getSingleResult();
+            ComponentStatusResource statusResource =
+                    (ComponentStatusResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.COMPONENT_STATUS
+                            , status);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return statusResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> statusResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(COMPONENT_STATUS);
+            List results;
+            if (fieldName.equals(ComponentStatusConstants.TEMPLATE_ID)) {
+                generator.setParameter(ComponentStatusConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        ComponentStatus componentStatus = (ComponentStatus) result;
+                        ComponentStatusResource statusResource =
+                                (ComponentStatusResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.COMPONENT_STATUS, componentStatus);
+                        statusResources.add(statusResource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Component status Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Component status Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return statusResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> statusResourceIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(COMPONENT_STATUS);
+            List results;
+            if (fieldName.equals(ComponentStatusConstants.TEMPLATE_ID)) {
+                generator.setParameter(ComponentStatusConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        ComponentStatus componentStatus = (ComponentStatus) result;
+                        statusResourceIds.add(componentStatus.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Component Status resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Component Status Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return statusResourceIds;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            ComponentStatus existingStatus = em.find(ComponentStatus.class,statusId);
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingStatus != null) {
+                existingStatus.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                existingStatus.setWorkflow(workflow);
+                existingStatus.setReason(reason);
+                existingStatus.setState(state);
+                existingStatus.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                em.merge(existingStatus);
+            } else {
+                ComponentStatus status = new ComponentStatus();
+                status.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                status.setWorkflow(workflow);
+                status.setReason(reason);
+                status.setState(state);
+                status.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                em.persist(status);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            ComponentStatus status = em.find(ComponentStatus.class, identifier.toString());
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return status != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/EdgeResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/EdgeResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/EdgeResource.java
new file mode 100644
index 0000000..1613943
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/EdgeResource.java
@@ -0,0 +1,380 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.model.Edge;
+import org.apache.airavata.registry.core.workflow.catalog.model.Edge_PK;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class EdgeResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(EdgeResource.class);
+
+    private String edgeId;
+    private String name;
+    private String statusId;
+    private String templateId;
+    private Timestamp createdTime;
+    private String description;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(EDGE);
+            generator.setParameter(EdgeConstants.EDGE_ID, ids.get(EdgeConstants.EDGE_ID));
+            generator.setParameter(EdgeConstants.TEMPLATE_ID, ids.get(EdgeConstants.TEMPLATE_ID));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(EDGE);
+            generator.setParameter(EdgeConstants.EDGE_ID, ids.get(EdgeConstants.EDGE_ID));
+            generator.setParameter(EdgeConstants.TEMPLATE_ID, ids.get(EdgeConstants.TEMPLATE_ID));
+            Query q = generator.selectQuery(em);
+            Edge edge = (Edge) q.getSingleResult();
+            EdgeResource edgeResource =
+                    (EdgeResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.EDGE
+                            , edge);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return edgeResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> edgeResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(EDGE);
+            List results;
+            if (fieldName.equals(EdgeConstants.TEMPLATE_ID)) {
+                generator.setParameter(EdgeConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Edge Edge = (Edge) result;
+                        EdgeResource edgeResource =
+                                (EdgeResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.EDGE, Edge);
+                        edgeResources.add(edgeResource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Edge Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Edge Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return edgeResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> edgeResourceIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(EDGE);
+            List results;
+            if (fieldName.equals(EdgeConstants.TEMPLATE_ID)) {
+                generator.setParameter(EdgeConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Edge edge = (Edge) result;
+                        edgeResourceIds.add(edge.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow Edge resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow Edge Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return edgeResourceIds;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Edge existingEdge = em.find(Edge.class,new Edge_PK(templateId, edgeId));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingEdge != null) {
+                existingEdge.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                existingEdge.setWorkflow(workflow);
+                existingEdge.setComponentStatusId(statusId);
+                existingEdge.setDescription(description);
+                existingEdge.setName(name);
+                existingEdge.setCreatedTime(createdTime);
+                em.merge(existingEdge);
+            } else {
+                Edge edge = new Edge();
+                edge.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                edge.setWorkflow(workflow);
+                edge.setComponentStatusId(statusId);
+                edge.setDescription(description);
+                edge.setName(name);
+                edge.setCreatedTime(AiravataUtils.getCurrentTimestamp());
+                em.persist(edge);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Edge edge = em.find(Edge.class, new Edge_PK(ids.get(EdgeConstants.TEMPLATE_ID), ids.get(EdgeConstants.EDGE_ID)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return edge != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public String getEdgeId() {
+        return edgeId;
+    }
+
+    public void setEdgeId(String edgeId) {
+        this.edgeId = edgeId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/NodeResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/NodeResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/NodeResource.java
new file mode 100644
index 0000000..ea034e7
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/NodeResource.java
@@ -0,0 +1,402 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.Node;
+import org.apache.airavata.registry.core.workflow.catalog.model.Node_PK;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class NodeResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(NodeResource.class);
+
+    private String nodeId;
+    private String name;
+    private String statusId;
+    private String templateId;
+    private String applicationId;
+    private String applicationName;
+    private Timestamp createdTime;
+    private String description;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(NODE);
+            generator.setParameter(NodeConstants.NODE_ID, ids.get(NodeConstants.NODE_ID));
+            generator.setParameter(NodeConstants.TEMPLATE_ID, ids.get(NodeConstants.TEMPLATE_ID));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(NODE);
+            generator.setParameter(NodeConstants.NODE_ID, ids.get(NodeConstants.NODE_ID));
+            generator.setParameter(NodeConstants.TEMPLATE_ID, ids.get(NodeConstants.TEMPLATE_ID));
+            Query q = generator.selectQuery(em);
+            Node node = (Node) q.getSingleResult();
+            NodeResource nodeResource =
+                    (NodeResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.NODE
+                            , node);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return nodeResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> nodeResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(NODE);
+            List results;
+            if (fieldName.equals(NodeConstants.TEMPLATE_ID)) {
+                generator.setParameter(NodeConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Node node = (Node) result;
+                        NodeResource nodeResource =
+                                (NodeResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.NODE, node);
+                        nodeResources.add(nodeResource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Node Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Node Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return nodeResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> nodeResourceIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(NODE);
+            List results;
+            if (fieldName.equals(NodeConstants.TEMPLATE_ID)) {
+                generator.setParameter(NodeConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Node node = (Node) result;
+                        nodeResourceIds.add(node.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow node resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow node Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return nodeResourceIds;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Node existingNode = em.find(Node.class,new Node_PK(templateId, nodeId));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingNode != null) {
+                existingNode.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                existingNode.setWorkflow(workflow);
+                existingNode.setComponentStatusId(statusId);
+                existingNode.setDescription(description);
+                existingNode.setName(name);
+                existingNode.setCreatedTime(createdTime);
+                existingNode.setApplicationName(applicationName);
+                existingNode.setApplicationId(applicationId);
+                em.merge(existingNode);
+            } else {
+                Node node = new Node();
+                node.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                node.setWorkflow(workflow);
+                node.setComponentStatusId(statusId);
+                node.setDescription(description);
+                node.setName(name);
+                node.setCreatedTime(AiravataUtils.getCurrentTimestamp());
+                node.setApplicationName(applicationName);
+                node.setApplicationId(applicationId);
+                em.persist(node);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Node port = em.find(Node.class, new Node_PK(ids.get(NodeConstants.TEMPLATE_ID), ids.get(NodeConstants.NODE_ID)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return port != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public String getNodeId() {
+        return nodeId;
+    }
+
+    public void setNodeId(String nodeId) {
+        this.nodeId = nodeId;
+    }
+
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/PortResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/PortResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/PortResource.java
new file mode 100644
index 0000000..9cdaebf
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/PortResource.java
@@ -0,0 +1,380 @@
+/**
+ * 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.core.workflow.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.workflow.catalog.model.Port;
+import org.apache.airavata.registry.core.workflow.catalog.model.Port_PK;
+import org.apache.airavata.registry.core.workflow.catalog.model.Workflow;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogJPAUtils;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogQueryGenerator;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogResourceType;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PortResource extends WorkflowCatAbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(PortResource.class);
+
+    private String portId;
+    private String name;
+    private String statusId;
+    private String templateId;
+    private Timestamp createdTime;
+    private String description;
+
+    public void remove(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(PORT);
+            generator.setParameter(PortConstants.PORT_ID, ids.get(PortConstants.PORT_ID));
+            generator.setParameter(PortConstants.TEMPLATE_ID, ids.get(PortConstants.TEMPLATE_ID));
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(PORT);
+            generator.setParameter(PortConstants.PORT_ID, ids.get(PortConstants.PORT_ID));
+            generator.setParameter(PortConstants.TEMPLATE_ID, ids.get(PortConstants.TEMPLATE_ID));
+            Query q = generator.selectQuery(em);
+            Port port = (Port) q.getSingleResult();
+            PortResource portResource =
+                    (PortResource) WorkflowCatalogJPAUtils.getResource(WorkflowCatalogResourceType.PORT
+                            , port);
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return portResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException {
+        List<WorkflowCatalogResource> portResources = new ArrayList<WorkflowCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(PORT);
+            List results;
+            if (fieldName.equals(PortConstants.TEMPLATE_ID)) {
+                generator.setParameter(PortConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Port port = (Port) result;
+                        PortResource portResource =
+                                (PortResource) WorkflowCatalogJPAUtils.getResource(
+                                        WorkflowCatalogResourceType.PORT, port);
+                        portResources.add(portResource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Port Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Port Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return portResources;
+    }
+
+    public List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getAllIds() throws WorkflowCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException {
+        List<String> portResourceIds = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            WorkflowCatalogQueryGenerator generator = new WorkflowCatalogQueryGenerator(PORT);
+            List results;
+            if (fieldName.equals(PortConstants.TEMPLATE_ID)) {
+                generator.setParameter(PortConstants.TEMPLATE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        Port port = (Port) result;
+                        portResourceIds.add(port.getTemplateId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                if (em.isOpen()) {
+                    if (em.getTransaction().isActive()){
+                        em.getTransaction().rollback();
+                    }
+                    em.close();
+                }
+                logger.error("Unsupported field name for Workflow port resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Workflow port Resource.");
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return portResourceIds;
+    }
+
+    public void save() throws WorkflowCatalogException {
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Port existingPort = em.find(Port.class,new Port_PK(templateId, portId));
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingPort != null) {
+                existingPort.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                existingPort.setWorkflow(workflow);
+                existingPort.setComponentStatusId(statusId);
+                existingPort.setDescription(description);
+                existingPort.setName(name);
+                existingPort.setCreatedTime(createdTime);
+                em.merge(existingPort);
+            } else {
+                Port edge = new Port();
+                edge.setTemplateId(templateId);
+                Workflow workflow = em.find(Workflow.class, templateId);
+                edge.setWorkflow(workflow);
+                edge.setComponentStatusId(statusId);
+                edge.setDescription(description);
+                edge.setName(name);
+                edge.setCreatedTime(AiravataUtils.getCurrentTimestamp());
+                em.persist(edge);
+            }
+            em.getTransaction().commit();
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws WorkflowCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and it's value");
+            throw new WorkflowCatalogException("Identifier should be a map with the field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = WorkflowCatalogJPAUtils.getEntityManager();
+            Port port = em.find(Port.class, new Port_PK(ids.get(PortConstants.TEMPLATE_ID), ids.get(PortConstants.PORT_ID)));
+
+            if (em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+            return port != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new WorkflowCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public String getPortId() {
+        return portId;
+    }
+
+    public void setPortId(String portId) {
+        this.portId = portId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatAbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatAbstractResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatAbstractResource.java
new file mode 100644
index 0000000..cb90fe9
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatAbstractResource.java
@@ -0,0 +1,88 @@
+/*
+ *
+ * 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.core.workflow.catalog.resources;
+
+public abstract class WorkflowCatAbstractResource implements WorkflowCatalogResource {
+    // table names
+    public static final String WORKFLOW = "Workflow";
+    public static final String WORKFLOW_INPUT = "WorkflowInput";
+    public static final String WORKFLOW_OUTPUT = "WorkflowOutput";
+    public static final String EDGE = "Edge";
+    public static final String NODE = "Node";
+    public static final String PORT = "Port";
+    public static final String COMPONENT_STATUS = "ComponentStatus";
+    public static final String WORKFLOW_STATUS = "WorkflowStatus";
+
+    public final class WorkflowInputConstants {
+        public static final String WF_TEMPLATE_ID = "templateID";
+        public static final String INPUT_KEY = "inputKey";
+        public static final String INPUT_VALUE = "inputVal";
+        public static final String DATA_TYPE = "dataType";
+        public static final String METADATA = "metadata";
+        public static final String APP_ARGUMENT = "appArgument";
+        public static final String USER_FRIENDLY_DESC = "userFriendlyDesc";
+        public static final String STANDARD_INPUT = "standardInput";
+    }
+
+    public final class WorkflowOutputConstants {
+        public static final String WF_TEMPLATE_ID = "templateId";
+        public static final String OUTPUT_KEY = "outputKey";
+        public static final String OUTPUT_VALUE = "outputVal";
+        public static final String DATA_TYPE = "dataType";
+    }
+
+    // Workflow Table
+    public final class WorkflowConstants {
+        public static final String TEMPLATE_ID = "templateId";
+        public static final String GATEWAY_ID = "gatewayId";
+        public static final String WORKFLOW_NAME = "workflowName";
+    }
+
+    public final class ComponentStatusConstants {
+        public static final String STATUS_ID = "statusId";
+        public static final String TEMPLATE_ID = "templateId";
+    }
+
+    public final class WorkflowStatusConstants {
+        public static final String STATUS_ID = "statusId";
+        public static final String TEMPLATE_ID = "templateId";
+    }
+
+    public final class EdgeConstants {
+        public static final String STATUS_ID = "statusId";
+        public static final String TEMPLATE_ID = "templateId";
+        public static final String EDGE_ID = "edgeId";
+    }
+
+    public final class PortConstants {
+        public static final String STATUS_ID = "statusId";
+        public static final String TEMPLATE_ID = "templateId";
+        public static final String PORT_ID = "portId";
+    }
+
+    public final class NodeConstants {
+        public static final String STATUS_ID = "statusId";
+        public static final String TEMPLATE_ID = "templateId";
+        public static final String NODE_ID = "nodeId";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatalogResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatalogResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatalogResource.java
new file mode 100644
index 0000000..d536776
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/resources/WorkflowCatalogResource.java
@@ -0,0 +1,90 @@
+/*
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.apache.airavata.registry.core.workflow.catalog.resources;
+
+
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+
+import java.util.List;
+
+public interface WorkflowCatalogResource {
+
+    /**
+     * This method will remove the given resource from the database
+     *
+     * @param identifier identifier that can uniquely identify a single instance of the resource
+     */
+    void remove(Object identifier) throws WorkflowCatalogException;
+
+    /**
+     * This method will return the given resource from the database
+     *
+     * @param identifier identifier that can uniquely identify a single instance of the resource
+     * @return associate resource
+     */
+    WorkflowCatalogResource get(Object identifier) throws WorkflowCatalogException;
+
+    /**
+     * This method will list all the resources according to the filtering criteria
+     * @param fieldName field name
+     * @param value value of the field
+     * @return list of resources
+     */
+    List<WorkflowCatalogResource> get(String fieldName, Object value) throws WorkflowCatalogException;
+
+    /**
+     *
+     * @return
+     * @throws org.apache.airavata.registry.cpi.WorkflowCatalogException
+     */
+    List<WorkflowCatalogResource> getAll() throws WorkflowCatalogException;
+
+    /**
+     *
+     * @return
+     * @throws org.apache.airavata.registry.cpi.WorkflowCatalogException
+     */
+    List<String> getAllIds() throws WorkflowCatalogException;
+
+    /** This method will return list of resource ids according to given criteria
+     * @param fieldName field name
+     * @param value value of the field
+     * @return list of resource Ids
+     * @throws org.apache.airavata.registry.cpi.WorkflowCatalogException
+     */
+    List<String> getIds(String fieldName, Object value) throws WorkflowCatalogException;
+
+    /**
+     * This method will save the resource to the database.
+     */
+    void save() throws WorkflowCatalogException;
+
+    /**
+     * This method will check whether an entry from the given resource and resource name
+     * exists in the database
+     *
+     * @param identifier identifier that can uniquely identify a single instance of the resource
+     * @return whether the entry exists in the database or not
+     */
+    boolean isExists(Object identifier) throws WorkflowCatalogException;
+
+
+}


[25/50] [abbrv] airavata git commit: adding model classes for workflow models

Posted by ch...@apache.org.
adding model classes for workflow models


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

Branch: refs/heads/master
Commit: 72a6f6a5aa22ee5c70b5088fbd1daa40370daffc
Parents: c451723
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Feb 1 15:10:29 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Feb 1 15:10:29 2016 -0500

----------------------------------------------------------------------
 .../workflow/catalog/model/ComponentStatus.java |  78 +++++++++
 .../core/workflow/catalog/model/Edge.java       | 103 ++++++++++++
 .../core/workflow/catalog/model/Edge_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Node.java       | 124 ++++++++++++++
 .../core/workflow/catalog/model/Node_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Port.java       | 102 ++++++++++++
 .../core/workflow/catalog/model/Port_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Workflow.java   | 124 ++++++++++++++
 .../catalog/model/WorkflowInput_PK.java         |  64 +++++++
 .../catalog/model/WorkflowIntInput.java         | 166 +++++++++++++++++++
 .../workflow/catalog/model/WorkflowOutput.java  | 156 +++++++++++++++++
 .../catalog/model/WorkflowOutput_PK.java        |  64 +++++++
 .../workflow/catalog/model/WorkflowStatus.java  | 103 ++++++++++++
 .../catalog/model/WorkflowStatus_PK.java        |  64 +++++++
 .../src/main/resources/workflow-derby.sql       |   6 +
 .../src/main/resources/workflow-mysql.sql       |   6 +
 16 files changed, 1352 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
new file mode 100644
index 0000000..b6353b4
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "COMPONENT_STATUS")
+public class ComponentStatus implements Serializable {
+
+    @Id
+    @Column(name = "STATUS_ID")
+    private String statusId;
+
+    @Column(name = "STATE")
+    private String state;
+
+    @Column(name = "REASON")
+    private String reason;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
new file mode 100644
index 0000000..48ececb
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
@@ -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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "EDGE")
+@IdClass(Edge_PK.class)
+public class Edge implements Serializable {
+
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @Id
+    @Column(name = "EDGE_ID")
+    private String edgeId;
+
+    @Column(name = "NAME")
+    private String name;
+
+    @Column(name = "COMPONENT_STATUS_ID")
+    private String componentStatusId;
+
+    @Column(name = "DESCRIPTION")
+    private String description;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getEdgeId() {
+        return edgeId;
+    }
+
+    public void setEdgeId(String edgeId) {
+        this.edgeId = edgeId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getComponentStatusId() {
+        return componentStatusId;
+    }
+
+    public void setComponentStatusId(String componentStatusId) {
+        this.componentStatusId = componentStatusId;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
new file mode 100644
index 0000000..dedbb45
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class Edge_PK implements Serializable {
+    private String templateID;
+    private String edgeId;
+
+    public Edge_PK(String templateId, String edgeId) {
+        this.templateID = templateId;
+        this.edgeId = edgeId;
+    }
+
+    public Edge_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getEdgeId() {
+        return edgeId;
+    }
+
+    public void setEdgeId(String edgeId) {
+        this.edgeId = edgeId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
new file mode 100644
index 0000000..0711ad5
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
@@ -0,0 +1,124 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "NODE")
+@IdClass(Node_PK.class)
+public class Node implements Serializable {
+
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @Id
+    @Column(name = "NODE_ID")
+    private String nodeId;
+
+    @Column(name = "NAME")
+    private String name;
+
+    @Column(name = "COMPONENT_STATUS_ID")
+    private String componentStatusId;
+
+    @Column(name = "DESCRIPTION")
+    private String description;
+
+    @Column(name = "APPLICATION_ID")
+    private String applicationId;
+
+    @Column(name = "APPLICATION_NAME")
+    private String applicationName;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getComponentStatusId() {
+        return componentStatusId;
+    }
+
+    public void setComponentStatusId(String componentStatusId) {
+        this.componentStatusId = componentStatusId;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+
+    public String getNodeId() {
+        return nodeId;
+    }
+
+    public void setNodeId(String nodeId) {
+        this.nodeId = nodeId;
+    }
+
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
new file mode 100644
index 0000000..d9ee7a2
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class Node_PK implements Serializable {
+    private String templateID;
+    private String nodeId;
+
+    public Node_PK(String templateId, String nodeId) {
+        this.templateID = templateId;
+        this.nodeId = nodeId;
+    }
+
+    public Node_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getNodeId() {
+        return nodeId;
+    }
+
+    public void setNodeId(String nodeId) {
+        this.nodeId = nodeId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
new file mode 100644
index 0000000..f0be41f
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
@@ -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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "PORT")
+@IdClass(Port_PK.class)
+public class Port implements Serializable {
+
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @Id
+    @Column(name = "PORT_ID")
+    private String portId;
+
+    @Column(name = "NAME")
+    private String name;
+
+    @Column(name = "COMPONENT_STATUS_ID")
+    private String componentStatusId;
+
+    @Column(name = "DESCRIPTION")
+    private String description;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getComponentStatusId() {
+        return componentStatusId;
+    }
+
+    public void setComponentStatusId(String componentStatusId) {
+        this.componentStatusId = componentStatusId;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+
+    public String getPortId() {
+        return portId;
+    }
+
+    public void setPortId(String portId) {
+        this.portId = portId;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
new file mode 100644
index 0000000..a0305ed
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class Port_PK implements Serializable {
+    private String templateID;
+    private String portId;
+
+    public Port_PK(String templateId, String portId) {
+        this.templateID = templateId;
+        this.portId = portId;
+    }
+
+    public Port_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getPortId() {
+        return portId;
+    }
+
+    public void setPortId(String portId) {
+        this.portId = portId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Workflow.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Workflow.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Workflow.java
new file mode 100644
index 0000000..258342e
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Workflow.java
@@ -0,0 +1,124 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "WORKFLOW")
+public class Workflow implements Serializable {
+
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @Column(name = "CREATED_USER")
+    private String createdUser;
+
+    @Lob
+    @Column(name = "GRAPH")
+    private char[] graph;
+
+    @Column(name = "WORKFLOW_NAME")
+    private String workflowName;
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    @Lob
+    @Column(name = "IMAGE")
+    private byte[] image;
+
+    @Column(name = "GATEWAY_ID")
+    private String gatewayId;
+
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getCreatedUser() {
+        return createdUser;
+    }
+
+    public void setCreatedUser(String createdUser) {
+        this.createdUser = createdUser;
+    }
+
+    public char[] getGraph() {
+        return graph;
+    }
+
+    public void setGraph(char[] graph) {
+        this.graph = graph;
+    }
+
+    public String getWorkflowName() {
+        return workflowName;
+    }
+
+    public void setWorkflowName(String workflowName) {
+        this.workflowName = workflowName;
+    }
+
+    public byte[] getImage() {
+        return image;
+    }
+
+    public void setImage(byte[] image) {
+        this.image = image;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput_PK.java
new file mode 100644
index 0000000..b84ae6b
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowInput_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class WorkflowInput_PK implements Serializable {
+    private String templateID;
+    private String inputKey;
+
+    public WorkflowInput_PK(String templateId, String inputKey) {
+        this.templateID = templateId;
+        this.inputKey = inputKey;
+    }
+
+    public WorkflowInput_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getInputKey() {
+        return inputKey;
+    }
+
+    public void setInputKey(String inputKey) {
+        this.inputKey = inputKey;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
new file mode 100644
index 0000000..c8d4952
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowIntInput.java
@@ -0,0 +1,166 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "WORKFLOW_INPUT")
+@IdClass(WorkflowInput_PK.class)
+public class WorkflowIntInput implements Serializable {
+    @Id
+    @Column(name = "INTERFACE_ID")
+    private String templateID;
+    @Id
+    @Column(name = "INPUT_KEY")
+    private String inputKey;
+    @Column(name = "INPUT_VALUE")
+    private String inputVal;
+    @Column(name = "DATA_TYPE")
+    private String dataType;
+    @Column(name = "METADATA")
+    private String metadata;
+    @Column(name = "APP_ARGUMENT")
+    private String appArgument;
+    @Column(name = "USER_FRIENDLY_DESC")
+    private String userFriendlyDesc;
+    @Column(name = "STANDARD_INPUT")
+    private boolean standardInput;
+    @Column(name="INPUT_ORDER")
+    private int inputOrder;
+    @Column(name="IS_REQUIRED")
+    private boolean isRequired;
+    @Column(name="REQUIRED_TO_COMMANDLINE")
+    private boolean requiredToCMD;
+    @Column(name = "DATA_STAGED")
+    private boolean dataStaged;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getInputKey() {
+        return inputKey;
+    }
+
+    public void setInputKey(String inputKey) {
+        this.inputKey = inputKey;
+    }
+
+    public String getInputVal() {
+        return inputVal;
+    }
+
+    public void setInputVal(String inputVal) {
+        this.inputVal = inputVal;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getMetadata() {
+        return metadata;
+    }
+
+    public void setMetadata(String metadata) {
+        this.metadata = metadata;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
+    public String getUserFriendlyDesc() {
+        return userFriendlyDesc;
+    }
+
+    public void setUserFriendlyDesc(String userFriendlyDesc) {
+        this.userFriendlyDesc = userFriendlyDesc;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    public boolean isRequiredToCMD() {
+        return requiredToCMD;
+    }
+
+    public void setRequiredToCMD(boolean requiredToCMD) {
+        this.requiredToCMD = requiredToCMD;
+    }
+
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
new file mode 100644
index 0000000..2131557
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput.java
@@ -0,0 +1,156 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "WORKFLOW_OUTPUT")
+@IdClass(WorkflowOutput_PK.class)
+public class WorkflowOutput implements Serializable {
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+    @Id
+    @Column(name = "OUTPUT_KEY")
+    private String outputKey;
+    @Column(name = "OUTPUT_VALUE")
+    private String outputVal;
+    @Column(name = "DATA_TYPE")
+    private String dataType;
+    @Column(name = "IS_REQUIRED")
+    private boolean isRequired;
+    @Column(name="REQUIRED_TO_COMMANDLINE")
+    private boolean requiredToCMD;
+    @Column(name = "DATA_MOVEMENT")
+    private boolean dataMovement;
+    @Column(name = "DATA_NAME_LOCATION")
+    private String dataNameLocation;
+    @Column(name = "SEARCH_QUERY")
+    private String searchQuery;
+    @Column(name = "APP_ARGUMENT")
+    private String applicationArgument;
+    @Column(name = "OUTPUT_STREAMING")
+    private boolean outputStreaming;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+
+    public String getOutputKey() {
+        return outputKey;
+    }
+
+    public void setOutputKey(String outputKey) {
+        this.outputKey = outputKey;
+    }
+
+    public String getOutputVal() {
+        return outputVal;
+    }
+
+    public void setOutputVal(String outputVal) {
+        this.outputVal = outputVal;
+    }
+
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    public boolean isRequiredToCMD() {
+        return requiredToCMD;
+    }
+
+    public void setRequiredToCMD(boolean requiredToCMD) {
+        this.requiredToCMD = requiredToCMD;
+    }
+
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    public String getDataNameLocation() {
+        return dataNameLocation;
+    }
+
+    public void setDataNameLocation(String dataNameLocation) {
+        this.dataNameLocation = dataNameLocation;
+    }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
new file mode 100644
index 0000000..d36f2ca
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowOutput_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class WorkflowOutput_PK implements Serializable {
+    private String templateID;
+    private String outputKey;
+
+    public WorkflowOutput_PK(String templateId, String outputKey) {
+        this.templateID = templateId;
+        this.outputKey = outputKey;
+    }
+
+    public WorkflowOutput_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getOutputKey() {
+        return outputKey;
+    }
+
+    public void setOutputKey(String outputKey) {
+        this.outputKey = outputKey;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus.java
new file mode 100644
index 0000000..2fc9e47
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus.java
@@ -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.core.workflow.catalog.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "WORKFLOW_STATUS")
+@IdClass(WorkflowStatus_PK.class)
+public class WorkflowStatus implements Serializable {
+
+    @Id
+    @Column(name = "STATUS_ID")
+    private String statusId;
+
+    @Id
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @Column(name = "STATE")
+    private String state;
+
+    @Column(name = "REASON")
+    private String reason;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
new file mode 100644
index 0000000..ac33cc9
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/WorkflowStatus_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.workflow.catalog.model;
+
+import java.io.Serializable;
+
+public class WorkflowStatus_PK implements Serializable {
+    private String templateID;
+    private String statusId;
+
+    public WorkflowStatus_PK(String templateId, String statusId) {
+        this.templateID = templateId;
+        this.statusId = statusId;
+    }
+
+    public WorkflowStatus_PK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getTemplateID() {
+        return templateID;
+    }
+
+    public void setTemplateID(String templateID) {
+        this.templateID = templateID;
+    }
+
+    public String getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(String statusId) {
+        this.statusId = statusId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/resources/workflow-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-derby.sql b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
index e798824..f2af1be 100644
--- a/modules/registry/registry-core/src/main/resources/workflow-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
@@ -23,8 +23,12 @@ CREATE TABLE WORKFLOW
 (
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        CREATED_USER VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
         GRAPH CLOB,
         IMAGE BLOB,
+        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (TEMPLATE_ID)
 );
 
@@ -69,6 +73,7 @@ CREATE TABLE COMPONENT_STATUS
         STATE VARCHAR(255),
         REASON VARCHAR(255),
         PRIMARY KEY (STATUS_ID)
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 );
 
 CREATE TABLE WORKFLOW_STATUS
@@ -77,6 +82,7 @@ CREATE TABLE WORKFLOW_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (STATUS_ID, COMPONENT_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/72a6f6a5/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
index 945a912..d723343 100644
--- a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
@@ -23,8 +23,12 @@ CREATE TABLE WORKFLOW
 (
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        CREATED_USER VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
         GRAPH LONGTEXT,
         IMAGE BLOB,
+        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (TEMPLATE_ID)
 );
 
@@ -68,6 +72,7 @@ CREATE TABLE COMPONENT_STATUS
         STATUS_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (STATUS_ID)
 );
 
@@ -77,6 +82,7 @@ CREATE TABLE WORKFLOW_STATUS
         TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
+        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (STATUS_ID, COMPONENT_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );


[03/50] [abbrv] airavata git commit: Adding API method descriptions to App Catalog Airavata Thrift APIs

Posted by ch...@apache.org.
Adding API  method descriptions to App Catalog Airavata Thrift APIs


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

Branch: refs/heads/master
Commit: 101c8d4a3754501b9b1a728b7a4f2267883b06bc
Parents: 70358df
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Tue Jan 19 16:43:47 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Tue Jan 19 16:43:47 2016 -0500

----------------------------------------------------------------------
 .../airavata-apis/airavata_api.thrift           | 98 +++++++++++++-------
 1 file changed, 64 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/101c8d4a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 8c0b14a..567fc50 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -1356,7 +1356,6 @@ service Airavata {
    *   Returns a list of Deployed Resources.
    *
   */
-
   list<string> getAppModuleDeployedResources(1: required security_model.AuthzToken authzToken, 2: required string appModuleId)
       	throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -1364,21 +1363,22 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
 /*
+ *
  * Application Interface
  *
 */
 
   /**
+   *
    * Register a Application Interface.
    *
-   * @param applicationModule
+   * @param applicationInterface
    *    Application Module Object created from the datamodel.
    *
    * @return appInterfaceId
    *   Returns a server-side generated airavata application interface globally unique identifier.
    *
   */
-
   string registerApplicationInterface(1: required security_model.AuthzToken authzToken, 2: required string gatewayId,
                 3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
     	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1386,7 +1386,23 @@ service Airavata {
               3: airavata_errors.AiravataSystemException ase,
               4: airavata_errors.AuthorizationException ae)
 
-
+  /**
+   *
+   * Clone an Application Interface.
+   *
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   *
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   *
+   * @param newApplicationName
+   *    Name for the new application interface.
+   *
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   *
+  */
   string cloneApplicationInterface(1: required security_model.AuthzToken authzToken,
                          2: string existingAppInterfaceID,
                          3: string newApplicationName,
@@ -1395,18 +1411,18 @@ service Airavata {
                   2: airavata_errors.AiravataClientException ace,
                   3: airavata_errors.AiravataSystemException ase,
                   4: airavata_errors.AuthorizationException ae)
+
   /**
-   * Fetch a Application Interface.
+   *
+   * Fetch an Application Interface.
    *
    * @param appInterfaceId
-   *   The identifier for the requested application module
+   *   The identifier for the requested application interface.
    *
    * @return applicationInterface
-   *   Returns a application Interface Object.
-   *
+   *   Returns an application Interface Object.
    *
   */
-
   application_interface_model.ApplicationInterfaceDescription getApplicationInterface(1: required security_model.AuthzToken authzToken,
                 2: required string appInterfaceId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1415,10 +1431,11 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Update a Application Interface.
    *
    * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    *
    * @param appInterface
    *    Application Interface Object created from the datamodel.
@@ -1426,9 +1443,7 @@ service Airavata {
    * @return status
    *   Returns a success/failure of the update.
    *
-   *
   */
-
   bool updateApplicationInterface(1: required security_model.AuthzToken authzToken,
             2: required string appInterfaceId,
             3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
@@ -1438,7 +1453,8 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Delete a Application Interface.
+   *
+   * Delete an Application Interface.
    *
    * @param appInterfaceId
    *   The identifier for the requested application interface to be deleted.
@@ -1446,9 +1462,7 @@ service Airavata {
    * @return status
    *   Returns a success/failure of the deletion.
    *
-   *
   */
-
   bool deleteApplicationInterface(1: required security_model.AuthzToken authzToken, 2: required string appInterfaceId)
          	throws (1: airavata_errors.InvalidRequestException ire,
                    2: airavata_errors.AiravataClientException ace,
@@ -1456,14 +1470,14 @@ service Airavata {
                    4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Fetch name and id of  Application Interface documents.
+   *
+   * Fetch name and ID of  Application Interface documents.
    *
    *
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
+   *   Returns a list of application interfaces with corresponsing ID's
    *
   */
-
   map<string, string> getAllApplicationInterfaceNames (1: required security_model.AuthzToken authzToken, 2: required string gatewayId)
       	throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -1471,14 +1485,14 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch all Application Interface documents.
    *
    *
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
+   *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
    *
   */
-
   list<application_interface_model.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required security_model.AuthzToken authzToken,
                 2: required string gatewayId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1487,16 +1501,16 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch the list of Application Inputs.
    *
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need inputs to be fetched.
    *
    * @return list<application_interface_model.InputDataObjectType>
    *   Returns a list of application inputs.
    *
   */
-
   list<application_io_models.InputDataObjectType> getApplicationInputs(1: required security_model.AuthzToken authzToken,
                 2: required string appInterfaceId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1505,16 +1519,16 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Fetch the list of Application Outputs.
+   *
+   * Fetch list of Application Outputs.
    *
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need outputs to be fetched.
    *
    * @return list<application_interface_model.OutputDataObjectType>
    *   Returns a list of application outputs.
    *
   */
-
   list<application_io_models.OutputDataObjectType> getApplicationOutputs(1: required security_model.AuthzToken authzToken,
                 2: required string appInterfaceId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1523,17 +1537,17 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch a list of all deployed Compute Hosts for a given application interfaces.
    *
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier for the requested application interface.
    *
    * @return map<computeResourceId, computeResourceName>
    *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
+   *   Deployments of each modules listed within the interfaces will be listed.
    *
   */
-
   map<string, string> getAvailableAppInterfaceComputeResources(1: required security_model.AuthzToken authzToken, 2: required string appInterfaceId)
       	throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -1541,6 +1555,7 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
 /*
+ *
  * Compute Resource
  *
 */
@@ -1555,7 +1570,6 @@ service Airavata {
    *   Returns a server-side generated airavata compute resource globally unique identifier.
    *
   */
-
   string registerComputeResource(1: required security_model.AuthzToken authzToken,
                                  2: required compute_resource_model.ComputeResourceDescription computeResourceDescription)
     	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1573,7 +1587,6 @@ service Airavata {
    *    Compute Resource Object created from the datamodel..
    *
   */
-
   compute_resource_model.ComputeResourceDescription getComputeResource(1: required security_model.AuthzToken authzToken,
                 2: required string computeResourceId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1582,13 +1595,13 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch all registered Compute Resources.
    *
    * @return A map of registered compute resource id's and thier corresponding hostnames.
    *    Compute Resource Object created from the datamodel..
    *
   */
-
   map<string, string> getAllComputeResourceNames(1: required security_model.AuthzToken authzToken)
       	throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -1627,7 +1640,6 @@ service Airavata {
    *   Returns a success/failure of the deletion.
    *
   */
-
   bool deleteComputeResource(1: required security_model.AuthzToken authzToken, 2: required string computeResourceId)
          	throws (1: airavata_errors.InvalidRequestException ire,
                    2: airavata_errors.AiravataClientException ace,
@@ -1635,6 +1647,7 @@ service Airavata {
                    4: airavata_errors.AuthorizationException ae)
 
 /*
+ *
  * Storage Resource
  *
 */
@@ -1690,7 +1703,7 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Update a Compute Resource.
+   * Update a Storage Resource.
    *
    * @param storageResourceId
    *   The identifier for the requested compute resource to be updated.
@@ -1715,7 +1728,7 @@ service Airavata {
    * Delete a Storage Resource.
    *
    * @param storageResourceId
-   *   The identifier for the requested compute resource to be deleted.
+   *   The identifier of the requested compute resource to be deleted.
    *
    * @return status
    *   Returns a success/failure of the deletion.
@@ -2547,6 +2560,23 @@ service Airavata {
             3: airavata_errors.AiravataSystemException ase,
             4: airavata_errors.AuthorizationException ae)
 
+  /**
+   * Add a Storage Resource Preference to a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier of the gateway profile to be added.
+   *
+   * @param storageResourceId
+   *   Preferences related to a particular compute resource
+   *
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   *
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   *
+  */
   bool addGatewayStoragePreference(1: required security_model.AuthzToken authzToken, 2: required string gatewayID,
               3: required string storageResourceId,
               4: required gateway_resource_profile_model.StoragePreference storagePreference)


[32/50] [abbrv] airavata git commit: adding workflow related resource layer

Posted by ch...@apache.org.
adding workflow related resource layer


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

Branch: refs/heads/master
Commit: 2a2782a60ab40f93677063c2c31cdf28c77ba487
Parents: ad01161
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Feb 3 12:10:50 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Feb 3 12:10:50 2016 -0500

----------------------------------------------------------------------
 .../main/resources/airavata-server.properties   |   2 +-
 .../app/catalog/impl/WorkflowCatalogImpl.java   |  57 +-
 .../core/app/catalog/model/Workflow.java        | 124 ----
 .../core/app/catalog/model/WorkflowInput.java   | 167 ------
 .../app/catalog/model/WorkflowInput_PK.java     |  64 ---
 .../core/app/catalog/model/WorkflowOutput.java  | 117 ----
 .../app/catalog/model/WorkflowOutput_PK.java    |  64 ---
 .../resources/WorkflowInputResource.java        | 496 ----------------
 .../resources/WorkflowOutputResource.java       | 455 ---------------
 .../app/catalog/resources/WorkflowResource.java | 437 --------------
 .../app/catalog/util/AppCatalogJPAUtils.java    | 571 ++++++++-----------
 .../catalog/util/AppCatalogResourceType.java    |   3 -
 .../util/AppCatalogThriftConversion.java        |  39 --
 .../workflow/catalog/model/ComponentStatus.java |  23 +
 .../core/workflow/catalog/model/Edge.java       |  11 +
 .../core/workflow/catalog/model/Node.java       |  12 +
 .../core/workflow/catalog/model/Port.java       |  12 +
 .../workflow/catalog/model/WorkflowInput.java   | 167 ++++++
 .../catalog/model/WorkflowIntInput.java         | 166 ------
 .../workflow/catalog/model/WorkflowOutput.java  |   7 +-
 .../resources/ComponentStatusResource.java      | 340 +++++++++++
 .../catalog/resources/EdgeResource.java         | 380 ++++++++++++
 .../catalog/resources/NodeResource.java         | 402 +++++++++++++
 .../catalog/resources/PortResource.java         | 380 ++++++++++++
 .../resources/WorkflowCatAbstractResource.java  |  88 +++
 .../resources/WorkflowCatalogResource.java      |  90 +++
 .../resources/WorkflowInputResource.java        | 496 ++++++++++++++++
 .../resources/WorkflowOutputResource.java       | 489 ++++++++++++++++
 .../catalog/resources/WorkflowResource.java     | 437 ++++++++++++++
 .../resources/WorkflowStatusResource.java       | 369 ++++++++++++
 .../catalog/utils/WorkflowCatalogJPAUtils.java  | 270 +++++++++
 .../utils/WorkflowCatalogQueryGenerator.java    |  90 +++
 .../utils/WorkflowCatalogResourceType.java      |  33 ++
 .../utils/WorkflowCatalogThriftConversion.java  |  76 +++
 .../catalog/utils/WorkflowCatalogUtils.java     |  31 +
 .../src/main/resources/META-INF/persistence.xml |  15 +-
 .../src/main/resources/workflow-derby.sql       |  11 +-
 .../src/main/resources/workflow-mysql.sql       |   9 +-
 .../airavata/registry/cpi/WorkflowCatalog.java  |  16 +-
 .../registry/cpi/WorkflowCatalogException.java  |  36 ++
 40 files changed, 4547 insertions(+), 2505 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 445449c..9275e56 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -173,7 +173,7 @@ job.notification.flags=abe
 ###########################################################################
 # Credential Store module Configuration
 ###########################################################################
-start.credential.store=false
+start.credential.store=true
 credential.store.keystore.url=/Users/chathuri/dev/airavata/credential-store/oa4mp/airavata_sym.jks
 credential.store.keystore.alias=airavata
 credential.store.keystore.password=airavata

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
index f54419a..9c7df56 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/WorkflowCatalogImpl.java
@@ -24,11 +24,12 @@ package org.apache.airavata.registry.core.app.catalog.impl;
 import org.apache.airavata.model.Workflow;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.registry.core.app.catalog.resources.*;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogThriftConversion;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogUtils;
+import org.apache.airavata.registry.core.workflow.catalog.resources.*;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogThriftConversion;
+import org.apache.airavata.registry.core.workflow.catalog.utils.WorkflowCatalogUtils;
 import org.apache.airavata.registry.cpi.AppCatalogException;
 import org.apache.airavata.registry.cpi.WorkflowCatalog;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,7 +42,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
     private final static Logger logger = LoggerFactory.getLogger(WorkflowCatalogImpl.class);
 
     @Override
-    public List<String> getAllWorkflows(String gatewayId) throws AppCatalogException {
+    public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException {
         List<String> workflowIds = new ArrayList<String>();
         try {
             WorkflowResource resource = new WorkflowResource();
@@ -49,39 +50,39 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
             workflowIds = resource.getAllIds();
         } catch (Exception e) {
             logger.error("Error while retrieving all the workflow template ids...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
         return workflowIds;
     }
 
     @Override
-    public Workflow getWorkflow(String workflowTemplateId) throws AppCatalogException {
+    public Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             WorkflowResource wfResource = (WorkflowResource)resource.get(workflowTemplateId);
-            return AppCatalogThriftConversion.getWorkflow(wfResource);
+            return WorkflowCatalogThriftConversion.getWorkflow(wfResource);
         } catch (Exception e) {
             logger.error("Error while retrieving the workflow...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
     }
 
     @Override
-    public void deleteWorkflow(String workflowTemplateId) throws AppCatalogException {
+    public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             resource.remove(workflowTemplateId);
         } catch (Exception e) {
             logger.error("Error while deleting the workflow...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
     }
 
     @Override
-    public String registerWorkflow(Workflow workflow, String gatewayId) throws AppCatalogException {
+    public String registerWorkflow(Workflow workflow, String gatewayId) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
-            resource.setWfTemplateId(AppCatalogUtils.getID(workflow.getName()));
+            resource.setWfTemplateId(WorkflowCatalogUtils.getID(workflow.getName()));
             resource.setWfName(workflow.getName());
             resource.setGraph(workflow.getGraph());
             resource.setGatewayId(gatewayId);
@@ -121,12 +122,12 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
             return resource.getWfTemplateId();
         } catch (Exception e) {
             logger.error("Error while saving the workflow...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
     }
 
     @Override
-    public void updateWorkflow(String workflowTemplateId, Workflow workflow) throws AppCatalogException {
+    public void updateWorkflow(String workflowTemplateId, Workflow workflow) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
             WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
@@ -141,8 +142,8 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                 for (InputDataObjectType input : existingwFInputs){
                     WorkflowInputResource wfInputResource = new WorkflowInputResource();
                     Map<String, String> ids = new HashMap<String, String>();
-                    ids.put(AppCatAbstractResource.WFInputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
-                    ids.put(AppCatAbstractResource.WFInputConstants.INPUT_KEY,input.getName());
+                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+                    ids.put(WorkflowCatAbstractResource.WorkflowInputConstants.INPUT_KEY,input.getName());
                     WorkflowInputResource existingInput = (WorkflowInputResource)wfInputResource.get(ids);
                     existingInput.setWorkflowResource(existingWF);
                     existingInput.setInputKey(input.getName());
@@ -161,8 +162,8 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                 for (OutputDataObjectType output : workflowOutputs){
                     WorkflowOutputResource outputResource = new WorkflowOutputResource();
                     Map<String, String> ids = new HashMap<String, String>();
-                    ids.put(AppCatAbstractResource.WFOutputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
-                    ids.put(AppCatAbstractResource.WFOutputConstants.OUTPUT_KEY,output.getName());
+                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID,existingWF.getWfTemplateId());
+                    ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY,output.getName());
                     WorkflowOutputResource existingOutput = (WorkflowOutputResource)outputResource.get(ids);
                     existingOutput.setWorkflowResource(existingWF);
                     existingOutput.setOutputKey(output.getName());
@@ -174,51 +175,51 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
             }
         } catch (Exception e) {
             logger.error("Error while updating the workflow...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
     }
 
     @Override
-    public String getWorkflowTemplateId(String workflowName) throws AppCatalogException {
+    public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
-            List<AppCatalogResource> resourceList = resource.get(AppCatAbstractResource.WorkflowConstants.WF_NAME, workflowName);
+            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
             if (resourceList != null && !resourceList.isEmpty()){
                 WorkflowResource wfResource = (WorkflowResource)resourceList.get(0);
                 return wfResource.getWfTemplateId();
             }
         } catch (Exception e) {
             logger.error("Error while retrieving the workflow with the workflow name...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
         return null;
     }
 
     @Override
-    public boolean isWorkflowExistWithName(String workflowName) throws AppCatalogException {
+    public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException {
         try {
             WorkflowResource resource = new WorkflowResource();
-            List<AppCatalogResource> resourceList = resource.get(AppCatAbstractResource.WorkflowConstants.WF_NAME, workflowName);
+            List<WorkflowCatalogResource> resourceList = resource.get(WorkflowCatAbstractResource.WorkflowConstants.WORKFLOW_NAME, workflowName);
             if (resourceList != null && !resourceList.isEmpty()){
                 return true;
             }
         } catch (Exception e) {
             logger.error("Error while retrieving the workflow with the workflow name...", e);
-            throw new AppCatalogException(e);
+            throw new WorkflowCatalogException(e);
         }
         return false;
     }
 
     @Override
-    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws AppCatalogException {
+    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException {
         WorkflowResource resource = new WorkflowResource();
         WorkflowResource existingWF = (WorkflowResource)resource.get(workflowTemplateId);
         if (workflowOutputs != null && workflowOutputs.size() != 0) {
             for (OutputDataObjectType output : workflowOutputs) {
                 WorkflowOutputResource outputResource = new WorkflowOutputResource();
                 Map<String, String> ids = new HashMap<String, String>();
-                ids.put(AppCatAbstractResource.WFOutputConstants.WF_TEMPLATE_ID, existingWF.getWfTemplateId());
-                ids.put(AppCatAbstractResource.WFOutputConstants.OUTPUT_KEY, output.getName());
+                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.WF_TEMPLATE_ID, existingWF.getWfTemplateId());
+                ids.put(WorkflowCatAbstractResource.WorkflowOutputConstants.OUTPUT_KEY, output.getName());
                 WorkflowOutputResource existingOutput = (WorkflowOutputResource) outputResource.get(ids);
                 existingOutput.setWorkflowResource(existingWF);
                 existingOutput.setOutputKey(output.getName());

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/Workflow.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/Workflow.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/Workflow.java
deleted file mode 100644
index 27cb18c..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/Workflow.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.model;
-
-
-import javax.persistence.*;
-import java.io.Serializable;
-import java.sql.Timestamp;
-
-@Entity
-@Table(name = "WORKFLOW")
-public class Workflow implements Serializable {
-
-    @Column(name = "WF_NAME")
-    private String wfName;
-
-    @Column(name = "CREATED_USER")
-    private String createdUser;
-
-    @Lob
-    @Column(name = "GRAPH")
-    private char[] graph;
-
-    @Id
-    @Column(name = "WF_TEMPLATE_ID")
-    private String wfTemplateId;
-
-    @Column(name = "CREATION_TIME")
-    private Timestamp creationTime;
-
-    @Column(name = "UPDATE_TIME")
-    private Timestamp updateTime;
-
-    @Lob
-    @Column(name = "IMAGE")
-    private byte[] image;
-
-    @Column(name = "GATEWAY_ID")
-    private String gatewayId;
-
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    public Timestamp getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(Timestamp creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    public Timestamp getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Timestamp updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public String getWfName() {
-        return wfName;
-    }
-
-    public String getCreatedUser() {
-        return createdUser;
-    }
-
-    public char[] getGraph() {
-        return graph;
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfName(String wfName) {
-        this.wfName=wfName;
-    }
-
-    public void setCreatedUser(String createdUser) {
-        this.createdUser=createdUser;
-    }
-
-    public void setGraph(char[] graph) {
-        this.graph=graph;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId=wfTemplateId;
-    }
-
-    public byte[] getImage() {
-        return image;
-    }
-
-    public void setImage(byte[] image) {
-        this.image = image;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput.java
deleted file mode 100644
index c559906..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.model;
-
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-@Table(name = "WORKFLOW_INPUT")
-@IdClass(WorkflowInput_PK.class)
-public class WorkflowInput implements Serializable {
-    @Id
-    @Column(name = "WF_TEMPLATE_ID")
-    private String wfTemplateId;
-    @Id
-    @Column(name = "INPUT_KEY")
-    private String inputKey;
-    @Lob
-    @Column(name = "INPUT_VALUE")
-    private char[] inputVal;
-    @Column(name = "DATA_TYPE")
-    private String dataType;
-    @Column(name = "METADATA")
-    private String metadata;
-    @Column(name = "APP_ARGUMENT")
-    private String appArgument;
-    @Column(name = "USER_FRIENDLY_DESC")
-    private String userFriendlyDesc;
-    @Column(name = "STANDARD_INPUT")
-    private boolean standardInput;
-    @Column(name = "INPUT_ORDER")
-    private int inputOrder;
-    @Column(name="IS_REQUIRED")
-    private boolean isRequired;
-    @Column(name="REQUIRED_TO_COMMANDLINE")
-    private boolean requiredToCMD;
-    @Column(name = "DATA_STAGED")
-    private boolean dataStaged;
-
-    @ManyToOne(cascade = CascadeType.MERGE)
-    @JoinColumn(name = "WF_TEMPLATE_ID")
-    private Workflow workflow;
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getInputKey() {
-        return inputKey;
-    }
-
-    public void setInputKey(String inputKey) {
-        this.inputKey = inputKey;
-    }
-
-    public char[] getInputVal() {
-        return inputVal;
-    }
-
-    public void setInputVal(char[] inputVal) {
-        this.inputVal = inputVal;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    public String getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(String metadata) {
-        this.metadata = metadata;
-    }
-
-    public String getAppArgument() {
-        return appArgument;
-    }
-
-    public void setAppArgument(String appArgument) {
-        this.appArgument = appArgument;
-    }
-
-    public String getUserFriendlyDesc() {
-        return userFriendlyDesc;
-    }
-
-    public void setUserFriendlyDesc(String userFriendlyDesc) {
-        this.userFriendlyDesc = userFriendlyDesc;
-    }
-
-    public Workflow getWorkflow() {
-        return workflow;
-    }
-
-    public void setWorkflow(Workflow workflow) {
-        this.workflow = workflow;
-    }
-
-    public boolean isStandardInput() {
-        return standardInput;
-    }
-
-    public void setStandardInput(boolean standardInput) {
-        this.standardInput = standardInput;
-    }
-
-    public int getInputOrder() {
-        return inputOrder;
-    }
-
-    public void setInputOrder(int inputOrder) {
-        this.inputOrder = inputOrder;
-    }
-
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-    public boolean isRequiredToCMD() {
-        return requiredToCMD;
-    }
-
-    public void setRequiredToCMD(boolean requiredToCMD) {
-        this.requiredToCMD = requiredToCMD;
-    }
-
-    public boolean isDataStaged() {
-        return dataStaged;
-    }
-
-    public void setDataStaged(boolean dataStaged) {
-        this.dataStaged = dataStaged;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput_PK.java
deleted file mode 100644
index d72799c..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowInput_PK.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.model;
-
-import java.io.Serializable;
-
-public class WorkflowInput_PK implements Serializable {
-    private String wfTemplateId;
-    private String inputKey;
-
-    public WorkflowInput_PK(String wfTemplateId, String inputKey) {
-        this.wfTemplateId = wfTemplateId;
-        this.inputKey = inputKey;
-    }
-
-    public WorkflowInput_PK() {
-        ;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getInputKey() {
-        return inputKey;
-    }
-
-    public void setInputKey(String inputKey) {
-        this.inputKey = inputKey;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput.java
deleted file mode 100644
index 3080b0f..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.model;
-
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-@Table(name = "WORKFLOW_OUTPUT")
-@IdClass(WorkflowOutput_PK.class)
-public class WorkflowOutput implements Serializable {
-    @Id
-    @Column(name = "WF_TEMPLATE_ID")
-    private String wfTemplateId;
-    @Id
-    @Column(name = "OUTPUT_KEY")
-    private String outputKey;
-    @Lob
-    @Column(name = "OUTPUT_VALUE")
-    private char[] outputVal;
-    @Column(name = "DATA_TYPE")
-    private String dataType;
-    @Column(name = "VALIDITY_TYPE")
-    private String validityType;
-    @Column(name = "DATA_MOVEMENT")
-    private boolean dataMovement;
-    @Column(name = "DATA_NAME_LOCATION")
-    private String dataNameLocation;
-
-    @ManyToOne(cascade= CascadeType.MERGE)
-    @JoinColumn(name = "WF_TEMPLATE_ID")
-    private Workflow workflow;
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    public Workflow getWorkflow() {
-        return workflow;
-    }
-
-    public void setWorkflow(Workflow workflow) {
-        this.workflow = workflow;
-    }
-
-    public String getOutputKey() {
-        return outputKey;
-    }
-
-    public void setOutputKey(String outputKey) {
-        this.outputKey = outputKey;
-    }
-
-    public char[] getOutputVal() {
-        return outputVal;
-    }
-
-    public void setOutputVal(char[] outputVal) {
-        this.outputVal = outputVal;
-    }
-
-    public String getValidityType() {
-        return validityType;
-    }
-
-    public void setValidityType(String validityType) {
-        this.validityType = validityType;
-    }
-
-    public boolean isDataMovement() {
-        return dataMovement;
-    }
-
-    public void setDataMovement(boolean dataMovement) {
-        this.dataMovement = dataMovement;
-    }
-
-    public String getDataNameLocation() {
-        return dataNameLocation;
-    }
-
-    public void setDataNameLocation(String dataNameLocation) {
-        this.dataNameLocation = dataNameLocation;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput_PK.java
deleted file mode 100644
index 183afe8..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/WorkflowOutput_PK.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.model;
-
-import java.io.Serializable;
-
-public class WorkflowOutput_PK implements Serializable {
-    private String wfTemplateId;
-    private String outputKey;
-
-    public WorkflowOutput_PK(String wfTemplateId, String outputKey) {
-        this.wfTemplateId = wfTemplateId;
-        this.outputKey = outputKey;
-    }
-
-    public WorkflowOutput_PK() {
-        ;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getOutputKey() {
-        return outputKey;
-    }
-
-    public void setOutputKey(String outputKey) {
-        this.outputKey = outputKey;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowInputResource.java
deleted file mode 100644
index 94eb02b..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowInputResource.java
+++ /dev/null
@@ -1,496 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.airavata.registry.core.app.catalog.resources;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.registry.core.app.catalog.model.Workflow;
-import org.apache.airavata.registry.core.app.catalog.model.WorkflowInput;
-import org.apache.airavata.registry.core.app.catalog.model.WorkflowInput_PK;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class WorkflowInputResource extends AppCatAbstractResource {
-
-    private final static Logger logger = LoggerFactory.getLogger(WorkflowInputResource.class);
-
-    private String wfTemplateId;
-    private String inputKey;
-    private String dataType;
-    private String inputVal;
-    private String metadata;
-    private String appArgument;
-    private String userFriendlyDesc;
-    private boolean standardInput;
-    private int inputOrder;
-    private boolean isRequired;
-    private boolean requiredToCMD;
-    private boolean dataStaged;
-
-    private WorkflowResource workflowResource;
-
-    public void remove(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_INPUT);
-            generator.setParameter(WFInputConstants.WF_TEMPLATE_ID, ids.get(WFInputConstants.WF_TEMPLATE_ID));
-            generator.setParameter(WFInputConstants.INPUT_KEY, ids.get(WFInputConstants.INPUT_KEY));
-            Query q = generator.deleteQuery(em);
-            q.executeUpdate();
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public AppCatalogResource get(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap<String, String>) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_INPUT);
-            generator.setParameter(WFInputConstants.WF_TEMPLATE_ID, ids.get(WFInputConstants.WF_TEMPLATE_ID));
-            generator.setParameter(WFInputConstants.INPUT_KEY, ids.get(WFInputConstants.INPUT_KEY));
-            Query q = generator.selectQuery(em);
-            WorkflowInput workflowInput = (WorkflowInput) q.getSingleResult();
-            WorkflowInputResource workflowInputResource =
-                    (WorkflowInputResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW_INPUT
-                            , workflowInput);
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflowInputResource;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public List<AppCatalogResource> get(String fieldName, Object value) throws AppCatalogException {
-        List<AppCatalogResource> wfInputResources = new ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_INPUT);
-            List results;
-            if (fieldName.equals(WFInputConstants.WF_TEMPLATE_ID)) {
-                generator.setParameter(WFInputConstants.WF_TEMPLATE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        WorkflowInputResource workflowInputResource =
-                                (WorkflowInputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_INPUT, workflowInput);
-                        wfInputResources.add(workflowInputResource);
-                    }
-                }
-            } else if (fieldName.equals(WFInputConstants.INPUT_KEY)) {
-                generator.setParameter(WFInputConstants.INPUT_KEY, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        WorkflowInputResource workflowInputResource =
-                                (WorkflowInputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_INPUT, workflowInput);
-                        wfInputResources.add(workflowInputResource);
-                    }
-                }
-            } else if (fieldName.equals(WFInputConstants.DATA_TYPE)) {
-                generator.setParameter(WFInputConstants.DATA_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        WorkflowInputResource workflowInputResource =
-                                (WorkflowInputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_INPUT, workflowInput);
-                        wfInputResources.add(workflowInputResource);
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for WFInput Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for WFInput Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return wfInputResources;
-    }
-
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
-        List<String> wfInputResourceIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_INPUT);
-            List results;
-            if (fieldName.equals(WFInputConstants.WF_TEMPLATE_ID)) {
-                generator.setParameter(WFInputConstants.WF_TEMPLATE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        wfInputResourceIDs.add(workflowInput.getWfTemplateId());
-                    }
-                }
-            } else if (fieldName.equals(WFInputConstants.INPUT_KEY)) {
-                generator.setParameter(WFInputConstants.INPUT_KEY, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        wfInputResourceIDs.add(workflowInput.getWfTemplateId());
-                    }
-                }
-            } else if (fieldName.equals(WFInputConstants.DATA_TYPE)) {
-                generator.setParameter(WFInputConstants.DATA_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowInput workflowInput = (WorkflowInput) result;
-                        wfInputResourceIDs.add(workflowInput.getWfTemplateId());
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for WFInput resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for WFInput Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return wfInputResourceIDs;
-    }
-
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            WorkflowInput existingWFInput = em.find(WorkflowInput.class, new WorkflowInput_PK(wfTemplateId, inputKey));
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            WorkflowInput workflowInput;
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            if (existingWFInput == null) {
-                workflowInput = new WorkflowInput();
-            } else {
-            	workflowInput=existingWFInput;
-            }
-            workflowInput.setWfTemplateId(wfTemplateId);
-            Workflow workflow = em.find(Workflow.class, wfTemplateId);
-            workflowInput.setWorkflow(workflow);
-            workflowInput.setDataType(dataType);
-            workflowInput.setInputKey(inputKey);
-            if (inputVal != null){
-                workflowInput.setInputVal(inputVal.toCharArray());
-            }
-            workflowInput.setMetadata(metadata);
-            workflowInput.setAppArgument(appArgument);
-            workflowInput.setUserFriendlyDesc(userFriendlyDesc);
-            workflowInput.setStandardInput(standardInput);
-            workflowInput.setRequiredToCMD(requiredToCMD);
-            workflowInput.setRequired(isRequired);
-            workflowInput.setDataStaged(dataStaged);
-            if (existingWFInput == null) {
-                em.persist(workflowInput);
-            } else {
-                em.merge(workflowInput);
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public boolean isExists(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap<String, String>) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            WorkflowInput workflowInput = em.find(WorkflowInput.class, new WorkflowInput_PK(
-                    ids.get(WFInputConstants.WF_TEMPLATE_ID),
-                    ids.get(WFInputConstants.INPUT_KEY)));
-
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflowInput != null;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getInputKey() {
-        return inputKey;
-    }
-
-    public void setInputKey(String inputKey) {
-        this.inputKey = inputKey;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    public String getInputVal() {
-        return inputVal;
-    }
-
-    public void setInputVal(String inputVal) {
-        this.inputVal = inputVal;
-    }
-
-    public String getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(String metadata) {
-        this.metadata = metadata;
-    }
-
-    public String getAppArgument() {
-        return appArgument;
-    }
-
-    public void setAppArgument(String appArgument) {
-        this.appArgument = appArgument;
-    }
-
-    public String getUserFriendlyDesc() {
-        return userFriendlyDesc;
-    }
-
-    public void setUserFriendlyDesc(String userFriendlyDesc) {
-        this.userFriendlyDesc = userFriendlyDesc;
-    }
-
-    public WorkflowResource getWorkflowResource() {
-        return workflowResource;
-    }
-
-    public void setWorkflowResource(WorkflowResource workflowResource) {
-        this.workflowResource = workflowResource;
-    }
-
-    public boolean isStandardInput() {
-        return standardInput;
-    }
-
-    public void setStandardInput(boolean standardInput) {
-        this.standardInput = standardInput;
-    }
-
-    public int getInputOrder() {
-        return inputOrder;
-    }
-
-    public void setInputOrder(int inputOrder) {
-        this.inputOrder = inputOrder;
-    }
-
-    public boolean getRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean required) {
-        this.isRequired = required;
-    }
-
-    public boolean getRequiredToCMD() {
-        return requiredToCMD;
-    }
-
-    public void setRequiredToCMD(boolean requiredToCMD) {
-        this.requiredToCMD = requiredToCMD;
-    }
-
-    public boolean isDataStaged() {
-        return dataStaged;
-    }
-
-    public void setDataStaged(boolean dataStaged) {
-        this.dataStaged = dataStaged;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowOutputResource.java
deleted file mode 100644
index f216731..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowOutputResource.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.airavata.registry.core.app.catalog.resources;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.registry.core.app.catalog.model.Workflow;
-import org.apache.airavata.registry.core.app.catalog.model.WorkflowOutput;
-import org.apache.airavata.registry.core.app.catalog.model.WorkflowOutput_PK;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class WorkflowOutputResource extends AppCatAbstractResource {
-    private final static Logger logger = LoggerFactory.getLogger(WorkflowOutputResource.class);
-
-    private String wfTemplateId;
-    private String outputKey;
-    private String outputVal;
-    private String dataType;
-    private String validityType;
-    private boolean dataMovement;
-    private String dataNameLocation;
-
-    private WorkflowResource workflowResource;
-
-    public void remove(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_OUTPUT);
-            generator.setParameter(WFOutputConstants.WF_TEMPLATE_ID, ids.get(WFOutputConstants.WF_TEMPLATE_ID));
-            generator.setParameter(WFOutputConstants.OUTPUT_KEY, ids.get(WFOutputConstants.OUTPUT_KEY));
-            Query q = generator.deleteQuery(em);
-            q.executeUpdate();
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public AppCatalogResource get(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_OUTPUT);
-            generator.setParameter(WFOutputConstants.WF_TEMPLATE_ID, ids.get(WFOutputConstants.WF_TEMPLATE_ID));
-            generator.setParameter(WFOutputConstants.OUTPUT_KEY, ids.get(WFOutputConstants.OUTPUT_KEY));
-            Query q = generator.selectQuery(em);
-            WorkflowOutput wfOutput = (WorkflowOutput) q.getSingleResult();
-            WorkflowOutputResource workflowOutputResource =
-                    (WorkflowOutputResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW_OUTPUT
-                            , wfOutput);
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflowOutputResource;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public List<AppCatalogResource> get(String fieldName, Object value) throws AppCatalogException {
-        List<AppCatalogResource> wfOutputResources = new ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_OUTPUT);
-            List results;
-            if (fieldName.equals(WFOutputConstants.WF_TEMPLATE_ID)) {
-                generator.setParameter(WFOutputConstants.WF_TEMPLATE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput wfOutput = (WorkflowOutput) result;
-                        WorkflowOutputResource workflowOutputResource =
-                                (WorkflowOutputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_OUTPUT, wfOutput);
-                        wfOutputResources.add(workflowOutputResource);
-                    }
-                }
-            } else if (fieldName.equals(WFOutputConstants.OUTPUT_KEY)) {
-                generator.setParameter(WFOutputConstants.OUTPUT_KEY, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
-                        WorkflowOutputResource workflowOutputResource =
-                                (WorkflowOutputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_OUTPUT, workflowOutput);
-                        wfOutputResources.add(workflowOutputResource);
-                    }
-                }
-            } else if (fieldName.equals(WFOutputConstants.DATA_TYPE)) {
-                generator.setParameter(WFOutputConstants.DATA_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
-                        WorkflowOutputResource workflowOutputResource =
-                                (WorkflowOutputResource) AppCatalogJPAUtils.getResource(
-                                        AppCatalogResourceType.WORKFLOW_OUTPUT, workflowOutput);
-                        wfOutputResources.add(workflowOutputResource);
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for WF Output Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for WF Output Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return wfOutputResources;
-    }
-
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
-        List<String> wfOutputResourceIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW_OUTPUT);
-            List results;
-            if (fieldName.equals(WFOutputConstants.WF_TEMPLATE_ID)) {
-                generator.setParameter(WFOutputConstants.WF_TEMPLATE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
-                        wfOutputResourceIDs.add(workflowOutput.getWfTemplateId());
-                    }
-                }
-            }
-            if (fieldName.equals(WFOutputConstants.OUTPUT_KEY)) {
-                generator.setParameter(WFOutputConstants.OUTPUT_KEY, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
-                        wfOutputResourceIDs.add(workflowOutput.getWfTemplateId());
-                    }
-                }
-            } else if (fieldName.equals(WFOutputConstants.DATA_TYPE)) {
-                generator.setParameter(WFOutputConstants.DATA_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        WorkflowOutput workflowOutput = (WorkflowOutput) result;
-                        wfOutputResourceIDs.add(workflowOutput.getWfTemplateId());
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for WF Output resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for WF Output Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return wfOutputResourceIDs;
-    }
-
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            WorkflowOutput existingWorkflowOutput = em.find(WorkflowOutput.class,
-                    new WorkflowOutput_PK(wfTemplateId, outputKey));
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            if (existingWorkflowOutput != null) {
-                existingWorkflowOutput.setWfTemplateId(wfTemplateId);
-                Workflow workflow = em.find(Workflow.class, wfTemplateId);
-                existingWorkflowOutput.setWorkflow(workflow);
-                existingWorkflowOutput.setDataType(dataType);
-                existingWorkflowOutput.setOutputKey(outputKey);
-                if (outputVal != null){
-                    existingWorkflowOutput.setOutputVal(outputVal.toCharArray());
-                }
-                existingWorkflowOutput.setValidityType(validityType);
-                existingWorkflowOutput.setDataMovement(dataMovement);
-                existingWorkflowOutput.setDataNameLocation(dataNameLocation);
-                em.merge(existingWorkflowOutput);
-            } else {
-                WorkflowOutput workflowOutput = new WorkflowOutput();
-                workflowOutput.setWfTemplateId(wfTemplateId);
-                Workflow workflow = em.find(Workflow.class, wfTemplateId);
-                workflowOutput.setWorkflow(workflow);
-                workflowOutput.setDataType(dataType);
-                workflowOutput.setOutputKey(outputKey);
-                if (outputVal != null){
-                    workflowOutput.setOutputVal(outputVal.toCharArray());
-                }
-                workflowOutput.setValidityType(validityType);
-                workflowOutput.setDataMovement(dataMovement);
-                workflowOutput.setDataNameLocation(dataNameLocation);
-                em.persist(workflowOutput);
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public boolean isExists(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and it's value");
-            throw new AppCatalogException("Identifier should be a map with the field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            WorkflowOutput workflowOutput = em.find(WorkflowOutput.class, new WorkflowOutput_PK(
-                    ids.get(WFOutputConstants.WF_TEMPLATE_ID),
-                    ids.get(WFOutputConstants.OUTPUT_KEY)));
-
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflowOutput != null;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId = wfTemplateId;
-    }
-
-    public String getOutputKey() {
-        return outputKey;
-    }
-
-    public void setOutputKey(String outputKey) {
-        this.outputKey = outputKey;
-    }
-
-    public String getOutputVal() {
-        return outputVal;
-    }
-
-    public void setOutputVal(String outputVal) {
-        this.outputVal = outputVal;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    public WorkflowResource getWorkflowResource() {
-        return workflowResource;
-    }
-
-    public void setWorkflowResource(WorkflowResource workflowResource) {
-        this.workflowResource = workflowResource;
-    }
-
-    public String getValidityType() {
-        return validityType;
-    }
-
-    public void setValidityType(String validityType) {
-        this.validityType = validityType;
-    }
-
-    public boolean isDataMovement() {
-        return dataMovement;
-    }
-
-    public void setDataMovement(boolean dataMovement) {
-        this.dataMovement = dataMovement;
-    }
-
-    public String getDataNameLocation() {
-        return dataNameLocation;
-    }
-
-    public void setDataNameLocation(String dataNameLocation) {
-        this.dataNameLocation = dataNameLocation;
-    }
-}


[28/50] [abbrv] airavata git commit: adding workflow related resource layer

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogQueryGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogQueryGenerator.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogQueryGenerator.java
new file mode 100644
index 0000000..d3a5a42
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogQueryGenerator.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.workflow.catalog.utils;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.HashMap;
+import java.util.Map;
+
+public class WorkflowCatalogQueryGenerator {
+    private String tableName;
+    private Map<String,Object> matches=new HashMap<String, Object>();
+    private static final String SELECT_OBJ="p";
+    private static final String DELETE_OBJ="p";
+    private static final String TABLE_OBJ="p";
+
+    public WorkflowCatalogQueryGenerator(String tableName, Object[]... params) {
+        setTableName(tableName);
+        for (Object[] param : params) {
+            addMatch(param[0].toString(), param[1]);
+        }
+    }
+
+    public String getTableName() {
+        return tableName;
+    }
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+    public void addMatch(String colName, Object matchValue){
+        matches.put(colName, matchValue);
+    }
+
+    public void setParameter(String colName, Object matchValue){
+        addMatch(colName, matchValue);
+    }
+
+    public Query selectQuery(EntityManager entityManager){
+        String queryString="SELECT "+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
+        return generateQueryWithParameters(entityManager, queryString);
+    }
+
+    public Query deleteQuery(EntityManager entityManager){
+        String queryString="Delete FROM "+getTableName()+" "+TABLE_OBJ;
+        return generateQueryWithParameters(entityManager, queryString);
+    }
+
+    private Query generateQueryWithParameters(EntityManager entityManager,
+                                              String queryString) {
+        Map<String,Object> queryParameters=new HashMap<String, Object>();
+        if (matches.size()>0){
+            String matchString = "";
+            int paramCount=0;
+            for (String colName : matches.keySet()) {
+                String paramName="param"+paramCount;
+                queryParameters.put(paramName, matches.get(colName));
+                if (!matchString.equals("")){
+                    matchString+=" AND ";
+                }
+                matchString+=TABLE_OBJ+"."+colName+" =:"+paramName;
+                paramCount++;
+            }
+            queryString+=" WHERE "+matchString;
+        }
+        Query query = entityManager.createQuery(queryString);
+        for (String paramName : queryParameters.keySet()) {
+            query.setParameter(paramName, queryParameters.get(paramName));
+        }
+        return query;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogResourceType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogResourceType.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogResourceType.java
new file mode 100644
index 0000000..2af0151
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogResourceType.java
@@ -0,0 +1,33 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.workflow.catalog.utils;
+
+public enum WorkflowCatalogResourceType {
+    WORKFLOW,
+    WORKFLOW_INPUT,
+    WORKFLOW_OUTPUT,
+    WORKFLOW_STATUS,
+    COMPONENT_STATUS,
+    NODE,
+    EDGE,
+    PORT
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
new file mode 100644
index 0000000..68b42e3
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogThriftConversion.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * 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.core.workflow.catalog.utils;
+
+import org.apache.airavata.model.Workflow;
+import org.apache.airavata.model.application.io.DataType;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.registry.core.workflow.catalog.resources.WorkflowCatAbstractResource;
+import org.apache.airavata.registry.core.workflow.catalog.resources.WorkflowCatalogResource;
+import org.apache.airavata.registry.core.workflow.catalog.resources.WorkflowInputResource;
+import org.apache.airavata.registry.core.workflow.catalog.resources.WorkflowResource;
+import org.apache.airavata.registry.cpi.WorkflowCatalogException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkflowCatalogThriftConversion {
+
+    public static InputDataObjectType getWorkflowInput (WorkflowInputResource resource){
+        InputDataObjectType input = new InputDataObjectType();
+        input.setName(resource.getInputKey());
+        input.setApplicationArgument(resource.getAppArgument());
+        input.setInputOrder(resource.getInputOrder());
+        input.setType(DataType.valueOf(resource.getDataType()));
+        input.setMetaData(resource.getMetadata());
+        input.setUserFriendlyDescription(resource.getUserFriendlyDesc());
+        input.setIsRequired(resource.getRequired());
+        input.setRequiredToAddedToCommandLine(resource.getRequiredToCMD());
+        input.setDataStaged(resource.isDataStaged());
+        return input;
+    }
+
+    public static List<InputDataObjectType> getWFInputs(List<WorkflowCatalogResource> resources){
+        List<InputDataObjectType> inputResources = new ArrayList<InputDataObjectType>();
+        if (resources != null && !resources.isEmpty()){
+            for (WorkflowCatalogResource resource : resources){
+                inputResources.add(getWorkflowInput((WorkflowInputResource) resource));
+            }
+        }
+        return inputResources;
+    }
+
+    public static Workflow getWorkflow (WorkflowResource resource) throws WorkflowCatalogException {
+        Workflow workflow = new Workflow();
+        workflow.setTemplateId(resource.getWfTemplateId());
+        workflow.setGraph(resource.getGraph());
+        workflow.setName(resource.getWfName());
+        if (resource.getImage() != null){
+            workflow.setImage(resource.getImage().getBytes());
+        }
+        WorkflowInputResource inputResource = new WorkflowInputResource();
+        List<WorkflowCatalogResource> resources = inputResource.get(WorkflowCatAbstractResource.WorkflowInputConstants.WF_TEMPLATE_ID, resource.getWfTemplateId());
+        workflow.setWorkflowInputs(getWFInputs(resources));
+
+        return workflow;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogUtils.java
new file mode 100644
index 0000000..dce8263
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/utils/WorkflowCatalogUtils.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.workflow.catalog.utils;
+
+import java.util.UUID;
+
+public class WorkflowCatalogUtils {
+    public static String getID (String name){
+        String pro = name.replaceAll("\\s", "");
+        return pro + "_" + UUID.randomUUID();
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/META-INF/persistence.xml b/modules/registry/registry-core/src/main/resources/META-INF/persistence.xml
index da544c9..7d2a15a 100644
--- a/modules/registry/registry-core/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry/registry-core/src/main/resources/META-INF/persistence.xml
@@ -61,9 +61,6 @@
         <class>org.apache.airavata.registry.core.app.catalog.model.JobManagerCommand</class>
         <class>org.apache.airavata.registry.core.app.catalog.model.LocalSubmission</class>
         <class>org.apache.airavata.registry.core.app.catalog.model.LocalDataMovement</class>
-        <class>org.apache.airavata.registry.core.app.catalog.model.Workflow</class>
-        <class>org.apache.airavata.registry.core.app.catalog.model.WorkflowInput</class>
-        <class>org.apache.airavata.registry.core.app.catalog.model.WorkflowOutput</class>
         <class>org.apache.airavata.registry.core.app.catalog.model.Configuration</class>
         <class>org.apache.airavata.registry.core.app.catalog.model.GatewayClientCredential</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
@@ -104,4 +101,16 @@
         <class>org.apache.airavata.registry.core.data.catalog.model.Configuration</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
+    <persistence-unit name="workflowcatalog_data">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.Workflow</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.WorkflowInput</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.WorkflowOutput</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.Edge</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.Node</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.Port</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.ComponentStatus</class>
+        <class>org.apache.airavata.registry.core.workflow.catalog.model.WorkflowStatus</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/resources/workflow-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-derby.sql b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
index f2af1be..8c590f8 100644
--- a/modules/registry/registry-core/src/main/resources/workflow-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
@@ -36,7 +36,7 @@ CREATE TABLE WORKFLOW_INPUT
 (
          TEMPLATE_ID VARCHAR(255),
          INPUT_KEY VARCHAR(255),
-         INPUT_VALUE VARCHAR(255),
+         INPUT_VALUE CLOB,
          DATA_TYPE VARCHAR(255),
          METADATA VARCHAR(255),
          APP_ARGUMENT VARCHAR(255),
@@ -70,10 +70,12 @@ CREATE TABLE WORKFLOW_OUTPUT
 CREATE TABLE COMPONENT_STATUS
 (
         STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
-        PRIMARY KEY (STATUS_ID)
         UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (STATUS_ID)
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE WORKFLOW_STATUS
@@ -83,7 +85,7 @@ CREATE TABLE WORKFLOW_STATUS
         STATE VARCHAR(255),
         REASON VARCHAR(255),
         UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID, COMPONENT_ID),
+        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
@@ -94,6 +96,7 @@ CREATE TABLE EDGE
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -105,6 +108,7 @@ CREATE TABLE PORT
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (PORT_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -118,6 +122,7 @@ CREATE TABLE NODE
         APPLICATION_NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (NODE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
index d723343..3527d60 100644
--- a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
@@ -54,7 +54,7 @@ CREATE TABLE WORKFLOW_OUTPUT
 (
          TEMPLATE_ID VARCHAR(255),
          OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE VARCHAR(255),
+         OUTPUT_VALUE LONGTEXT,
          DATA_TYPE VARCHAR(255),
          IS_REQUIRED SMALLINT,
          REQUIRED_TO_COMMANDLINE SMALLINT,
@@ -70,10 +70,12 @@ CREATE TABLE WORKFLOW_OUTPUT
 CREATE TABLE COMPONENT_STATUS
 (
         STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
         STATE VARCHAR(255),
         REASON VARCHAR(255),
         UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (STATUS_ID)
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE WORKFLOW_STATUS
@@ -83,7 +85,7 @@ CREATE TABLE WORKFLOW_STATUS
         STATE VARCHAR(255),
         REASON VARCHAR(255),
         UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID, COMPONENT_ID),
+        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
 
@@ -94,6 +96,7 @@ CREATE TABLE EDGE
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -105,6 +108,7 @@ CREATE TABLE PORT
         NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (PORT_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
@@ -118,6 +122,7 @@ CREATE TABLE NODE
         APPLICATION_NAME VARCHAR (255),
         COMPONENT_STATUS_ID VARCHAR(255),
         DESCRIPTION VARCHAR(500),
+        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY (NODE_ID, TEMPLATE_ID),
         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
index f465e7e..34c8ff6 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalog.java
@@ -28,19 +28,19 @@ import java.util.List;
 
 public interface WorkflowCatalog {
 
-    public List<String> getAllWorkflows(String gatewayId) throws AppCatalogException;
+    public List<String> getAllWorkflows(String gatewayId) throws WorkflowCatalogException;
 
-    public org.apache.airavata.model.Workflow getWorkflow(String workflowTemplateId) throws AppCatalogException;
+    public org.apache.airavata.model.Workflow getWorkflow(String workflowTemplateId) throws WorkflowCatalogException;
 
-    public void deleteWorkflow(String workflowTemplateId) throws AppCatalogException;
+    public void deleteWorkflow(String workflowTemplateId) throws WorkflowCatalogException;
 
-    public String registerWorkflow(org.apache.airavata.model.Workflow workflow, String gatewayId) throws AppCatalogException;
+    public String registerWorkflow(org.apache.airavata.model.Workflow workflow, String gatewayId) throws WorkflowCatalogException;
 
-    public void updateWorkflow(String workflowTemplateId, org.apache.airavata.model.Workflow workflow) throws AppCatalogException;
+    public void updateWorkflow(String workflowTemplateId, org.apache.airavata.model.Workflow workflow) throws WorkflowCatalogException;
 
-    public String getWorkflowTemplateId(String workflowName) throws AppCatalogException;
+    public String getWorkflowTemplateId(String workflowName) throws WorkflowCatalogException;
 
-    public boolean isWorkflowExistWithName(String workflowName) throws AppCatalogException;
+    public boolean isWorkflowExistWithName(String workflowName) throws WorkflowCatalogException;
 
-    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws AppCatalogException;
+    public void updateWorkflowOutputs(String workflowTemplateId, List<OutputDataObjectType> workflowOutputs) throws WorkflowCatalogException;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalogException.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalogException.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalogException.java
new file mode 100644
index 0000000..5581115
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/WorkflowCatalogException.java
@@ -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.cpi;
+
+public class WorkflowCatalogException extends Exception{
+    private static final long serialVersionUID = -2849422320139467602L;
+
+    public WorkflowCatalogException(Throwable e) {
+        super(e);
+    }
+
+    public WorkflowCatalogException(String message) {
+        super(message, null);
+    }
+
+    public WorkflowCatalogException(String message, Throwable e) {
+        super(message, e);
+    }
+}


[07/50] [abbrv] airavata git commit: Adding API method descriptions to App Catalog Airavata Thrift APIs

Posted by ch...@apache.org.
Adding API  method descriptions to App Catalog Airavata Thrift APIs


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

Branch: refs/heads/master
Commit: 9ce83af821814636653f1b98b7002147e7d16c12
Parents: ea33800
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Wed Jan 20 10:38:49 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Wed Jan 20 10:38:49 2016 -0500

----------------------------------------------------------------------
 .../airavata-apis/airavata_api.thrift           | 392 +++++++++++--------
 1 file changed, 236 insertions(+), 156 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/9ce83af8/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 68e145d..a49564f 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -201,7 +201,6 @@ service Airavata {
    *   belonging to a Gateway.
    *
    **/
-
    string generateAndRegisterSSHKeys (1: required security_model.AuthzToken authzToken,
                     2: required string gatewayId,
                     3: required string userName)
@@ -221,7 +220,6 @@ service Airavata {
    * @return publicKey
    *
    **/
-
    string getSSHPubKey (1: required security_model.AuthzToken authzToken,
                         2: required string airavataCredStoreToken,
                         3: required string gatewayId)
@@ -230,6 +228,7 @@ service Airavata {
                    3: airavata_errors.AiravataSystemException ase)
 
    /**
+   *
    * Get a Public Key by Providing the Token
    *
    * @param CredStoreToken
@@ -249,6 +248,7 @@ service Airavata {
                    3: airavata_errors.AiravataSystemException ase)
 
    /**
+   *
    * Get all Public Keys of the Gateway
    *
    * @param CredStoreToken
@@ -260,7 +260,6 @@ service Airavata {
    * @return publicKey
    *
    **/
-
   map<string, string> getAllGatewaySSHPubKeys (1: required security_model.AuthzToken authzToken,
                                                2: required string gatewayId)
              throws (1: airavata_errors.InvalidRequestException ire,
@@ -268,6 +267,7 @@ service Airavata {
                      3: airavata_errors.AiravataSystemException ase)
 
     /**
+    *
     * Delete a Gateway
     *
     * @param gatewayId
@@ -277,7 +277,6 @@ service Airavata {
     *    Boolean identifier for the success or failure of the deletion operation.
     *
     **/
-
   bool deleteSSHPubKey (1: required security_model.AuthzToken authzToken,
                           2: required string airavataCredStoreToken,
                           3: required string gatewayId)
@@ -286,6 +285,7 @@ service Airavata {
                      3: airavata_errors.AiravataSystemException ase)
 
    /**
+   *
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
    *
@@ -293,10 +293,9 @@ service Airavata {
    *    The identifier for the requested gateway.
    *
    * @param Project
-   *    The Project Object described in the workspace_model
+   *    The Project Object described in the workspace_model.
    *
    **/
-
   string createProject (1: required security_model.AuthzToken authzToken,
                         2: required string gatewayId,
                         3: required workspace_model.Project project)
@@ -306,6 +305,7 @@ service Airavata {
                   4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Update an Existing Project
    *
    * @param projectId
@@ -315,7 +315,6 @@ service Airavata {
    *    Currently this does not return any value.
    *
    **/
-
   void updateProject (1: required security_model.AuthzToken authzToken,
                       2: required string projectId,
                       3: required workspace_model.Project updatedProject)
@@ -326,17 +325,17 @@ service Airavata {
               5: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Get a Project by ID
-   *    This method is to obtain a project by providing a projectId
+   *    This method is to obtain a project by providing a projectId.
    *
    * @param projectId
-   *    projectId of the project you require
+   *    projectId of the project you require.
    *
    * @return project
-   *    project data model will be returned
+   *    project data model will be returned.
    *
    **/
-
   workspace_model.Project getProject (1: required security_model.AuthzToken authzToken, 2: required string projectId)
         throws (1: airavata_errors.InvalidRequestException ire,
                 2: airavata_errors.AiravataClientException ace,
@@ -345,17 +344,19 @@ service Airavata {
                 5: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Delete a Project
-   *    This method is used to delete an existing Project
+   *    This method is used to delete an existing Project.
    *
    * @param projectId
-   *    projectId of the project you want to delete
+   *    projectId of the project you want to delete.
    *
    * @return boolean
    *    Boolean identifier for the success or failure of the deletion operation.
    *
+   *    NOTE: This method is not used within gateways connected with Airavata.
+   *
    **/
-
   bool deleteProject (1: required security_model.AuthzToken authzToken, 2: required string projectId)
           throws (1: airavata_errors.InvalidRequestException ire,
                   2: airavata_errors.AiravataClientException ace,
@@ -364,23 +365,23 @@ service Airavata {
                   5: airavata_errors.AuthorizationException ae)
 
    /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
+   *
+   * Get All User Projects
+   * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
    *
    * @param gatewayId
    *    The identifier for the requested gateway.
    *
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
    *
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
    *
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
    *
    **/
-
   list<workspace_model.Project> getUserProjects(1: required security_model.AuthzToken authzToken,
                                                    2: required string gatewayId,
                                                    3: required string userName,
@@ -392,21 +393,26 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
    /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
+   *
+   * Search User Projects by Project Name
+   * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
    *
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier for the requested gateway.
+   *
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   *
    * @param projectName
-   *    The name of the project on which the results to be fetched
+   *    The name of the project on which the results to be fetched.
+   *
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   *
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   *
    **/
-
   list<workspace_model.Project> searchProjectsByProjectName (1: required security_model.AuthzToken authzToken,
                         2: required string gatewayId,
                         3: required string userName,
@@ -419,21 +425,26 @@ service Airavata {
                   4: airavata_errors.AuthorizationException ae)
 
     /**
-    * Search and get all Projects for user by project description with pagination. Results
-    * will be ordered based on creation time DESC
+    *
+    * Search User Projects by Project Description
+    * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
     *
     * @param gatewayId
-    *    The identifier for the requested gateway.
+    *    The unique identifier of the gateway making the request.
+    *
     * @param userName
-    *    The identifier of the user
+    *    The identifier of the user.
+    *
     * @param description
-    *    The description to be matched
+    *    The description to be matched.
+    *
     * @param limit
-    *    The amount results to be fetched
+    *    The amount results to be fetched.
+    *
     * @param offset
-    *    The starting point of the results to be fetched
+    *    The starting point of the results to be fetched.
+    *
     **/
-
   list<workspace_model.Project> searchProjectsByProjectDesc(1: required security_model.AuthzToken authzToken,
                         2: required string gatewayId,
                         3: required string userName,
@@ -446,21 +457,26 @@ service Airavata {
                     4: airavata_errors.AuthorizationException ae)
 
     /**
-    * Search Experiments by experiment name with pagination. Results will be sorted
-    * based on creation time DESC
+    *
+    * Search User Experiments by Name
+    * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
     *
     * @param gatewayId
-    *       Identifier of the requested gateway
+    *       Unique identifier of the requested gateway.
+    *
     * @param userName
-    *       Username of the requested user
+    *       Username of the user who created the experiments.
+    *
     * @param expName
-    *       Experiment name to be matched
+    *       Experiment name to be matched.
+    *
     * @param limit
-    *       Amount of results to be fetched
+    *       Amount of results to be fetched.
+    *
     * @param offset
-    *       The starting point of the results to be fetched
+    *       The starting point of the results to be fetched.
+    *
     **/
-
   list<experiment_model.ExperimentSummaryModel> searchExperimentsByName(1: required security_model.AuthzToken authzToken,
                           2: required string gatewayId,
                           3: required string userName,
@@ -473,21 +489,26 @@ service Airavata {
                     4: airavata_errors.AuthorizationException ae)
 
     /**
-    * Search Experiments by experiment name with pagination. Results will be sorted
-    * based on creation time DESC
+    *
+    * Search By Experiment Description
+    * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
     *
     * @param gatewayId
-    *       Identifier of the requested gateway
+    *       Unique identifier of the requested gateway.
+    *
     * @param userName
-    *       Username of the requested user
+    *       Username of the requested user.
+    *
     * @param description
-    *       Experiment description to be matched
+    *       Experiment description to be matched.
+    *
     * @param limit
-    *       Amount of results to be fetched
+    *       Amount of results to be fetched.
+    *
     * @param offset
-    *       The starting point of the results to be fetched
+    *       The starting point of the results to be fetched.
+    *
     **/
-
   list<experiment_model.ExperimentSummaryModel> searchExperimentsByDesc(1: required security_model.AuthzToken authzToken,
                             2: required string gatewayId,
                             3: required string userName,
@@ -500,21 +521,26 @@ service Airavata {
                       4: airavata_errors.AuthorizationException ae)
 
    /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
+   *
+   * Search Experiment By the Application
+   * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
    *
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   *
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   *
    * @param applicationId
-   *       Application id to be matched
+   *       Application id to be matched.
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
    **/
-
   list<experiment_model.ExperimentSummaryModel> searchExperimentsByApplication(1: required security_model.AuthzToken authzToken,
                              2: required string gatewayId,
                              3: required string userName,
@@ -527,21 +553,26 @@ service Airavata {
                       4: airavata_errors.AuthorizationException ae)
 
    /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
+   *
+   * Search User Experiments by Status
+   * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
    *
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   *
    * @param userName
-   *       Username of the requested user
+   *       Username of the user making the request.
+   *
    * @param experimentState
-   *       Experiement state to be matched
+   *       Experiement state to be matched.
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
    **/
-
     list<experiment_model.ExperimentSummaryModel> searchExperimentsByStatus(1: required security_model.AuthzToken authzToken,
                             2: required string gatewayId,
                             3: required string userName,
@@ -554,23 +585,32 @@ service Airavata {
                         4: airavata_errors.AuthorizationException ae)
 
    /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
+   *
+   * Search User Experiments by the Creation Time
+   * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
    *
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   *
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   *
    * @param fromTime
-   *       Start time of the experiments creation time
+   *       Start time of the experiments creation time.
+   *
    * @param toTime
-   *       End time of the  experiement creation time
+   *       End time of the  experiement creation time.
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   *
    **/
-
     list<experiment_model.ExperimentSummaryModel> searchExperimentsByCreationTime(1: required security_model.AuthzToken authzToken,
                             2: required string gatewayId,
                             3: required string userName,
@@ -584,19 +624,27 @@ service Airavata {
                         4: airavata_errors.AuthorizationException ae)
 
    /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
+   * Search Experiments.
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
    *
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Identifier of the requested gateway.
+   *
    * @param userName
-   *       Username of the requested user
+   *       Username of the user requesting the search function.
+   *
    * @param filters
-   *       map of multiple filter criteria.
+   *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   *
    **/
 
     list<experiment_model.ExperimentSummaryModel> searchExperiments(1: required security_model.AuthzToken authzToken,
@@ -611,13 +659,19 @@ service Airavata {
                         4: airavata_errors.AuthorizationException ae)
 
     /**
-     * Get Experiment Statisitics for the given gateway for a specific time period
+     *
+     * Get Experiment Statistics
+     * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+     *
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the gateway making the request to fetch statistics.
+     *
      * @param fromTime
-     *       Starting date time
+     *       Starting date time.
+     *
      * @param toTime
-     *       Ending data time
+     *       Ending data time.
+     *
      **/
     experiment_model.ExperimentStatistics getExperimentStatistics(1: required security_model.AuthzToken authzToken,
                             2: required string gatewayId,
@@ -630,17 +684,20 @@ service Airavata {
 
 
   /**
-   * Get Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
+   *
+   * Get All Experiments of the Project
+   * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
    *
    * @param projectId
-   *       Identifier of the project
+   *       Uniqie identifier of the project.
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
    **/
-
   list<experiment_model.ExperimentModel> getExperimentsInProject(1: required security_model.AuthzToken authzToken,
                   2: required string projectId,
                   3: required i32 limit,
@@ -652,19 +709,23 @@ service Airavata {
                   5: airavata_errors.AuthorizationException ae)
 
    /**
-   * Get experiments by user with pagination. Results will be sorted
-   * based on creation time DESC
+   *
+   * Get All Experiments of the User
+   * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
    *
    * @param gatewayId
-   *       Identifier of the requesting gateway
+   *       Identifier of the requesting gateway.
+   *
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested end user.
+   *
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   *
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   *
    **/
-
   list<experiment_model.ExperimentModel> getUserExperiments(1: required security_model.AuthzToken authzToken,
                         2: required string gatewayId,
                         3: required string userName,
@@ -676,12 +737,17 @@ service Airavata {
                     4: airavata_errors.AuthorizationException ae)
 
    /**
+     *
+     * Create New Experiment
      * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
      *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
      *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
      *   registering the experiment in a persistent store.
      *
-     * @param basicExperimentMetadata
+     * @param gatewayId
+     *    The unique ID of the gateway where the experiment is been created.
+     *
+     * @param ExperimentModel
      *    The create experiment will require the basic experiment metadata like the name and description, intended user,
      *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
      *      the ExperimentMetadata is a required field.
@@ -710,7 +776,6 @@ service Airavata {
      *       rather an Airavata Administrator will be notified to take corrective action.
      *
    **/
-
   string createExperiment(1: required security_model.AuthzToken authzToken,
                           2: required string gatewayId,
                           3: required experiment_model.ExperimentModel experiment)
@@ -720,8 +785,8 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
   /**
-  * Delete an Experiment
   *
+  * Delete an Experiment
   * If the experiment is not already launched experiment can be deleted.
   *
   * @param authzToken
@@ -730,10 +795,9 @@ service Airavata {
   *     Experiment ID of the experimnet you want to delete.
   *
   * @return boolean
-  *     Identifier for the success or failure of the deletion operation
+  *     Identifier for the success or failure of the deletion operation.
   *
   **/
-
   bool deleteExperiment(1: required security_model.AuthzToken authzToken,
                           2: required string experimentId)
     throws (1: airavata_errors.InvalidRequestException ire,
@@ -743,12 +807,14 @@ service Airavata {
 
 
   /**
+   *
+   * Get Experiment
    * Fetch previously created experiment metadata.
    *
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
    *
-   * @return experimentMetada
+   * @return ExperimentModel
    *   This method will return the previously stored experiment metadata.
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -785,14 +851,17 @@ service Airavata {
 
 
   /**
+   *
+   * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
    * tasks -> jobs information.
    *
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    *
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
+   * @return ExperimentModel
+   *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+   *   information, special input output handling and additional quality of service parameters.
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -828,14 +897,15 @@ service Airavata {
 
 
   /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
+   *
+   * Update a Previously Created Experiment
+   * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+   * The experiment has to be launched to make it actionable by the server.
    *
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    *
-   * @param experimentConfigurationData
+   * @param ExperimentModel
    *    The configuration information of the experiment with application input parameters, computational resource scheduling
    *      information, special input output handling and additional quality of service parameters.
    *
@@ -887,13 +957,14 @@ service Airavata {
 
     /**
      *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentId
+     * Validate experiment configuration.
+     * A true in general indicates, the experiment is ready to be launched.
      *
+     * @param airavataExperimentId
+     *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
      *
      * @return boolean
-     *      Identifier for the success or failure of the validation operation
+     *      Identifier for the success or failure of the validation operation.
      *
     **/
   bool validateExperiment(1: required security_model.AuthzToken authzToken,
@@ -905,8 +976,12 @@ service Airavata {
               5: airavata_errors.AuthorizationException ae)
 
   /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   *
+   * Launch a Previously Created & Configured Experiment.
+   * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+   *
+   * @gatewayId
+   *    ID of the gateway which will launch the experiment.
    *
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -948,20 +1023,20 @@ service Airavata {
             5: airavata_errors.AuthorizationException ae)
 
   /**
+  *
   * Get Experiment Status
   *
-  * Obtain the status os an experiment by providing the Experiment Id
+  * Obtain the status of an experiment by providing the Experiment Id
   *
   * @param authzToken
   *
-  * @param experiementId
-  *     Experiment ID of the experimnet you require the status
+  * @param airavataExperimentId
+  *     Experiment ID of the experimnet you require the status.
   *
   * @return ExperimentStatus
-  *     ExperimentStatus model with current status will be returned.
+  *     ExperimentStatus model with the current status will be returned.
   *
   **/
-
    status_models.ExperimentStatus getExperimentStatus(1: required security_model.AuthzToken authzToken,
                                                       2: required string airavataExperimentId)
       throws (1: airavata_errors.InvalidRequestException ire,
@@ -971,19 +1046,19 @@ service Airavata {
               5: airavata_errors.AuthorizationException ae)
 
   /**
+  *
   * Get Experiment Outputs
-  * This method to be used when need to obtain outputs of a certain Experiment
+  * This method to be used when need to obtain final outputs of a certain Experiment
   *
   * @param authzToken
   *
-  * @param experiementId
-  *     Experiment ID of the experimnet you need the outputs
+  * @param airavataExperimentId
+  *     Experiment ID of the experimnet you need the outputs.
   *
   * @return list
-  *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+  *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
   *
   **/
-
   list<application_io_models.OutputDataObjectType> getExperimentOutputs (1: required security_model.AuthzToken authzToken,
                 2: required string airavataExperimentId)
       throws (1: airavata_errors.InvalidRequestException ire,
@@ -993,19 +1068,19 @@ service Airavata {
               5: airavata_errors.AuthorizationException ae)
 
   /**
+  *
   * Get Intermediate Experiment Outputs
   * This method to be used when need to obtain intermediate outputs of a certain Experiment
   *
   * @param authzToken
   *
-  * @param experiementId
-  *     Experiment ID of the experimnet you need the intermediate outputs
+  * @param airavataExperimentId
+  *     Experiment ID of the experimnet you need intermediate outputs.
   *
   * @return list
-  *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+  *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
   *
   **/
-
    list<application_io_models.OutputDataObjectType> getIntermediateOutputs (1: required security_model.AuthzToken authzToken,
                 2: required string airavataExperimentId)
         throws (1: airavata_errors.InvalidRequestException ire,
@@ -1015,19 +1090,19 @@ service Airavata {
                 5: airavata_errors.AuthorizationException ae)
 
   /**
-  * Get Job Status for an Experiment
+  *
+  * Get Job Statuses for an Experiment
   * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
   *
   * @param authzToken
   *
   * @param experiementId
-  *     Experiment ID of the experimnet you need the intermediate outputs
+  *     Experiment ID of the experimnet you need the job statuses.
   *
   * @return JobStatus
   *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
   *
   **/
-
   map<string, status_models.JobStatus> getJobStatuses(1: required security_model.AuthzToken authzToken,
                       2: required string airavataExperimentId)
               throws (1: airavata_errors.InvalidRequestException ire,
@@ -1113,7 +1188,7 @@ service Airavata {
    * Terminate a running Experiment.
    *
    * @gatewayId
-   *    ID of the gateway which need to list all available application deployment documentation.
+   *    ID of the gateway which will terminate the running Experiment.
    *
    * @param airavataExperimentId
    *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
@@ -1176,7 +1251,7 @@ service Airavata {
    * Register a Application Module.
    *
    * @gatewayId
-   *    ID of the gateway which need to list all available application deployment documentation.
+   *    ID of the gateway which is registering the new Application Module.
    *
    * @param applicationModule
    *    Application Module Object created from the datamodel.
@@ -1281,7 +1356,7 @@ service Airavata {
    * Register an Application Deployment.
    *
    * @param gatewayId
-   *    ID of the gateway which need to list all available application deployment documentation.
+   *    ID of the gateway which is registering the new Application Deployment.
    *
    * @param applicationDeployment
    *    Application Module Object created from the datamodel.
@@ -1907,6 +1982,7 @@ service Airavata {
 
 
   /**
+   *
    * Add a UNICORE Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *
@@ -1923,7 +1999,6 @@ service Airavata {
    *  Returns the unique job submission id.
    *
   */
-
   string addUNICOREJobSubmissionDetails(1: required security_model.AuthzToken authzToken,
             2: required string computeResourceId,
             3: required i32 priorityOrder,
@@ -1935,12 +2010,14 @@ service Airavata {
 
 
   /**
+    *
     * This method returns UnicoreJobSubmission object
+    *
     * @param jobSubmissionInterfaceId
     *   The identifier of the JobSubmission Interface to be retrieved.
     *  @return UnicoreJobSubmission instance
+    *
   **/
-
   compute_resource_model.UnicoreJobSubmission getUnicoreJobSubmission(1: required security_model.AuthzToken authzToken,
                         2: required string jobSubmissionId)
                 throws (1: airavata_errors.InvalidRequestException ire,
@@ -1950,6 +2027,7 @@ service Airavata {
 
 
  /**
+   *
    * Add a Cloud Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *
@@ -1964,8 +2042,8 @@ service Airavata {
    *
    * @return status
    *   Returns the unique job submission id.
+   *
 **/
-
  string addCloudJobSubmissionDetails(1: required security_model.AuthzToken authzToken, 2: required string computeResourceId,
             3: required i32 priorityOrder,
             4: required compute_resource_model.CloudJobSubmission cloudSubmission)
@@ -1975,12 +2053,12 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
  /**
+    *
     * This method returns cloudJobSubmission object
     * @param jobSubmissionInterfaceI
         *   The identifier of the JobSubmission Interface to be retrieved.
     *  @return CloudJobSubmission instance
  **/
-
  compute_resource_model.CloudJobSubmission getCloudJobSubmission(1: required security_model.AuthzToken authzToken, 2: required string jobSubmissionId)
                   throws (1: airavata_errors.InvalidRequestException ire,
                           2: airavata_errors.AiravataClientException ace,
@@ -1988,6 +2066,7 @@ service Airavata {
                           4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Update the given SSH Job Submission details
    *
    * @param jobSubmissionInterfaceId
@@ -2000,7 +2079,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
   */
-
   bool updateSSHJobSubmissionDetails(1: required security_model.AuthzToken authzToken,
             2: required string jobSubmissionInterfaceId,
             3: required compute_resource_model.SSHJobSubmission sshJobSubmission)
@@ -2010,6 +2088,7 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
 /**
+   *
    * Update the cloud Job Submission details
    *
    * @param jobSubmissionInterfaceId
@@ -2022,7 +2101,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
   */
-
   bool updateCloudJobSubmissionDetails(1: required security_model.AuthzToken authzToken,
             2: required string jobSubmissionInterfaceId,
             3: required compute_resource_model.CloudJobSubmission sshJobSubmission)
@@ -2032,6 +2110,7 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Update the UNIOCRE Job Submission details
    *
    * @param jobSubmissionInterfaceId
@@ -2044,7 +2123,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
    **/
-
   bool updateUnicoreJobSubmissionDetails(1: required security_model.AuthzToken authzToken,
               2: required string jobSubmissionInterfaceId,
               3: required compute_resource_model.UnicoreJobSubmission unicoreJobSubmission)
@@ -2054,6 +2132,7 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2073,7 +2152,6 @@ service Airavata {
    *   Returns the unique job submission id.
    *
    **/
-
   string addLocalDataMovementDetails(1: required security_model.AuthzToken authzToken,
             2: required string resourceId,
             3: required data_movement_models.DMType dataMoveType,
@@ -2085,6 +2163,7 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Update the given Local data movement details
    *
    * @param dataMovementInterfaceId
@@ -2097,7 +2176,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
    **/
-
   bool updateLocalDataMovementDetails(1: required security_model.AuthzToken authzToken,
             2: required string dataMovementInterfaceId,
             3: required data_movement_models.LOCALDataMovement localDataMovement)
@@ -2107,7 +2185,8 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
   /**
-  * This method returns local datamovement object
+  *
+  * This method returns local datamovement object.
   *
   * @param dataMovementId
   *   The identifier of the datamovement Interface to be retrieved.
@@ -2115,7 +2194,6 @@ service Airavata {
   *  @return LOCALDataMovement instance
   *
   **/
-
   data_movement_models.LOCALDataMovement getLocalDataMovement(1: required security_model.AuthzToken authzToken,
                     2: required string dataMovementId)
                     throws (1: airavata_errors.InvalidRequestException ire,
@@ -2124,6 +2202,7 @@ service Airavata {
                             4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2140,7 +2219,6 @@ service Airavata {
    *   Returns the unique job submission id.
    *
   */
-
   string addSCPDataMovementDetails(1: required security_model.AuthzToken authzToken,
             2: required string resourceId,
             3: required data_movement_models.DMType dataMoveType,
@@ -2152,6 +2230,7 @@ service Airavata {
             4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Update the given scp data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2165,7 +2244,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
   */
-
   bool updateSCPDataMovementDetails(1: required security_model.AuthzToken authzToken,
             2: required string dataMovementInterfaceId,
             3: required data_movement_models.SCPDataMovement scpDataMovement)
@@ -2183,7 +2261,6 @@ service Airavata {
     * @return SCPDataMovement instance
     *
     **/
-
   data_movement_models.SCPDataMovement getSCPDataMovement(1: required security_model.AuthzToken authzToken, 2: required string dataMovementId)
                     throws (1: airavata_errors.InvalidRequestException ire,
                             2: airavata_errors.AiravataClientException ace,
@@ -2191,6 +2268,7 @@ service Airavata {
                             4: airavata_errors.AuthorizationException ae)
 
  /**
+   *
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2207,7 +2285,6 @@ service Airavata {
    *   Returns the unique data movement id.
    *
   */
-
  string addUnicoreDataMovementDetails(1: required security_model.AuthzToken authzToken,
               2: required string resourceId,
               3: required data_movement_models.DMType dataMoveType,
@@ -2219,6 +2296,7 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Update a selected UNICORE data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2241,6 +2319,7 @@ service Airavata {
              4: airavata_errors.AuthorizationException ae)
 
     /**
+    *
     * This method returns UNICORE datamovement object
     *
     * @param dataMovementId
@@ -2258,6 +2337,7 @@ service Airavata {
                              4: airavata_errors.AuthorizationException ae)
 
    /**
+   *
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    *
@@ -2511,7 +2591,7 @@ service Airavata {
    * Fetch the given Gateway Resource Profile.
    *
    * @param gatewayID
-   *   The identifier for the requested gateway resource
+   *   The identifier for the requested gateway resource.
    *
    * @return gatewayResourceProfile
    *    Gateway Resource Profile Object.


[20/50] [abbrv] airavata git commit: Added generated thrift files

Posted by ch...@apache.org.
Added generated thrift files


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

Branch: refs/heads/master
Commit: 97f4ba9259170ec7f61971e57351f06c9b6c3564
Parents: 1ec4efb
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 12:30:11 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 12:30:11 2016 -0500

----------------------------------------------------------------------
 .../apache/airavata/model/ComponentState.java   |   77 ++
 .../apache/airavata/model/ComponentStatus.java  |  634 +++++++++++
 .../org/apache/airavata/model/EdgeModel.java    |  736 ++++++++++++
 .../org/apache/airavata/model/NodeModel.java    |  736 ++++++++++++
 .../org/apache/airavata/model/PortModel.java    |  736 ++++++++++++
 .../apache/airavata/model/WorkflowModel.java    | 1050 ++++++++++++++++++
 .../apache/airavata/model/WorkflowState.java    |   77 ++
 .../apache/airavata/model/WorkflowStatus.java   |  631 +++++++++++
 .../ApplicationDeploymentDescription.java       |    2 +-
 .../appdeployment/ApplicationModule.java        |    2 +-
 .../appcatalog/appdeployment/CommandObject.java |    2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |    2 +-
 .../ApplicationInterfaceDescription.java        |    2 +-
 .../appcatalog/computeresource/BatchQueue.java  |    2 +-
 .../computeresource/CloudJobSubmission.java     |    2 +-
 .../ComputeResourceDescription.java             |    2 +-
 .../computeresource/GlobusJobSubmission.java    |    2 +-
 .../computeresource/JobSubmissionInterface.java |    2 +-
 .../computeresource/LOCALSubmission.java        |    2 +-
 .../computeresource/ResourceJobManager.java     |    2 +-
 .../computeresource/SSHJobSubmission.java       |    2 +-
 .../computeresource/UnicoreJobSubmission.java   |    2 +-
 .../ComputeResourcePreference.java              |    2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |    2 +-
 .../gatewayprofile/StoragePreference.java       |    2 +-
 .../StorageResourceDescription.java             |    2 +-
 .../application/io/InputDataObjectType.java     |    2 +-
 .../application/io/OutputDataObjectType.java    |    2 +-
 .../airavata/model/commons/ErrorModel.java      |    2 +-
 .../model/commons/ValidationResults.java        |    2 +-
 .../airavata/model/commons/ValidatorResult.java |    2 +-
 .../data/movement/DataMovementInterface.java    |    2 +-
 .../data/movement/GridFTPDataMovement.java      |    2 +-
 .../model/data/movement/LOCALDataMovement.java  |    2 +-
 .../model/data/movement/SCPDataMovement.java    |    2 +-
 .../data/movement/UnicoreDataMovement.java      |    2 +-
 .../data/resource/DataReplicaLocationModel.java |    2 +-
 .../model/data/resource/DataResourceModel.java  |    2 +-
 .../model/error/AiravataClientException.java    |    2 +-
 .../model/error/AiravataSystemException.java    |    2 +-
 .../model/error/AuthenticationException.java    |    2 +-
 .../model/error/AuthorizationException.java     |    2 +-
 .../error/ExperimentNotFoundException.java      |    2 +-
 .../model/error/InvalidRequestException.java    |    2 +-
 .../model/error/LaunchValidationException.java  |    2 +-
 .../model/error/ProjectNotFoundException.java   |    2 +-
 .../airavata/model/error/TimedOutException.java |    2 +-
 .../airavata/model/error/ValidationResults.java |    2 +-
 .../airavata/model/error/ValidatorResult.java   |    2 +-
 .../model/experiment/ExperimentModel.java       |    2 +-
 .../model/experiment/ExperimentStatistics.java  |    2 +-
 .../experiment/ExperimentSummaryModel.java      |    2 +-
 .../experiment/UserConfigurationDataModel.java  |    2 +-
 .../org/apache/airavata/model/job/JobModel.java |    2 +-
 .../event/ExperimentStatusChangeEvent.java      |    2 +-
 .../model/messaging/event/JobIdentifier.java    |    2 +-
 .../messaging/event/JobStatusChangeEvent.java   |    2 +-
 .../event/JobStatusChangeRequestEvent.java      |    2 +-
 .../airavata/model/messaging/event/Message.java |    2 +-
 .../messaging/event/ProcessIdentifier.java      |    2 +-
 .../event/ProcessStatusChangeEvent.java         |    2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |    2 +-
 .../messaging/event/ProcessSubmitEvent.java     |    2 +-
 .../messaging/event/ProcessTerminateEvent.java  |    2 +-
 .../model/messaging/event/TaskIdentifier.java   |    2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |    2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |    2 +-
 .../event/TaskStatusChangeRequestEvent.java     |    2 +-
 .../airavata/model/process/ProcessModel.java    |    2 +-
 .../ComputationalResourceSchedulingModel.java   |    2 +-
 .../airavata/model/security/AuthzToken.java     |    2 +-
 .../airavata/model/status/ExperimentStatus.java |    2 +-
 .../apache/airavata/model/status/JobStatus.java |    2 +-
 .../airavata/model/status/ProcessStatus.java    |    2 +-
 .../airavata/model/status/TaskStatus.java       |    2 +-
 .../model/task/DataStagingTaskModel.java        |    2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |    2 +-
 .../model/task/JobSubmissionTaskModel.java      |    2 +-
 .../airavata/model/task/MonitorTaskModel.java   |    2 +-
 .../apache/airavata/model/task/TaskModel.java   |    2 +-
 .../airavata/model/workspace/Gateway.java       |    2 +-
 .../apache/airavata/model/workspace/Group.java  |    2 +-
 .../airavata/model/workspace/Project.java       |    2 +-
 .../apache/airavata/model/workspace/User.java   |    2 +-
 84 files changed, 4753 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentState.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentState.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentState.java
new file mode 100644
index 0000000..1e68782
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentState.java
@@ -0,0 +1,77 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum ComponentState implements org.apache.thrift.TEnum {
+  CREATED(0),
+  WAITING(1),
+  READY(2),
+  RUNNING(3),
+  COMPLETED(4),
+  FAILED(5),
+  CANCELED(6);
+
+  private final int value;
+
+  private ComponentState(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static ComponentState findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return CREATED;
+      case 1:
+        return WAITING;
+      case 2:
+        return READY;
+      case 3:
+        return RUNNING;
+      case 4:
+        return COMPLETED;
+      case 5:
+        return FAILED;
+      case 6:
+        return CANCELED;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
new file mode 100644
index 0000000..020d395
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
@@ -0,0 +1,634 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class ComponentStatus implements org.apache.thrift.TBase<ComponentStatus, ComponentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentStatus> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentStatus");
+
+  private static final org.apache.thrift.protocol.TField STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("state", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField REASON_FIELD_DESC = new org.apache.thrift.protocol.TField("reason", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField TIMEOF_STATE_CHANGE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeofStateChange", org.apache.thrift.protocol.TType.I64, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new ComponentStatusStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new ComponentStatusTupleSchemeFactory());
+  }
+
+  private ComponentState state; // required
+  private String reason; // optional
+  private long timeofStateChange; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    /**
+     * 
+     * @see ComponentState
+     */
+    STATE((short)1, "state"),
+    REASON((short)2, "reason"),
+    TIMEOF_STATE_CHANGE((short)3, "timeofStateChange");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // STATE
+          return STATE;
+        case 2: // REASON
+          return REASON;
+        case 3: // TIMEOF_STATE_CHANGE
+          return TIMEOF_STATE_CHANGE;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __TIMEOFSTATECHANGE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.REASON,_Fields.TIMEOF_STATE_CHANGE};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.STATE, new org.apache.thrift.meta_data.FieldMetaData("state", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ComponentState.class)));
+    tmpMap.put(_Fields.REASON, new org.apache.thrift.meta_data.FieldMetaData("reason", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.TIMEOF_STATE_CHANGE, new org.apache.thrift.meta_data.FieldMetaData("timeofStateChange", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComponentStatus.class, metaDataMap);
+  }
+
+  public ComponentStatus() {
+    this.state = org.apache.airavata.model.ComponentState.CREATED;
+
+  }
+
+  public ComponentStatus(
+    ComponentState state)
+  {
+    this();
+    this.state = state;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public ComponentStatus(ComponentStatus other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetState()) {
+      this.state = other.state;
+    }
+    if (other.isSetReason()) {
+      this.reason = other.reason;
+    }
+    this.timeofStateChange = other.timeofStateChange;
+  }
+
+  public ComponentStatus deepCopy() {
+    return new ComponentStatus(this);
+  }
+
+  @Override
+  public void clear() {
+    this.state = org.apache.airavata.model.ComponentState.CREATED;
+
+    this.reason = null;
+    setTimeofStateChangeIsSet(false);
+    this.timeofStateChange = 0;
+  }
+
+  /**
+   * 
+   * @see ComponentState
+   */
+  public ComponentState getState() {
+    return this.state;
+  }
+
+  /**
+   * 
+   * @see ComponentState
+   */
+  public void setState(ComponentState state) {
+    this.state = state;
+  }
+
+  public void unsetState() {
+    this.state = null;
+  }
+
+  /** Returns true if field state is set (has been assigned a value) and false otherwise */
+  public boolean isSetState() {
+    return this.state != null;
+  }
+
+  public void setStateIsSet(boolean value) {
+    if (!value) {
+      this.state = null;
+    }
+  }
+
+  public String getReason() {
+    return this.reason;
+  }
+
+  public void setReason(String reason) {
+    this.reason = reason;
+  }
+
+  public void unsetReason() {
+    this.reason = null;
+  }
+
+  /** Returns true if field reason is set (has been assigned a value) and false otherwise */
+  public boolean isSetReason() {
+    return this.reason != null;
+  }
+
+  public void setReasonIsSet(boolean value) {
+    if (!value) {
+      this.reason = null;
+    }
+  }
+
+  public long getTimeofStateChange() {
+    return this.timeofStateChange;
+  }
+
+  public void setTimeofStateChange(long timeofStateChange) {
+    this.timeofStateChange = timeofStateChange;
+    setTimeofStateChangeIsSet(true);
+  }
+
+  public void unsetTimeofStateChange() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  /** Returns true if field timeofStateChange is set (has been assigned a value) and false otherwise */
+  public boolean isSetTimeofStateChange() {
+    return EncodingUtils.testBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  public void setTimeofStateChangeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case STATE:
+      if (value == null) {
+        unsetState();
+      } else {
+        setState((ComponentState)value);
+      }
+      break;
+
+    case REASON:
+      if (value == null) {
+        unsetReason();
+      } else {
+        setReason((String)value);
+      }
+      break;
+
+    case TIMEOF_STATE_CHANGE:
+      if (value == null) {
+        unsetTimeofStateChange();
+      } else {
+        setTimeofStateChange((Long)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case STATE:
+      return getState();
+
+    case REASON:
+      return getReason();
+
+    case TIMEOF_STATE_CHANGE:
+      return getTimeofStateChange();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case STATE:
+      return isSetState();
+    case REASON:
+      return isSetReason();
+    case TIMEOF_STATE_CHANGE:
+      return isSetTimeofStateChange();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof ComponentStatus)
+      return this.equals((ComponentStatus)that);
+    return false;
+  }
+
+  public boolean equals(ComponentStatus that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_state = true && this.isSetState();
+    boolean that_present_state = true && that.isSetState();
+    if (this_present_state || that_present_state) {
+      if (!(this_present_state && that_present_state))
+        return false;
+      if (!this.state.equals(that.state))
+        return false;
+    }
+
+    boolean this_present_reason = true && this.isSetReason();
+    boolean that_present_reason = true && that.isSetReason();
+    if (this_present_reason || that_present_reason) {
+      if (!(this_present_reason && that_present_reason))
+        return false;
+      if (!this.reason.equals(that.reason))
+        return false;
+    }
+
+    boolean this_present_timeofStateChange = true && this.isSetTimeofStateChange();
+    boolean that_present_timeofStateChange = true && that.isSetTimeofStateChange();
+    if (this_present_timeofStateChange || that_present_timeofStateChange) {
+      if (!(this_present_timeofStateChange && that_present_timeofStateChange))
+        return false;
+      if (this.timeofStateChange != that.timeofStateChange)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_state = true && (isSetState());
+    list.add(present_state);
+    if (present_state)
+      list.add(state.getValue());
+
+    boolean present_reason = true && (isSetReason());
+    list.add(present_reason);
+    if (present_reason)
+      list.add(reason);
+
+    boolean present_timeofStateChange = true && (isSetTimeofStateChange());
+    list.add(present_timeofStateChange);
+    if (present_timeofStateChange)
+      list.add(timeofStateChange);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(ComponentStatus other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetState()).compareTo(other.isSetState());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetState()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.state, other.state);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReason()).compareTo(other.isSetReason());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReason()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reason, other.reason);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTimeofStateChange()).compareTo(other.isSetTimeofStateChange());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTimeofStateChange()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.timeofStateChange, other.timeofStateChange);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("ComponentStatus(");
+    boolean first = true;
+
+    sb.append("state:");
+    if (this.state == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.state);
+    }
+    first = false;
+    if (isSetReason()) {
+      if (!first) sb.append(", ");
+      sb.append("reason:");
+      if (this.reason == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.reason);
+      }
+      first = false;
+    }
+    if (isSetTimeofStateChange()) {
+      if (!first) sb.append(", ");
+      sb.append("timeofStateChange:");
+      sb.append(this.timeofStateChange);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetState()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'state' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class ComponentStatusStandardSchemeFactory implements SchemeFactory {
+    public ComponentStatusStandardScheme getScheme() {
+      return new ComponentStatusStandardScheme();
+    }
+  }
+
+  private static class ComponentStatusStandardScheme extends StandardScheme<ComponentStatus> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, ComponentStatus struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // STATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.state = org.apache.airavata.model.ComponentState.findByValue(iprot.readI32());
+              struct.setStateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // REASON
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.reason = iprot.readString();
+              struct.setReasonIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // TIMEOF_STATE_CHANGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.timeofStateChange = iprot.readI64();
+              struct.setTimeofStateChangeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, ComponentStatus struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.state != null) {
+        oprot.writeFieldBegin(STATE_FIELD_DESC);
+        oprot.writeI32(struct.state.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.reason != null) {
+        if (struct.isSetReason()) {
+          oprot.writeFieldBegin(REASON_FIELD_DESC);
+          oprot.writeString(struct.reason);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetTimeofStateChange()) {
+        oprot.writeFieldBegin(TIMEOF_STATE_CHANGE_FIELD_DESC);
+        oprot.writeI64(struct.timeofStateChange);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class ComponentStatusTupleSchemeFactory implements SchemeFactory {
+    public ComponentStatusTupleScheme getScheme() {
+      return new ComponentStatusTupleScheme();
+    }
+  }
+
+  private static class ComponentStatusTupleScheme extends TupleScheme<ComponentStatus> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, ComponentStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeI32(struct.state.getValue());
+      BitSet optionals = new BitSet();
+      if (struct.isSetReason()) {
+        optionals.set(0);
+      }
+      if (struct.isSetTimeofStateChange()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetReason()) {
+        oprot.writeString(struct.reason);
+      }
+      if (struct.isSetTimeofStateChange()) {
+        oprot.writeI64(struct.timeofStateChange);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, ComponentStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.state = org.apache.airavata.model.ComponentState.findByValue(iprot.readI32());
+      struct.setStateIsSet(true);
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.reason = iprot.readString();
+        struct.setReasonIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.timeofStateChange = iprot.readI64();
+        struct.setTimeofStateChangeIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
new file mode 100644
index 0000000..c71df88
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
@@ -0,0 +1,736 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class EdgeModel implements org.apache.thrift.TBase<EdgeModel, EdgeModel._Fields>, java.io.Serializable, Cloneable, Comparable<EdgeModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EdgeModel");
+
+  private static final org.apache.thrift.protocol.TField EDGE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("edgeId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)4);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new EdgeModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new EdgeModelTupleSchemeFactory());
+  }
+
+  private String edgeId; // required
+  private String name; // optional
+  private ComponentStatus status; // optional
+  private String description; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    EDGE_ID((short)1, "edgeId"),
+    NAME((short)2, "name"),
+    STATUS((short)3, "status"),
+    DESCRIPTION((short)4, "description");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // EDGE_ID
+          return EDGE_ID;
+        case 2: // NAME
+          return NAME;
+        case 3: // STATUS
+          return STATUS;
+        case 4: // DESCRIPTION
+          return DESCRIPTION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.DESCRIPTION};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.EDGE_ID, new org.apache.thrift.meta_data.FieldMetaData("edgeId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentStatus.class)));
+    tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(EdgeModel.class, metaDataMap);
+  }
+
+  public EdgeModel() {
+    this.edgeId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public EdgeModel(
+    String edgeId)
+  {
+    this();
+    this.edgeId = edgeId;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public EdgeModel(EdgeModel other) {
+    if (other.isSetEdgeId()) {
+      this.edgeId = other.edgeId;
+    }
+    if (other.isSetName()) {
+      this.name = other.name;
+    }
+    if (other.isSetStatus()) {
+      this.status = new ComponentStatus(other.status);
+    }
+    if (other.isSetDescription()) {
+      this.description = other.description;
+    }
+  }
+
+  public EdgeModel deepCopy() {
+    return new EdgeModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.edgeId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.name = null;
+    this.status = null;
+    this.description = null;
+  }
+
+  public String getEdgeId() {
+    return this.edgeId;
+  }
+
+  public void setEdgeId(String edgeId) {
+    this.edgeId = edgeId;
+  }
+
+  public void unsetEdgeId() {
+    this.edgeId = null;
+  }
+
+  /** Returns true if field edgeId is set (has been assigned a value) and false otherwise */
+  public boolean isSetEdgeId() {
+    return this.edgeId != null;
+  }
+
+  public void setEdgeIdIsSet(boolean value) {
+    if (!value) {
+      this.edgeId = null;
+    }
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void unsetName() {
+    this.name = null;
+  }
+
+  /** Returns true if field name is set (has been assigned a value) and false otherwise */
+  public boolean isSetName() {
+    return this.name != null;
+  }
+
+  public void setNameIsSet(boolean value) {
+    if (!value) {
+      this.name = null;
+    }
+  }
+
+  public ComponentStatus getStatus() {
+    return this.status;
+  }
+
+  public void setStatus(ComponentStatus status) {
+    this.status = status;
+  }
+
+  public void unsetStatus() {
+    this.status = null;
+  }
+
+  /** Returns true if field status is set (has been assigned a value) and false otherwise */
+  public boolean isSetStatus() {
+    return this.status != null;
+  }
+
+  public void setStatusIsSet(boolean value) {
+    if (!value) {
+      this.status = null;
+    }
+  }
+
+  public String getDescription() {
+    return this.description;
+  }
+
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  public void unsetDescription() {
+    this.description = null;
+  }
+
+  /** Returns true if field description is set (has been assigned a value) and false otherwise */
+  public boolean isSetDescription() {
+    return this.description != null;
+  }
+
+  public void setDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.description = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case EDGE_ID:
+      if (value == null) {
+        unsetEdgeId();
+      } else {
+        setEdgeId((String)value);
+      }
+      break;
+
+    case NAME:
+      if (value == null) {
+        unsetName();
+      } else {
+        setName((String)value);
+      }
+      break;
+
+    case STATUS:
+      if (value == null) {
+        unsetStatus();
+      } else {
+        setStatus((ComponentStatus)value);
+      }
+      break;
+
+    case DESCRIPTION:
+      if (value == null) {
+        unsetDescription();
+      } else {
+        setDescription((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case EDGE_ID:
+      return getEdgeId();
+
+    case NAME:
+      return getName();
+
+    case STATUS:
+      return getStatus();
+
+    case DESCRIPTION:
+      return getDescription();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case EDGE_ID:
+      return isSetEdgeId();
+    case NAME:
+      return isSetName();
+    case STATUS:
+      return isSetStatus();
+    case DESCRIPTION:
+      return isSetDescription();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof EdgeModel)
+      return this.equals((EdgeModel)that);
+    return false;
+  }
+
+  public boolean equals(EdgeModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_edgeId = true && this.isSetEdgeId();
+    boolean that_present_edgeId = true && that.isSetEdgeId();
+    if (this_present_edgeId || that_present_edgeId) {
+      if (!(this_present_edgeId && that_present_edgeId))
+        return false;
+      if (!this.edgeId.equals(that.edgeId))
+        return false;
+    }
+
+    boolean this_present_name = true && this.isSetName();
+    boolean that_present_name = true && that.isSetName();
+    if (this_present_name || that_present_name) {
+      if (!(this_present_name && that_present_name))
+        return false;
+      if (!this.name.equals(that.name))
+        return false;
+    }
+
+    boolean this_present_status = true && this.isSetStatus();
+    boolean that_present_status = true && that.isSetStatus();
+    if (this_present_status || that_present_status) {
+      if (!(this_present_status && that_present_status))
+        return false;
+      if (!this.status.equals(that.status))
+        return false;
+    }
+
+    boolean this_present_description = true && this.isSetDescription();
+    boolean that_present_description = true && that.isSetDescription();
+    if (this_present_description || that_present_description) {
+      if (!(this_present_description && that_present_description))
+        return false;
+      if (!this.description.equals(that.description))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_edgeId = true && (isSetEdgeId());
+    list.add(present_edgeId);
+    if (present_edgeId)
+      list.add(edgeId);
+
+    boolean present_name = true && (isSetName());
+    list.add(present_name);
+    if (present_name)
+      list.add(name);
+
+    boolean present_status = true && (isSetStatus());
+    list.add(present_status);
+    if (present_status)
+      list.add(status);
+
+    boolean present_description = true && (isSetDescription());
+    list.add(present_description);
+    if (present_description)
+      list.add(description);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(EdgeModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetEdgeId()).compareTo(other.isSetEdgeId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetEdgeId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.edgeId, other.edgeId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStatus()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.status, other.status);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDescription()).compareTo(other.isSetDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.description, other.description);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("EdgeModel(");
+    boolean first = true;
+
+    sb.append("edgeId:");
+    if (this.edgeId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.edgeId);
+    }
+    first = false;
+    if (isSetName()) {
+      if (!first) sb.append(", ");
+      sb.append("name:");
+      if (this.name == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.name);
+      }
+      first = false;
+    }
+    if (isSetStatus()) {
+      if (!first) sb.append(", ");
+      sb.append("status:");
+      if (this.status == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.status);
+      }
+      first = false;
+    }
+    if (isSetDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("description:");
+      if (this.description == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.description);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetEdgeId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'edgeId' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (status != null) {
+      status.validate();
+    }
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class EdgeModelStandardSchemeFactory implements SchemeFactory {
+    public EdgeModelStandardScheme getScheme() {
+      return new EdgeModelStandardScheme();
+    }
+  }
+
+  private static class EdgeModelStandardScheme extends StandardScheme<EdgeModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, EdgeModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // EDGE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.edgeId = iprot.readString();
+              struct.setEdgeIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.name = iprot.readString();
+              struct.setNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // STATUS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.status = new ComponentStatus();
+              struct.status.read(iprot);
+              struct.setStatusIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.description = iprot.readString();
+              struct.setDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, EdgeModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.edgeId != null) {
+        oprot.writeFieldBegin(EDGE_ID_FIELD_DESC);
+        oprot.writeString(struct.edgeId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.name != null) {
+        if (struct.isSetName()) {
+          oprot.writeFieldBegin(NAME_FIELD_DESC);
+          oprot.writeString(struct.name);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.status != null) {
+        if (struct.isSetStatus()) {
+          oprot.writeFieldBegin(STATUS_FIELD_DESC);
+          struct.status.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.description != null) {
+        if (struct.isSetDescription()) {
+          oprot.writeFieldBegin(DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.description);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class EdgeModelTupleSchemeFactory implements SchemeFactory {
+    public EdgeModelTupleScheme getScheme() {
+      return new EdgeModelTupleScheme();
+    }
+  }
+
+  private static class EdgeModelTupleScheme extends TupleScheme<EdgeModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, EdgeModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.edgeId);
+      BitSet optionals = new BitSet();
+      if (struct.isSetName()) {
+        optionals.set(0);
+      }
+      if (struct.isSetStatus()) {
+        optionals.set(1);
+      }
+      if (struct.isSetDescription()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetName()) {
+        oprot.writeString(struct.name);
+      }
+      if (struct.isSetStatus()) {
+        struct.status.write(oprot);
+      }
+      if (struct.isSetDescription()) {
+        oprot.writeString(struct.description);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, EdgeModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.edgeId = iprot.readString();
+      struct.setEdgeIdIsSet(true);
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.name = iprot.readString();
+        struct.setNameIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.status = new ComponentStatus();
+        struct.status.read(iprot);
+        struct.setStatusIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.description = iprot.readString();
+        struct.setDescriptionIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
new file mode 100644
index 0000000..4ff69b1
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
@@ -0,0 +1,736 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._Fields>, java.io.Serializable, Cloneable, Comparable<NodeModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NodeModel");
+
+  private static final org.apache.thrift.protocol.TField NODE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)4);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new NodeModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new NodeModelTupleSchemeFactory());
+  }
+
+  private String nodeId; // required
+  private String name; // optional
+  private ComponentStatus status; // optional
+  private String description; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    NODE_ID((short)1, "nodeId"),
+    NAME((short)2, "name"),
+    STATUS((short)3, "status"),
+    DESCRIPTION((short)4, "description");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // NODE_ID
+          return NODE_ID;
+        case 2: // NAME
+          return NAME;
+        case 3: // STATUS
+          return STATUS;
+        case 4: // DESCRIPTION
+          return DESCRIPTION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.DESCRIPTION};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.NODE_ID, new org.apache.thrift.meta_data.FieldMetaData("nodeId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentStatus.class)));
+    tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(NodeModel.class, metaDataMap);
+  }
+
+  public NodeModel() {
+    this.nodeId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public NodeModel(
+    String nodeId)
+  {
+    this();
+    this.nodeId = nodeId;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public NodeModel(NodeModel other) {
+    if (other.isSetNodeId()) {
+      this.nodeId = other.nodeId;
+    }
+    if (other.isSetName()) {
+      this.name = other.name;
+    }
+    if (other.isSetStatus()) {
+      this.status = new ComponentStatus(other.status);
+    }
+    if (other.isSetDescription()) {
+      this.description = other.description;
+    }
+  }
+
+  public NodeModel deepCopy() {
+    return new NodeModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.nodeId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.name = null;
+    this.status = null;
+    this.description = null;
+  }
+
+  public String getNodeId() {
+    return this.nodeId;
+  }
+
+  public void setNodeId(String nodeId) {
+    this.nodeId = nodeId;
+  }
+
+  public void unsetNodeId() {
+    this.nodeId = null;
+  }
+
+  /** Returns true if field nodeId is set (has been assigned a value) and false otherwise */
+  public boolean isSetNodeId() {
+    return this.nodeId != null;
+  }
+
+  public void setNodeIdIsSet(boolean value) {
+    if (!value) {
+      this.nodeId = null;
+    }
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void unsetName() {
+    this.name = null;
+  }
+
+  /** Returns true if field name is set (has been assigned a value) and false otherwise */
+  public boolean isSetName() {
+    return this.name != null;
+  }
+
+  public void setNameIsSet(boolean value) {
+    if (!value) {
+      this.name = null;
+    }
+  }
+
+  public ComponentStatus getStatus() {
+    return this.status;
+  }
+
+  public void setStatus(ComponentStatus status) {
+    this.status = status;
+  }
+
+  public void unsetStatus() {
+    this.status = null;
+  }
+
+  /** Returns true if field status is set (has been assigned a value) and false otherwise */
+  public boolean isSetStatus() {
+    return this.status != null;
+  }
+
+  public void setStatusIsSet(boolean value) {
+    if (!value) {
+      this.status = null;
+    }
+  }
+
+  public String getDescription() {
+    return this.description;
+  }
+
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  public void unsetDescription() {
+    this.description = null;
+  }
+
+  /** Returns true if field description is set (has been assigned a value) and false otherwise */
+  public boolean isSetDescription() {
+    return this.description != null;
+  }
+
+  public void setDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.description = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case NODE_ID:
+      if (value == null) {
+        unsetNodeId();
+      } else {
+        setNodeId((String)value);
+      }
+      break;
+
+    case NAME:
+      if (value == null) {
+        unsetName();
+      } else {
+        setName((String)value);
+      }
+      break;
+
+    case STATUS:
+      if (value == null) {
+        unsetStatus();
+      } else {
+        setStatus((ComponentStatus)value);
+      }
+      break;
+
+    case DESCRIPTION:
+      if (value == null) {
+        unsetDescription();
+      } else {
+        setDescription((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case NODE_ID:
+      return getNodeId();
+
+    case NAME:
+      return getName();
+
+    case STATUS:
+      return getStatus();
+
+    case DESCRIPTION:
+      return getDescription();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case NODE_ID:
+      return isSetNodeId();
+    case NAME:
+      return isSetName();
+    case STATUS:
+      return isSetStatus();
+    case DESCRIPTION:
+      return isSetDescription();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof NodeModel)
+      return this.equals((NodeModel)that);
+    return false;
+  }
+
+  public boolean equals(NodeModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_nodeId = true && this.isSetNodeId();
+    boolean that_present_nodeId = true && that.isSetNodeId();
+    if (this_present_nodeId || that_present_nodeId) {
+      if (!(this_present_nodeId && that_present_nodeId))
+        return false;
+      if (!this.nodeId.equals(that.nodeId))
+        return false;
+    }
+
+    boolean this_present_name = true && this.isSetName();
+    boolean that_present_name = true && that.isSetName();
+    if (this_present_name || that_present_name) {
+      if (!(this_present_name && that_present_name))
+        return false;
+      if (!this.name.equals(that.name))
+        return false;
+    }
+
+    boolean this_present_status = true && this.isSetStatus();
+    boolean that_present_status = true && that.isSetStatus();
+    if (this_present_status || that_present_status) {
+      if (!(this_present_status && that_present_status))
+        return false;
+      if (!this.status.equals(that.status))
+        return false;
+    }
+
+    boolean this_present_description = true && this.isSetDescription();
+    boolean that_present_description = true && that.isSetDescription();
+    if (this_present_description || that_present_description) {
+      if (!(this_present_description && that_present_description))
+        return false;
+      if (!this.description.equals(that.description))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_nodeId = true && (isSetNodeId());
+    list.add(present_nodeId);
+    if (present_nodeId)
+      list.add(nodeId);
+
+    boolean present_name = true && (isSetName());
+    list.add(present_name);
+    if (present_name)
+      list.add(name);
+
+    boolean present_status = true && (isSetStatus());
+    list.add(present_status);
+    if (present_status)
+      list.add(status);
+
+    boolean present_description = true && (isSetDescription());
+    list.add(present_description);
+    if (present_description)
+      list.add(description);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(NodeModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetNodeId()).compareTo(other.isSetNodeId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNodeId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nodeId, other.nodeId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStatus()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.status, other.status);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDescription()).compareTo(other.isSetDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.description, other.description);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("NodeModel(");
+    boolean first = true;
+
+    sb.append("nodeId:");
+    if (this.nodeId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.nodeId);
+    }
+    first = false;
+    if (isSetName()) {
+      if (!first) sb.append(", ");
+      sb.append("name:");
+      if (this.name == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.name);
+      }
+      first = false;
+    }
+    if (isSetStatus()) {
+      if (!first) sb.append(", ");
+      sb.append("status:");
+      if (this.status == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.status);
+      }
+      first = false;
+    }
+    if (isSetDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("description:");
+      if (this.description == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.description);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetNodeId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'nodeId' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (status != null) {
+      status.validate();
+    }
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class NodeModelStandardSchemeFactory implements SchemeFactory {
+    public NodeModelStandardScheme getScheme() {
+      return new NodeModelStandardScheme();
+    }
+  }
+
+  private static class NodeModelStandardScheme extends StandardScheme<NodeModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, NodeModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // NODE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.nodeId = iprot.readString();
+              struct.setNodeIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.name = iprot.readString();
+              struct.setNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // STATUS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.status = new ComponentStatus();
+              struct.status.read(iprot);
+              struct.setStatusIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.description = iprot.readString();
+              struct.setDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, NodeModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.nodeId != null) {
+        oprot.writeFieldBegin(NODE_ID_FIELD_DESC);
+        oprot.writeString(struct.nodeId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.name != null) {
+        if (struct.isSetName()) {
+          oprot.writeFieldBegin(NAME_FIELD_DESC);
+          oprot.writeString(struct.name);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.status != null) {
+        if (struct.isSetStatus()) {
+          oprot.writeFieldBegin(STATUS_FIELD_DESC);
+          struct.status.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.description != null) {
+        if (struct.isSetDescription()) {
+          oprot.writeFieldBegin(DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.description);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class NodeModelTupleSchemeFactory implements SchemeFactory {
+    public NodeModelTupleScheme getScheme() {
+      return new NodeModelTupleScheme();
+    }
+  }
+
+  private static class NodeModelTupleScheme extends TupleScheme<NodeModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, NodeModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.nodeId);
+      BitSet optionals = new BitSet();
+      if (struct.isSetName()) {
+        optionals.set(0);
+      }
+      if (struct.isSetStatus()) {
+        optionals.set(1);
+      }
+      if (struct.isSetDescription()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetName()) {
+        oprot.writeString(struct.name);
+      }
+      if (struct.isSetStatus()) {
+        struct.status.write(oprot);
+      }
+      if (struct.isSetDescription()) {
+        oprot.writeString(struct.description);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, NodeModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.nodeId = iprot.readString();
+      struct.setNodeIdIsSet(true);
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.name = iprot.readString();
+        struct.setNameIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.status = new ComponentStatus();
+        struct.status.read(iprot);
+        struct.setStatusIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.description = iprot.readString();
+        struct.setDescriptionIsSet(true);
+      }
+    }
+  }
+
+}
+


[24/50] [abbrv] airavata git commit: adding workflow database scripts

Posted by ch...@apache.org.
adding workflow database scripts


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

Branch: refs/heads/master
Commit: c45172319fa3162bee57d20d028cbb431efd9d00
Parents: 494e0d7
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Feb 1 14:09:05 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Feb 1 14:09:05 2016 -0500

----------------------------------------------------------------------
 .../src/main/resources/workflow-derby.sql       | 117 +++++++++++++++++++
 .../src/main/resources/workflow-mysql.sql       | 117 +++++++++++++++++++
 2 files changed, 234 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c4517231/modules/registry/registry-core/src/main/resources/workflow-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-derby.sql b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
new file mode 100644
index 0000000..e798824
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/workflow-derby.sql
@@ -0,0 +1,117 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+CREATE TABLE WORKFLOW
+(
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        GRAPH CLOB,
+        IMAGE BLOB,
+        PRIMARY KEY (TEMPLATE_ID)
+);
+
+CREATE TABLE WORKFLOW_INPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         INPUT_KEY VARCHAR(255),
+         INPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         METADATA VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
+         INPUT_ORDER INTEGER,
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_STAGED SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_OUTPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         OUTPUT_KEY VARCHAR(255),
+         OUTPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_MOVEMENT SMALLINT,
+         DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         OUTPUT_STREAMING SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMPONENT_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        PRIMARY KEY (STATUS_ID)
+);
+
+CREATE TABLE WORKFLOW_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        PRIMARY KEY (STATUS_ID, COMPONENT_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EDGE
+(
+        EDGE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT
+(
+        PORT_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE
+(
+        NODE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        APPLICATION_ID VARCHAR (255),
+        APPLICATION_NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/c4517231/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/workflow-mysql.sql b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
new file mode 100644
index 0000000..945a912
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/workflow-mysql.sql
@@ -0,0 +1,117 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+CREATE TABLE WORKFLOW
+(
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        WORKFLOW_NAME VARCHAR (255) NOT NULL,
+        GRAPH LONGTEXT,
+        IMAGE BLOB,
+        PRIMARY KEY (TEMPLATE_ID)
+);
+
+CREATE TABLE WORKFLOW_INPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         INPUT_KEY VARCHAR(255),
+         INPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         METADATA VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
+         INPUT_ORDER INTEGER,
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_STAGED SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE WORKFLOW_OUTPUT
+(
+         TEMPLATE_ID VARCHAR(255),
+         OUTPUT_KEY VARCHAR(255),
+         OUTPUT_VALUE VARCHAR(255),
+         DATA_TYPE VARCHAR(255),
+         IS_REQUIRED SMALLINT,
+         REQUIRED_TO_COMMANDLINE SMALLINT,
+         DATA_MOVEMENT SMALLINT,
+         DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         OUTPUT_STREAMING SMALLINT,
+         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
+         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE COMPONENT_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        PRIMARY KEY (STATUS_ID)
+);
+
+CREATE TABLE WORKFLOW_STATUS
+(
+        STATUS_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        STATE VARCHAR(255),
+        REASON VARCHAR(255),
+        PRIMARY KEY (STATUS_ID, COMPONENT_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE EDGE
+(
+        EDGE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT
+(
+        PORT_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE NODE
+(
+        NODE_ID VARCHAR (255) NOT NULL,
+        TEMPLATE_ID VARCHAR (255) NOT NULL,
+        NAME VARCHAR (255),
+        APPLICATION_ID VARCHAR (255),
+        APPLICATION_NAME VARCHAR (255),
+        COMPONENT_STATUS_ID VARCHAR(255),
+        DESCRIPTION VARCHAR(500),
+        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
+        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
+);
\ No newline at end of file


[26/50] [abbrv] airavata git commit: Removed old xbaya workflow class dependency

Posted by ch...@apache.org.
Removed old xbaya workflow class dependency


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

Branch: refs/heads/master
Commit: 225f462badbc1bf18c8585f9f1eddd36bb0f8e09
Parents: 9859af3
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 16:48:00 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 16:48:00 2016 -0500

----------------------------------------------------------------------
 .../main/resources/airavata-server.properties   |   2 +-
 modules/workflow/workflow-core/pom.xml          |   5 -
 .../core/SimpleWorkflowInterpreter.java         |  46 +--
 .../airavata/workflow/core/WorkflowBuilder.java |  15 +
 .../workflow/core/WorkflowEnactmentService.java |   4 +-
 .../airavata/workflow/core/WorkflowFactory.java |  34 ++-
 .../workflow/core/WorkflowFactoryImpl.java      |  74 -----
 .../airavata/workflow/core/WorkflowParser.java  |  18 +-
 .../workflow/core/dag/nodes/InputNode.java      |  37 +++
 .../workflow/core/dag/nodes/InputNodeImpl.java  | 105 +++++++
 .../workflow/core/dag/nodes/OutputNode.java     |  37 +++
 .../workflow/core/dag/nodes/OutputNodeImpl.java | 108 +++++++
 .../core/dag/nodes/WorkflowInputNode.java       |  37 ---
 .../core/dag/nodes/WorkflowInputNodeImpl.java   | 105 -------
 .../core/dag/nodes/WorkflowOutputNode.java      |  37 ---
 .../core/dag/nodes/WorkflowOutputNodeImpl.java  | 108 -------
 .../core/parser/AiravataWorkflowBuilder.java    | 117 ++++++++
 .../core/parser/AiravataWorkflowParser.java     | 287 -------------------
 .../core/parser/JsonWorkflowParser.java         |  63 +++-
 .../workflow/core/parser/PortContainer.java     |  53 ----
 .../core/parser/AiravataWorkflowParserTest.java | 119 --------
 .../core/parser/JsonWorkflowParserTest.java     | 130 +++++++++
 22 files changed, 682 insertions(+), 859 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 78997db..445449c 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -154,7 +154,7 @@ workflowserver=org.apache.airavata.api.server.WorkflowServer
 enactment.thread.pool.size=10
 
 #to define custom workflow parser user following property
-#workflow.parser=org.apache.airavata.workflow.core.parser.AiravataWorkflowParser
+#workflow.parser=org.apache.airavata.workflow.core.parser.AiravataWorkflowBuilder
 
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/pom.xml b/modules/workflow/workflow-core/pom.xml
index 31e0301..bb1ea79 100644
--- a/modules/workflow/workflow-core/pom.xml
+++ b/modules/workflow/workflow-core/pom.xml
@@ -34,11 +34,6 @@
         <!-- Airavata default parser dependency -->
         <dependency>
             <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-workflow-model-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-registry-cpi</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
index defbad4..01ad6bb 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
@@ -37,9 +37,9 @@ import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
 import org.apache.airavata.workflow.core.dag.nodes.NodeState;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
 import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowOutputNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
 import org.apache.airavata.workflow.core.dag.port.InPort;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 import org.slf4j.Logger;
@@ -59,7 +59,7 @@ import java.util.concurrent.ConcurrentHashMap;
 class SimpleWorkflowInterpreter{
 
     private static final Logger log = LoggerFactory.getLogger(SimpleWorkflowInterpreter.class);
-    private List<WorkflowInputNode> workflowInputNodes;
+    private List<InputNode> inputNodes;
 
     private ExperimentModel experiment;
 
@@ -72,7 +72,7 @@ class SimpleWorkflowInterpreter{
     private Map<String, WorkflowContext> processingQueue = new ConcurrentHashMap<String, WorkflowContext>();
     private Map<String, WorkflowContext> completeList = new HashMap<String, WorkflowContext>();
     private Registry registry;
-    private List<WorkflowOutputNode> completeWorkflowOutputs = new ArrayList<WorkflowOutputNode>();
+    private List<OutputNode> completeWorkflowOutputs = new ArrayList<OutputNode>();
     private RabbitMQProcessLaunchPublisher publisher;
     private RabbitMQStatusConsumer statusConsumer;
     private String consumerId;
@@ -97,20 +97,20 @@ class SimpleWorkflowInterpreter{
      * @throws Exception
      */
     void launchWorkflow() throws Exception {
-        WorkflowFactoryImpl wfFactory = WorkflowFactoryImpl.getInstance();
-        WorkflowParser workflowParser = wfFactory.getWorkflowParser(experiment.getExperimentId(), credentialToken);
+        WorkflowBuilder workflowBuilder = WorkflowFactory.getWorkflowBuilder(experiment.getExperimentId(), credentialToken, null);
+
         log.debug("Initialized workflow parser");
-        setWorkflowInputNodes(workflowParser.parse());
+        setInputNodes(workflowBuilder.build());
         log.debug("Parsed the workflow and got the workflow input nodes");
         // process workflow input nodes
-        processWorkflowInputNodes(getWorkflowInputNodes());
+        processWorkflowInputNodes(getInputNodes());
         if (readyList.isEmpty()) {
             StringBuilder sb = new StringBuilder();
-            for (WorkflowInputNode workflowInputNode : workflowInputNodes) {
+            for (InputNode inputNode : inputNodes) {
                 sb.append(", ");
-                sb.append(workflowInputNode.getInputObject().getName());
+                sb.append(inputNode.getInputObject().getName());
                 sb.append("=");
-                sb.append(workflowInputNode.getInputObject().getValue());
+                sb.append(inputNode.getInputObject().getValue());
             }
             throw new AiravataException("No workflow application node is in ready state to run with experiment inputs" + sb.toString());
         }
@@ -128,8 +128,8 @@ class SimpleWorkflowInterpreter{
             throw new AiravataException("No workflow application node is in ready state to run");
         }
         for (WorkflowNode readyNode : readyList.values()) {
-            if (readyNode instanceof WorkflowOutputNode) {
-                WorkflowOutputNode wfOutputNode = (WorkflowOutputNode) readyNode;
+            if (readyNode instanceof OutputNode) {
+                OutputNode wfOutputNode = (OutputNode) readyNode;
                 wfOutputNode.getOutputObject().setValue(wfOutputNode.getInPort().getInputObject().getValue());
                 addToCompleteOutputNodeList(wfOutputNode);
                 continue;
@@ -151,7 +151,7 @@ class SimpleWorkflowInterpreter{
 
     private void saveWorkflowOutputs() throws AppCatalogException {
         List<OutputDataObjectType> outputDataObjects = new ArrayList<OutputDataObjectType>();
-        for (WorkflowOutputNode completeWorkflowOutput : completeWorkflowOutputs) {
+        for (OutputNode completeWorkflowOutput : completeWorkflowOutputs) {
             outputDataObjects.add(completeWorkflowOutput.getOutputObject());
         }
         RegistryFactory.getAppCatalog().getWorkflowCatalog()
@@ -183,9 +183,9 @@ class SimpleWorkflowInterpreter{
             executionUnit = ExecutionUnit.APPLICATION;
             executionData = ((ApplicationNode) readyNode).getApplicationId();
             setupNodeDetailsInput(((ApplicationNode) readyNode), wfNodeDetails);
-        } else if (readyNode instanceof WorkflowInputNode) {
+        } else if (readyNode instanceof InputNode) {
             executionUnit = ExecutionUnit.INPUT;
-        } else if (readyNode instanceof WorkflowOutputNode) {
+        } else if (readyNode instanceof OutputNode) {
             executionUnit = ExecutionUnit.OUTPUT;
         }
         wfNodeDetails.setExecutionUnit(executionUnit);
@@ -206,9 +206,9 @@ class SimpleWorkflowInterpreter{
     }
 
 
-    private void processWorkflowInputNodes(List<WorkflowInputNode> wfInputNodes) {
+    private void processWorkflowInputNodes(List<InputNode> wfInputNodes) {
         Set<WorkflowNode> tempNodeSet = new HashSet<WorkflowNode>();
-        for (WorkflowInputNode wfInputNode : wfInputNodes) {
+        for (InputNode wfInputNode : wfInputNodes) {
             if (wfInputNode.isReady()) {
                 log.debug("Workflow node : " + wfInputNode.getId() + " is ready to execute");
                 for (Edge edge : wfInputNode.getOutPort().getOutEdges()) {
@@ -227,12 +227,12 @@ class SimpleWorkflowInterpreter{
     }
 
 
-    public List<WorkflowInputNode> getWorkflowInputNodes() throws Exception {
-        return workflowInputNodes;
+    public List<InputNode> getInputNodes() throws Exception {
+        return inputNodes;
     }
 
-    public void setWorkflowInputNodes(List<WorkflowInputNode> workflowInputNodes) {
-        this.workflowInputNodes = workflowInputNodes;
+    public void setInputNodes(List<InputNode> inputNodes) {
+        this.inputNodes = inputNodes;
     }
 
     private Registry getRegistry() throws RegistryException {
@@ -282,7 +282,7 @@ class SimpleWorkflowInterpreter{
     }
 
 
-    private void addToCompleteOutputNodeList(WorkflowOutputNode wfOutputNode) {
+    private void addToCompleteOutputNodeList(OutputNode wfOutputNode) {
         completeWorkflowOutputs.add(wfOutputNode);
         readyList.remove(wfOutputNode.getId());
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
new file mode 100644
index 0000000..a794282
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
@@ -0,0 +1,15 @@
+package org.apache.airavata.workflow.core;
+
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+
+import java.util.List;
+
+/**
+ * Created by syodage on 2/1/16.
+ */
+public interface WorkflowBuilder {
+
+    public List<InputNode> build() throws Exception;
+
+    public List<InputNode> build(String workflow) throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
index 8ca0706..aaa3073 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
@@ -137,7 +137,7 @@ public class WorkflowEnactmentService {
                     // output changes it is ok to ignore this.
                 }
 
-            }else if (msgCtx.getType() == MessageType.TASKOUTPUT) {
+            }else if (msgCtx.getType() == MessageType.PROCESSOUTPUT) {
                 TaskOutputChangeEvent event = (TaskOutputChangeEvent) msgCtx.getEvent();
                 TaskIdentifier taskIdentifier = event.getTaskIdentity();
                 simpleWorkflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
@@ -150,7 +150,7 @@ public class WorkflowEnactmentService {
                     throw new IllegalArgumentException("Error while processing TaskOutputChangeEvent, " +
                             "There is no registered workflow for experiment Id : " + taskIdentifier.getExperimentId());
                 }
-                message = "Received task output change event , expId : " + taskIdentifier.getExperimentId() + ", taskId : " + taskIdentifier.getTaskId() + ", workflow node Id : " + taskIdentifier.getWorkflowNodeId();
+                message = "Received task output change event , expId : " + taskIdentifier.getExperimentId() + ", taskId : " + taskIdentifier.getTaskId();
                 log.debug(message);
             } else {
                 // not interested, ignores

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
index ee89dd9..f232efa 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
@@ -21,11 +21,41 @@
 
 package org.apache.airavata.workflow.core;
 
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.workflow.core.parser.AiravataWorkflowBuilder;
+import org.apache.airavata.workflow.core.parser.JsonWorkflowParser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Constructor;
+
 /**
  * All classes implement this WorkflowFactory interface, should be abstract or singleton.
  */
-public interface WorkflowFactory {
+public class WorkflowFactory {
+
+    private static final Logger log = LoggerFactory.getLogger(WorkflowFactory.class);
+
+
+    public static WorkflowBuilder getWorkflowBuilder(String experimentId, String credentialToken, String workflowString) throws Exception {
+        return new AiravataWorkflowBuilder(experimentId, credentialToken, getWorkflowParser(workflowString));
+    }
 
-    public WorkflowParser getWorkflowParser(String experimentId, String credentialToken) throws Exception;
+    public static WorkflowParser getWorkflowParser(String workflowString) throws Exception {
+        WorkflowParser workflowParser = null;
+        try {
+            String wfParserClassName = ServerSettings.getWorkflowParser();
+            Class<?> aClass = Class.forName(wfParserClassName);
+            Constructor<?> constructor = aClass.getConstructor(String.class);
+            workflowParser = (WorkflowParser) constructor.newInstance(workflowString);
+        } catch (ApplicationSettingsException e) {
+            log.info("A custom workflow parser is not defined, Use default Airavata JSON workflow parser");
+        }
+        if (workflowParser == null) {
+            workflowParser = new JsonWorkflowParser(workflowString);
+        }
+        return workflowParser;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactoryImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactoryImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactoryImpl.java
deleted file mode 100644
index 1df2084..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactoryImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.workflow.core.parser.AiravataWorkflowParser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Constructor;
-
-/**
- * Singleton class, only one instance can exist in runtime.
- */
-public class WorkflowFactoryImpl implements WorkflowFactory {
-
-    private static final Logger log = LoggerFactory.getLogger(WorkflowFactoryImpl.class);
-
-    private static WorkflowFactoryImpl workflowFactoryImpl;
-
-    private WorkflowFactoryImpl(){
-
-    }
-
-    public static WorkflowFactoryImpl getInstance() {
-        if (workflowFactoryImpl == null) {
-            synchronized (WorkflowFactory.class) {
-                if (workflowFactoryImpl == null) {
-                    workflowFactoryImpl = new WorkflowFactoryImpl();
-                }
-            }
-        }
-        return workflowFactoryImpl;
-    }
-
-
-    @Override
-    public WorkflowParser getWorkflowParser(String experimentId, String credentialToken) throws Exception {
-        WorkflowParser workflowParser = null;
-        try {
-            String wfParserClassName = ServerSettings.getWorkflowParser();
-            Class<?> aClass = Class.forName(wfParserClassName);
-            Constructor<?> constructor = aClass.getConstructor(String.class, String.class);
-            workflowParser = (WorkflowParser) constructor.newInstance(experimentId, credentialToken);
-        } catch (ApplicationSettingsException e) {
-            log.info("A custom workflow parser is not defined, Use default Airavata workflow parser");
-        }
-        if (workflowParser == null) {
-            workflowParser = new AiravataWorkflowParser(experimentId, credentialToken);
-        }
-        return workflowParser;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
index 8d284dd..46bc1d8 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
@@ -21,12 +21,26 @@
 
 package org.apache.airavata.workflow.core;
 
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
+import org.apache.airavata.workflow.core.dag.edge.Edge;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
+import org.apache.airavata.workflow.core.dag.port.Port;
 
 import java.util.List;
 
 public interface WorkflowParser {
 
-    public List<WorkflowInputNode> parse() throws Exception;
+    public void parse() throws Exception;
+
+    public List<InputNode> getInputNodes() throws Exception;
+
+    public List<OutputNode> getOutputNodes() throws Exception;
+
+    public List<ApplicationNode> getApplicationNodes() throws Exception;
+
+    public List<Port> getPorts() throws Exception;
+
+    public List<Edge> getEdges() throws Exception;
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNode.java
new file mode 100644
index 0000000..6dec125
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNode.java
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.workflow.core.dag.nodes;
+
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.workflow.core.dag.port.OutPort;
+
+public interface InputNode extends WorkflowNode {
+
+    public InputDataObjectType getInputObject();
+
+    public void setInputObject(InputDataObjectType inputObject);
+
+    public OutPort getOutPort();
+
+    public void setOutPort(OutPort outPort);
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNodeImpl.java
new file mode 100644
index 0000000..59984d7
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/InputNodeImpl.java
@@ -0,0 +1,105 @@
+/*
+ * 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.workflow.core.dag.nodes;
+
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.workflow.core.dag.port.OutPort;
+
+public class InputNodeImpl implements InputNode {
+
+    private NodeModel nodeModel;
+    private OutPort outPort;
+    private InputDataObjectType inputDataObjectType;
+
+    public InputNodeImpl(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public void setNodeModel(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public NodeModel getNodeModel() {
+        return nodeModel;
+    }
+
+    @Override
+    public String getId() {
+        return getNodeModel().getNodeId();
+    }
+
+    @Override
+    public String getName() {
+        return getNodeModel().getName();
+    }
+
+    @Override
+    public NodeType getType() {
+        return NodeType.WORKFLOW_INPUT;
+    }
+
+    @Override
+    public ComponentState getState() {
+        return getStatus().getState();
+    }
+
+    @Override
+    public ComponentStatus getStatus() {
+        return getNodeModel().getStatus();
+    }
+
+    @Override
+    public void setStatus(ComponentStatus newStatus) {
+        getNodeModel().setStatus(newStatus);
+    }
+
+    @Override
+    public boolean isReady() {
+        return (inputDataObjectType.getValue() != null && !inputDataObjectType.getValue().equals(""))
+                || !inputDataObjectType.isIsRequired();
+    }
+
+    @Override
+    public InputDataObjectType getInputObject() {
+        return this.inputDataObjectType;
+    }
+
+    @Override
+    public void setInputObject(InputDataObjectType inputObject) {
+        this.inputDataObjectType = inputObject;
+    }
+
+    @Override
+    public OutPort getOutPort() {
+        return this.outPort;
+    }
+
+    @Override
+    public void setOutPort(OutPort outPort) {
+        this.outPort = outPort;
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNode.java
new file mode 100644
index 0000000..7378c96
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNode.java
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.workflow.core.dag.nodes;
+
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.workflow.core.dag.port.InPort;
+
+public interface OutputNode extends WorkflowNode {
+
+    public OutputDataObjectType getOutputObject();
+
+    public void setOutputObject(OutputDataObjectType outputObject);
+
+    public InPort getInPort();
+
+    public void setInPort(InPort inPort);
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNodeImpl.java
new file mode 100644
index 0000000..5eada1c
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/OutputNodeImpl.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.workflow.core.dag.nodes;
+
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.NodeModel;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.workflow.core.dag.port.InPort;
+
+public class OutputNodeImpl implements OutputNode {
+
+    private NodeModel nodeModel;
+    private OutputDataObjectType outputDataObjectType;
+    private InPort inPort;
+
+    public OutputNodeImpl(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public void setNodeModel(NodeModel nodeModel) {
+        this.nodeModel = nodeModel;
+    }
+
+    @Override
+    public NodeModel getNodeModel() {
+        return nodeModel;
+    }
+
+    @Override
+    public String getId() {
+        return getNodeModel().getNodeId();
+    }
+
+    @Override
+    public String getName() {
+        return getNodeModel().getName();
+    }
+
+    @Override
+    public NodeType getType() {
+        return NodeType.WORKFLOW_OUTPUT;
+    }
+
+    @Override
+    public ComponentState getState() {
+        return getStatus().getState();
+    }
+
+    @Override
+    public ComponentStatus getStatus() {
+        return getNodeModel().getStatus();
+    }
+
+    @Override
+    public void setStatus(ComponentStatus newStatus) {
+        getNodeModel().setStatus(newStatus);
+    }
+
+
+    @Override
+    public boolean isReady() {
+        return !(inPort.getInputObject() == null || inPort.getInputObject().getValue() == null
+                || inPort.getInputObject().getValue().equals(""));
+    }
+
+    @Override
+    public OutputDataObjectType getOutputObject() {
+        return this.outputDataObjectType;
+    }
+
+    @Override
+    public void setOutputObject(OutputDataObjectType outputObject) {
+        this.outputDataObjectType = outputObject;
+    }
+
+    @Override
+    public InPort getInPort() {
+        return this.inPort;
+    }
+
+    @Override
+    public void setInPort(InPort inPort) {
+        this.inPort = inPort;
+    }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNode.java
deleted file mode 100644
index 939ba16..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNode.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.dag.nodes;
-
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.workflow.core.dag.port.OutPort;
-
-public interface WorkflowInputNode extends WorkflowNode {
-
-    public InputDataObjectType getInputObject();
-
-    public void setInputObject(InputDataObjectType inputObject);
-
-    public OutPort getOutPort();
-
-    public void setOutPort(OutPort outPort);
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
deleted file mode 100644
index 3ecc865..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowInputNodeImpl.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.airavata.workflow.core.dag.nodes;
-
-import org.apache.airavata.model.ComponentState;
-import org.apache.airavata.model.ComponentStatus;
-import org.apache.airavata.model.NodeModel;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.workflow.core.dag.port.OutPort;
-
-public class WorkflowInputNodeImpl implements WorkflowInputNode {
-
-    private NodeModel nodeModel;
-    private OutPort outPort;
-    private InputDataObjectType inputDataObjectType;
-
-    public WorkflowInputNodeImpl(NodeModel nodeModel) {
-        this.nodeModel = nodeModel;
-    }
-
-    @Override
-    public void setNodeModel(NodeModel nodeModel) {
-        this.nodeModel = nodeModel;
-    }
-
-    @Override
-    public NodeModel getNodeModel() {
-        return nodeModel;
-    }
-
-    @Override
-    public String getId() {
-        return getNodeModel().getNodeId();
-    }
-
-    @Override
-    public String getName() {
-        return getNodeModel().getName();
-    }
-
-    @Override
-    public NodeType getType() {
-        return NodeType.WORKFLOW_INPUT;
-    }
-
-    @Override
-    public ComponentState getState() {
-        return getStatus().getState();
-    }
-
-    @Override
-    public ComponentStatus getStatus() {
-        return getNodeModel().getStatus();
-    }
-
-    @Override
-    public void setStatus(ComponentStatus newStatus) {
-        getNodeModel().setStatus(newStatus);
-    }
-
-    @Override
-    public boolean isReady() {
-        return (inputDataObjectType.getValue() != null && !inputDataObjectType.getValue().equals(""))
-                || !inputDataObjectType.isIsRequired();
-    }
-
-    @Override
-    public InputDataObjectType getInputObject() {
-        return this.inputDataObjectType;
-    }
-
-    @Override
-    public void setInputObject(InputDataObjectType inputObject) {
-        this.inputDataObjectType = inputObject;
-    }
-
-    @Override
-    public OutPort getOutPort() {
-        return this.outPort;
-    }
-
-    @Override
-    public void setOutPort(OutPort outPort) {
-        this.outPort = outPort;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNode.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNode.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNode.java
deleted file mode 100644
index 1b984be..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNode.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.dag.nodes;
-
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.workflow.core.dag.port.InPort;
-
-public interface WorkflowOutputNode extends WorkflowNode {
-
-    public OutputDataObjectType getOutputObject();
-
-    public void setOutputObject(OutputDataObjectType outputObject);
-
-    public InPort getInPort();
-
-    public void setInPort(InPort inPort);
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
deleted file mode 100644
index 5844753..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/WorkflowOutputNodeImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.dag.nodes;
-
-import org.apache.airavata.model.ComponentState;
-import org.apache.airavata.model.ComponentStatus;
-import org.apache.airavata.model.NodeModel;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.workflow.core.dag.port.InPort;
-
-public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
-
-    private NodeModel nodeModel;
-    private OutputDataObjectType outputDataObjectType;
-    private InPort inPort;
-
-    public WorkflowOutputNodeImpl(NodeModel nodeModel) {
-        this.nodeModel = nodeModel;
-    }
-
-    @Override
-    public void setNodeModel(NodeModel nodeModel) {
-        this.nodeModel = nodeModel;
-    }
-
-    @Override
-    public NodeModel getNodeModel() {
-        return nodeModel;
-    }
-
-    @Override
-    public String getId() {
-        return getNodeModel().getNodeId();
-    }
-
-    @Override
-    public String getName() {
-        return getNodeModel().getName();
-    }
-
-    @Override
-    public NodeType getType() {
-        return NodeType.WORKFLOW_OUTPUT;
-    }
-
-    @Override
-    public ComponentState getState() {
-        return getStatus().getState();
-    }
-
-    @Override
-    public ComponentStatus getStatus() {
-        return getNodeModel().getStatus();
-    }
-
-    @Override
-    public void setStatus(ComponentStatus newStatus) {
-        getNodeModel().setStatus(newStatus);
-    }
-
-
-    @Override
-    public boolean isReady() {
-        return !(inPort.getInputObject() == null || inPort.getInputObject().getValue() == null
-                || inPort.getInputObject().getValue().equals(""));
-    }
-
-    @Override
-    public OutputDataObjectType getOutputObject() {
-        return this.outputDataObjectType;
-    }
-
-    @Override
-    public void setOutputObject(OutputDataObjectType outputObject) {
-        this.outputDataObjectType = outputObject;
-    }
-
-    @Override
-    public InPort getInPort() {
-        return this.inPort;
-    }
-
-    @Override
-    public void setInPort(InPort inPort) {
-        this.inPort = inPort;
-    }
-
-}
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
new file mode 100644
index 0000000..e50b245
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
@@ -0,0 +1,117 @@
+/*
+ *
+ * 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.workflow.core.parser;
+
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
+import org.apache.airavata.registry.cpi.*;
+import org.apache.airavata.workflow.core.WorkflowBuilder;
+import org.apache.airavata.workflow.core.WorkflowParser;
+import org.apache.airavata.workflow.core.dag.edge.DirectedEdge;
+import org.apache.airavata.workflow.core.dag.edge.Edge;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNodeImpl;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNodeImpl;
+import org.apache.airavata.workflow.core.dag.port.*;
+
+import java.util.*;
+
+public class AiravataWorkflowBuilder implements WorkflowBuilder {
+
+    private String credentialToken ;
+    private WorkflowParser workflowParser;
+    private ExperimentModel experiment;
+
+
+    public AiravataWorkflowBuilder(String experimentId, String credentialToken, WorkflowParser workflowParser) throws RegistryException {
+        this.experiment = getExperiment(experimentId);
+        this.credentialToken = credentialToken;
+        this.workflowParser = workflowParser;
+    }
+
+    public AiravataWorkflowBuilder(ExperimentModel experiment, String credentialToken , WorkflowParser workflowParser) {
+        this.credentialToken = credentialToken;
+        this.experiment = experiment;
+        this.workflowParser = workflowParser;
+    }
+
+    @Override
+    public List<InputNode> build() throws Exception {
+        return parseWorkflow(getWorkflowFromExperiment(experiment));
+    }
+
+    @Override
+    public List<InputNode> build(String workflow) throws Exception {
+        return parseWorkflow(workflow);
+    }
+
+    public List<InputNode> parseWorkflow(String workflow) throws Exception {
+
+        List<InputNode> inputNodes = workflowParser.getInputNodes();
+        List<ApplicationNode> applicationNodes = workflowParser.getApplicationNodes();
+        List<Port> ports = workflowParser.getPorts();
+        List<Edge> edges = workflowParser.getEdges();
+        List<OutputNode> outputNodes = workflowParser.getOutputNodes();
+
+        // travel breath first and build relation between each workflow component
+        Queue<WorkflowNode> queue = new LinkedList<>();
+        List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
+        Map<String,InputDataObjectType> inputDataMap=new HashMap<String, InputDataObjectType>();
+        for (InputDataObjectType dataObjectType : experimentInputs) {
+            inputDataMap.put(dataObjectType.getName(), dataObjectType);
+        }
+
+        return inputNodes;
+    }
+
+
+    private OutputDataObjectType getOutputDataObject(InputDataObjectType inputObject) {
+        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
+        outputDataObjectType.setApplicationArgument(inputObject.getApplicationArgument());
+        outputDataObjectType.setName(inputObject.getName());
+        outputDataObjectType.setType(inputObject.getType());
+        outputDataObjectType.setValue(inputObject.getValue());
+        return outputDataObjectType;
+    }
+
+    private ExperimentModel getExperiment(String experimentId) throws RegistryException {
+        Registry registry = RegistryFactory.getRegistry();
+        return (ExperimentModel)registry.getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
+    }
+
+    private String getWorkflowFromExperiment(ExperimentModel experiment) throws RegistryException, AppCatalogException {
+        WorkflowCatalog workflowCatalog = getWorkflowCatalog();
+
+        // FIXME: return workflow string
+        return null;
+    }
+
+    private WorkflowCatalog getWorkflowCatalog() throws AppCatalogException {
+        return RegistryFactory.getAppCatalog().getWorkflowCatalog();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParser.java
deleted file mode 100644
index 0844219..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParser.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.parser;
-
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.*;
-import org.apache.airavata.workflow.core.WorkflowParser;
-import org.apache.airavata.workflow.core.dag.edge.DirectedEdge;
-import org.apache.airavata.workflow.core.dag.edge.Edge;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNodeImpl;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNodeImpl;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowOutputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowOutputNodeImpl;
-import org.apache.airavata.workflow.core.dag.port.InPort;
-import org.apache.airavata.workflow.core.dag.port.InputPortIml;
-import org.apache.airavata.workflow.core.dag.port.OutPort;
-import org.apache.airavata.workflow.core.dag.port.OutPortImpl;
-import org.apache.airavata.workflow.model.component.ComponentException;
-import org.apache.airavata.workflow.model.component.system.ConstantComponent;
-import org.apache.airavata.workflow.model.component.system.InputComponent;
-import org.apache.airavata.workflow.model.component.system.S3InputComponent;
-import org.apache.airavata.workflow.model.graph.DataEdge;
-import org.apache.airavata.workflow.model.graph.DataPort;
-import org.apache.airavata.workflow.model.graph.GraphException;
-import org.apache.airavata.workflow.model.graph.Node;
-import org.apache.airavata.workflow.model.graph.impl.NodeImpl;
-import org.apache.airavata.workflow.model.graph.system.OutputNode;
-import org.apache.airavata.workflow.model.graph.system.SystemDataPort;
-import org.apache.airavata.workflow.model.graph.ws.WSNode;
-import org.apache.airavata.workflow.model.graph.ws.WSPort;
-import org.apache.airavata.workflow.model.wf.Workflow;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class AiravataWorkflowParser implements WorkflowParser {
-
-    private String credentialToken ;
-
-    private ExperimentModel experiment;
-    private Map<String, WorkflowNode> wfNodes = new HashMap<String, WorkflowNode>();
-
-
-    public AiravataWorkflowParser(String experimentId, String credentialToken) throws RegistryException {
-        this.experiment = getExperiment(experimentId);
-        this.credentialToken = credentialToken;
-    }
-
-    public AiravataWorkflowParser(ExperimentModel experiment, String credentialToken) {
-        this.credentialToken = credentialToken;
-        this.experiment = experiment;
-    }
-
-    @Override
-    public List<WorkflowInputNode> parse() throws RegistryException, AppCatalogException,
-            ComponentException, GraphException {
-        return parseWorkflow(getWorkflowFromExperiment(experiment));
-    }
-
-    public List<WorkflowInputNode> parseWorkflow(Workflow workflow) {
-        List<Node> gNodes = getInputNodes(workflow);
-        List<WorkflowInputNode> wfInputNodes = new ArrayList<WorkflowInputNode>();
-        List<PortContainer> portContainers = new ArrayList<PortContainer>();
-        List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
-        Map<String,InputDataObjectType> inputDataMap=new HashMap<String, InputDataObjectType>();
-        WorkflowInputNode wfInputNode = null;
-        for (InputDataObjectType dataObjectType : experimentInputs) {
-            inputDataMap.put(dataObjectType.getName(), dataObjectType);
-        }
-        for (Node gNode : gNodes) {
-            wfInputNode = new WorkflowInputNodeImpl(gNode.getID(), gNode.getName());
-            wfInputNode.setInputObject(inputDataMap.get(wfInputNode.getId()));
-            if (wfInputNode.getInputObject() == null) {
-                throw new RuntimeException("Workflow Input object is not set, workflow node id: " + wfInputNode.getId());
-            }
-            portContainers.addAll(processOutPorts(gNode, wfInputNode));
-            wfInputNodes.add(wfInputNode);
-        }
-
-        // while port container is not empty iterate graph and build the workflow DAG.
-        buildModel(portContainers);
-
-        return wfInputNodes;
-    }
-
-    private void buildModel(List<PortContainer> portContainerList) {
-        // end condition of recursive call.
-        if (portContainerList == null || portContainerList.isEmpty()) {
-            return ;
-        }
-        DataPort dataPort = null;
-        InPort inPort = null;
-        ApplicationNode wfApplicationNode = null;
-        WorkflowOutputNode wfOutputNode = null;
-        List<PortContainer> nextPortContainerList = new ArrayList<PortContainer>();
-        for (PortContainer portContainer : portContainerList) {
-            dataPort = portContainer.getDataPort();
-            inPort = portContainer.getInPort();
-            Node node = dataPort.getNode();
-            if (node instanceof WSNode) {
-                WSNode wsNode = (WSNode) node;
-                WorkflowNode wfNode = wfNodes.get(wsNode.getID());
-                if (wfNode == null) {
-                    wfApplicationNode = createApplicationNode(wsNode);
-                    wfNodes.put(wfApplicationNode.getId(), wfApplicationNode);
-                    nextPortContainerList.addAll(processOutPorts(wsNode, wfApplicationNode));
-                } else if (wfNode instanceof ApplicationNode) {
-                    wfApplicationNode = (ApplicationNode) wfNode;
-                } else {
-                    throw new IllegalArgumentException("Only support for ApplicationNode implementation, but found other type for node implementation");
-                }
-                inPort.setNode(wfApplicationNode);
-                wfApplicationNode.addInPort(inPort);
-
-            }else if (node instanceof OutputNode) {
-                OutputNode oNode = (OutputNode) node;
-                wfOutputNode = createWorkflowOutputNode(oNode);
-                wfOutputNode.setInPort(inPort);
-                inPort.setNode(wfOutputNode);
-                wfNodes.put(wfOutputNode.getId(), wfOutputNode);
-            }
-        }
-        buildModel(nextPortContainerList);
-
-    }
-
-    private WorkflowOutputNode createWorkflowOutputNode(OutputNode oNode) {
-        WorkflowOutputNodeImpl workflowOutputNode = new WorkflowOutputNodeImpl(oNode.getID(), oNode.getName());
-        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
-        outputDataObjectType.setType(oNode.getParameterType());
-        outputDataObjectType.setName(oNode.getID());
-        workflowOutputNode.setOutputObject(outputDataObjectType);
-        return workflowOutputNode;
-    }
-
-    private ApplicationNode createApplicationNode(WSNode wsNode) {
-        ApplicationNode applicationNode = new ApplicationNodeImpl(wsNode.getID(),
-                wsNode.getComponent().getApplication().getName(),
-                wsNode.getComponent().getApplication().getApplicationId());
-        return applicationNode;
-    }
-
-    private List<PortContainer> processOutPorts(Node node, WorkflowNode wfNode) {
-        OutPort outPort ;
-        Edge edge;
-        InPort inPort = null;
-        List<PortContainer> portContainers = new ArrayList<PortContainer>();
-        for (DataPort dataPort : node.getOutputPorts()) {
-            outPort = createOutPort(dataPort);
-            for (DataEdge dataEdge : dataPort.getEdges()) {
-                edge = new DirectedEdge();
-                edge.setFromPort(outPort);
-                outPort.addEdge(edge);
-                inPort = createInPort(dataEdge.getToPort());
-                edge.setToPort(inPort);
-                inPort.addEdge(edge);
-                portContainers.add(new PortContainer(dataEdge.getToPort(), inPort));
-            }
-            outPort.setNode(wfNode);
-            if (wfNode instanceof WorkflowInputNode) {
-                WorkflowInputNode workflowInputNode = (WorkflowInputNode) wfNode;
-                workflowInputNode.setOutPort(outPort);
-            } else if (wfNode instanceof ApplicationNode) {
-                ApplicationNode applicationNode = ((ApplicationNode) wfNode);
-                applicationNode.addOutPort(outPort);
-            }
-        }
-        return portContainers;
-    }
-
-    private OutPort createOutPort(DataPort dataPort) {
-        OutPortImpl outPort = new OutPortImpl(dataPort.getID());
-        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
-        if (dataPort instanceof WSPort) {
-            WSPort wsPort = (WSPort) dataPort;
-            outputDataObjectType.setName(wsPort.getComponentPort().getName());
-            outputDataObjectType.setType(wsPort.getType());
-        }else if (dataPort instanceof SystemDataPort) {
-            SystemDataPort sysPort = (SystemDataPort) dataPort;
-            outputDataObjectType.setName(sysPort.getFromNode().getName());
-            outputDataObjectType.setType(sysPort.getType());
-        }
-
-        outPort.setOutputObject(outputDataObjectType);
-        return outPort;
-    }
-
-    private InPort createInPort(DataPort toPort) {
-        InPort inPort = new InputPortIml(toPort.getID());
-        InputDataObjectType inputDataObjectType = new InputDataObjectType();
-        if (toPort instanceof WSPort) {
-            WSPort wsPort = (WSPort) toPort;
-            inputDataObjectType.setName(wsPort.getName());
-            inputDataObjectType.setType(wsPort.getType());
-            inputDataObjectType.setApplicationArgument(wsPort.getComponentPort().getApplicationArgument());
-            inputDataObjectType.setIsRequired(!wsPort.getComponentPort().isOptional());
-            inputDataObjectType.setInputOrder(wsPort.getComponentPort().getInputOrder());
-
-            inPort.setDefaultValue(wsPort.getComponentPort().getDefaultValue());
-        }else if (toPort instanceof SystemDataPort) {
-            SystemDataPort sysPort = (SystemDataPort) toPort;
-            inputDataObjectType.setName(sysPort.getName());
-            inputDataObjectType.setType(sysPort.getType());
-        }
-        inPort.setInputObject(inputDataObjectType);
-        return inPort;
-    }
-
-    private InputDataObjectType getInputDataObject(DataPort dataPort) {
-        InputDataObjectType inputDataObject = new InputDataObjectType();
-        inputDataObject.setName(dataPort.getName());
-        if (dataPort instanceof WSPort) {
-            WSPort port = (WSPort) dataPort;
-            inputDataObject.setInputOrder(port.getComponentPort().getInputOrder());
-            inputDataObject.setApplicationArgument(port.getComponentPort().getApplicationArgument() == null ?
-                    "" : port.getComponentPort().getApplicationArgument());
-            inputDataObject.setType(dataPort.getType());
-        }
-        return inputDataObject;
-    }
-
-    private OutputDataObjectType getOutputDataObject(InputDataObjectType inputObject) {
-        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
-        outputDataObjectType.setApplicationArgument(inputObject.getApplicationArgument());
-        outputDataObjectType.setName(inputObject.getName());
-        outputDataObjectType.setType(inputObject.getType());
-        outputDataObjectType.setValue(inputObject.getValue());
-        return outputDataObjectType;
-    }
-
-    private ExperimentModel getExperiment(String experimentId) throws RegistryException {
-        Registry registry = RegistryFactory.getRegistry();
-        return (ExperimentModel)registry.getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
-    }
-
-    private Workflow getWorkflowFromExperiment(ExperimentModel experiment) throws RegistryException, AppCatalogException, GraphException, ComponentException {
-        WorkflowCatalog workflowCatalog = getWorkflowCatalog();
-        return new Workflow(workflowCatalog.getWorkflow(experiment.getExecutionId()).getGraph());
-    }
-
-    private WorkflowCatalog getWorkflowCatalog() throws AppCatalogException {
-        return RegistryFactory.getAppCatalog().getWorkflowCatalog();
-    }
-
-    private ArrayList<Node> getInputNodes(Workflow wf) {
-        ArrayList<Node> list = new ArrayList<Node>();
-        List<NodeImpl> nodes = wf.getGraph().getNodes();
-        for (Node node : nodes) {
-            String name = node.getComponent().getName();
-            if (InputComponent.NAME.equals(name) || ConstantComponent.NAME.equals(name) || S3InputComponent.NAME.equals(name)) {
-                list.add(node);
-            }
-        }
-        return list;
-    }
-
-    public Map<String, WorkflowNode> getWfNodes() {
-        return wfNodes;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
index 6c839e7..59576b3 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
@@ -1,21 +1,76 @@
 package org.apache.airavata.workflow.core.parser;
 
+import com.google.gson.JsonObject;
 import org.apache.airavata.workflow.core.WorkflowParser;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
+import org.apache.airavata.workflow.core.dag.edge.Edge;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
+import org.apache.airavata.workflow.core.dag.port.Port;
 
 import java.util.List;
 
 /**
  * Created by syodage on 1/27/16.
  */
-public class JsonWorkflowParser implements WorkflowParser {
+public class JsonWorkflowParser implements WorkflowParser{
 
-    public JsonWorkflowParser(String workflowDescription) {
+    private final String workflow;
 
+    public JsonWorkflowParser(String jsonWorkflowString) {
+        workflow = jsonWorkflowString;
+    }
+
+
+    @Override
+    public void parse() throws Exception {
+        // TODO parse json string and construct components
+    }
+
+    @Override
+    public List<InputNode> getInputNodes() throws Exception {
+        return null;
     }
 
     @Override
-    public List<WorkflowInputNode> parse() throws Exception {
+    public List<OutputNode> getOutputNodes() throws Exception {
+        return null;
+    }
+
+    @Override
+    public List<ApplicationNode> getApplicationNodes() throws Exception {
+        return null;
+    }
+
+    @Override
+    public List<Port> getPorts() throws Exception {
+        return null;
+    }
+
+    @Override
+    public List<Edge> getEdges() throws Exception {
+        return null;
+    }
+
+
+    private InputNode createInputNode(JsonObject jNode) {
+        return null;
+    }
+
+    private OutputNode createOutputNode(JsonObject jNode) {
+        return null;
+    }
+
+    private ApplicationNode createApplicationNode(JsonObject jNode) {
+        return null;
+    }
+
+    private Port createPort(JsonObject jPort){
+        return null;
+    }
+
+
+    private Edge createEdge(JsonObject jEdge) {
         return null;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/PortContainer.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/PortContainer.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/PortContainer.java
deleted file mode 100644
index 536199c..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/PortContainer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.parser;
-
-import org.apache.airavata.workflow.core.dag.port.InPort;
-import org.apache.airavata.workflow.model.graph.DataPort;
-
-
-public class PortContainer {
-    private DataPort dataPort;
-    private InPort inPort;
-
-
-    public PortContainer(DataPort dataPort, InPort inPort) {
-        this.dataPort = dataPort;
-        this.inPort = inPort;
-    }
-
-    public DataPort getDataPort() {
-        return dataPort;
-    }
-
-    public void setDataPort(DataPort dataPort) {
-        this.dataPort = dataPort;
-    }
-
-    public InPort getInPort() {
-        return inPort;
-    }
-
-    public void setInPort(InPort inPort) {
-        this.inPort = inPort;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParserTest.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParserTest.java b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParserTest.java
deleted file mode 100644
index 6f35e30..0000000
--- a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowParserTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.parser;
-
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowOutputNode;
-import org.apache.airavata.workflow.model.wf.Workflow;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public class AiravataWorkflowParserTest {
-
-    @Before
-    public void setUp() throws Exception {
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-
-    }
-
-    @Test
-    public void testWorkflowParse() throws Exception {
-        Assert.assertNotNull("Test file (ComplexMathWorkflow.awf) is missing", getClass().getResource("/ComplexMathWorkflow.awf"));
-        InputStreamReader isr = new InputStreamReader(this.getClass().getResourceAsStream("/ComplexMathWorkflow.awf"));
-        BufferedReader br = new BufferedReader(isr);
-        StringBuffer sb = new StringBuffer();
-        String nextLine = br.readLine();
-        while (nextLine != null) {
-            sb.append(nextLine);
-            nextLine = br.readLine();
-        }
-        Workflow workflow = new Workflow(sb.toString());
-        ExperimentModel experiment = new ExperimentModel();
-        InputDataObjectType x = new InputDataObjectType();
-        x.setValue("6");
-        x.setType(DataType.STRING);
-        x.setName("x");
-
-        InputDataObjectType y = new InputDataObjectType();
-        y.setValue("8");
-        y.setType(DataType.STRING);
-        y.setName("y");
-
-        InputDataObjectType z = new InputDataObjectType();
-        z.setValue("10");
-        z.setType(DataType.STRING);
-        z.setName("y_2");
-
-        List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
-        inputs.add(x);
-        inputs.add(y);
-        inputs.add(z);
-        experiment.setExperimentInputs(inputs);
-        // create parser
-        AiravataWorkflowParser parser = new AiravataWorkflowParser(experiment, "testCredentialId");
-        List<WorkflowInputNode> workflowInputNodes = parser.parseWorkflow(workflow);
-        Assert.assertNotNull(workflowInputNodes);
-        Assert.assertEquals(3, workflowInputNodes.size());
-        for (WorkflowInputNode workflowInputNode : workflowInputNodes) {
-            Assert.assertNotNull(workflowInputNode.getOutPort());
-            Assert.assertNotNull(workflowInputNode.getInputObject());
-        }
-
-        Map<String, WorkflowNode> wfNodes = parser.getWfNodes();
-        for (String wfId : wfNodes.keySet()) {
-            WorkflowNode wfNode = wfNodes.get(wfId);
-            if (wfNode instanceof ApplicationNode) {
-                ApplicationNode node = (ApplicationNode) wfNode;
-                Assert.assertEquals(2, node.getInputPorts().size());
-                Assert.assertNotNull(node.getInputPorts().get(0).getInputObject());
-                Assert.assertNotNull(node.getInputPorts().get(1).getInputObject());
-                Assert.assertNotNull(node.getInputPorts().get(0).getEdge());
-                Assert.assertNotNull(node.getInputPorts().get(1).getEdge());
-
-                Assert.assertEquals(1, node.getOutputPorts().size());
-                Assert.assertEquals(1, node.getOutputPorts().get(0).getOutEdges().size());
-                Assert.assertNotNull(node.getOutputPorts().get(0).getOutEdges().get(0));
-            } else if (wfNode instanceof WorkflowOutputNode) {
-                WorkflowOutputNode workflowOutputNode = (WorkflowOutputNode) wfNode;
-                Assert.assertNotNull(workflowOutputNode.getInPort());
-            }
-        }
-
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/225f462b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
new file mode 100644
index 0000000..95a2579
--- /dev/null
+++ b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
@@ -0,0 +1,130 @@
+/*
+ *
+ * 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.workflow.core.parser;
+
+import org.apache.airavata.model.application.io.DataType;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.workflow.core.WorkflowParser;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class JsonWorkflowParserTest {
+
+    @Before
+    public void setUp() throws Exception {
+
+    }
+
+    @After
+    public void tearDown() throws Exception {
+
+    }
+
+    @Test
+    public void testWorkflowParse() throws Exception {
+        Assert.assertNotNull("Test file (ComplexMathWorkflow.awf) is missing", getClass().getResource("/ComplexMathWorkflow.awf"));
+        InputStreamReader isr = new InputStreamReader(this.getClass().getResourceAsStream("/ComplexMathWorkflow.awf"));
+        BufferedReader br = new BufferedReader(isr);
+        StringBuffer sb = new StringBuffer();
+        String nextLine = br.readLine();
+        while (nextLine != null) {
+            sb.append(nextLine);
+            nextLine = br.readLine();
+        }
+//        Workflow workflow = new Workflow(sb.toString());
+        ExperimentModel experiment = new ExperimentModel();
+        InputDataObjectType x = new InputDataObjectType();
+        x.setValue("6");
+        x.setType(DataType.STRING);
+        x.setName("x");
+
+        InputDataObjectType y = new InputDataObjectType();
+        y.setValue("8");
+        y.setType(DataType.STRING);
+        y.setName("y");
+
+        InputDataObjectType z = new InputDataObjectType();
+        z.setValue("10");
+        z.setType(DataType.STRING);
+        z.setName("y_2");
+
+        List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
+        inputs.add(x);
+        inputs.add(y);
+        inputs.add(z);
+        experiment.setExperimentInputs(inputs);
+        // create parser
+        WorkflowParser parser = new JsonWorkflowParser("workflow string");
+        parser.parse();
+        List<InputNode> inputNodes = parser.getInputNodes();
+        Assert.assertNotNull(inputNodes);
+        Assert.assertEquals(3, inputNodes.size());
+        for (InputNode inputNode : inputNodes) {
+            Assert.assertNotNull(inputNode.getOutPort());
+            Assert.assertNotNull(inputNode.getInputObject());
+        }
+
+        Map<String, WorkflowNode> wfNodes = getWorkflowNodeMap(parser.getApplicationNodes());
+        for (String wfId : wfNodes.keySet()) {
+            WorkflowNode wfNode = wfNodes.get(wfId);
+            if (wfNode instanceof ApplicationNode) {
+                ApplicationNode node = (ApplicationNode) wfNode;
+                Assert.assertEquals(2, node.getInputPorts().size());
+                Assert.assertNotNull(node.getInputPorts().get(0).getInputObject());
+                Assert.assertNotNull(node.getInputPorts().get(1).getInputObject());
+                Assert.assertNotNull(node.getInputPorts().get(0).getEdge());
+                Assert.assertNotNull(node.getInputPorts().get(1).getEdge());
+
+                Assert.assertEquals(1, node.getOutputPorts().size());
+                Assert.assertEquals(1, node.getOutputPorts().get(0).getOutEdges().size());
+                Assert.assertNotNull(node.getOutputPorts().get(0).getOutEdges().get(0));
+            } else if (wfNode instanceof OutputNode) {
+                OutputNode outputNode = (OutputNode) wfNode;
+                Assert.assertNotNull(outputNode.getInPort());
+            }
+        }
+
+    }
+
+    private Map<String, WorkflowNode> getWorkflowNodeMap(List<ApplicationNode> applicationNodes) {
+        Map<String, WorkflowNode> map = new HashMap<>();
+        for (ApplicationNode applicationNode : applicationNodes) {
+            map.put(applicationNode.getApplicationId(), applicationNode);
+        }
+
+        return map;
+    }
+}
\ No newline at end of file


[39/50] [abbrv] airavata git commit: fixing app-catalog sql script issue in POSTJOB_COMMAND

Posted by ch...@apache.org.
fixing app-catalog sql script issue in POSTJOB_COMMAND


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

Branch: refs/heads/master
Commit: d8df3d00c2cb701608866c39d61c02220f135378
Parents: ce79558
Author: scnakandala <su...@gmail.com>
Authored: Mon Feb 8 10:22:41 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Feb 8 10:22:41 2016 -0500

----------------------------------------------------------------------
 .../registry-core/src/main/resources/appcatalog-mysql.sql      | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d8df3d00/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
index b0d53de..6695a81 100644
--- a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
@@ -252,10 +252,10 @@ CREATE TABLE PREJOB_COMMAND
 
 CREATE TABLE POSTJOB_COMMAND
 (
-         APPLICATION_DEPLOYMENT VARCHAR(255),
+         APPDEPLOYMENT_ID VARCHAR(255),
          COMMAND VARCHAR(255),
-         PRIMARY KEY(APPLICATION_DEPLOYMENT, COMMAND),
-         FOREIGN KEY (APPLICATION_DEPLOYMENT) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
+         PRIMARY KEY(APPDEPLOYMENT_ID, COMMAND),
+         FOREIGN KEY (APPDEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE APPLICATION_INTERFACE


[40/50] [abbrv] airavata git commit: Added Apache License headers and remove deprecated test methods from json workflow parser test class

Posted by ch...@apache.org.
Added Apache License headers and remove deprecated test methods from json workflow parser test class


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

Branch: refs/heads/master
Commit: b4ca1eb5a361b3040e4115dae2235cb4816c8ff1
Parents: d8df3d0
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 8 11:10:37 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 8 11:15:58 2016 -0500

----------------------------------------------------------------------
 .../core/SimpleWorkflowInterpreter.java         | 328 ------------------
 .../airavata/workflow/core/WorkflowBuilder.java |  21 ++
 .../workflow/core/WorkflowEnactmentService.java |  28 +-
 .../airavata/workflow/core/WorkflowFactory.java |   1 +
 .../workflow/core/WorkflowInterpreter.java      | 336 +++++++++++++++++++
 .../airavata/workflow/core/WorkflowParser.java  |  46 ---
 .../core/parser/JsonWorkflowParser.java         |  37 +-
 .../workflow/core/parser/WorkflowParser.java    |  46 +++
 .../core/parser/JsonWorkflowParserTest.java     | 120 +------
 9 files changed, 461 insertions(+), 502 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
deleted file mode 100644
index cdbf2f2..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core;
-
-import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
-import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
-import org.apache.airavata.model.ComponentState;
-import org.apache.airavata.model.ComponentStatus;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.messaging.event.ProcessIdentifier;
-import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.status.ProcessState;
-import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.*;
-import org.apache.airavata.workflow.core.dag.edge.Edge;
-import org.apache.airavata.workflow.core.dag.nodes.*;
-import org.apache.airavata.workflow.core.dag.port.OutPort;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Package-Private class
- */
-class SimpleWorkflowInterpreter{
-
-    private static final Logger log = LoggerFactory.getLogger(SimpleWorkflowInterpreter.class);
-    private List<InputNode> inputNodes;
-
-    private ExperimentModel experiment;
-
-    private String credentialToken;
-
-    private String gatewayName;
-
-    private String workflowString;
-    private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<>();
-    private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<>();
-    private Map<String, WorkflowNode> processingQueue = new ConcurrentHashMap<>();
-    private Map<String, WorkflowNode> completeList = new HashMap<>();
-    private Registry registry;
-    private List<OutputNode> completeWorkflowOutputs = new ArrayList<>();
-    private RabbitMQProcessLaunchPublisher publisher;
-    private RabbitMQStatusConsumer statusConsumer;
-    private String consumerId;
-    private boolean continueWorkflow = true;
-
-    public SimpleWorkflowInterpreter(String experimentId, String credentialToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) throws RegistryException {
-        this.gatewayName = gatewayName;
-        setExperiment(experimentId);
-        this.credentialToken = credentialToken;
-        this.publisher = publisher;
-    }
-
-    public SimpleWorkflowInterpreter(ExperimentModel experiment, String credentialStoreToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) {
-        this.gatewayName = gatewayName;
-        this.experiment = experiment;
-        this.credentialToken = credentialStoreToken;
-        this.publisher = publisher;
-    }
-
-    /**
-     * Package-Private method.
-     * @throws Exception
-     */
-    void launchWorkflow() throws Exception {
-//        WorkflowBuilder workflowBuilder = WorkflowFactory.getWorkflowBuilder(experiment.getExperimentId(), credentialToken, null);
-        workflowString = getWorkflow();
-        WorkflowParser workflowParser = WorkflowFactory.getWorkflowParser(workflowString);
-        log.debug("Initialized workflow parser");
-        workflowParser.parse();
-        setInputNodes(workflowParser.getInputNodes());
-        log.debug("Parsed the workflow and got the workflow input nodes");
-        // process workflow input nodes
-        processWorkflowInputNodes(getInputNodes());
-        if (readyList.isEmpty()) {
-            StringBuilder sb = new StringBuilder();
-            for (InputNode inputNode : inputNodes) {
-                sb.append(", ");
-                sb.append(inputNode.getInputObject().getName());
-                sb.append("=");
-                sb.append(inputNode.getInputObject().getValue());
-            }
-            throw new AiravataException("No workflow application node is in ready state to run with experiment inputs" + sb.toString());
-        }
-        processReadyList();
-    }
-
-    private String getWorkflow() throws AppCatalogException, WorkflowCatalogException {
-        WorkflowCatalog workflowCatalog = RegistryFactory.getAppCatalog().getWorkflowCatalog();
-        //FIXME: parse workflowTemplateId or experimentId
-//        workflowCatalog.getWorkflow("");
-        return "";
-    }
-
-    // try to remove synchronization tag
-    /**
-     * Package-Private method.
-     * @throws RegistryException
-     * @throws AiravataException
-     */
-    void processReadyList() throws RegistryException, AiravataException {
-        if (readyList.isEmpty() && processingQueue.isEmpty() && !waitingList.isEmpty()) {
-            throw new AiravataException("No workflow application node is in ready state to run");
-        }
-        for (WorkflowNode readyNode : readyList.values()) {
-            if (readyNode instanceof OutputNode) {
-                OutputNode outputNode = (OutputNode) readyNode;
-                outputNode.getOutputObject().setValue(outputNode.getInPort().getInputObject().getValue());
-                addToCompleteOutputNodeList(outputNode);
-            } else if (readyNode instanceof InputNode) {
-                // set input object of applications and add applications to ready List.
-            } else if (readyNode instanceof ApplicationNode) {
-                //  call orchestrator to create process for the application
-            } else {
-                throw new RuntimeException("Unsupported workflow node type");
-            }
-        }
-
-        if (processingQueue.isEmpty() && waitingList.isEmpty()) {
-            try {
-                saveWorkflowOutputs();
-            } catch (AppCatalogException e) {
-                throw new AiravataException("Error while updating completed workflow outputs to registry", e);
-            }
-        }
-    }
-
-    private void saveWorkflowOutputs() throws AppCatalogException {
-        List<OutputDataObjectType> outputDataObjects = new ArrayList<>();
-        for (OutputNode completeWorkflowOutput : completeWorkflowOutputs) {
-            outputDataObjects.add(completeWorkflowOutput.getOutputObject());
-        }
-//        RegistryFactory.getAppCatalog().getWorkflowCatalog()
-//                .updateWorkflowOutputs(experiment.getApplicationId(), outputDataObjects);
-    }
-
-    private void processWorkflowInputNodes(List<InputNode> inputNodes) {
-        Set<WorkflowNode> tempNodeSet = new HashSet<>();
-        for (InputNode inputNode : inputNodes) {
-            if (inputNode.isReady()) {
-                log.debug("Workflow node : " + inputNode.getId() + " is ready to execute");
-                for (Edge edge : inputNode.getOutPort().getEdges()) {
-                    edge.getToPort().getInputObject().setValue(inputNode.getInputObject().getValue());
-                    if (edge.getToPort().getNode().isReady()) {
-                        addToReadyQueue(edge.getToPort().getNode());
-                        log.debug("Added workflow node : " + edge.getToPort().getNode().getId() + " to the readyQueue");
-                    } else {
-                        addToWaitingQueue(edge.getToPort().getNode());
-                        log.debug("Added workflow node " + edge.getToPort().getNode().getId() + " to the waitingQueue");
-
-                    }
-                }
-            }
-        }
-    }
-
-
-    public List<InputNode> getInputNodes() throws Exception {
-        return inputNodes;
-    }
-
-    public void setInputNodes(List<InputNode> inputNodes) {
-        this.inputNodes = inputNodes;
-    }
-
-    private Registry getRegistry() throws RegistryException {
-        if (registry==null){
-            registry = RegistryFactory.getRegistry();
-        }
-        return registry;
-    }
-
-    /**
-     * Package-Private method.
-     * Remove the workflow node from waiting queue and add it to the ready queue.
-     * @param workflowNode - Workflow Node
-     */
-    synchronized void addToReadyQueue(WorkflowNode workflowNode) {
-        waitingList.remove(workflowNode.getId());
-        readyList.put(workflowNode.getId(), workflowNode);
-    }
-
-    private void addToWaitingQueue(WorkflowNode workflowNode) {
-        waitingList.put(workflowNode.getId(), workflowNode);
-    }
-
-    /**
-     * First remove the node from ready list and then add the WfNodeContainer to the process queue.
-     * Note that underline data structure of the process queue is a Map.
-     * @param applicationNode - has both workflow and correspond workflowNodeDetails and TaskDetails
-     */
-    private synchronized void addToProcessingQueue(ApplicationNode applicationNode) {
-        readyList.remove(applicationNode.getId());
-        processingQueue.put(applicationNode.getId(), applicationNode);
-    }
-
-    private synchronized void addToCompleteQueue(ApplicationNode applicationNode) {
-        processingQueue.remove(applicationNode.getId());
-        completeList.put(applicationNode.getId(), applicationNode);
-    }
-
-
-    private void addToCompleteOutputNodeList(OutputNode wfOutputNode) {
-        completeWorkflowOutputs.add(wfOutputNode);
-        readyList.remove(wfOutputNode.getId());
-    }
-
-    boolean isAllDone() {
-        return !continueWorkflow || (waitingList.isEmpty() && readyList.isEmpty() && processingQueue.isEmpty());
-    }
-
-    private void setExperiment(String experimentId) throws RegistryException {
-        experiment = (ExperimentModel) getRegistry().getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
-        log.debug("Retrieve Experiment for experiment id : " + experimentId);
-    }
-
-/*    synchronized void handleTaskOutputChangeEvent(ProcessStatusChangeEvent taskOutputChangeEvent) {
-
-        String taskId = taskOutputChangeEvent.getTaskIdentity().getTaskId();
-        log.debug("Task Output changed event received for workflow node : " +
-                taskOutputChangeEvent.getTaskIdentity().getWorkflowNodeId() + ", task : " + taskId);
-        WorkflowNode workflowNode = processingQueue.get(taskId);
-        Set<WorkflowNode> tempWfNodeSet = new HashSet<>();
-        if (workflowNode != null) {
-            if (workflowNode instanceof ApplicationNode) {
-                ApplicationNode applicationNode = (ApplicationNode) workflowNode;
-                // Workflow node can have one to many output ports and each output port can have one to many links
-                for (OutPort outPort : applicationNode.getOutputPorts()) {
-                    for (OutputDataObjectType outputDataObjectType : taskOutputChangeEvent.getOutput()) {
-                        if (outPort.getOutputObject().getName().equals(outputDataObjectType.getName())) {
-                            outPort.getOutputObject().setValue(outputDataObjectType.getValue());
-                            break;
-                        }
-                    }
-                    for (Edge edge : outPort.getEdges()) {
-                        edge.getToPort().getInputObject().setValue(outPort.getOutputObject().getValue());
-                        if (edge.getToPort().getNode().isReady()) {
-                            addToReadyQueue(edge.getToPort().getNode());
-                        }
-                    }
-                }
-                addToCompleteQueue(applicationNode);
-                log.debug("removed task from processing queue : " + taskId);
-            }
-            try {
-                processReadyList();
-            } catch (Exception e) {
-                log.error("Error while processing ready workflow nodes", e);
-                continueWorkflow = false;
-            }
-        }
-    }*/
-
-    void handleProcessStatusChangeEvent(ProcessStatusChangeEvent processStatusChangeEvent) {
-        ProcessState processState = processStatusChangeEvent.getState();
-        ProcessIdentifier processIdentity = processStatusChangeEvent.getProcessIdentity();
-        String processId = processIdentity.getProcessId();
-        ApplicationNode applicationNode = (ApplicationNode) processingQueue.get(processId);
-        if (applicationNode != null) {
-            ComponentState state = applicationNode.getState();
-            switch (processState) {
-                case CREATED:
-                case VALIDATED:
-                case STARTED:
-                    break;
-                case CONFIGURING_WORKSPACE:
-                case PRE_PROCESSING:
-                case INPUT_DATA_STAGING:
-                case EXECUTING:
-                case OUTPUT_DATA_STAGING:
-                case POST_PROCESSING:
-                    state = ComponentState.RUNNING;
-                    break;
-                case COMPLETED:
-                    state = ComponentState.COMPLETED;
-                    break;
-                case FAILED:
-                    state = ComponentState.FAILED;
-                    break;
-                case CANCELED:
-                case CANCELLING:
-                    state = ComponentState.CANCELED;
-                    break;
-                default:
-                    break;
-            }
-            if (state != applicationNode.getState()) {
-                try {
-                    updateWorkflowNodeStatus(applicationNode, new ComponentStatus(state));
-                } catch (RegistryException e) {
-                    log.error("Error! Couldn't update new application state to registry. nodeInstanceId : {} "
-                            + applicationNode.getId() + " status to: " + applicationNode.getState().toString() , e);
-                }
-            }
-        }
-
-    }
-
-    private void updateWorkflowNodeStatus(ApplicationNode applicationNode, ComponentStatus componentStatus) throws RegistryException {
-        // FIXME: save new workflow node status to registry.
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
index a794282..fb97161 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowBuilder.java
@@ -1,3 +1,24 @@
+/*
+ *
+ * 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.workflow.core;
 
 import org.apache.airavata.workflow.core.dag.nodes.InputNode;

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
index 34ef8a7..8339aea 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
@@ -46,11 +46,11 @@ public class WorkflowEnactmentService {
     private final RabbitMQStatusConsumer statusConsumer;
     private String consumerId;
     private ExecutorService executor;
-    private Map<String,SimpleWorkflowInterpreter> workflowMap;
+    private Map<String,WorkflowInterpreter> workflowMap;
 
     private WorkflowEnactmentService () throws AiravataException {
         executor = Executors.newFixedThreadPool(getThreadPoolSize());
-        workflowMap = new ConcurrentHashMap<String, SimpleWorkflowInterpreter>();
+        workflowMap = new ConcurrentHashMap<String, WorkflowInterpreter>();
         statusConsumer = new RabbitMQStatusConsumer();
         consumerId = statusConsumer.listen(new TaskMessageHandler());
         // register the shutdown hook to un-bind status consumer.
@@ -73,10 +73,10 @@ public class WorkflowEnactmentService {
                                   String gatewayName,
                                   RabbitMQProcessLaunchPublisher publisher) throws Exception {
 
-        SimpleWorkflowInterpreter simpleWorkflowInterpreter = new SimpleWorkflowInterpreter(
+        WorkflowInterpreter workflowInterpreter = new WorkflowInterpreter(
                 experimentId, credentialToken,gatewayName, publisher);
-        workflowMap.put(experimentId, simpleWorkflowInterpreter);
-        simpleWorkflowInterpreter.launchWorkflow();
+        workflowMap.put(experimentId, workflowInterpreter);
+        workflowInterpreter.launchWorkflow();
 
     }
 
@@ -125,13 +125,13 @@ public class WorkflowEnactmentService {
 
         private void process() {
             String message;
-            SimpleWorkflowInterpreter simpleWorkflowInterpreter;
+            WorkflowInterpreter workflowInterpreter;
             if (msgCtx.getType() == MessageType.PROCESS) {
                 ProcessStatusChangeEvent event = ((ProcessStatusChangeEvent) msgCtx.getEvent());
                 ProcessIdentifier processIdentity = event.getProcessIdentity();
-                simpleWorkflowInterpreter = getInterpreter(processIdentity.getExperimentId());
-                if (simpleWorkflowInterpreter != null) {
-                    simpleWorkflowInterpreter.handleProcessStatusChangeEvent(event);
+                workflowInterpreter = getInterpreter(processIdentity.getExperimentId());
+                if (workflowInterpreter != null) {
+                    workflowInterpreter.handleProcessStatusChangeEvent(event);
                 } else {
                     // this happens when Task status messages comes after the Taskoutput messages,as we have worked on
                     // output changes it is ok to ignore this.
@@ -140,10 +140,10 @@ public class WorkflowEnactmentService {
             }else if (msgCtx.getType() == MessageType.PROCESSOUTPUT) {
                 TaskOutputChangeEvent event = (TaskOutputChangeEvent) msgCtx.getEvent();
                 TaskIdentifier taskIdentifier = event.getTaskIdentity();
-                simpleWorkflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
-                if (simpleWorkflowInterpreter != null) {
-//                    simpleWorkflowInterpreter.handleTaskOutputChangeEvent(event);
-                    if (simpleWorkflowInterpreter.isAllDone()) {
+                workflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
+                if (workflowInterpreter != null) {
+//                    workflowInterpreter.handleTaskOutputChangeEvent(event);
+                    if (workflowInterpreter.isAllDone()) {
                         workflowMap.remove(taskIdentifier.getExperimentId());
                     }
                 } else {
@@ -157,7 +157,7 @@ public class WorkflowEnactmentService {
             }
         }
 
-        private SimpleWorkflowInterpreter getInterpreter(String experimentId){
+        private WorkflowInterpreter getInterpreter(String experimentId){
             return workflowMap.get(experimentId);
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
index 9392461..cb76790 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
@@ -24,6 +24,7 @@ package org.apache.airavata.workflow.core;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.workflow.core.parser.JsonWorkflowParser;
+import org.apache.airavata.workflow.core.parser.WorkflowParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowInterpreter.java
new file mode 100644
index 0000000..b42e7ac
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowInterpreter.java
@@ -0,0 +1,336 @@
+/*
+ *
+ * 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.workflow.core;
+
+import org.apache.airavata.common.exception.AiravataException;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
+import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.model.messaging.event.ProcessIdentifier;
+import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
+import org.apache.airavata.model.status.ProcessState;
+import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
+import org.apache.airavata.registry.cpi.*;
+import org.apache.airavata.workflow.core.dag.edge.Edge;
+import org.apache.airavata.workflow.core.dag.nodes.*;
+import org.apache.airavata.workflow.core.parser.WorkflowParser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Package-Private class
+ */
+class WorkflowInterpreter {
+
+    private static final Logger log = LoggerFactory.getLogger(WorkflowInterpreter.class);
+    private List<InputNode> inputNodes;
+
+    private ExperimentModel experiment;
+
+    private String credentialToken;
+
+    private String gatewayName;
+
+    private String workflowString;
+    private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> processingQueue = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> completeList = new HashMap<>();
+    private Registry registry;
+    private List<OutputNode> completeWorkflowOutputs = new ArrayList<>();
+    private RabbitMQProcessLaunchPublisher publisher;
+    private RabbitMQStatusConsumer statusConsumer;
+    private String consumerId;
+    private boolean continueWorkflow = true;
+
+    public WorkflowInterpreter(String experimentId, String credentialToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) throws RegistryException {
+        this.gatewayName = gatewayName;
+        setExperiment(experimentId);
+        this.credentialToken = credentialToken;
+        this.publisher = publisher;
+    }
+
+    public WorkflowInterpreter(ExperimentModel experiment, String credentialStoreToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) {
+        this.gatewayName = gatewayName;
+        this.experiment = experiment;
+        this.credentialToken = credentialStoreToken;
+        this.publisher = publisher;
+    }
+
+    /**
+     * Package-Private method.
+     *
+     * @throws Exception
+     */
+    void launchWorkflow() throws Exception {
+//        WorkflowBuilder workflowBuilder = WorkflowFactory.getWorkflowBuilder(experiment.getExperimentId(), credentialToken, null);
+        workflowString = getWorkflow();
+        WorkflowParser workflowParser = WorkflowFactory.getWorkflowParser(workflowString);
+        log.debug("Initialized workflow parser");
+        workflowParser.parse();
+        setInputNodes(workflowParser.getInputNodes());
+        log.debug("Parsed the workflow and got the workflow input nodes");
+        // process workflow input nodes
+        processWorkflowInputNodes(getInputNodes());
+        if (readyList.isEmpty()) {
+            StringBuilder sb = new StringBuilder();
+            for (InputNode inputNode : inputNodes) {
+                sb.append(", ");
+                sb.append(inputNode.getInputObject().getName());
+                sb.append("=");
+                sb.append(inputNode.getInputObject().getValue());
+            }
+            throw new AiravataException("No workflow application node is in ready state to run with experiment inputs" + sb.toString());
+        }
+        processReadyList();
+    }
+
+    private String getWorkflow() throws AppCatalogException, WorkflowCatalogException {
+        WorkflowCatalog workflowCatalog = RegistryFactory.getAppCatalog().getWorkflowCatalog();
+        //FIXME: parse workflowTemplateId or experimentId
+//        workflowCatalog.getWorkflow("");
+        return "";
+    }
+
+    // try to remove synchronization tag
+
+    /**
+     * Package-Private method.
+     *
+     * @throws RegistryException
+     * @throws AiravataException
+     */
+    void processReadyList() throws RegistryException, AiravataException {
+        if (readyList.isEmpty() && processingQueue.isEmpty() && !waitingList.isEmpty()) {
+            throw new AiravataException("No workflow application node is in ready state to run");
+        }
+        for (WorkflowNode readyNode : readyList.values()) {
+            if (readyNode instanceof OutputNode) {
+                OutputNode outputNode = (OutputNode) readyNode;
+                outputNode.getOutputObject().setValue(outputNode.getInPort().getInputObject().getValue());
+                addToCompleteOutputNodeList(outputNode);
+            } else if (readyNode instanceof InputNode) {
+                // FIXME: set input object of applications and add applications to ready List.
+            } else if (readyNode instanceof ApplicationNode) {
+                // FIXME:  call orchestrator to create process for the application
+            } else {
+                throw new RuntimeException("Unsupported workflow node type");
+            }
+        }
+
+        if (processingQueue.isEmpty() && waitingList.isEmpty()) {
+            try {
+                saveWorkflowOutputs();
+            } catch (AppCatalogException e) {
+                throw new AiravataException("Error while updating completed workflow outputs to registry", e);
+            }
+        }
+    }
+
+    private void saveWorkflowOutputs() throws AppCatalogException {
+        List<OutputDataObjectType> outputDataObjects = new ArrayList<>();
+        for (OutputNode completeWorkflowOutput : completeWorkflowOutputs) {
+            outputDataObjects.add(completeWorkflowOutput.getOutputObject());
+        }
+        // FIXME: save workflow output to registry.
+//        RegistryFactory.getAppCatalog().getWorkflowCatalog()
+//                .updateWorkflowOutputs(experiment.getApplicationId(), outputDataObjects);
+    }
+
+    private void processWorkflowInputNodes(List<InputNode> inputNodes) {
+        Set<WorkflowNode> tempNodeSet = new HashSet<>();
+        for (InputNode inputNode : inputNodes) {
+            if (inputNode.isReady()) {
+                log.debug("Workflow node : " + inputNode.getId() + " is ready to execute");
+                for (Edge edge : inputNode.getOutPort().getEdges()) {
+                    edge.getToPort().getInputObject().setValue(inputNode.getInputObject().getValue());
+                    if (edge.getToPort().getNode().isReady()) {
+                        addToReadyQueue(edge.getToPort().getNode());
+                        log.debug("Added workflow node : " + edge.getToPort().getNode().getId() + " to the readyQueue");
+                    } else {
+                        addToWaitingQueue(edge.getToPort().getNode());
+                        log.debug("Added workflow node " + edge.getToPort().getNode().getId() + " to the waitingQueue");
+
+                    }
+                }
+            }
+        }
+    }
+
+
+    public List<InputNode> getInputNodes() throws Exception {
+        return inputNodes;
+    }
+
+    public void setInputNodes(List<InputNode> inputNodes) {
+        this.inputNodes = inputNodes;
+    }
+
+    private Registry getRegistry() throws RegistryException {
+        if (registry == null) {
+            registry = RegistryFactory.getRegistry();
+        }
+        return registry;
+    }
+
+    /**
+     * Package-Private method.
+     * Remove the workflow node from waiting queue and add it to the ready queue.
+     *
+     * @param workflowNode - Workflow Node
+     */
+    synchronized void addToReadyQueue(WorkflowNode workflowNode) {
+        waitingList.remove(workflowNode.getId());
+        readyList.put(workflowNode.getId(), workflowNode);
+    }
+
+    private void addToWaitingQueue(WorkflowNode workflowNode) {
+        waitingList.put(workflowNode.getId(), workflowNode);
+    }
+
+    /**
+     * First remove the node from ready list and then add the WfNodeContainer to the process queue.
+     * Note that underline data structure of the process queue is a Map.
+     *
+     * @param applicationNode - has both workflow and correspond workflowNodeDetails and TaskDetails
+     */
+    private synchronized void addToProcessingQueue(ApplicationNode applicationNode) {
+        readyList.remove(applicationNode.getId());
+        processingQueue.put(applicationNode.getId(), applicationNode);
+    }
+
+    private synchronized void addToCompleteQueue(ApplicationNode applicationNode) {
+        processingQueue.remove(applicationNode.getId());
+        completeList.put(applicationNode.getId(), applicationNode);
+    }
+
+
+    private void addToCompleteOutputNodeList(OutputNode wfOutputNode) {
+        completeWorkflowOutputs.add(wfOutputNode);
+        readyList.remove(wfOutputNode.getId());
+    }
+
+    boolean isAllDone() {
+        return !continueWorkflow || (waitingList.isEmpty() && readyList.isEmpty() && processingQueue.isEmpty());
+    }
+
+    private void setExperiment(String experimentId) throws RegistryException {
+        experiment = (ExperimentModel) getRegistry().getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
+        log.debug("Retrieve Experiment for experiment id : " + experimentId);
+    }
+
+/*    synchronized void handleTaskOutputChangeEvent(ProcessStatusChangeEvent taskOutputChangeEvent) {
+
+        String taskId = taskOutputChangeEvent.getTaskIdentity().getTaskId();
+        log.debug("Task Output changed event received for workflow node : " +
+                taskOutputChangeEvent.getTaskIdentity().getWorkflowNodeId() + ", task : " + taskId);
+        WorkflowNode workflowNode = processingQueue.get(taskId);
+        Set<WorkflowNode> tempWfNodeSet = new HashSet<>();
+        if (workflowNode != null) {
+            if (workflowNode instanceof ApplicationNode) {
+                ApplicationNode applicationNode = (ApplicationNode) workflowNode;
+                // Workflow node can have one to many output ports and each output port can have one to many links
+                for (OutPort outPort : applicationNode.getOutputPorts()) {
+                    for (OutputDataObjectType outputDataObjectType : taskOutputChangeEvent.getOutput()) {
+                        if (outPort.getOutputObject().getName().equals(outputDataObjectType.getName())) {
+                            outPort.getOutputObject().setValue(outputDataObjectType.getValue());
+                            break;
+                        }
+                    }
+                    for (Edge edge : outPort.getEdges()) {
+                        edge.getToPort().getInputObject().setValue(outPort.getOutputObject().getValue());
+                        if (edge.getToPort().getNode().isReady()) {
+                            addToReadyQueue(edge.getToPort().getNode());
+                        }
+                    }
+                }
+                addToCompleteQueue(applicationNode);
+                log.debug("removed task from processing queue : " + taskId);
+            }
+            try {
+                processReadyList();
+            } catch (Exception e) {
+                log.error("Error while processing ready workflow nodes", e);
+                continueWorkflow = false;
+            }
+        }
+    }*/
+
+    void handleProcessStatusChangeEvent(ProcessStatusChangeEvent processStatusChangeEvent) {
+        ProcessState processState = processStatusChangeEvent.getState();
+        ProcessIdentifier processIdentity = processStatusChangeEvent.getProcessIdentity();
+        String processId = processIdentity.getProcessId();
+        ApplicationNode applicationNode = (ApplicationNode) processingQueue.get(processId);
+        if (applicationNode != null) {
+            ComponentState state = applicationNode.getState();
+            switch (processState) {
+                case CREATED:
+                case VALIDATED:
+                case STARTED:
+                    break;
+                case CONFIGURING_WORKSPACE:
+                case PRE_PROCESSING:
+                case INPUT_DATA_STAGING:
+                case EXECUTING:
+                case OUTPUT_DATA_STAGING:
+                case POST_PROCESSING:
+                    state = ComponentState.RUNNING;
+                    break;
+                case COMPLETED:
+                    state = ComponentState.COMPLETED;
+                    // FIXME: read output form registry and set it to node outputport then continue to next application.
+                    break;
+                case FAILED:
+                    state = ComponentState.FAILED;
+                    // FIXME: fail workflow.
+                    break;
+                case CANCELED:
+                case CANCELLING:
+                    state = ComponentState.CANCELED;
+                    // FIXME: cancel workflow.
+                    break;
+                default:
+                    break;
+            }
+            if (state != applicationNode.getState()) {
+                try {
+                    updateWorkflowNodeStatus(applicationNode, new ComponentStatus(state));
+                } catch (RegistryException e) {
+                    log.error("Error! Couldn't update new application state to registry. nodeInstanceId : {} "
+                            + applicationNode.getId() + " status to: " + applicationNode.getState().toString(), e);
+                }
+            }
+        }
+
+    }
+
+    private void updateWorkflowNodeStatus(ApplicationNode applicationNode, ComponentStatus componentStatus) throws RegistryException {
+        // FIXME: save new workflow node status to registry.
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
deleted file mode 100644
index 46bc1d8..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowParser.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core;
-
-import org.apache.airavata.workflow.core.dag.edge.Edge;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.InputNode;
-import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
-import org.apache.airavata.workflow.core.dag.port.Port;
-
-import java.util.List;
-
-public interface WorkflowParser {
-
-    public void parse() throws Exception;
-
-    public List<InputNode> getInputNodes() throws Exception;
-
-    public List<OutputNode> getOutputNodes() throws Exception;
-
-    public List<ApplicationNode> getApplicationNodes() throws Exception;
-
-    public List<Port> getPorts() throws Exception;
-
-    public List<Edge> getEdges() throws Exception;
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
index ede69e3..f6bb084 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
@@ -1,19 +1,37 @@
+/*
+ *
+ * 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.workflow.core.parser;
 
 import com.google.gson.JsonObject;
-import org.apache.airavata.workflow.core.WorkflowParser;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
 import org.apache.airavata.workflow.core.dag.nodes.InputNode;
 import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
 import org.apache.airavata.workflow.core.dag.port.Port;
 
+import java.util.ArrayList;
 import java.util.List;
 
-/**
- * Created by syodage on 1/27/16.
- */
-public class JsonWorkflowParser implements WorkflowParser{
+public class JsonWorkflowParser implements WorkflowParser {
 
     private final String workflow;
     private List<InputNode> inputs;
@@ -24,8 +42,15 @@ public class JsonWorkflowParser implements WorkflowParser{
 
     public JsonWorkflowParser(String jsonWorkflowString) {
         workflow = jsonWorkflowString;
+
+        inputs = new ArrayList<>();
+        outputs = new ArrayList<>();
+        applications = new ArrayList<>();
+        ports = new ArrayList<>();
+        edges = new ArrayList<>();
     }
 
+
     @Override
     public void parse() throws Exception {
         // TODO parse json string and construct components
@@ -69,7 +94,7 @@ public class JsonWorkflowParser implements WorkflowParser{
         return null;
     }
 
-    private Port createPort(JsonObject jPort){
+    private Port createPort(JsonObject jPort) {
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/WorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/WorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/WorkflowParser.java
new file mode 100644
index 0000000..dc18c9e
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/WorkflowParser.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.workflow.core.parser;
+
+import org.apache.airavata.workflow.core.dag.edge.Edge;
+import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
+import org.apache.airavata.workflow.core.dag.nodes.InputNode;
+import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
+import org.apache.airavata.workflow.core.dag.port.Port;
+
+import java.util.List;
+
+public interface WorkflowParser {
+
+    public void parse() throws Exception;
+
+    public List<InputNode> getInputNodes() throws Exception;
+
+    public List<OutputNode> getOutputNodes() throws Exception;
+
+    public List<ApplicationNode> getApplicationNodes() throws Exception;
+
+    public List<Port> getPorts() throws Exception;
+
+    public List<Edge> getEdges() throws Exception;
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b4ca1eb5/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
index 712944d..3fedc9c 100644
--- a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
+++ b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
@@ -1,51 +1,25 @@
-/*
- *
- * 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.workflow.core.parser;
 
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.workflow.core.WorkflowParser;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.InputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.File;
+import java.io.InputStream;
 
+import static org.junit.Assert.*;
+
+/**
+ * Created by syodage on 2/8/16.
+ */
 public class JsonWorkflowParserTest {
 
+    private String workflowString;
+
+
     @Before
     public void setUp() throws Exception {
-
+        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("TestWorkflow.json");
     }
 
     @After
@@ -54,77 +28,7 @@ public class JsonWorkflowParserTest {
     }
 
     @Test
-    public void testWorkflowParse() throws Exception {
-        Assert.assertNotNull("Test file (ComplexMathWorkflow.awf) is missing", getClass().getResource("/ComplexMathWorkflow.awf"));
-        InputStreamReader isr = new InputStreamReader(this.getClass().getResourceAsStream("/ComplexMathWorkflow.awf"));
-        BufferedReader br = new BufferedReader(isr);
-        StringBuffer sb = new StringBuffer();
-        String nextLine = br.readLine();
-        while (nextLine != null) {
-            sb.append(nextLine);
-            nextLine = br.readLine();
-        }
-//        Workflow workflow = new Workflow(sb.toString());
-        ExperimentModel experiment = new ExperimentModel();
-        InputDataObjectType x = new InputDataObjectType();
-        x.setValue("6");
-        x.setType(DataType.STRING);
-        x.setName("x");
-
-        InputDataObjectType y = new InputDataObjectType();
-        y.setValue("8");
-        y.setType(DataType.STRING);
-        y.setName("y");
-
-        InputDataObjectType z = new InputDataObjectType();
-        z.setValue("10");
-        z.setType(DataType.STRING);
-        z.setName("y_2");
-
-        List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
-        inputs.add(x);
-        inputs.add(y);
-        inputs.add(z);
-        experiment.setExperimentInputs(inputs);
-        // create parser
-        WorkflowParser parser = new JsonWorkflowParser("workflow string");
-        parser.parse();
-        List<InputNode> inputNodes = parser.getInputNodes();
-        Assert.assertNotNull(inputNodes);
-        Assert.assertEquals(3, inputNodes.size());
-        for (InputNode inputNode : inputNodes) {
-            Assert.assertNotNull(inputNode.getOutPort());
-            Assert.assertNotNull(inputNode.getInputObject());
-        }
-
-        Map<String, WorkflowNode> wfNodes = getWorkflowNodeMap(parser.getApplicationNodes());
-        for (String wfId : wfNodes.keySet()) {
-            WorkflowNode wfNode = wfNodes.get(wfId);
-            if (wfNode instanceof ApplicationNode) {
-                ApplicationNode node = (ApplicationNode) wfNode;
-                Assert.assertEquals(2, node.getInputPorts().size());
-                Assert.assertNotNull(node.getInputPorts().get(0).getInputObject());
-                Assert.assertNotNull(node.getInputPorts().get(1).getInputObject());
-                Assert.assertNotNull(node.getInputPorts().get(0).getEdge());
-                Assert.assertNotNull(node.getInputPorts().get(1).getEdge());
-
-                Assert.assertEquals(1, node.getOutputPorts().size());
-                Assert.assertEquals(1, node.getOutputPorts().get(0).getEdges().size());
-                Assert.assertNotNull(node.getOutputPorts().get(0).getEdges().get(0));
-            } else if (wfNode instanceof OutputNode) {
-                OutputNode outputNode = (OutputNode) wfNode;
-                Assert.assertNotNull(outputNode.getInPort());
-            }
-        }
-
-    }
-
-    private Map<String, WorkflowNode> getWorkflowNodeMap(List<ApplicationNode> applicationNodes) {
-        Map<String, WorkflowNode> map = new HashMap<>();
-        for (ApplicationNode applicationNode : applicationNodes) {
-            map.put(applicationNode.getApplicationId(), applicationNode);
-        }
+    public void testParse() throws Exception {
 
-        return map;
     }
 }
\ No newline at end of file


[18/50] [abbrv] airavata git commit: Added generated thrift files

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
index 29ecb06..83a84d2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * commandOrder:
  *   Order of the command in the multiple command situation
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class CommandObject implements org.apache.thrift.TBase<CommandObject, CommandObject._Fields>, java.io.Serializable, Cloneable, Comparable<CommandObject> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CommandObject");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
index c3c93ba..bcb07f2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
@@ -63,7 +63,7 @@ import org.slf4j.LoggerFactory;
  * envPathOrder:
  *   The order of the setting of the env variables when there are multiple env variables
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class SetEnvPaths implements org.apache.thrift.TBase<SetEnvPaths, SetEnvPaths._Fields>, java.io.Serializable, Cloneable, Comparable<SetEnvPaths> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SetEnvPaths");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
index 56cbb33..55d01e9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   Outputs generated from the application
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ApplicationInterfaceDescription implements org.apache.thrift.TBase<ApplicationInterfaceDescription, ApplicationInterfaceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationInterfaceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationInterfaceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
index 7d039dc..67c7e8c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * maxRunTime:
  *  Maximum allowed run time in hours.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class BatchQueue implements org.apache.thrift.TBase<BatchQueue, BatchQueue._Fields>, java.io.Serializable, Cloneable, Comparable<BatchQueue> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BatchQueue");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
index bd1516b..41dc771 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class CloudJobSubmission implements org.apache.thrift.TBase<CloudJobSubmission, CloudJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<CloudJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CloudJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
index dfb0fa1..59e1aa7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
@@ -80,7 +80,7 @@ import org.slf4j.LoggerFactory;
  *  Map of file systems type and the path.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ComputeResourceDescription implements org.apache.thrift.TBase<ComputeResourceDescription, ComputeResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
index 53680dd..f2d5373 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class GlobusJobSubmission implements org.apache.thrift.TBase<GlobusJobSubmission, GlobusJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<GlobusJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GlobusJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
index 58b3bd2..8f5223d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobSubmissionInterface implements org.apache.thrift.TBase<JobSubmissionInterface, JobSubmissionInterface._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
index 38dd5b7..dc668bf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission, LOCALSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
index 87bd8c9..4c4625c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  *  An enumeration of commonly used manager commands.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ResourceJobManager implements org.apache.thrift.TBase<ResourceJobManager, ResourceJobManager._Fields>, java.io.Serializable, Cloneable, Comparable<ResourceJobManager> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ResourceJobManager");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
index e0d926d..9bc872b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  *    the same. Example: *@*.example.com or *@example.com
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class SSHJobSubmission implements org.apache.thrift.TBase<SSHJobSubmission, SSHJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<SSHJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SSHJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
index ae640d4..3f46339 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
@@ -59,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * authenticationMode
  *  The authenticationMode defines the way certificate is fetched.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class UnicoreJobSubmission implements org.apache.thrift.TBase<UnicoreJobSubmission, UnicoreJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
index 7143e1e..ecd7e92 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
@@ -85,7 +85,7 @@ import org.slf4j.LoggerFactory;
  *   default credential store.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ComputeResourcePreference implements org.apache.thrift.TBase<ComputeResourcePreference, ComputeResourcePreference._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourcePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourcePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
index 94c20d3..30618bf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *  List of resource preferences for each of the registered compute resources.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class GatewayResourceProfile implements org.apache.thrift.TBase<GatewayResourceProfile, GatewayResourceProfile._Fields>, java.io.Serializable, Cloneable, Comparable<GatewayResourceProfile> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GatewayResourceProfile");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
index a2cab01..ecf9a19 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class StoragePreference implements org.apache.thrift.TBase<StoragePreference, StoragePreference._Fields>, java.io.Serializable, Cloneable, Comparable<StoragePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StoragePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
index face16e..a9cff44 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class StorageResourceDescription implements org.apache.thrift.TBase<StorageResourceDescription, StorageResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<StorageResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StorageResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
index 46e65b1..48cdfa9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObjectType, InputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<InputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
index 93ae728..ecf9c81 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataObjectType, OutputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<OutputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("OutputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
index 12b2639..53a1033 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ErrorModel implements org.apache.thrift.TBase<ErrorModel, ErrorModel._Fields>, java.io.Serializable, Cloneable, Comparable<ErrorModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ErrorModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
index 9f13b85..d15c4f6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
index 82401eb..04af60a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * during the experiment launch operation
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
index 8f9d262..a5bd0e1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class DataMovementInterface implements org.apache.thrift.TBase<DataMovementInterface, DataMovementInterface._Fields>, java.io.Serializable, Cloneable, Comparable<DataMovementInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataMovementInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
index 1363d4f..33db137 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class GridFTPDataMovement implements org.apache.thrift.TBase<GridFTPDataMovement, GridFTPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<GridFTPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GridFTPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
index 193c944..4a17491 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-defualt port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class LOCALDataMovement implements org.apache.thrift.TBase<LOCALDataMovement, LOCALDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
index 8504c7d..c7f19e0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class SCPDataMovement implements org.apache.thrift.TBase<SCPDataMovement, SCPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<SCPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SCPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
index 20d57d0..9df1652 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * unicoreEndPointURL:
  *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class UnicoreDataMovement implements org.apache.thrift.TBase<UnicoreDataMovement, UnicoreDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
index d793b9d..9b47ccf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataReplicaLocationModel, DataReplicaLocationModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataReplicaLocationModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataReplicaLocationModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
index f0f647e..99f8a4b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class DataResourceModel implements org.apache.thrift.TBase<DataResourceModel, DataResourceModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataResourceModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataResourceModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
index 7275215..6f73429 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  * parameter:  If the error applied to a particular input parameter, this will
  *   indicate which parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class AiravataClientException extends TException implements org.apache.thrift.TBase<AiravataClientException, AiravataClientException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataClientException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataClientException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
index 6cfc1ac..e49da35 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  * message:  This may contain additional information about the error
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class AiravataSystemException extends TException implements org.apache.thrift.TBase<AiravataSystemException, AiravataSystemException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataSystemException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataSystemException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
index 19e897f..b21687a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the cause of the authorization failure.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class AuthenticationException extends TException implements org.apache.thrift.TBase<AuthenticationException, AuthenticationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthenticationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthenticationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
index 191377a..4f59bbc 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the authorization failure message
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class AuthorizationException extends TException implements org.apache.thrift.TBase<AuthorizationException, AuthorizationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthorizationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthorizationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
index c49118e..2ac05f6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * 
  * key:  The value passed from the client in the identifier, which was not found.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentNotFoundException extends TException implements org.apache.thrift.TBase<ExperimentNotFoundException, ExperimentNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
index b20b420..b627edc 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the associated error message.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class InvalidRequestException extends TException implements org.apache.thrift.TBase<InvalidRequestException, InvalidRequestException._Fields>, java.io.Serializable, Cloneable, Comparable<InvalidRequestException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InvalidRequestException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
index 5df60cf..9ae7684 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class LaunchValidationException extends TException implements org.apache.thrift.TBase<LaunchValidationException, LaunchValidationException._Fields>, java.io.Serializable, Cloneable, Comparable<LaunchValidationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LaunchValidationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
index c5c90f3..ca66bcf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 2:  optional  string key
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProjectNotFoundException extends TException implements org.apache.thrift.TBase<ProjectNotFoundException, ProjectNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
index a4fd291..825d84b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
@@ -54,7 +54,7 @@ import org.slf4j.LoggerFactory;
 /**
  * This exception is thrown when RPC timeout gets exceeded.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TimedOutException extends TException implements org.apache.thrift.TBase<TimedOutException, TimedOutException._Fields>, java.io.Serializable, Cloneable, Comparable<TimedOutException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TimedOutException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
index b6af1da..87f946c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
index 84f8f8b..2316664 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
index 64f8570..41e3dd0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  * experimentDescription:
  *    The verbose description of the experiment. This is an optional parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel, ExperimentModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
index 017f924..959863c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentStatistics, ExperimentStatistics._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatistics> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatistics");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
index d1dd99c..d9ac26b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentSummaryModel implements org.apache.thrift.TBase<ExperimentSummaryModel, ExperimentSummaryModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentSummaryModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentSummaryModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
index 0616259..5629c80 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserConfigurationDataModel, UserConfigurationDataModel._Fields>, java.io.Serializable, Cloneable, Comparable<UserConfigurationDataModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserConfigurationDataModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
index a309803..8a285a2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
index d00d540..19e47e6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentStatusChangeEvent implements org.apache.thrift.TBase<ExperimentStatusChangeEvent, ExperimentStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
index f27dc6f..db6d647 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobIdentifier implements org.apache.thrift.TBase<JobIdentifier, JobIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<JobIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
index 9ca5f26..f8e8ae1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobStatusChangeEvent implements org.apache.thrift.TBase<JobStatusChangeEvent, JobStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
index 6a56f1f..5351eb6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobStatusChangeRequestEvent implements org.apache.thrift.TBase<JobStatusChangeRequestEvent, JobStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
index 521dcca..1c7cff4 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class Message implements org.apache.thrift.TBase<Message, Message._Fields>, java.io.Serializable, Cloneable, Comparable<Message> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Message");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
index 1da8935..54ca8ed 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessIdentifier implements org.apache.thrift.TBase<ProcessIdentifier, ProcessIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
index ac2fe81..ba08d22 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessStatusChangeEvent implements org.apache.thrift.TBase<ProcessStatusChangeEvent, ProcessStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
index 8d18720..b31a3e8 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessStatusChangeRequestEvent implements org.apache.thrift.TBase<ProcessStatusChangeRequestEvent, ProcessStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
index 80d55ad..295eafc 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessSubmitEvent implements org.apache.thrift.TBase<ProcessSubmitEvent, ProcessSubmitEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessSubmitEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessSubmitEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
index d62e983..6cb3ce8 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessTerminateEvent implements org.apache.thrift.TBase<ProcessTerminateEvent, ProcessTerminateEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessTerminateEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessTerminateEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
index c316662..331c487 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskIdentifier implements org.apache.thrift.TBase<TaskIdentifier, TaskIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<TaskIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
index c8c9c5e..e29f3fd 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskOutputChangeEvent implements org.apache.thrift.TBase<TaskOutputChangeEvent, TaskOutputChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskOutputChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskOutputChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
index c6f69d3..0f1afce 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskStatusChangeEvent implements org.apache.thrift.TBase<TaskStatusChangeEvent, TaskStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
index 8ec5d3b..8abd6fa 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class TaskStatusChangeRequestEvent implements org.apache.thrift.TBase<TaskStatusChangeRequestEvent, TaskStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index c2ff0f2..9ba0c30 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, ProcessModel._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
index 78f8ac7..f6dfa61 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ComputationalResourceSchedulingModel implements org.apache.thrift.TBase<ComputationalResourceSchedulingModel, ComputationalResourceSchedulingModel._Fields>, java.io.Serializable, Cloneable, Comparable<ComputationalResourceSchedulingModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputationalResourceSchedulingModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
index 126e8b7..b58b053 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class AuthzToken implements org.apache.thrift.TBase<AuthzToken, AuthzToken._Fields>, java.io.Serializable, Cloneable, Comparable<AuthzToken> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthzToken");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
index 6b3c2bc..668271a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   User friendly reason on how the state is inferred.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ExperimentStatus implements org.apache.thrift.TBase<ExperimentStatus, ExperimentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
index ab7500e..3d3f1a8 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class JobStatus implements org.apache.thrift.TBase<JobStatus, JobStatus._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
index ef21569..65648f7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ProcessStatus implements org.apache.thrift.TBase<ProcessStatus, ProcessStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatus");
 


[34/50] [abbrv] airavata git commit: Added TestWorkflow and fixed set of compilatin issues

Posted by ch...@apache.org.
Added TestWorkflow and fixed set of compilatin issues


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

Branch: refs/heads/master
Commit: d1bb38275f8caa2204ecbe1611b0fbe9c6e322b5
Parents: 14a566a
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Feb 3 16:42:21 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Feb 3 16:42:21 2016 -0500

----------------------------------------------------------------------
 .../core/SimpleWorkflowInterpreter.java         |  35 +++---
 .../airavata/workflow/core/WorkflowFactory.java |   5 -
 .../workflow/core/dag/edge/DirectedEdge.java    |   5 +
 .../airavata/workflow/core/dag/edge/Edge.java   |   2 +
 .../workflow/core/dag/port/OutPort.java         |   2 +-
 .../workflow/core/dag/port/OutPortImpl.java     |   2 +-
 .../core/parser/AiravataWorkflowBuilder.java    | 117 -------------------
 .../core/parser/JsonWorkflowParser.java         |   6 +-
 .../core/parser/JsonWorkflowParserTest.java     |   4 +-
 .../src/test/resources/TestWorkflow.json        |  85 ++++++++++++++
 10 files changed, 123 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
index 01ad6bb..7f8a8a5 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
@@ -67,6 +67,7 @@ class SimpleWorkflowInterpreter{
 
     private String gatewayName;
 
+    private String workflowString;
     private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<String, WorkflowNode>();
     private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<String, WorkflowNode>();
     private Map<String, WorkflowContext> processingQueue = new ConcurrentHashMap<String, WorkflowContext>();
@@ -97,10 +98,12 @@ class SimpleWorkflowInterpreter{
      * @throws Exception
      */
     void launchWorkflow() throws Exception {
-        WorkflowBuilder workflowBuilder = WorkflowFactory.getWorkflowBuilder(experiment.getExperimentId(), credentialToken, null);
-
+//        WorkflowBuilder workflowBuilder = WorkflowFactory.getWorkflowBuilder(experiment.getExperimentId(), credentialToken, null);
+        workflowString = getWorkflow();
+        WorkflowParser workflowParser = WorkflowFactory.getWorkflowParser(workflowString);
         log.debug("Initialized workflow parser");
-        setInputNodes(workflowBuilder.build());
+        workflowParser.parse();
+        setInputNodes(workflowParser.getInputNodes());
         log.debug("Parsed the workflow and got the workflow input nodes");
         // process workflow input nodes
         processWorkflowInputNodes(getInputNodes());
@@ -117,6 +120,12 @@ class SimpleWorkflowInterpreter{
         processReadyList();
     }
 
+    private String getWorkflow() throws AppCatalogException {
+        WorkflowCatalog workflowCatalog = RegistryFactory.getAppCatalog().getWorkflowCatalog();
+        //FIXME: parse workflowTemplateId or experimentId
+        workflowCatalog.getWorkflow("");
+    }
+
     // try to remove synchronization tag
     /**
      * Package-Private method.
@@ -129,9 +138,9 @@ class SimpleWorkflowInterpreter{
         }
         for (WorkflowNode readyNode : readyList.values()) {
             if (readyNode instanceof OutputNode) {
-                OutputNode wfOutputNode = (OutputNode) readyNode;
-                wfOutputNode.getOutputObject().setValue(wfOutputNode.getInPort().getInputObject().getValue());
-                addToCompleteOutputNodeList(wfOutputNode);
+                OutputNode outputNode = (OutputNode) readyNode;
+                outputNode.getOutputObject().setValue(outputNode.getInPort().getInputObject().getValue());
+                addToCompleteOutputNodeList(outputNode);
                 continue;
             }
             WorkflowNodeDetails workflowNodeDetails = createWorkflowNodeDetails(readyNode);
@@ -206,13 +215,13 @@ class SimpleWorkflowInterpreter{
     }
 
 
-    private void processWorkflowInputNodes(List<InputNode> wfInputNodes) {
+    private void processWorkflowInputNodes(List<InputNode> inputNodes) {
         Set<WorkflowNode> tempNodeSet = new HashSet<WorkflowNode>();
-        for (InputNode wfInputNode : wfInputNodes) {
-            if (wfInputNode.isReady()) {
-                log.debug("Workflow node : " + wfInputNode.getId() + " is ready to execute");
-                for (Edge edge : wfInputNode.getOutPort().getOutEdges()) {
-                    edge.getToPort().getInputObject().setValue(wfInputNode.getInputObject().getValue());
+        for (InputNode inputNode : inputNodes) {
+            if (inputNode.isReady()) {
+                log.debug("Workflow node : " + inputNode.getId() + " is ready to execute");
+                for (Edge edge : inputNode.getOutPort().getEdges()) {
+                    edge.getToPort().getInputObject().setValue(inputNode.getInputObject().getValue());
                     if (edge.getToPort().getNode().isReady()) {
                         addToReadyQueue(edge.getToPort().getNode());
                         log.debug("Added workflow node : " + edge.getToPort().getNode().getId() + " to the readyQueue");
@@ -315,7 +324,7 @@ class SimpleWorkflowInterpreter{
                             break;
                         }
                     }
-                    for (Edge edge : outPort.getOutEdges()) {
+                    for (Edge edge : outPort.getEdges()) {
                         edge.getToPort().getInputObject().setValue(outPort.getOutputObject().getValue());
                         if (edge.getToPort().getNode().isReady()) {
                             addToReadyQueue(edge.getToPort().getNode());

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
index f232efa..e06fab5 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
@@ -37,11 +37,6 @@ public class WorkflowFactory {
 
     private static final Logger log = LoggerFactory.getLogger(WorkflowFactory.class);
 
-
-    public static WorkflowBuilder getWorkflowBuilder(String experimentId, String credentialToken, String workflowString) throws Exception {
-        return new AiravataWorkflowBuilder(experimentId, credentialToken, getWorkflowParser(workflowString));
-    }
-
     public static WorkflowParser getWorkflowParser(String workflowString) throws Exception {
         WorkflowParser workflowParser = null;
         try {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
index b1d79b1..3ad7afa 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/DirectedEdge.java
@@ -33,6 +33,11 @@ public class DirectedEdge implements Edge {
     private EdgeModel edgeModel;
 
     @Override
+    public String getId() {
+        return getEdgeModel().getEdgeId();
+    }
+
+    @Override
     public void setEdgeModel(EdgeModel edgeModel) {
         this.edgeModel = edgeModel;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
index d1c340e..2ad098e 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/edge/Edge.java
@@ -32,6 +32,8 @@ import org.apache.airavata.workflow.core.dag.port.OutPort;
 
 public interface Edge {
 
+    public String getId();
+
     public void setEdgeModel(EdgeModel edgeModel);
 
     public EdgeModel getEdgeModel();

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPort.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPort.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPort.java
index 7ae3220..d12666e 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPort.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPort.java
@@ -32,7 +32,7 @@ public interface OutPort extends Port {
 
     public OutputDataObjectType getOutputObject();
 
-    public List<Edge> getOutEdges();
+    public List<Edge> getEdges();
 
     public void addEdge(Edge edge);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
index 4d90308..c261279 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/port/OutPortImpl.java
@@ -52,7 +52,7 @@ public class OutPortImpl implements OutPort {
     }
 
     @Override
-    public List<Edge> getOutEdges() {
+    public List<Edge> getEdges() {
         return this.outEdges;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
deleted file mode 100644
index e50b245..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/AiravataWorkflowBuilder.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.parser;
-
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.*;
-import org.apache.airavata.workflow.core.WorkflowBuilder;
-import org.apache.airavata.workflow.core.WorkflowParser;
-import org.apache.airavata.workflow.core.dag.edge.DirectedEdge;
-import org.apache.airavata.workflow.core.dag.edge.Edge;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNodeImpl;
-import org.apache.airavata.workflow.core.dag.nodes.InputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
-import org.apache.airavata.workflow.core.dag.nodes.OutputNodeImpl;
-import org.apache.airavata.workflow.core.dag.port.*;
-
-import java.util.*;
-
-public class AiravataWorkflowBuilder implements WorkflowBuilder {
-
-    private String credentialToken ;
-    private WorkflowParser workflowParser;
-    private ExperimentModel experiment;
-
-
-    public AiravataWorkflowBuilder(String experimentId, String credentialToken, WorkflowParser workflowParser) throws RegistryException {
-        this.experiment = getExperiment(experimentId);
-        this.credentialToken = credentialToken;
-        this.workflowParser = workflowParser;
-    }
-
-    public AiravataWorkflowBuilder(ExperimentModel experiment, String credentialToken , WorkflowParser workflowParser) {
-        this.credentialToken = credentialToken;
-        this.experiment = experiment;
-        this.workflowParser = workflowParser;
-    }
-
-    @Override
-    public List<InputNode> build() throws Exception {
-        return parseWorkflow(getWorkflowFromExperiment(experiment));
-    }
-
-    @Override
-    public List<InputNode> build(String workflow) throws Exception {
-        return parseWorkflow(workflow);
-    }
-
-    public List<InputNode> parseWorkflow(String workflow) throws Exception {
-
-        List<InputNode> inputNodes = workflowParser.getInputNodes();
-        List<ApplicationNode> applicationNodes = workflowParser.getApplicationNodes();
-        List<Port> ports = workflowParser.getPorts();
-        List<Edge> edges = workflowParser.getEdges();
-        List<OutputNode> outputNodes = workflowParser.getOutputNodes();
-
-        // travel breath first and build relation between each workflow component
-        Queue<WorkflowNode> queue = new LinkedList<>();
-        List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
-        Map<String,InputDataObjectType> inputDataMap=new HashMap<String, InputDataObjectType>();
-        for (InputDataObjectType dataObjectType : experimentInputs) {
-            inputDataMap.put(dataObjectType.getName(), dataObjectType);
-        }
-
-        return inputNodes;
-    }
-
-
-    private OutputDataObjectType getOutputDataObject(InputDataObjectType inputObject) {
-        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
-        outputDataObjectType.setApplicationArgument(inputObject.getApplicationArgument());
-        outputDataObjectType.setName(inputObject.getName());
-        outputDataObjectType.setType(inputObject.getType());
-        outputDataObjectType.setValue(inputObject.getValue());
-        return outputDataObjectType;
-    }
-
-    private ExperimentModel getExperiment(String experimentId) throws RegistryException {
-        Registry registry = RegistryFactory.getRegistry();
-        return (ExperimentModel)registry.getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
-    }
-
-    private String getWorkflowFromExperiment(ExperimentModel experiment) throws RegistryException, AppCatalogException {
-        WorkflowCatalog workflowCatalog = getWorkflowCatalog();
-
-        // FIXME: return workflow string
-        return null;
-    }
-
-    private WorkflowCatalog getWorkflowCatalog() throws AppCatalogException {
-        return RegistryFactory.getAppCatalog().getWorkflowCatalog();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
index 59576b3..ede69e3 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
@@ -16,12 +16,16 @@ import java.util.List;
 public class JsonWorkflowParser implements WorkflowParser{
 
     private final String workflow;
+    private List<InputNode> inputs;
+    private List<OutputNode> outputs;
+    private List<ApplicationNode> applications;
+    private List<Port> ports;
+    private List<Edge> edges;
 
     public JsonWorkflowParser(String jsonWorkflowString) {
         workflow = jsonWorkflowString;
     }
 
-
     @Override
     public void parse() throws Exception {
         // TODO parse json string and construct components

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
index 95a2579..712944d 100644
--- a/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
+++ b/modules/workflow/workflow-core/src/test/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParserTest.java
@@ -109,8 +109,8 @@ public class JsonWorkflowParserTest {
                 Assert.assertNotNull(node.getInputPorts().get(1).getEdge());
 
                 Assert.assertEquals(1, node.getOutputPorts().size());
-                Assert.assertEquals(1, node.getOutputPorts().get(0).getOutEdges().size());
-                Assert.assertNotNull(node.getOutputPorts().get(0).getOutEdges().get(0));
+                Assert.assertEquals(1, node.getOutputPorts().get(0).getEdges().size());
+                Assert.assertNotNull(node.getOutputPorts().get(0).getEdges().get(0));
             } else if (wfNode instanceof OutputNode) {
                 OutputNode outputNode = (OutputNode) wfNode;
                 Assert.assertNotNull(outputNode.getInPort());

http://git-wip-us.apache.org/repos/asf/airavata/blob/d1bb3827/modules/workflow/workflow-core/src/test/resources/TestWorkflow.json
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/test/resources/TestWorkflow.json b/modules/workflow/workflow-core/src/test/resources/TestWorkflow.json
new file mode 100644
index 0000000..5b64172
--- /dev/null
+++ b/modules/workflow/workflow-core/src/test/resources/TestWorkflow.json
@@ -0,0 +1,85 @@
+{
+  "workflow" : {
+    "name" : "name",
+    "id" : "default_id",
+    "description" : "default description",
+    "version" : "version",
+    "applications" : [
+      { "applicationId" : "appId_1",
+        "name" : "App Name",
+        "description" : "My app description",
+        "appType" : "MPI",
+        "inputs" : [
+            { "name" : "appInputName_1",
+              "id" : "appInputNode_Id_1",
+              "dataType" : "STRING",
+              "defaultValue" : "defaultValue",
+              "description" : "App Input Description" },
+            { "name" : "appInputName_2",
+              "id" : "appInputNode_Id_2",
+              "dataType" : "STRING",
+              "defaultValue" : "defaultValue",
+              "description" : "App Input Description" }],
+        "outputs" : [
+            { "name" : "appOutputName_1",
+              "id" : "appOutputNode_Id_1",
+              "dataType" : "STRING",
+              "defaultValue" : "defaultValue",
+              "description" : "App Output Description" },
+            { "name" : "appOutputName_2",
+              "id" : "appOutputNode_Id_2",
+              "dataType" : "STRING",
+              "defaultValue" : "defaultValue" }],
+        "position" : { "x" : 124 , "y" : 643 },
+        "nodeId" : "applicationNodeId",
+        "parallelExecution" : "true",
+        "properties" : null }
+    ],
+    "workflowInputs" : [
+      { "name" : "inputName_1",
+        "id" : "inputNode_Id_1",
+        "dataType" : "STRING",
+        "defaultValue" : "defaultValue",
+        "description" : "Input Description",
+        "position" : { "x" : 23 , "y" : 43 },
+        "nodeId" : "defaultNodeId_1" },
+      { "name" : "inputName_2",
+        "id" : "inputNode_Id_2",
+        "dataType" : "STRING",
+        "defaultValue" : "defaultValue",
+        "description" : "Input Description",
+        "position" : { "x" : 23 , "y" : 103 },
+        "nodeId" : "defaultNodeId_2" }
+    ],
+    "workflowOutputs" : [
+      { "name" : "outputName_1",
+        "id" : "outputNode_Id_1",
+        "dataType" : "STRING",
+        "defaultValue" : "defaultValue",
+        "description" : "Output Description",
+        "position" : { "x" : 423 , "y" : 43 },
+        "nodeId" : "defaultOutputNodeId_1" },
+      { "name" : "outputName_2",
+        "id" : "outputNode_Id_2",
+        "dataType" : "STRING",
+        "defaultValue" : "defaultValue",
+        "description" : "Output Description",
+        "position" : { "x" : 423 , "y" : 103 },
+        "nodeId" : "defaultOutputNodeId_2" }
+    ],
+    "links" : [
+      { "description" : "link desc",
+         "from" : { "nodeId" : "" , "ouputId" : "" },
+         "to" : { "nodeId" : "" , "outputId" : "" }},
+      { "description" : "link desc",
+         "from" : { "nodeId" : "" , "ouputId" : "" },
+         "to" : { "nodeId" : "" , "outputId" : "" }},
+      { "description" : "link desc",
+         "from" : { "nodeId" : "" , "ouputId" : "" },
+         "to" : { "nodeId" : "" , "outputId" : "" }},
+      { "description" : "link desc",
+         "from" : { "nodeId" : "" , "ouputId" : "" },
+         "to" : { "nodeId" : "" , "outputId" : "" }}
+    ]
+  }
+}


[38/50] [abbrv] airavata git commit: Fixed all compilation issues of workflow-core module

Posted by ch...@apache.org.
Fixed all compilation issues of workflow-core module


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

Branch: refs/heads/master
Commit: ce7955813f79812a58bc6395914f3a978b0ae1e9
Parents: e21fae7
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Feb 5 16:29:41 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Feb 5 16:29:41 2016 -0500

----------------------------------------------------------------------
 .../cpi/impl/SimpleOrchestratorImpl.java        |   3 +-
 .../server/OrchestratorServerHandler.java       |  75 +++----
 modules/workflow/workflow-core/pom.xml          |   6 +
 .../core/SimpleWorkflowInterpreter.java         | 197 ++++++-------------
 .../airavata/workflow/core/WorkflowContext.java |  60 ------
 .../workflow/core/WorkflowEnactmentService.java |   2 +-
 .../airavata/workflow/core/WorkflowFactory.java |   1 -
 pom.xml                                         |   1 +
 8 files changed, 105 insertions(+), 240 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index ff515ef..c875180 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -269,11 +269,10 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         return processModels;
     }
 
-    public String createAndSaveTasks(String gatewayId, ExperimentModel experimentModel, ProcessModel processModel) throws OrchestratorException {
+    public String createAndSaveTasks(String gatewayId, ProcessModel processModel, boolean autoSchedule) throws OrchestratorException {
         try {
             ExperimentCatalog experimentCatalog = orchestratorContext.getRegistry().getExperimentCatalog();
             AppCatalog appCatalog = orchestratorContext.getRegistry().getAppCatalog();
-            boolean autoSchedule = experimentModel.getUserConfigurationData().isAiravataAutoSchedule();
             ComputationalResourceSchedulingModel resourceSchedule = processModel.getResourceSchedule();
             String userGivenQueueName = resourceSchedule.getQueueName();
             int userGivenWallTime = resourceSchedule.getWallTimeLimit();

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index a461ba4..977191e 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -136,45 +136,46 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
         ExperimentModel experiment = null;
         try {
 
-            List<ProcessModel> processes = orchestrator.createProcesses(experimentId, gatewayId);
-            experiment = (ExperimentModel) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
-            for (ProcessModel processModel : processes){
-                String taskDag = orchestrator.createAndSaveTasks(gatewayId, experiment, processModel);
-                processModel.setTaskDag(taskDag);
-                experimentCatalog.update(ExperimentCatalogModelType.PROCESS,processModel, processModel.getProcessId());
-            }
-            if (experiment == null) {
-                log.error(experimentId, "Error retrieving the Experiment by the given experimentID: {} ", experimentId);
-                return false;
-            }
+            String experimentNodePath = GFacUtils.getExperimentNodePath (experimentId);
+			ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), experimentNodePath);
+			String experimentCancelNode = ZKPaths.makePath(experimentNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+			ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), experimentCancelNode);
 
-            if (!validateProcess(experimentId, processes)) {
-                log.error("Validating process fails for given experiment Id : {}", experimentId);
-                return false;
-            }
-            ComputeResourcePreference computeResourcePreference = appCatalog.getGatewayProfile().
+			ComputeResourcePreference computeResourcePreference = appCatalog.getGatewayProfile().
 					getComputeResourcePreference(gatewayId,
 							experiment.getUserConfigurationData().getComputationalResourceScheduling().getResourceHostId());
-            String token = computeResourcePreference.getResourceSpecificCredentialStoreToken();
-            if (token == null || token.isEmpty()){
-                // try with gateway profile level token
-                GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
-                token = gatewayProfile.getCredentialStoreToken();
-            }
-            // still the token is empty, then we fail the experiment
-            if (token == null || token.isEmpty()){
-                log.error("You have not configured credential store token at gateway profile or compute resource preference. Please provide the correct token at gateway profile or compute resource preference.");
-                return false;
-            }
-            String experimentNodePath = GFacUtils.getExperimentNodePath (experimentId);
-	        ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), experimentNodePath);
-	        String experimentCancelNode = ZKPaths.makePath(experimentNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
-	        ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), experimentCancelNode);
+			String token = computeResourcePreference.getResourceSpecificCredentialStoreToken();
+			if (token == null || token.isEmpty()){
+				// try with gateway profile level token
+				GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
+				token = gatewayProfile.getCredentialStoreToken();
+			}
+			// still the token is empty, then we fail the experiment
+			if (token == null || token.isEmpty()){
+				log.error("You have not configured credential store token at gateway profile or compute resource preference. Please provide the correct token at gateway profile or compute resource preference.");
+				return false;
+			}
+			ExperimentType executionType = experiment.getExperimentType();
+			if (executionType == ExperimentType.SINGLE_APPLICATION) {
+				//its an single application execution experiment
+				List<ProcessModel> processes = orchestrator.createProcesses(experimentId, gatewayId);
+				experiment = (ExperimentModel) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
+				if (experiment == null) {
+					log.error(experimentId, "Error retrieving the Experiment by the given experimentID: {} ", experimentId);
+					return false;
+				}
+				for (ProcessModel processModel : processes){
+					String taskDag = orchestrator.createAndSaveTasks(gatewayId, processModel, experiment.getUserConfigurationData().isAiravataAutoSchedule());
+					processModel.setTaskDag(taskDag);
+					experimentCatalog.update(ExperimentCatalogModelType.PROCESS,processModel, processModel.getProcessId());
+				}
+
+				if (!validateProcess(experimentId, processes)) {
+					log.error("Validating process fails for given experiment Id : {}", experimentId);
+					return false;
+				}
 
-	        ExperimentType executionType = experiment.getExperimentType();
-            if (executionType == ExperimentType.SINGLE_APPLICATION) {
-                //its an single application execution experiment
-                log.debug(experimentId, "Launching single application experiment {}.", experimentId);
+				log.debug(experimentId, "Launching single application experiment {}.", experimentId);
                 ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
                 status.setReason("submitted all processes");
                 status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
@@ -184,7 +185,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             } else if (executionType == ExperimentType.WORKFLOW) {
                 //its a workflow execution experiment
                 log.debug(experimentId, "Launching workflow experiment {}.", experimentId);
-                launchWorkflowExperiment(experimentId, token);
+                launchWorkflowExperiment(experimentId, token, gatewayId);
             } else {
                 log.error(experimentId, "Couldn't identify experiment type, experiment {} is neither single application nor workflow.", experimentId);
                 throw new TException("Experiment '" + experimentId + "' launch failed. Unable to figureout execution type for application " + experiment.getExecutionId());
@@ -367,7 +368,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 		}
     }
 
-    private void launchWorkflowExperiment(String experimentId, String airavataCredStoreToken) throws TException {
+    private void launchWorkflowExperiment(String experimentId, String airavataCredStoreToken, String gatewayId) throws TException {
         // FIXME
 //        try {
 //            WorkflowEnactmentService.getInstance().

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/workflow/workflow-core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/pom.xml b/modules/workflow/workflow-core/pom.xml
index bb1ea79..72990c8 100644
--- a/modules/workflow/workflow-core/pom.xml
+++ b/modules/workflow/workflow-core/pom.xml
@@ -31,6 +31,12 @@
             <version>${project.version}</version>
         </dependency>
 
+        <!--Workflow Interpreter dependency-->
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <!-- Airavata default parser dependency -->
         <dependency>
             <groupId>org.apache.airavata</groupId>

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
index 7f8a8a5..cdbf2f2 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
@@ -22,35 +22,25 @@
 package org.apache.airavata.workflow.core;
 
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.messaging.core.MessageContext;
 import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
+import org.apache.airavata.model.ComponentState;
+import org.apache.airavata.model.ComponentStatus;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.messaging.event.*;
+import org.apache.airavata.model.messaging.event.ProcessIdentifier;
+import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
 import org.apache.airavata.model.status.ProcessState;
-import org.apache.airavata.model.util.ExperimentModelUtil;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.core.experiment.catalog.model.Experiment;
 import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
-import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
-import org.apache.airavata.workflow.core.dag.nodes.NodeState;
-import org.apache.airavata.workflow.core.dag.nodes.InputNode;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-import org.apache.airavata.workflow.core.dag.nodes.OutputNode;
-import org.apache.airavata.workflow.core.dag.port.InPort;
+import org.apache.airavata.workflow.core.dag.nodes.*;
 import org.apache.airavata.workflow.core.dag.port.OutPort;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -68,12 +58,12 @@ class SimpleWorkflowInterpreter{
     private String gatewayName;
 
     private String workflowString;
-    private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<String, WorkflowNode>();
-    private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<String, WorkflowNode>();
-    private Map<String, WorkflowContext> processingQueue = new ConcurrentHashMap<String, WorkflowContext>();
-    private Map<String, WorkflowContext> completeList = new HashMap<String, WorkflowContext>();
+    private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> processingQueue = new ConcurrentHashMap<>();
+    private Map<String, WorkflowNode> completeList = new HashMap<>();
     private Registry registry;
-    private List<OutputNode> completeWorkflowOutputs = new ArrayList<OutputNode>();
+    private List<OutputNode> completeWorkflowOutputs = new ArrayList<>();
     private RabbitMQProcessLaunchPublisher publisher;
     private RabbitMQStatusConsumer statusConsumer;
     private String consumerId;
@@ -120,10 +110,11 @@ class SimpleWorkflowInterpreter{
         processReadyList();
     }
 
-    private String getWorkflow() throws AppCatalogException {
+    private String getWorkflow() throws AppCatalogException, WorkflowCatalogException {
         WorkflowCatalog workflowCatalog = RegistryFactory.getAppCatalog().getWorkflowCatalog();
         //FIXME: parse workflowTemplateId or experimentId
-        workflowCatalog.getWorkflow("");
+//        workflowCatalog.getWorkflow("");
+        return "";
     }
 
     // try to remove synchronization tag
@@ -141,15 +132,16 @@ class SimpleWorkflowInterpreter{
                 OutputNode outputNode = (OutputNode) readyNode;
                 outputNode.getOutputObject().setValue(outputNode.getInPort().getInputObject().getValue());
                 addToCompleteOutputNodeList(outputNode);
-                continue;
+            } else if (readyNode instanceof InputNode) {
+                // set input object of applications and add applications to ready List.
+            } else if (readyNode instanceof ApplicationNode) {
+                //  call orchestrator to create process for the application
+            } else {
+                throw new RuntimeException("Unsupported workflow node type");
             }
-            WorkflowNodeDetails workflowNodeDetails = createWorkflowNodeDetails(readyNode);
-            TaskDetails process = getProcess(workflowNodeDetails);
-            WorkflowContext workflowContext = new WorkflowContext(readyNode, workflowNodeDetails, process);
-            addToProcessingQueue(workflowContext);
-            publishToProcessQueue(process);
         }
-        if (processingQueue.isEmpty()) {
+
+        if (processingQueue.isEmpty() && waitingList.isEmpty()) {
             try {
                 saveWorkflowOutputs();
             } catch (AppCatalogException e) {
@@ -159,64 +151,16 @@ class SimpleWorkflowInterpreter{
     }
 
     private void saveWorkflowOutputs() throws AppCatalogException {
-        List<OutputDataObjectType> outputDataObjects = new ArrayList<OutputDataObjectType>();
+        List<OutputDataObjectType> outputDataObjects = new ArrayList<>();
         for (OutputNode completeWorkflowOutput : completeWorkflowOutputs) {
             outputDataObjects.add(completeWorkflowOutput.getOutputObject());
         }
-        RegistryFactory.getAppCatalog().getWorkflowCatalog()
-                .updateWorkflowOutputs(experiment.getApplicationId(), outputDataObjects);
-    }
-
-
-    private void publishToProcessQueue(TaskDetails process) throws AiravataException {
-        ProcessSubmitEvent processSubmitEvent = new ProcessSubmitEvent();
-        processSubmitEvent.setCredentialToken(credentialToken);
-        processSubmitEvent.setTaskId(process.getTaskID());
-        MessageContext messageContext = new MessageContext(processSubmitEvent, MessageType.TASK, process.getTaskID(), null);
-        messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
-        publisher.publish(messageContext);
-    }
-
-    private TaskDetails getProcess(WorkflowNodeDetails wfNodeDetails) throws RegistryException {
-        // create workflow taskDetails from workflowNodeDetails
-        TaskDetails taskDetails = ExperimentModelUtil.cloneTaskFromWorkflowNodeDetails(getExperiment(), wfNodeDetails);
-        taskDetails.setTaskID(getRegistry().getExperimentCatalog().add(ExpCatChildDataType.TASK_DETAIL, taskDetails, wfNodeDetails.getNodeInstanceId()).toString());
-        return taskDetails;
-    }
-
-    private WorkflowNodeDetails createWorkflowNodeDetails(WorkflowNode readyNode) throws RegistryException {
-        WorkflowNodeDetails wfNodeDetails = ExperimentModelUtil.createWorkflowNode(readyNode.getId(), null);
-        ExecutionUnit executionUnit = ExecutionUnit.APPLICATION;
-        String executionData = null;
-        if (readyNode instanceof ApplicationNode) {
-            executionUnit = ExecutionUnit.APPLICATION;
-            executionData = ((ApplicationNode) readyNode).getApplicationId();
-            setupNodeDetailsInput(((ApplicationNode) readyNode), wfNodeDetails);
-        } else if (readyNode instanceof InputNode) {
-            executionUnit = ExecutionUnit.INPUT;
-        } else if (readyNode instanceof OutputNode) {
-            executionUnit = ExecutionUnit.OUTPUT;
-        }
-        wfNodeDetails.setExecutionUnit(executionUnit);
-        wfNodeDetails.setExecutionUnitData(executionData);
-        wfNodeDetails.setNodeInstanceId((String) getRegistry().getExperimentCatalog().add(ExpCatChildDataType.WORKFLOW_NODE_DETAIL, wfNodeDetails, getExperiment().getExperimentID()));
-        return wfNodeDetails;
+//        RegistryFactory.getAppCatalog().getWorkflowCatalog()
+//                .updateWorkflowOutputs(experiment.getApplicationId(), outputDataObjects);
     }
 
-    private void setupNodeDetailsInput(ApplicationNode readyAppNode, WorkflowNodeDetails wfNodeDetails) {
-        if (readyAppNode.isReady()) {
-            for (InPort inPort : readyAppNode.getInputPorts()) {
-                wfNodeDetails.addToNodeInputs(inPort.getInputObject());
-            }
-        } else {
-            throw new IllegalArgumentException("Application node should be in ready state to set inputs to the " +
-                    "workflow node details, nodeId = " + readyAppNode.getId());
-        }
-    }
-
-
     private void processWorkflowInputNodes(List<InputNode> inputNodes) {
-        Set<WorkflowNode> tempNodeSet = new HashSet<WorkflowNode>();
+        Set<WorkflowNode> tempNodeSet = new HashSet<>();
         for (InputNode inputNode : inputNodes) {
             if (inputNode.isReady()) {
                 log.debug("Workflow node : " + inputNode.getId() + " is ready to execute");
@@ -251,16 +195,6 @@ class SimpleWorkflowInterpreter{
         return registry;
     }
 
-    public Experiment getExperiment() {
-        return experiment;
-    }
-
-    private void updateWorkflowNodeStatus(WorkflowNodeDetails wfNodeDetails, WorkflowNodeState state) throws RegistryException{
-        WorkflowNodeStatus status = ExperimentModelUtil.createWorkflowNodeStatus(state);
-        wfNodeDetails.setWorkflowNodeStatus(status);
-        getRegistry().getExperimentCatalog().update(ExperimentCatalogModelType.WORKFLOW_NODE_STATUS, status, wfNodeDetails.getNodeInstanceId());
-    }
-
     /**
      * Package-Private method.
      * Remove the workflow node from waiting queue and add it to the ready queue.
@@ -278,16 +212,16 @@ class SimpleWorkflowInterpreter{
     /**
      * First remove the node from ready list and then add the WfNodeContainer to the process queue.
      * Note that underline data structure of the process queue is a Map.
-     * @param workflowContext - has both workflow and correspond workflowNodeDetails and TaskDetails
+     * @param applicationNode - has both workflow and correspond workflowNodeDetails and TaskDetails
      */
-    private synchronized void addToProcessingQueue(WorkflowContext workflowContext) {
-        readyList.remove(workflowContext.getWorkflowNode().getId());
-        processingQueue.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
+    private synchronized void addToProcessingQueue(ApplicationNode applicationNode) {
+        readyList.remove(applicationNode.getId());
+        processingQueue.put(applicationNode.getId(), applicationNode);
     }
 
-    private synchronized void addToCompleteQueue(WorkflowContext workflowContext) {
-        processingQueue.remove(workflowContext.getTaskDetails().getTaskID());
-        completeList.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
+    private synchronized void addToCompleteQueue(ApplicationNode applicationNode) {
+        processingQueue.remove(applicationNode.getId());
+        completeList.put(applicationNode.getId(), applicationNode);
     }
 
 
@@ -301,19 +235,18 @@ class SimpleWorkflowInterpreter{
     }
 
     private void setExperiment(String experimentId) throws RegistryException {
-        experiment = (Experiment) getRegistry().getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
+        experiment = (ExperimentModel) getRegistry().getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
         log.debug("Retrieve Experiment for experiment id : " + experimentId);
     }
 
-    synchronized void handleTaskOutputChangeEvent(TaskOutputChangeEvent taskOutputChangeEvent) {
+/*    synchronized void handleTaskOutputChangeEvent(ProcessStatusChangeEvent taskOutputChangeEvent) {
 
         String taskId = taskOutputChangeEvent.getTaskIdentity().getTaskId();
         log.debug("Task Output changed event received for workflow node : " +
                 taskOutputChangeEvent.getTaskIdentity().getWorkflowNodeId() + ", task : " + taskId);
-        WorkflowContext workflowContext = processingQueue.get(taskId);
-        Set<WorkflowNode> tempWfNodeSet = new HashSet<WorkflowNode>();
-        if (workflowContext != null) {
-            WorkflowNode workflowNode = workflowContext.getWorkflowNode();
+        WorkflowNode workflowNode = processingQueue.get(taskId);
+        Set<WorkflowNode> tempWfNodeSet = new HashSet<>();
+        if (workflowNode != null) {
             if (workflowNode instanceof ApplicationNode) {
                 ApplicationNode applicationNode = (ApplicationNode) workflowNode;
                 // Workflow node can have one to many output ports and each output port can have one to many links
@@ -331,9 +264,9 @@ class SimpleWorkflowInterpreter{
                         }
                     }
                 }
+                addToCompleteQueue(applicationNode);
+                log.debug("removed task from processing queue : " + taskId);
             }
-            addToCompleteQueue(workflowContext);
-            log.debug("removed task from processing queue : " + taskId);
             try {
                 processReadyList();
             } catch (Exception e) {
@@ -341,69 +274,55 @@ class SimpleWorkflowInterpreter{
                 continueWorkflow = false;
             }
         }
-    }
+    }*/
 
     void handleProcessStatusChangeEvent(ProcessStatusChangeEvent processStatusChangeEvent) {
         ProcessState processState = processStatusChangeEvent.getState();
         ProcessIdentifier processIdentity = processStatusChangeEvent.getProcessIdentity();
         String processId = processIdentity.getProcessId();
-        WorkflowContext workflowContext = processingQueue.get(processId);
-        if (workflowContext != null) {
-            WorkflowNodeState wfNodeState = WorkflowNodeState.INVOKED;
+        ApplicationNode applicationNode = (ApplicationNode) processingQueue.get(processId);
+        if (applicationNode != null) {
+            ComponentState state = applicationNode.getState();
             switch (processState) {
                 case CREATED:
                 case VALIDATED:
                 case STARTED:
                     break;
                 case CONFIGURING_WORKSPACE:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
-                    break;
                 case PRE_PROCESSING:
-                    wfNodeState = WorkflowNodeState.INVOKED;
-                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
-                    break;
                 case INPUT_DATA_STAGING:
-                    wfNodeState = WorkflowNodeState.INVOKED;
-                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
-                    break;
                 case EXECUTING:
-                    wfNodeState = WorkflowNodeState.EXECUTING;
-                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTING);
-                    break;
                 case OUTPUT_DATA_STAGING:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
-                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
-                    break;
                 case POST_PROCESSING:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
-                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
+                    state = ComponentState.RUNNING;
                     break;
                 case COMPLETED:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
-                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTED);
+                    state = ComponentState.COMPLETED;
                     break;
                 case FAILED:
-                    wfNodeState = WorkflowNodeState.FAILED;
-                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
+                    state = ComponentState.FAILED;
                     break;
                 case CANCELED:
                 case CANCELLING:
-                    wfNodeState = WorkflowNodeState.CANCELED;
-                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
+                    state = ComponentState.CANCELED;
                     break;
                 default:
                     break;
             }
-            if (wfNodeState != WorkflowNodeState.UNKNOWN) {
+            if (state != applicationNode.getState()) {
                 try {
-                    updateWorkflowNodeStatus(workflowContext.getWfNodeDetails(), wfNodeState);
+                    updateWorkflowNodeStatus(applicationNode, new ComponentStatus(state));
                 } catch (RegistryException e) {
-                    log.error("Error while updating workflow node status update to the registry. nodeInstanceId :"
-                            + workflowContext.getWfNodeDetails().getNodeInstanceId() + " status to: "
-                            + workflowContext.getWfNodeDetails().getWorkflowNodeStatus().toString() , e);
+                    log.error("Error! Couldn't update new application state to registry. nodeInstanceId : {} "
+                            + applicationNode.getId() + " status to: " + applicationNode.getState().toString() , e);
                 }
             }
         }
 
     }
+
+    private void updateWorkflowNodeStatus(ApplicationNode applicationNode, ComponentStatus componentStatus) throws RegistryException {
+        // FIXME: save new workflow node status to registry.
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
deleted file mode 100644
index 47bd9ca..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core;
-
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-
-public class WorkflowContext {
-    private WorkflowNode workflowNode;
-    private WorkflowNodeDetails wfNodeDetails;
-    private TaskDetails taskDetails;
-
-    public WorkflowContext(WorkflowNode workflowNode, WorkflowNodeDetails wfNodeDetails, TaskDetails taskDetails) {
-        this.workflowNode = workflowNode;
-        this.wfNodeDetails = wfNodeDetails;
-        this.taskDetails = taskDetails;
-    }
-
-    public WorkflowNode getWorkflowNode() {
-        return workflowNode;
-    }
-
-    public void setWorkflowNode(WorkflowNode workflowNode) {
-        this.workflowNode = workflowNode;
-    }
-
-    public WorkflowNodeDetails getWfNodeDetails() {
-        return wfNodeDetails;
-    }
-
-    public void setWfNodeDetails(WorkflowNodeDetails wfNodeDetails) {
-        this.wfNodeDetails = wfNodeDetails;
-    }
-
-    public TaskDetails getTaskDetails() {
-        return taskDetails;
-    }
-
-    public void setTaskDetails(TaskDetails taskDetails) {
-        this.taskDetails = taskDetails;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
index aaa3073..34ef8a7 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
@@ -142,7 +142,7 @@ public class WorkflowEnactmentService {
                 TaskIdentifier taskIdentifier = event.getTaskIdentity();
                 simpleWorkflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
                 if (simpleWorkflowInterpreter != null) {
-                    simpleWorkflowInterpreter.handleTaskOutputChangeEvent(event);
+//                    simpleWorkflowInterpreter.handleTaskOutputChangeEvent(event);
                     if (simpleWorkflowInterpreter.isAllDone()) {
                         workflowMap.remove(taskIdentifier.getExperimentId());
                     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
index e06fab5..9392461 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowFactory.java
@@ -23,7 +23,6 @@ package org.apache.airavata.workflow.core;
 
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.workflow.core.parser.AiravataWorkflowBuilder;
 import org.apache.airavata.workflow.core.parser.JsonWorkflowParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/airavata/blob/ce795581/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c82cc8d..e41e3f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -557,6 +557,7 @@
 				<module>modules/credential-store</module>
 				<module>modules/orchestrator</module>
 				<module>modules/server</module>
+				<module>modules/workflow</module>
 				<module>modules/test-suite</module>
 				<!-- Deprecated Modules-->
 				<!--<module>modules/integration-tests</module>-->


[14/50] [abbrv] airavata git commit: set paths from storage resource before setting the destination path

Posted by ch...@apache.org.
set paths from storage resource before setting the destination path


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

Branch: refs/heads/master
Commit: b5d568d7dc0ab393d66300610f2c6f9c9ce2ae69
Parents: 819c5e2
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Thu Jan 28 11:59:42 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Thu Jan 28 11:59:42 2016 -0500

----------------------------------------------------------------------
 .../gfac/impl/task/SCPDataStageTask.java        | 23 ++++++++++----------
 1 file changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b5d568d7/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index 71f689a..0df3c4e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@ -123,6 +123,18 @@ public class SCPDataStageTask implements Task {
                 return status;
             }
 
+            StorageResourceDescription storageResource = taskContext.getParentProcessContext().getStorageResource();
+            StoragePreference storagePreference = taskContext.getParentProcessContext().getStoragePreference();
+
+            if (storageResource != null){
+                hostName = storageResource.getHostName();
+            }
+
+            if (storagePreference != null){
+                userName = storagePreference.getLoginUserName();
+                inputPath = storagePreference.getFileSystemRootLocation();
+            }
+
             // use rsync instead of scp if source and destination host and user name is same.
             URI sourceURI = new URI(subTaskModel.getSource());
             String fileName = sourceURI.getPath().substring(sourceURI.getPath().lastIndexOf(File.separator) + 1,
@@ -145,17 +157,6 @@ public class SCPDataStageTask implements Task {
 
             authenticationInfo = Factory.getStorageSSHKeyAuthentication(taskContext.getParentProcessContext());
             status = new TaskStatus(TaskState.COMPLETED);
-            StorageResourceDescription storageResource = taskContext.getParentProcessContext().getStorageResource();
-            StoragePreference storagePreference = taskContext.getParentProcessContext().getStoragePreference();
-
-            if (storageResource != null){
-                hostName = storageResource.getHostName();
-            }
-
-            if (storagePreference != null){
-                userName = storagePreference.getLoginUserName();
-                inputPath = storagePreference.getFileSystemRootLocation();
-            }
 
             ServerInfo serverInfo = new ServerInfo(userName, hostName, DEFAULT_SSH_PORT);
             Session sshSession = Factory.getSSHSession(authenticationInfo, serverInfo);


[42/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
index 4d25b93..58991af 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
@@ -51,16 +51,19 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, WorkflowModel._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowModel");
 
   private static final org.apache.thrift.protocol.TField TEMPLATE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("templateId", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField GRAPH_FIELD_DESC = new org.apache.thrift.protocol.TField("graph", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField IMAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("image", org.apache.thrift.protocol.TType.STRING, (short)4);
-  private static final org.apache.thrift.protocol.TField WORKFLOW_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowInputs", org.apache.thrift.protocol.TType.LIST, (short)5);
-  private static final org.apache.thrift.protocol.TField WORKFLOW_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowOutputs", org.apache.thrift.protocol.TType.LIST, (short)6);
+  private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField CREATED_USER_FIELD_DESC = new org.apache.thrift.protocol.TField("createdUser", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField IMAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("image", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField WORKFLOW_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowInputs", org.apache.thrift.protocol.TType.LIST, (short)7);
+  private static final org.apache.thrift.protocol.TField WORKFLOW_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowOutputs", org.apache.thrift.protocol.TType.LIST, (short)8);
+  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -71,18 +74,24 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
   private String templateId; // required
   private String name; // required
   private String graph; // required
+  private String gatewayId; // required
+  private String createdUser; // required
   private ByteBuffer image; // optional
   private List<org.apache.airavata.model.application.io.InputDataObjectType> workflowInputs; // optional
   private List<org.apache.airavata.model.application.io.OutputDataObjectType> workflowOutputs; // optional
+  private long creationTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     TEMPLATE_ID((short)1, "templateId"),
     NAME((short)2, "name"),
     GRAPH((short)3, "graph"),
-    IMAGE((short)4, "image"),
-    WORKFLOW_INPUTS((short)5, "workflowInputs"),
-    WORKFLOW_OUTPUTS((short)6, "workflowOutputs");
+    GATEWAY_ID((short)4, "gatewayId"),
+    CREATED_USER((short)5, "createdUser"),
+    IMAGE((short)6, "image"),
+    WORKFLOW_INPUTS((short)7, "workflowInputs"),
+    WORKFLOW_OUTPUTS((short)8, "workflowOutputs"),
+    CREATION_TIME((short)9, "creationTime");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -103,12 +112,18 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
           return NAME;
         case 3: // GRAPH
           return GRAPH;
-        case 4: // IMAGE
+        case 4: // GATEWAY_ID
+          return GATEWAY_ID;
+        case 5: // CREATED_USER
+          return CREATED_USER;
+        case 6: // IMAGE
           return IMAGE;
-        case 5: // WORKFLOW_INPUTS
+        case 7: // WORKFLOW_INPUTS
           return WORKFLOW_INPUTS;
-        case 6: // WORKFLOW_OUTPUTS
+        case 8: // WORKFLOW_OUTPUTS
           return WORKFLOW_OUTPUTS;
+        case 9: // CREATION_TIME
+          return CREATION_TIME;
         default:
           return null;
       }
@@ -149,7 +164,9 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.IMAGE,_Fields.WORKFLOW_INPUTS,_Fields.WORKFLOW_OUTPUTS};
+  private static final int __CREATIONTIME_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.IMAGE,_Fields.WORKFLOW_INPUTS,_Fields.WORKFLOW_OUTPUTS,_Fields.CREATION_TIME};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -159,6 +176,10 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.GRAPH, new org.apache.thrift.meta_data.FieldMetaData("graph", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.CREATED_USER, new org.apache.thrift.meta_data.FieldMetaData("createdUser", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.IMAGE, new org.apache.thrift.meta_data.FieldMetaData("image", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
     tmpMap.put(_Fields.WORKFLOW_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -167,6 +188,8 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     tmpMap.put(_Fields.WORKFLOW_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
+    tmpMap.put(_Fields.CREATION_TIME, new org.apache.thrift.meta_data.FieldMetaData("creationTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WorkflowModel.class, metaDataMap);
   }
@@ -179,18 +202,23 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
   public WorkflowModel(
     String templateId,
     String name,
-    String graph)
+    String graph,
+    String gatewayId,
+    String createdUser)
   {
     this();
     this.templateId = templateId;
     this.name = name;
     this.graph = graph;
+    this.gatewayId = gatewayId;
+    this.createdUser = createdUser;
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
   public WorkflowModel(WorkflowModel other) {
+    __isset_bitfield = other.__isset_bitfield;
     if (other.isSetTemplateId()) {
       this.templateId = other.templateId;
     }
@@ -200,6 +228,12 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     if (other.isSetGraph()) {
       this.graph = other.graph;
     }
+    if (other.isSetGatewayId()) {
+      this.gatewayId = other.gatewayId;
+    }
+    if (other.isSetCreatedUser()) {
+      this.createdUser = other.createdUser;
+    }
     if (other.isSetImage()) {
       this.image = org.apache.thrift.TBaseHelper.copyBinary(other.image);
     }
@@ -217,6 +251,7 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       }
       this.workflowOutputs = __this__workflowOutputs;
     }
+    this.creationTime = other.creationTime;
   }
 
   public WorkflowModel deepCopy() {
@@ -229,9 +264,13 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
 
     this.name = null;
     this.graph = null;
+    this.gatewayId = null;
+    this.createdUser = null;
     this.image = null;
     this.workflowInputs = null;
     this.workflowOutputs = null;
+    setCreationTimeIsSet(false);
+    this.creationTime = 0;
   }
 
   public String getTemplateId() {
@@ -303,6 +342,52 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     }
   }
 
+  public String getGatewayId() {
+    return this.gatewayId;
+  }
+
+  public void setGatewayId(String gatewayId) {
+    this.gatewayId = gatewayId;
+  }
+
+  public void unsetGatewayId() {
+    this.gatewayId = null;
+  }
+
+  /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+  public boolean isSetGatewayId() {
+    return this.gatewayId != null;
+  }
+
+  public void setGatewayIdIsSet(boolean value) {
+    if (!value) {
+      this.gatewayId = null;
+    }
+  }
+
+  public String getCreatedUser() {
+    return this.createdUser;
+  }
+
+  public void setCreatedUser(String createdUser) {
+    this.createdUser = createdUser;
+  }
+
+  public void unsetCreatedUser() {
+    this.createdUser = null;
+  }
+
+  /** Returns true if field createdUser is set (has been assigned a value) and false otherwise */
+  public boolean isSetCreatedUser() {
+    return this.createdUser != null;
+  }
+
+  public void setCreatedUserIsSet(boolean value) {
+    if (!value) {
+      this.createdUser = null;
+    }
+  }
+
   public byte[] getImage() {
     setImage(org.apache.thrift.TBaseHelper.rightSize(image));
     return image == null ? null : image.array();
@@ -411,6 +496,28 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     }
   }
 
+  public long getCreationTime() {
+    return this.creationTime;
+  }
+
+  public void setCreationTime(long creationTime) {
+    this.creationTime = creationTime;
+    setCreationTimeIsSet(true);
+  }
+
+  public void unsetCreationTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
+  }
+
+  /** Returns true if field creationTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetCreationTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
+  }
+
+  public void setCreationTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATIONTIME_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case TEMPLATE_ID:
@@ -437,6 +544,22 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       }
       break;
 
+    case GATEWAY_ID:
+      if (value == null) {
+        unsetGatewayId();
+      } else {
+        setGatewayId((String)value);
+      }
+      break;
+
+    case CREATED_USER:
+      if (value == null) {
+        unsetCreatedUser();
+      } else {
+        setCreatedUser((String)value);
+      }
+      break;
+
     case IMAGE:
       if (value == null) {
         unsetImage();
@@ -461,6 +584,14 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       }
       break;
 
+    case CREATION_TIME:
+      if (value == null) {
+        unsetCreationTime();
+      } else {
+        setCreationTime((Long)value);
+      }
+      break;
+
     }
   }
 
@@ -475,6 +606,12 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     case GRAPH:
       return getGraph();
 
+    case GATEWAY_ID:
+      return getGatewayId();
+
+    case CREATED_USER:
+      return getCreatedUser();
+
     case IMAGE:
       return getImage();
 
@@ -484,6 +621,9 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     case WORKFLOW_OUTPUTS:
       return getWorkflowOutputs();
 
+    case CREATION_TIME:
+      return getCreationTime();
+
     }
     throw new IllegalStateException();
   }
@@ -501,12 +641,18 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       return isSetName();
     case GRAPH:
       return isSetGraph();
+    case GATEWAY_ID:
+      return isSetGatewayId();
+    case CREATED_USER:
+      return isSetCreatedUser();
     case IMAGE:
       return isSetImage();
     case WORKFLOW_INPUTS:
       return isSetWorkflowInputs();
     case WORKFLOW_OUTPUTS:
       return isSetWorkflowOutputs();
+    case CREATION_TIME:
+      return isSetCreationTime();
     }
     throw new IllegalStateException();
   }
@@ -551,6 +697,24 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         return false;
     }
 
+    boolean this_present_gatewayId = true && this.isSetGatewayId();
+    boolean that_present_gatewayId = true && that.isSetGatewayId();
+    if (this_present_gatewayId || that_present_gatewayId) {
+      if (!(this_present_gatewayId && that_present_gatewayId))
+        return false;
+      if (!this.gatewayId.equals(that.gatewayId))
+        return false;
+    }
+
+    boolean this_present_createdUser = true && this.isSetCreatedUser();
+    boolean that_present_createdUser = true && that.isSetCreatedUser();
+    if (this_present_createdUser || that_present_createdUser) {
+      if (!(this_present_createdUser && that_present_createdUser))
+        return false;
+      if (!this.createdUser.equals(that.createdUser))
+        return false;
+    }
+
     boolean this_present_image = true && this.isSetImage();
     boolean that_present_image = true && that.isSetImage();
     if (this_present_image || that_present_image) {
@@ -578,6 +742,15 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         return false;
     }
 
+    boolean this_present_creationTime = true && this.isSetCreationTime();
+    boolean that_present_creationTime = true && that.isSetCreationTime();
+    if (this_present_creationTime || that_present_creationTime) {
+      if (!(this_present_creationTime && that_present_creationTime))
+        return false;
+      if (this.creationTime != that.creationTime)
+        return false;
+    }
+
     return true;
   }
 
@@ -600,6 +773,16 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     if (present_graph)
       list.add(graph);
 
+    boolean present_gatewayId = true && (isSetGatewayId());
+    list.add(present_gatewayId);
+    if (present_gatewayId)
+      list.add(gatewayId);
+
+    boolean present_createdUser = true && (isSetCreatedUser());
+    list.add(present_createdUser);
+    if (present_createdUser)
+      list.add(createdUser);
+
     boolean present_image = true && (isSetImage());
     list.add(present_image);
     if (present_image)
@@ -615,6 +798,11 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
     if (present_workflowOutputs)
       list.add(workflowOutputs);
 
+    boolean present_creationTime = true && (isSetCreationTime());
+    list.add(present_creationTime);
+    if (present_creationTime)
+      list.add(creationTime);
+
     return list.hashCode();
   }
 
@@ -656,6 +844,26 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGatewayId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetCreatedUser()).compareTo(other.isSetCreatedUser());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCreatedUser()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.createdUser, other.createdUser);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetImage()).compareTo(other.isSetImage());
     if (lastComparison != 0) {
       return lastComparison;
@@ -686,6 +894,16 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetCreationTime()).compareTo(other.isSetCreationTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCreationTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.creationTime, other.creationTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -729,6 +947,22 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       sb.append(this.graph);
     }
     first = false;
+    if (!first) sb.append(", ");
+    sb.append("gatewayId:");
+    if (this.gatewayId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.gatewayId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("createdUser:");
+    if (this.createdUser == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.createdUser);
+    }
+    first = false;
     if (isSetImage()) {
       if (!first) sb.append(", ");
       sb.append("image:");
@@ -759,6 +993,12 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       }
       first = false;
     }
+    if (isSetCreationTime()) {
+      if (!first) sb.append(", ");
+      sb.append("creationTime:");
+      sb.append(this.creationTime);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -777,6 +1017,14 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'graph' is unset! Struct:" + toString());
     }
 
+    if (!isSetGatewayId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetCreatedUser()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'createdUser' is unset! Struct:" + toString());
+    }
+
     // check for sub-struct validity
   }
 
@@ -790,6 +1038,8 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
 
   private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
     try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
       throw new java.io.IOException(te);
@@ -838,7 +1088,23 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // IMAGE
+          case 4: // GATEWAY_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.gatewayId = iprot.readString();
+              struct.setGatewayIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // CREATED_USER
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.createdUser = iprot.readString();
+              struct.setCreatedUserIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // IMAGE
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.image = iprot.readBinary();
               struct.setImageIsSet(true);
@@ -846,7 +1112,7 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 5: // WORKFLOW_INPUTS
+          case 7: // WORKFLOW_INPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
@@ -865,7 +1131,7 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // WORKFLOW_OUTPUTS
+          case 8: // WORKFLOW_OUTPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
@@ -884,6 +1150,14 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 9: // CREATION_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.creationTime = iprot.readI64();
+              struct.setCreationTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -912,6 +1186,16 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         oprot.writeString(struct.graph);
         oprot.writeFieldEnd();
       }
+      if (struct.gatewayId != null) {
+        oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+        oprot.writeString(struct.gatewayId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.createdUser != null) {
+        oprot.writeFieldBegin(CREATED_USER_FIELD_DESC);
+        oprot.writeString(struct.createdUser);
+        oprot.writeFieldEnd();
+      }
       if (struct.image != null) {
         if (struct.isSetImage()) {
           oprot.writeFieldBegin(IMAGE_FIELD_DESC);
@@ -947,6 +1231,11 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetCreationTime()) {
+        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
+        oprot.writeI64(struct.creationTime);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -967,6 +1256,8 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       oprot.writeString(struct.templateId);
       oprot.writeString(struct.name);
       oprot.writeString(struct.graph);
+      oprot.writeString(struct.gatewayId);
+      oprot.writeString(struct.createdUser);
       BitSet optionals = new BitSet();
       if (struct.isSetImage()) {
         optionals.set(0);
@@ -977,7 +1268,10 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       if (struct.isSetWorkflowOutputs()) {
         optionals.set(2);
       }
-      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetCreationTime()) {
+        optionals.set(3);
+      }
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetImage()) {
         oprot.writeBinary(struct.image);
       }
@@ -999,6 +1293,9 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
           }
         }
       }
+      if (struct.isSetCreationTime()) {
+        oprot.writeI64(struct.creationTime);
+      }
     }
 
     @Override
@@ -1010,7 +1307,11 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
       struct.setNameIsSet(true);
       struct.graph = iprot.readString();
       struct.setGraphIsSet(true);
-      BitSet incoming = iprot.readBitSet(3);
+      struct.gatewayId = iprot.readString();
+      struct.setGatewayIdIsSet(true);
+      struct.createdUser = iprot.readString();
+      struct.setCreatedUserIsSet(true);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.image = iprot.readBinary();
         struct.setImageIsSet(true);
@@ -1043,6 +1344,10 @@ public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, Wor
         }
         struct.setWorkflowOutputsIsSet(true);
       }
+      if (incoming.get(3)) {
+        struct.creationTime = iprot.readI64();
+        struct.setCreationTimeIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
index 73734fb..3bbf0e2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class WorkflowStatus implements org.apache.thrift.TBase<WorkflowStatus, WorkflowStatus._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
index afc2676..4f90002 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *  assigns to the environment variable "NAME" the value
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ApplicationDeploymentDescription implements org.apache.thrift.TBase<ApplicationDeploymentDescription, ApplicationDeploymentDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationDeploymentDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationDeploymentDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
index ee692aa..225d9f6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  *    Descriprion of the Module
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ApplicationModule implements org.apache.thrift.TBase<ApplicationModule, ApplicationModule._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationModule> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationModule");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
index 83a84d2..f084438 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * commandOrder:
  *   Order of the command in the multiple command situation
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class CommandObject implements org.apache.thrift.TBase<CommandObject, CommandObject._Fields>, java.io.Serializable, Cloneable, Comparable<CommandObject> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CommandObject");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
index bcb07f2..54df732 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
@@ -63,7 +63,7 @@ import org.slf4j.LoggerFactory;
  * envPathOrder:
  *   The order of the setting of the env variables when there are multiple env variables
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class SetEnvPaths implements org.apache.thrift.TBase<SetEnvPaths, SetEnvPaths._Fields>, java.io.Serializable, Cloneable, Comparable<SetEnvPaths> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SetEnvPaths");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
index 55d01e9..d04730d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   Outputs generated from the application
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ApplicationInterfaceDescription implements org.apache.thrift.TBase<ApplicationInterfaceDescription, ApplicationInterfaceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationInterfaceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationInterfaceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
index 67c7e8c..25a4b80 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * maxRunTime:
  *  Maximum allowed run time in hours.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class BatchQueue implements org.apache.thrift.TBase<BatchQueue, BatchQueue._Fields>, java.io.Serializable, Cloneable, Comparable<BatchQueue> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BatchQueue");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
index 41dc771..f5882f0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class CloudJobSubmission implements org.apache.thrift.TBase<CloudJobSubmission, CloudJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<CloudJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CloudJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
index 59e1aa7..646a3b0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
@@ -80,7 +80,7 @@ import org.slf4j.LoggerFactory;
  *  Map of file systems type and the path.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ComputeResourceDescription implements org.apache.thrift.TBase<ComputeResourceDescription, ComputeResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
index f2d5373..2770672 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class GlobusJobSubmission implements org.apache.thrift.TBase<GlobusJobSubmission, GlobusJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<GlobusJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GlobusJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
index 8f5223d..10b3e39 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class JobSubmissionInterface implements org.apache.thrift.TBase<JobSubmissionInterface, JobSubmissionInterface._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
index dc668bf..59a0772 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission, LOCALSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
index 4c4625c..6308423 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  *  An enumeration of commonly used manager commands.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ResourceJobManager implements org.apache.thrift.TBase<ResourceJobManager, ResourceJobManager._Fields>, java.io.Serializable, Cloneable, Comparable<ResourceJobManager> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ResourceJobManager");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
index 9bc872b..ebb50b1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  *    the same. Example: *@*.example.com or *@example.com
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class SSHJobSubmission implements org.apache.thrift.TBase<SSHJobSubmission, SSHJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<SSHJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SSHJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
index 3f46339..845d5bd 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
@@ -59,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * authenticationMode
  *  The authenticationMode defines the way certificate is fetched.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class UnicoreJobSubmission implements org.apache.thrift.TBase<UnicoreJobSubmission, UnicoreJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
index ecd7e92..8f491e5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
@@ -85,7 +85,7 @@ import org.slf4j.LoggerFactory;
  *   default credential store.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ComputeResourcePreference implements org.apache.thrift.TBase<ComputeResourcePreference, ComputeResourcePreference._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourcePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourcePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
index 30618bf..50afe23 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *  List of resource preferences for each of the registered compute resources.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class GatewayResourceProfile implements org.apache.thrift.TBase<GatewayResourceProfile, GatewayResourceProfile._Fields>, java.io.Serializable, Cloneable, Comparable<GatewayResourceProfile> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GatewayResourceProfile");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
index ecf9a19..a45eade 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class StoragePreference implements org.apache.thrift.TBase<StoragePreference, StoragePreference._Fields>, java.io.Serializable, Cloneable, Comparable<StoragePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StoragePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
index a9cff44..c35418e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class StorageResourceDescription implements org.apache.thrift.TBase<StorageResourceDescription, StorageResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<StorageResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StorageResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
index 48cdfa9..aa6c336 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObjectType, InputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<InputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
index ecf9c81..b8aadc9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataObjectType, OutputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<OutputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("OutputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
index 53a1033..5256129 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ErrorModel implements org.apache.thrift.TBase<ErrorModel, ErrorModel._Fields>, java.io.Serializable, Cloneable, Comparable<ErrorModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ErrorModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
index d15c4f6..bcc5409 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
index 04af60a..70a9300 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * during the experiment launch operation
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
index a5bd0e1..7c292ff 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class DataMovementInterface implements org.apache.thrift.TBase<DataMovementInterface, DataMovementInterface._Fields>, java.io.Serializable, Cloneable, Comparable<DataMovementInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataMovementInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
index 33db137..8186dd4 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class GridFTPDataMovement implements org.apache.thrift.TBase<GridFTPDataMovement, GridFTPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<GridFTPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GridFTPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
index 4a17491..996adcd 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-defualt port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class LOCALDataMovement implements org.apache.thrift.TBase<LOCALDataMovement, LOCALDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
index c7f19e0..f26fc17 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class SCPDataMovement implements org.apache.thrift.TBase<SCPDataMovement, SCPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<SCPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SCPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
index 9df1652..72a90ff 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * unicoreEndPointURL:
  *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class UnicoreDataMovement implements org.apache.thrift.TBase<UnicoreDataMovement, UnicoreDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
index 9b47ccf..133e785 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataReplicaLocationModel, DataReplicaLocationModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataReplicaLocationModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataReplicaLocationModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
index 99f8a4b..072c6b8 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class DataResourceModel implements org.apache.thrift.TBase<DataResourceModel, DataResourceModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataResourceModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataResourceModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
index 6f73429..78a77fe 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  * parameter:  If the error applied to a particular input parameter, this will
  *   indicate which parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class AiravataClientException extends TException implements org.apache.thrift.TBase<AiravataClientException, AiravataClientException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataClientException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataClientException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
index e49da35..234fed7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  * message:  This may contain additional information about the error
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class AiravataSystemException extends TException implements org.apache.thrift.TBase<AiravataSystemException, AiravataSystemException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataSystemException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataSystemException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
index b21687a..60aa2eb 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the cause of the authorization failure.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class AuthenticationException extends TException implements org.apache.thrift.TBase<AuthenticationException, AuthenticationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthenticationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthenticationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
index 4f59bbc..0171222 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the authorization failure message
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class AuthorizationException extends TException implements org.apache.thrift.TBase<AuthorizationException, AuthorizationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthorizationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthorizationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
index 2ac05f6..fe4a7db 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * 
  * key:  The value passed from the client in the identifier, which was not found.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentNotFoundException extends TException implements org.apache.thrift.TBase<ExperimentNotFoundException, ExperimentNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
index b627edc..93e1ddb 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the associated error message.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class InvalidRequestException extends TException implements org.apache.thrift.TBase<InvalidRequestException, InvalidRequestException._Fields>, java.io.Serializable, Cloneable, Comparable<InvalidRequestException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InvalidRequestException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
index 9ae7684..261b25e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class LaunchValidationException extends TException implements org.apache.thrift.TBase<LaunchValidationException, LaunchValidationException._Fields>, java.io.Serializable, Cloneable, Comparable<LaunchValidationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LaunchValidationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
index ca66bcf..6f20575 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 2:  optional  string key
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ProjectNotFoundException extends TException implements org.apache.thrift.TBase<ProjectNotFoundException, ProjectNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
index 825d84b..4fe78c7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
@@ -54,7 +54,7 @@ import org.slf4j.LoggerFactory;
 /**
  * This exception is thrown when RPC timeout gets exceeded.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class TimedOutException extends TException implements org.apache.thrift.TBase<TimedOutException, TimedOutException._Fields>, java.io.Serializable, Cloneable, Comparable<TimedOutException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TimedOutException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
index 87f946c..52c26e9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
index 2316664..be375ff 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
index 41e3dd0..4de630b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  * experimentDescription:
  *    The verbose description of the experiment. This is an optional parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel, ExperimentModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
index 959863c..ffca7a4 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentStatistics, ExperimentStatistics._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatistics> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatistics");
 


[22/50] [abbrv] airavata git commit: Added generated thrift file

Posted by ch...@apache.org.
Added generated thrift file


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

Branch: refs/heads/master
Commit: 494e0d735a7531894f04f9d01b3602357a05c7c6
Parents: 09be4d9
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 12:49:30 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 12:49:30 2016 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/model/NodeModel.java    | 240 +++++++++++++++++--
 1 file changed, 226 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/494e0d73/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
index 4ff69b1..e01c8d2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
@@ -57,8 +57,10 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
 
   private static final org.apache.thrift.protocol.TField NODE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeId", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)3);
-  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField APPLICATION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationId", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField APPLICATION_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationName", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)5);
+  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -68,6 +70,8 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
 
   private String nodeId; // required
   private String name; // optional
+  private String applicationId; // optional
+  private String applicationName; // optional
   private ComponentStatus status; // optional
   private String description; // optional
 
@@ -75,8 +79,10 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     NODE_ID((short)1, "nodeId"),
     NAME((short)2, "name"),
-    STATUS((short)3, "status"),
-    DESCRIPTION((short)4, "description");
+    APPLICATION_ID((short)3, "applicationId"),
+    APPLICATION_NAME((short)4, "applicationName"),
+    STATUS((short)5, "status"),
+    DESCRIPTION((short)6, "description");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -95,9 +101,13 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
           return NODE_ID;
         case 2: // NAME
           return NAME;
-        case 3: // STATUS
+        case 3: // APPLICATION_ID
+          return APPLICATION_ID;
+        case 4: // APPLICATION_NAME
+          return APPLICATION_NAME;
+        case 5: // STATUS
           return STATUS;
-        case 4: // DESCRIPTION
+        case 6: // DESCRIPTION
           return DESCRIPTION;
         default:
           return null;
@@ -139,7 +149,7 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.DESCRIPTION};
+  private static final _Fields optionals[] = {_Fields.NAME,_Fields.APPLICATION_ID,_Fields.APPLICATION_NAME,_Fields.STATUS,_Fields.DESCRIPTION};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -147,6 +157,10 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APPLICATION_ID, new org.apache.thrift.meta_data.FieldMetaData("applicationId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APPLICATION_NAME, new org.apache.thrift.meta_data.FieldMetaData("applicationName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentStatus.class)));
     tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -177,6 +191,12 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
     if (other.isSetName()) {
       this.name = other.name;
     }
+    if (other.isSetApplicationId()) {
+      this.applicationId = other.applicationId;
+    }
+    if (other.isSetApplicationName()) {
+      this.applicationName = other.applicationName;
+    }
     if (other.isSetStatus()) {
       this.status = new ComponentStatus(other.status);
     }
@@ -194,6 +214,8 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
     this.nodeId = "DO_NOT_SET_AT_CLIENTS";
 
     this.name = null;
+    this.applicationId = null;
+    this.applicationName = null;
     this.status = null;
     this.description = null;
   }
@@ -244,6 +266,52 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
     }
   }
 
+  public String getApplicationId() {
+    return this.applicationId;
+  }
+
+  public void setApplicationId(String applicationId) {
+    this.applicationId = applicationId;
+  }
+
+  public void unsetApplicationId() {
+    this.applicationId = null;
+  }
+
+  /** Returns true if field applicationId is set (has been assigned a value) and false otherwise */
+  public boolean isSetApplicationId() {
+    return this.applicationId != null;
+  }
+
+  public void setApplicationIdIsSet(boolean value) {
+    if (!value) {
+      this.applicationId = null;
+    }
+  }
+
+  public String getApplicationName() {
+    return this.applicationName;
+  }
+
+  public void setApplicationName(String applicationName) {
+    this.applicationName = applicationName;
+  }
+
+  public void unsetApplicationName() {
+    this.applicationName = null;
+  }
+
+  /** Returns true if field applicationName is set (has been assigned a value) and false otherwise */
+  public boolean isSetApplicationName() {
+    return this.applicationName != null;
+  }
+
+  public void setApplicationNameIsSet(boolean value) {
+    if (!value) {
+      this.applicationName = null;
+    }
+  }
+
   public ComponentStatus getStatus() {
     return this.status;
   }
@@ -308,6 +376,22 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
       }
       break;
 
+    case APPLICATION_ID:
+      if (value == null) {
+        unsetApplicationId();
+      } else {
+        setApplicationId((String)value);
+      }
+      break;
+
+    case APPLICATION_NAME:
+      if (value == null) {
+        unsetApplicationName();
+      } else {
+        setApplicationName((String)value);
+      }
+      break;
+
     case STATUS:
       if (value == null) {
         unsetStatus();
@@ -335,6 +419,12 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
     case NAME:
       return getName();
 
+    case APPLICATION_ID:
+      return getApplicationId();
+
+    case APPLICATION_NAME:
+      return getApplicationName();
+
     case STATUS:
       return getStatus();
 
@@ -356,6 +446,10 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
       return isSetNodeId();
     case NAME:
       return isSetName();
+    case APPLICATION_ID:
+      return isSetApplicationId();
+    case APPLICATION_NAME:
+      return isSetApplicationName();
     case STATUS:
       return isSetStatus();
     case DESCRIPTION:
@@ -395,6 +489,24 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
         return false;
     }
 
+    boolean this_present_applicationId = true && this.isSetApplicationId();
+    boolean that_present_applicationId = true && that.isSetApplicationId();
+    if (this_present_applicationId || that_present_applicationId) {
+      if (!(this_present_applicationId && that_present_applicationId))
+        return false;
+      if (!this.applicationId.equals(that.applicationId))
+        return false;
+    }
+
+    boolean this_present_applicationName = true && this.isSetApplicationName();
+    boolean that_present_applicationName = true && that.isSetApplicationName();
+    if (this_present_applicationName || that_present_applicationName) {
+      if (!(this_present_applicationName && that_present_applicationName))
+        return false;
+      if (!this.applicationName.equals(that.applicationName))
+        return false;
+    }
+
     boolean this_present_status = true && this.isSetStatus();
     boolean that_present_status = true && that.isSetStatus();
     if (this_present_status || that_present_status) {
@@ -430,6 +542,16 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
     if (present_name)
       list.add(name);
 
+    boolean present_applicationId = true && (isSetApplicationId());
+    list.add(present_applicationId);
+    if (present_applicationId)
+      list.add(applicationId);
+
+    boolean present_applicationName = true && (isSetApplicationName());
+    list.add(present_applicationName);
+    if (present_applicationName)
+      list.add(applicationName);
+
     boolean present_status = true && (isSetStatus());
     list.add(present_status);
     if (present_status)
@@ -471,6 +593,26 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetApplicationId()).compareTo(other.isSetApplicationId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetApplicationId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationId, other.applicationId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetApplicationName()).compareTo(other.isSetApplicationName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetApplicationName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationName, other.applicationName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
     if (lastComparison != 0) {
       return lastComparison;
@@ -528,6 +670,26 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
       }
       first = false;
     }
+    if (isSetApplicationId()) {
+      if (!first) sb.append(", ");
+      sb.append("applicationId:");
+      if (this.applicationId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.applicationId);
+      }
+      first = false;
+    }
+    if (isSetApplicationName()) {
+      if (!first) sb.append(", ");
+      sb.append("applicationName:");
+      if (this.applicationName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.applicationName);
+      }
+      first = false;
+    }
     if (isSetStatus()) {
       if (!first) sb.append(", ");
       sb.append("status:");
@@ -614,7 +776,23 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 3: // STATUS
+          case 3: // APPLICATION_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.applicationId = iprot.readString();
+              struct.setApplicationIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // APPLICATION_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.applicationName = iprot.readString();
+              struct.setApplicationNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // STATUS
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.status = new ComponentStatus();
               struct.status.read(iprot);
@@ -623,7 +801,7 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // DESCRIPTION
+          case 6: // DESCRIPTION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.description = iprot.readString();
               struct.setDescriptionIsSet(true);
@@ -656,6 +834,20 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
           oprot.writeFieldEnd();
         }
       }
+      if (struct.applicationId != null) {
+        if (struct.isSetApplicationId()) {
+          oprot.writeFieldBegin(APPLICATION_ID_FIELD_DESC);
+          oprot.writeString(struct.applicationId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.applicationName != null) {
+        if (struct.isSetApplicationName()) {
+          oprot.writeFieldBegin(APPLICATION_NAME_FIELD_DESC);
+          oprot.writeString(struct.applicationName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.status != null) {
         if (struct.isSetStatus()) {
           oprot.writeFieldBegin(STATUS_FIELD_DESC);
@@ -692,16 +884,28 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
       if (struct.isSetName()) {
         optionals.set(0);
       }
-      if (struct.isSetStatus()) {
+      if (struct.isSetApplicationId()) {
         optionals.set(1);
       }
-      if (struct.isSetDescription()) {
+      if (struct.isSetApplicationName()) {
         optionals.set(2);
       }
-      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetStatus()) {
+        optionals.set(3);
+      }
+      if (struct.isSetDescription()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
       if (struct.isSetName()) {
         oprot.writeString(struct.name);
       }
+      if (struct.isSetApplicationId()) {
+        oprot.writeString(struct.applicationId);
+      }
+      if (struct.isSetApplicationName()) {
+        oprot.writeString(struct.applicationName);
+      }
       if (struct.isSetStatus()) {
         struct.status.write(oprot);
       }
@@ -715,17 +919,25 @@ public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.nodeId = iprot.readString();
       struct.setNodeIdIsSet(true);
-      BitSet incoming = iprot.readBitSet(3);
+      BitSet incoming = iprot.readBitSet(5);
       if (incoming.get(0)) {
         struct.name = iprot.readString();
         struct.setNameIsSet(true);
       }
       if (incoming.get(1)) {
+        struct.applicationId = iprot.readString();
+        struct.setApplicationIdIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.applicationName = iprot.readString();
+        struct.setApplicationNameIsSet(true);
+      }
+      if (incoming.get(3)) {
         struct.status = new ComponentStatus();
         struct.status.read(iprot);
         struct.setStatusIsSet(true);
       }
-      if (incoming.get(2)) {
+      if (incoming.get(4)) {
         struct.description = iprot.readString();
         struct.setDescriptionIsSet(true);
       }


[21/50] [abbrv] airavata git commit: Added application name and applicatoin id to NodeModel struct

Posted by ch...@apache.org.
Added application name and applicatoin id to NodeModel struct


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

Branch: refs/heads/master
Commit: 09be4d92b579830e8f14d96b11c53b3acd8ae928
Parents: 97f4ba9
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 12:48:04 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 12:48:04 2016 -0500

----------------------------------------------------------------------
 .../workflow/core/dag/nodes/NodeState.java      | 44 --------------------
 .../workflow-models/workflow_data_model.thrift  |  6 ++-
 2 files changed, 4 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/09be4d92/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/NodeState.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/NodeState.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/NodeState.java
deleted file mode 100644
index df2c87a..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/dag/nodes/NodeState.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core.dag.nodes;
-
-public enum NodeState {
-    WAITING(0), // waiting on inputs
-    READY(1), // all inputs are available and ready to execute
-    QUEUED(2), //
-    PRE_PROCESSING(3), //
-    EXECUTING(4), // task has been submitted , not yet finish
-    EXECUTED(5), // task executed
-    POST_PROCESSING(6), //
-    FAILED(7),
-    COMPLETE(8); // all works done
-
-    private int level;
-
-    NodeState(int level) {
-        this.level = level;
-    }
-
-    public int getLevel() {
-        return level;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/09be4d92/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
index 7b7922a..62ed885 100644
--- a/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
+++ b/thrift-interface-descriptions/data-models/workflow-models/workflow_data_model.thrift
@@ -92,6 +92,8 @@ struct PortModel {
 struct NodeModel {
     1: required string nodeId= airavata_commons.DEFAULT_ID,
     2: optional string name,
-    3: optional ComponentStatus status,
-    4: optional string description
+    3: optional string applicationId,
+    4: optional string applicationName,
+    5: optional ComponentStatus status,
+    6: optional string description
 }


[44/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
index de97d8f..cb51ff6 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -182,6 +182,7 @@ class Iface:
 
   def getAllUserSSHPubKeys(self, authzToken, userName):
     """
+
     Get a Public Key by Providing the Token
 
     @param CredStoreToken
@@ -202,6 +203,7 @@ class Iface:
 
   def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
     """
+
     Get all Public Keys of the Gateway
 
     @param CredStoreToken
@@ -222,6 +224,7 @@ class Iface:
 
   def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
     """
+
     Delete a Gateway
 
     @param gatewayId
@@ -241,6 +244,7 @@ class Iface:
 
   def createProject(self, authzToken, gatewayId, project):
     """
+
     Creates a Project with basic metadata.
        A Project is a container of experiments.
 
@@ -248,7 +252,7 @@ class Iface:
        The identifier for the requested gateway.
 
     @param Project
-       The Project Object described in the workspace_model
+       The Project Object described in the workspace_model.
 
 
 
@@ -261,6 +265,7 @@ class Iface:
 
   def updateProject(self, authzToken, projectId, updatedProject):
     """
+
     Update an Existing Project
 
     @param projectId
@@ -280,14 +285,15 @@ class Iface:
 
   def getProject(self, authzToken, projectId):
     """
+
     Get a Project by ID
-       This method is to obtain a project by providing a projectId
+       This method is to obtain a project by providing a projectId.
 
     @param projectId
-       projectId of the project you require
+       projectId of the project you require.
 
     @return project
-       project data model will be returned
+       project data model will be returned.
 
 
 
@@ -299,15 +305,18 @@ class Iface:
 
   def deleteProject(self, authzToken, projectId):
     """
+
     Delete a Project
-       This method is used to delete an existing Project
+       This method is used to delete an existing Project.
 
     @param projectId
-       projectId of the project you want to delete
+       projectId of the project you want to delete.
 
     @return boolean
        Boolean identifier for the success or failure of the deletion operation.
 
+       NOTE: This method is not used within gateways connected with Airavata.
+
 
 
     Parameters:
@@ -318,20 +327,21 @@ class Iface:
 
   def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
     """
-    Get all Project by user with pagination. Results will be ordered based
-    on creation time DESC
+
+    Get All User Projects
+    Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
 
     @param gatewayId
        The identifier for the requested gateway.
 
     @param userName
-       The identifier of the user
+       The identifier of the user.
 
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
 
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
 
 
 
@@ -346,19 +356,25 @@ class Iface:
 
   def searchProjectsByProjectName(self, authzToken, gatewayId, userName, projectName, limit, offset):
     """
-    Get all Project for user by project name with pagination.Results will be ordered based
-    on creation time DESC
+
+    Search User Projects by Project Name
+    Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
 
     @param gatewayId
-       The identifier for the requested gateway.
+       The unique identifier for the requested gateway.
+
     @param userName
-       The identifier of the user
+       The identifier of the user.
+
     @param projectName
-       The name of the project on which the results to be fetched
+       The name of the project on which the results to be fetched.
+
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
+
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -373,19 +389,25 @@ class Iface:
 
   def searchProjectsByProjectDesc(self, authzToken, gatewayId, userName, description, limit, offset):
     """
-    Search and get all Projects for user by project description with pagination. Results
-    will be ordered based on creation time DESC
+
+    Search User Projects by Project Description
+    Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
 
     @param gatewayId
-       The identifier for the requested gateway.
+       The unique identifier of the gateway making the request.
+
     @param userName
-       The identifier of the user
+       The identifier of the user.
+
     @param description
-       The description to be matched
+       The description to be matched.
+
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
+
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -400,19 +422,25 @@ class Iface:
 
   def searchExperimentsByName(self, authzToken, gatewayId, userName, expName, limit, offset):
     """
-    Search Experiments by experiment name with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by Name
+    Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user who created the experiments.
+
     @param expName
-          Experiment name to be matched
+          Experiment name to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -427,19 +455,25 @@ class Iface:
 
   def searchExperimentsByDesc(self, authzToken, gatewayId, userName, description, limit, offset):
     """
-    Search Experiments by experiment name with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search By Experiment Description
+    Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param description
-          Experiment description to be matched
+          Experiment description to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -454,19 +488,25 @@ class Iface:
 
   def searchExperimentsByApplication(self, authzToken, gatewayId, userName, applicationId, limit, offset):
     """
-    Search Experiments by application id with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search Experiment By the Application
+    Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param applicationId
-          Application id to be matched
+          Application id to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -481,19 +521,25 @@ class Iface:
 
   def searchExperimentsByStatus(self, authzToken, gatewayId, userName, experimentState, limit, offset):
     """
-    Search Experiments by experiment status with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by Status
+    Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user making the request.
+
     @param experimentState
-          Experiement state to be matched
+          Experiement state to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -508,21 +554,31 @@ class Iface:
 
   def searchExperimentsByCreationTime(self, authzToken, gatewayId, userName, fromTime, toTime, limit, offset):
     """
-    Search Experiments by experiment creation time with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by the Creation Time
+    This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param fromTime
-          Start time of the experiments creation time
+          Start time of the experiments creation time.
+
     @param toTime
-          End time of the  experiement creation time
+          End time of the  experiement creation time.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
+    @return ExperimentSummaryModel
+       List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
 
 
     Parameters:
@@ -538,19 +594,27 @@ class Iface:
 
   def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
     """
-    Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-    based on creation time DESC
+    Search Experiments.
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user requesting the search function.
+
     @param filters
-          map of multiple filter criteria.
+          Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
+    @return ExperimentSummaryModel
+       List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
 
 
     Parameters:
@@ -565,13 +629,19 @@ class Iface:
 
   def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime):
     """
-    Get Experiment Statisitics for the given gateway for a specific time period
+
+    Get Experiment Statistics
+    Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the gateway making the request to fetch statistics.
+
     @param fromTime
-          Starting date time
+          Starting date time.
+
     @param toTime
-          Ending data time
+          Ending data time.
+
 
 
     Parameters:
@@ -584,15 +654,19 @@ class Iface:
 
   def getExperimentsInProject(self, authzToken, projectId, limit, offset):
     """
-    Get Experiments within project with pagination. Results will be sorted
-    based on creation time DESC
+
+    Get All Experiments of the Project
+    Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
 
     @param projectId
-          Identifier of the project
+          Uniqie identifier of the project.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -605,17 +679,22 @@ class Iface:
 
   def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
     """
-    Get experiments by user with pagination. Results will be sorted
-    based on creation time DESC
+
+    Get All Experiments of the User
+    Get experiments by user with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requesting gateway
+          Identifier of the requesting gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested end user.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -629,12 +708,17 @@ class Iface:
 
   def createExperiment(self, authzToken, gatewayId, experiment):
     """
+      *
+      * Create New Experiment
       * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
       *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
       *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
       *   registering the experiment in a persistent store.
       *
-      * @param basicExperimentMetadata
+      * @param gatewayId
+      *    The unique ID of the gateway where the experiment is been created.
+      *
+      * @param ExperimentModel
       *    The create experiment will require the basic experiment metadata like the name and description, intended user,
       *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
       *      the ExperimentMetadata is a required field.
@@ -673,8 +757,8 @@ class Iface:
 
   def deleteExperiment(self, authzToken, experimentId):
     """
-    Delete an Experiment
 
+    Delete an Experiment
     If the experiment is not already launched experiment can be deleted.
 
     @param authzToken
@@ -683,7 +767,7 @@ class Iface:
         Experiment ID of the experimnet you want to delete.
 
     @return boolean
-        Identifier for the success or failure of the deletion operation
+        Identifier for the success or failure of the deletion operation.
 
 
 
@@ -695,12 +779,14 @@ class Iface:
 
   def getExperiment(self, authzToken, airavataExperimentId):
     """
+      *
+      * Get Experiment
       * Fetch previously created experiment metadata.
       *
       * @param airavataExperimentId
-      *    The identifier for the requested experiment. This is returned during the create experiment step.
+      *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
       *
-      * @return experimentMetada
+      * @return ExperimentModel
       *   This method will return the previously stored experiment metadata.
       *
       * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -736,14 +822,17 @@ class Iface:
 
   def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
     """
+
+    Get Complete Experiment Details
     Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
     tasks -> jobs information.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @return experimentMetada
-      This method will return the previously stored experiment metadata.
+    @return ExperimentModel
+      This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+      information, special input output handling and additional quality of service parameters.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -777,14 +866,15 @@ class Iface:
 
   def updateExperiment(self, authzToken, airavataExperimentId, experiment):
     """
-    Configure a previously created experiment with required inputs, scheduling and other quality of service
-      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-      to make it actionable by the server.
+
+    Update a Previously Created Experiment
+    Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+    The experiment has to be launched to make it actionable by the server.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @param experimentConfigurationData
+    @param ExperimentModel
        The configuration information of the experiment with application input parameters, computational resource scheduling
          information, special input output handling and additional quality of service parameters.
 
@@ -843,13 +933,14 @@ class Iface:
   def validateExperiment(self, authzToken, airavataExperimentId):
     """
      *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentId
+     * Validate experiment configuration.
+     * A true in general indicates, the experiment is ready to be launched.
      *
+     * @param airavataExperimentId
+     *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
      *
      * @return boolean
-     *      Identifier for the success or failure of the validation operation
+     *      Identifier for the success or failure of the validation operation.
      *
     *
 
@@ -861,8 +952,12 @@ class Iface:
 
   def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
     """
-    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-      notifications and intermediate and output data will be subsequently available for this experiment.
+
+    Launch a Previously Created & Configured Experiment.
+    Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+    @gatewayId
+       ID of the gateway which will launch the experiment.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
@@ -903,17 +998,18 @@ class Iface:
 
   def getExperimentStatus(self, authzToken, airavataExperimentId):
     """
+
     Get Experiment Status
 
-    Obtain the status os an experiment by providing the Experiment Id
+    Obtain the status of an experiment by providing the Experiment Id
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you require the status
+    @param airavataExperimentId
+        Experiment ID of the experimnet you require the status.
 
     @return ExperimentStatus
-        ExperimentStatus model with current status will be returned.
+        ExperimentStatus model with the current status will be returned.
 
 
 
@@ -925,16 +1021,17 @@ class Iface:
 
   def getExperimentOutputs(self, authzToken, airavataExperimentId):
     """
+
     Get Experiment Outputs
-    This method to be used when need to obtain outputs of a certain Experiment
+    This method to be used when need to obtain final outputs of a certain Experiment
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you need the outputs
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need the outputs.
 
     @return list
-        List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+        List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
 
 
 
@@ -946,16 +1043,17 @@ class Iface:
 
   def getIntermediateOutputs(self, authzToken, airavataExperimentId):
     """
+
     Get Intermediate Experiment Outputs
     This method to be used when need to obtain intermediate outputs of a certain Experiment
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you need the intermediate outputs
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need intermediate outputs.
 
     @return list
-        List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+        List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
 
 
 
@@ -967,13 +1065,14 @@ class Iface:
 
   def getJobStatuses(self, authzToken, airavataExperimentId):
     """
-    Get Job Status for an Experiment
+
+    Get Job Statuses for an Experiment
     This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
 
     @param authzToken
 
     @param experiementId
-        Experiment ID of the experimnet you need the intermediate outputs
+        Experiment ID of the experimnet you need the job statuses.
 
     @return JobStatus
         Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -988,16 +1087,17 @@ class Iface:
 
   def getJobDetails(self, authzToken, airavataExperimentId):
     """
-    Get Job Details for all the jobs within an Experiment
+
+    Get Job Details for all the jobs within an Experiment.
     This method to be used when need to get the job details for one or many jobs of an Experiment.
 
     @param authzToken
 
     @param experiementId
-        Experiment ID of the experimnet you need job details
+        Experiment ID of the experimnet you need job details.
 
     @return list of JobDetails
-        Job details
+        Job details.
 
 
 
@@ -1009,7 +1109,9 @@ class Iface:
 
   def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName):
     """
-    Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+
+    Clone an Existing Experiment
+    Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
       The client has to subsequently update this configuration if needed and launch the cloned experiment.
 
     @param newExperimentName
@@ -1021,7 +1123,7 @@ class Iface:
          should be shared public by default.
 
     @return
-      The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -1056,12 +1158,16 @@ class Iface:
 
   def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
     """
-    Terminate a running experiment.
+
+    Terminate a running Experiment.
+
+    @gatewayId
+       ID of the gateway which will terminate the running Experiment.
 
     @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
+       The identifier of the experiment required termination. This ID is returned during the create experiment step.
 
-    @return
+    @return status
       This method call does not have a return value.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1097,13 +1203,17 @@ class Iface:
 
   def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
     """
+
     Register a Application Module.
 
+    @gatewayId
+       ID of the gateway which is registering the new Application Module.
+
     @param applicationModule
        Application Module Object created from the datamodel.
 
     @return appModuleId
-      Returns a server-side generated airavata appModule globally unique identifier.
+      Returns the server-side generated airavata appModule globally unique identifier.
 
 
     Parameters:
@@ -1115,13 +1225,14 @@ class Iface:
 
   def getApplicationModule(self, authzToken, appModuleId):
     """
+
     Fetch a Application Module.
 
     @param appModuleId
-      The identifier for the requested application module
+      The unique identifier of the application module required
 
     @return applicationModule
-      Returns a application Module Object.
+      Returns an Application Module Object.
 
 
     Parameters:
@@ -1132,6 +1243,7 @@ class Iface:
 
   def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
     """
+
     Update a Application Module.
 
     @param appModuleId
@@ -1153,6 +1265,16 @@ class Iface:
 
   def getAllAppModules(self, authzToken, gatewayId):
     """
+
+    Fetch all Application Module Descriptions.
+
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
+    @return list
+       Returns the list of all Application Module Objects.
+
+
     Parameters:
      - authzToken
      - gatewayId
@@ -1161,10 +1283,11 @@ class Iface:
 
   def deleteApplicationModule(self, authzToken, appModuleId):
     """
-    Delete a Application Module.
+
+    Delete an Application Module.
 
     @param appModuleId
-      The identifier for the requested application module to be deleted.
+      The identifier of the Application Module to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -1178,9 +1301,13 @@ class Iface:
 
   def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
     """
-    Register a Application Deployment.
 
-    @param applicationModule
+    Register an Application Deployment.
+
+    @param gatewayId
+       ID of the gateway which is registering the new Application Deployment.
+
+    @param applicationDeployment
        Application Module Object created from the datamodel.
 
     @return appDeploymentId
@@ -1196,6 +1323,7 @@ class Iface:
 
   def getApplicationDeployment(self, authzToken, appDeploymentId):
     """
+
     Fetch a Application Deployment.
 
     @param appDeploymentId
@@ -1213,10 +1341,11 @@ class Iface:
 
   def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
     """
-    Update a Application Deployment.
+
+    Update an Application Deployment.
 
     @param appDeploymentId
-      The identifier for the requested application deployment to be updated.
+      The identifier of the requested application deployment to be updated.
 
     @param appDeployment
        Application Deployment Object created from the datamodel.
@@ -1234,10 +1363,11 @@ class Iface:
 
   def deleteApplicationDeployment(self, authzToken, appDeploymentId):
     """
-    Delete a Application deployment.
+
+    Delete an Application Deployment.
 
     @param appDeploymentId
-      The identifier for the requested application deployment to be deleted.
+      The unique identifier of application deployment to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -1251,10 +1381,14 @@ class Iface:
 
   def getAllApplicationDeployments(self, authzToken, gatewayId):
     """
+
     Fetch all Application Deployment Descriptions.
 
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
     @return list<applicationDeployment.
-      Returns the list of all application Deployment Objects.
+       Returns the list of all application Deployment Objects.
 
 
     Parameters:
@@ -1282,9 +1416,10 @@ class Iface:
 
   def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
     """
+
     Register a Application Interface.
 
-    @param applicationModule
+    @param applicationInterface
        Application Module Object created from the datamodel.
 
     @return appInterfaceId
@@ -1300,6 +1435,22 @@ class Iface:
 
   def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
     """
+
+    Clone an Application Interface.
+
+    @gatewayId
+       The identifier for the gateway profile to be requested
+
+    @param existingAppInterfaceID
+       Identifier of the existing Application interface you wich to clone.
+
+    @param newApplicationName
+       Name for the new application interface.
+
+    @return appInterfaceId
+       Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
     Parameters:
      - authzToken
      - existingAppInterfaceID
@@ -1310,14 +1461,14 @@ class Iface:
 
   def getApplicationInterface(self, authzToken, appInterfaceId):
     """
-    Fetch a Application Interface.
+
+    Fetch an Application Interface.
 
     @param appInterfaceId
-      The identifier for the requested application module
+      The identifier for the requested application interface.
 
     @return applicationInterface
-      Returns a application Interface Object.
-
+      Returns an application Interface Object.
 
 
     Parameters:
@@ -1328,10 +1479,11 @@ class Iface:
 
   def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
     """
+
     Update a Application Interface.
 
     @param appInterfaceId
-      The identifier for the requested application deployment to be updated.
+      The identifier of the requested application deployment to be updated.
 
     @param appInterface
        Application Interface Object created from the datamodel.
@@ -1340,7 +1492,6 @@ class Iface:
       Returns a success/failure of the update.
 
 
-
     Parameters:
      - authzToken
      - appInterfaceId
@@ -1350,7 +1501,8 @@ class Iface:
 
   def deleteApplicationInterface(self, authzToken, appInterfaceId):
     """
-    Delete a Application Interface.
+
+    Delete an Application Interface.
 
     @param appInterfaceId
       The identifier for the requested application interface to be deleted.
@@ -1359,7 +1511,6 @@ class Iface:
       Returns a success/failure of the deletion.
 
 
-
     Parameters:
      - authzToken
      - appInterfaceId
@@ -1368,11 +1519,12 @@ class Iface:
 
   def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
     """
-    Fetch name and id of  Application Interface documents.
+
+    Fetch name and ID of  Application Interface documents.
 
 
     @return map<applicationId, applicationInterfaceNames>
-      Returns a list of application interfaces with corresponsing id's
+      Returns a list of application interfaces with corresponsing ID's
 
 
     Parameters:
@@ -1383,11 +1535,12 @@ class Iface:
 
   def getAllApplicationInterfaces(self, authzToken, gatewayId):
     """
+
     Fetch all Application Interface documents.
 
 
     @return map<applicationId, applicationInterfaceNames>
-      Returns a list of application interfaces documents
+      Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
 
 
     Parameters:
@@ -1398,10 +1551,11 @@ class Iface:
 
   def getApplicationInputs(self, authzToken, appInterfaceId):
     """
+
     Fetch the list of Application Inputs.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier of the application interface which need inputs to be fetched.
 
     @return list<application_interface_model.InputDataObjectType>
       Returns a list of application inputs.
@@ -1415,10 +1569,11 @@ class Iface:
 
   def getApplicationOutputs(self, authzToken, appInterfaceId):
     """
-    Fetch the list of Application Outputs.
+
+    Fetch list of Application Outputs.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier of the application interface which need outputs to be fetched.
 
     @return list<application_interface_model.OutputDataObjectType>
       Returns a list of application outputs.
@@ -1432,14 +1587,15 @@ class Iface:
 
   def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
     """
+
     Fetch a list of all deployed Compute Hosts for a given application interfaces.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier for the requested application interface.
 
     @return map<computeResourceId, computeResourceName>
       A map of registered compute resource id's and their corresponding hostnames.
-       Deployments of each modules listed within the interfaces will be listed.
+      Deployments of each modules listed within the interfaces will be listed.
 
 
     Parameters:
@@ -1484,6 +1640,7 @@ class Iface:
 
   def getAllComputeResourceNames(self, authzToken):
     """
+
     Fetch all registered Compute Resources.
 
     @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1582,7 +1739,7 @@ class Iface:
 
   def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
     """
-    Update a Compute Resource.
+    Update a Storage Resource.
 
     @param storageResourceId
       The identifier for the requested compute resource to be updated.
@@ -1606,7 +1763,7 @@ class Iface:
     Delete a Storage Resource.
 
     @param storageResourceId
-      The identifier for the requested compute resource to be deleted.
+      The identifier of the requested compute resource to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -1747,6 +1904,7 @@ class Iface:
 
   def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
     """
+
     Add a UNICORE Job Submission details to a compute resource
      App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
 
@@ -1773,10 +1931,13 @@ class Iface:
 
   def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
     """
+      *
       * This method returns UnicoreJobSubmission object
+      *
       * @param jobSubmissionInterfaceId
       *   The identifier of the JobSubmission Interface to be retrieved.
       *  @return UnicoreJobSubmission instance
+      *
     *
 
     Parameters:
@@ -1787,6 +1948,7 @@ class Iface:
 
   def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
     """
+       *
        * Add a Cloud Job Submission details to a compute resource
        *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
        *
@@ -1801,6 +1963,7 @@ class Iface:
        *
        * @return status
        *   Returns the unique job submission id.
+       *
     *
 
     Parameters:
@@ -1813,6 +1976,7 @@ class Iface:
 
   def getCloudJobSubmission(self, authzToken, jobSubmissionId):
     """
+       *
        * This method returns cloudJobSubmission object
        * @param jobSubmissionInterfaceI
            *   The identifier of the JobSubmission Interface to be retrieved.
@@ -1827,6 +1991,7 @@ class Iface:
 
   def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
     """
+
     Update the given SSH Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -1848,6 +2013,7 @@ class Iface:
 
   def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
     """
+
     Update the cloud Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -1869,6 +2035,7 @@ class Iface:
 
   def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
     """
+
     Update the UNIOCRE Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -1891,6 +2058,7 @@ class Iface:
 
   def addLocalDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, localDataMovement):
     """
+
     Add a Local data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -1922,6 +2090,7 @@ class Iface:
 
   def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
     """
+
     Update the given Local data movement details
 
     @param dataMovementInterfaceId
@@ -1944,7 +2113,8 @@ class Iface:
 
   def getLocalDataMovement(self, authzToken, dataMovementId):
     """
-    This method returns local datamovement object
+
+    This method returns local datamovement object.
 
     @param dataMovementId
       The identifier of the datamovement Interface to be retrieved.
@@ -1961,6 +2131,7 @@ class Iface:
 
   def addSCPDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, scpDataMovement):
     """
+
     Add a SCP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -1988,6 +2159,7 @@ class Iface:
 
   def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
     """
+
     Update the given scp data movement details
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -2027,6 +2199,7 @@ class Iface:
 
   def addUnicoreDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, unicoreDataMovement):
     """
+
     Add a UNICORE data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -2054,6 +2227,7 @@ class Iface:
 
   def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
     """
+
     Update a selected UNICORE data movement details
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -2077,6 +2251,7 @@ class Iface:
 
   def getUnicoreDataMovement(self, authzToken, dataMovementId):
     """
+
     This method returns UNICORE datamovement object
 
     @param dataMovementId
@@ -2094,6 +2269,7 @@ class Iface:
 
   def addGridFTPDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, gridFTPDataMovement):
     """
+
     Add a GridFTP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -2359,7 +2535,7 @@ class Iface:
     Fetch the given Gateway Resource Profile.
 
     @param gatewayID
-      The identifier for the requested gateway resource
+      The identifier for the requested gateway resource.
 
     @return gatewayResourceProfile
        Gateway Resource Profile Object.
@@ -2437,6 +2613,22 @@ class Iface:
 
   def addGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId, storagePreference):
     """
+    Add a Storage Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be added.
+
+    @param storageResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be added to the resource profile.
+
+    @return status
+      Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+       Instead an update should be used.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -2447,6 +2639,7 @@ class Iface:
 
   def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
     """
+
     Fetch a Compute Resource Preference of a registered gateway profile.
 
     @param gatewayID
@@ -2468,6 +2661,19 @@ class Iface:
 
   def getGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId):
     """
+
+    Fetch a Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to request to fetch the particular storage resource preference.
+
+    @param storageResourceId
+      Identifier of the Stprage Preference required to be fetched.
+
+    @return StoragePreference
+      Returns the StoragePreference object.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -2477,6 +2683,7 @@ class Iface:
 
   def getAllGatewayComputeResourcePreferences(self, authzToken, gatewayID):
     """
+
     Fetch all Compute Resource Preferences of a registered gateway profile.
 
     @param gatewayID
@@ -2494,6 +2701,15 @@ class Iface:
 
   def getAllGatewayStoragePreferences(self, authzToken, gatewayID):
     """
+    Fetch all Storage Resource Preferences of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @return StoragePreference
+      Returns the StoragePreference object.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -2502,7 +2718,12 @@ class Iface:
 
   def getAllGatewayResourceProfiles(self, authzToken):
     """
-    Fetch all gateway profiles registered
+
+    Fetch all Gateway Profiles registered
+
+    @return GatewayResourceProfile
+      Returns all the GatewayResourcePrifle list object.
+
 
 
     Parameters:
@@ -2537,6 +2758,21 @@ class Iface:
 
   def updateGatewayStoragePreference(self, authzToken, gatewayID, storageId, storagePreference):
     """
+    Update a Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be updated.
+
+    @param storageId
+      The Storage resource identifier of the one that you want to update
+
+    @param storagePreference
+      The storagePreference object to be updated to the resource profile.
+
+    @return status
+      Returns a success/failure of the updation.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -2568,6 +2804,18 @@ class Iface:
 
   def deleteGatewayStoragePreference(self, authzToken, gatewayID, storageId):
     """
+    Delete the Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be deleted.
+
+    @param storageId
+      ID of the storage preference you want to delete.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -2577,6 +2825,18 @@ class Iface:
 
   def getAllWorkflows(self, authzToken, gatewayId):
     """
+    Delete the Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be deleted.
+
+    @param storageId
+      ID of the storage preference you want to delete.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
     Parameters:
      - authzToken
      - gatewayId
@@ -2585,6 +2845,10 @@ class Iface:
 
   def getWorkflow(self, authzToken, workflowTemplateId):
     """
+
+    API Methods Related for Work-Flow Submission Features.
+
+
     Parameters:
      - authzToken
      - workflowTemplateId
@@ -2635,7 +2899,9 @@ class Iface:
 
   def registerDataResource(self, authzToken, dataResourceModel):
     """
-     * Data Manager Related API Methods
+     *
+     * Data Manager Related API Methods.
+     *
     *
 
     Parameters:
@@ -3152,6 +3418,7 @@ class Client(Iface):
 
   def getAllUserSSHPubKeys(self, authzToken, userName):
     """
+
     Get a Public Key by Providing the Token
 
     @param CredStoreToken
@@ -3203,6 +3470,7 @@ class Client(Iface):
 
   def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
     """
+
     Get all Public Keys of the Gateway
 
     @param CredStoreToken
@@ -3254,6 +3522,7 @@ class Client(Iface):
 
   def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
     """
+
     Delete a Gateway
 
     @param gatewayId
@@ -3305,6 +3574,7 @@ class Client(Iface):
 
   def createProject(self, authzToken, gatewayId, project):
     """
+
     Creates a Project with basic metadata.
        A Project is a container of experiments.
 
@@ -3312,7 +3582,7 @@ class Client(Iface):
        The identifier for the requested gateway.
 
     @param Project
-       The Project Object described in the workspace_model
+       The Project Object described in the workspace_model.
 
 
 
@@ -3359,6 +3629,7 @@ class Client(Iface):
 
   def updateProject(self, authzToken, projectId, updatedProject):
     """
+
     Update an Existing Project
 
     @param projectId
@@ -3412,14 +3683,15 @@ class Client(Iface):
 
   def getProject(self, authzToken, projectId):
     """
+
     Get a Project by ID
-       This method is to obtain a project by providing a projectId
+       This method is to obtain a project by providing a projectId.
 
     @param projectId
-       projectId of the project you require
+       projectId of the project you require.
 
     @return project
-       project data model will be returned
+       project data model will be returned.
 
 
 
@@ -3466,15 +3738,18 @@ class Client(Iface):
 
   def deleteProject(self, authzToken, projectId):
     """
+
     Delete a Project
-       This method is used to delete an existing Project
+       This method is used to delete an existing Project.
 
     @param projectId
-       projectId of the project you want to delete
+       projectId of the project you want to delete.
 
     @return boolean
        Boolean identifier for the success or failure of the deletion operation.
 
+       NOTE: This method is not used within gateways connected with Airavata.
+
 
 
     Parameters:
@@ -3520,20 +3795,21 @@ class Client(Iface):
 
   def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
     """
-    Get all Project by user with pagination. Results will be ordered based
-    on creation time DESC
+
+    Get All User Projects
+    Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
 
     @param gatewayId
        The identifier for the requested gateway.
 
     @param userName
-       The identifier of the user
+       The identifier of the user.
 
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
 
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
 
 
 
@@ -3584,19 +3860,25 @@ class Client(Iface):
 
   def searchProjectsByProjectName(self, authzToken, gatewayId, userName, projectName, limit, offset):
     """
-    Get all Project for user by project name with pagination.Results will be ordered based
-    on creation time DESC
+
+    Search User Projects by Project Name
+    Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
 
     @param gatewayId
-       The identifier for the requested gateway.
+       The unique identifier for the requested gateway.
+
     @param userName
-       The identifier of the user
+       The identifier of the user.
+
     @param projectName
-       The name of the project on which the results to be fetched
+       The name of the project on which the results to be fetched.
+
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
+
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3648,19 +3930,25 @@ class Client(Iface):
 
   def searchProjectsByProjectDesc(self, authzToken, gatewayId, userName, description, limit, offset):
     """
-    Search and get all Projects for user by project description with pagination. Results
-    will be ordered based on creation time DESC
+
+    Search User Projects by Project Description
+    Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
 
     @param gatewayId
-       The identifier for the requested gateway.
+       The unique identifier of the gateway making the request.
+
     @param userName
-       The identifier of the user
+       The identifier of the user.
+
     @param description
-       The description to be matched
+       The description to be matched.
+
     @param limit
-       The amount results to be fetched
+       The amount results to be fetched.
+
     @param offset
-       The starting point of the results to be fetched
+       The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3712,19 +4000,25 @@ class Client(Iface):
 
   def searchExperimentsByName(self, authzToken, gatewayId, userName, expName, limit, offset):
     """
-    Search Experiments by experiment name with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by Name
+    Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user who created the experiments.
+
     @param expName
-          Experiment name to be matched
+          Experiment name to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3776,19 +4070,25 @@ class Client(Iface):
 
   def searchExperimentsByDesc(self, authzToken, gatewayId, userName, description, limit, offset):
     """
-    Search Experiments by experiment name with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search By Experiment Description
+    Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param description
-          Experiment description to be matched
+          Experiment description to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3840,19 +4140,25 @@ class Client(Iface):
 
   def searchExperimentsByApplication(self, authzToken, gatewayId, userName, applicationId, limit, offset):
     """
-    Search Experiments by application id with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search Experiment By the Application
+    Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param applicationId
-          Application id to be matched
+          Application id to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3904,19 +4210,25 @@ class Client(Iface):
 
   def searchExperimentsByStatus(self, authzToken, gatewayId, userName, experimentState, limit, offset):
     """
-    Search Experiments by experiment status with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by Status
+    Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user making the request.
+
     @param experimentState
-          Experiement state to be matched
+          Experiement state to be matched.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -3968,21 +4280,31 @@ class Client(Iface):
 
   def searchExperimentsByCreationTime(self, authzToken, gatewayId, userName, fromTime, toTime, limit, offset):
     """
-    Search Experiments by experiment creation time with pagination. Results will be sorted
-    based on creation time DESC
+
+    Search User Experiments by the Creation Time
+    This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested user.
+
     @param fromTime
-          Start time of the experiments creation time
+          Start time of the experiments creation time.
+
     @param toTime
-          End time of the  experiement creation time
+          End time of the  experiement creation time.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
+    @return ExperimentSummaryModel
+       List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
 
 
     Parameters:
@@ -4036,19 +4358,27 @@ class Client(Iface):
 
   def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
     """
-    Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-    based on creation time DESC
+    Search Experiments.
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requested gateway
+          Identifier of the requested gateway.
+
     @param userName
-          Username of the requested user
+          Username of the user requesting the search function.
+
     @param filters
-          map of multiple filter criteria.
+          Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
+    @return ExperimentSummaryModel
+       List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
 
 
     Parameters:
@@ -4100,13 +4430,19 @@ class Client(Iface):
 
   def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime):
     """
-    Get Experiment Statisitics for the given gateway for a specific time period
+
+    Get Experiment Statistics
+    Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
     @param gatewayId
-          Identifier of the requested gateway
+          Unique identifier of the gateway making the request to fetch statistics.
+
     @param fromTime
-          Starting date time
+          Starting date time.
+
     @param toTime
-          Ending data time
+          Ending data time.
+
 
 
     Parameters:
@@ -4154,15 +4490,19 @@ class Client(Iface):
 
   def getExperimentsInProject(self, authzToken, projectId, limit, offset):
     """
-    Get Experiments within project with pagination. Results will be sorted
-    based on creation time DESC
+
+    Get All Experiments of the Project
+    Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
 
     @param projectId
-          Identifier of the project
+          Uniqie identifier of the project.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -4212,17 +4552,22 @@ class Client(Iface):
 
   def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
     """
-    Get experiments by user with pagination. Results will be sorted
-    based on creation time DESC
+
+    Get All Experiments of the User
+    Get experiments by user with pagination. Results will be sorted based on creation time DESC.
 
     @param gatewayId
-          Identifier of the requesting gateway
+          Identifier of the requesting gateway.
+
     @param userName
-          Username of the requested user
+          Username of the requested end user.
+
     @param limit
-          Amount of results to be fetched
+          Amount of results to be fetched.
+
     @param offset
-          The starting point of the results to be fetched
+          The starting point of the results to be fetched.
+
 
 
     Parameters:
@@ -4272,12 +4617,17 @@ class Client(Iface):
 
   def createExperiment(self, authzToken, gatewayId, experiment):
     """
+      *
+      * Create New Experiment
       * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
       *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
       *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
       *   registering the experiment in a persistent store.
       *
-      * @param basicExperimentMetadata
+      * @param gatewayId
+      *    The unique ID of the gateway where the experiment is been created.
+      *
+      * @param ExperimentModel
       *    The create experiment will require the basic experiment metadata like the name and description, intended user,
       *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
       *      the ExperimentMetadata is a required field.
@@ -4350,8 +4700,8 @@ class Client(Iface):
 
   def deleteExperiment(self, authzToken, experimentId):
     """
-    Delete an Experiment
 
+    Delete an Experiment
     If the experiment is not already launched experiment can be deleted.
 
     @param authzToken
@@ -4360,7 +4710,7 @@ class Client(Iface):
         Experiment ID of the experimnet you want to delete.
 
     @return boolean
-        Identifier for the success or failure of the deletion operation
+        Identifier for the success or failure of the deletion operation.
 
 
 
@@ -4405,12 +4755,14 @@ class Client(Iface):
 
   def getExperiment(self, authzToken, airavataExperimentId):
     """
+      *
+      * Get Experiment
       * Fetch previously created experiment metadata.
       *
       * @param airavataExperimentId
-      *    The identifier for the requested experiment. This is returned during the create experiment step.
+      *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
       *
-      * @return experimentMetada
+      * @return ExperimentModel
       *   This method will return the previously stored experiment metadata.
       *
       * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -4481,14 +4833,17 @@ class Client(Iface):
 
   def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
     """
+
+    Get Complete Experiment Details
     Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
     tasks -> jobs information.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @return experimentMetada
-      This method will return the previously stored experiment metadata.
+    @return ExperimentModel
+      This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+      information, special input output handling and additional quality of service parameters.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -4557,14 +4912,15 @@ class Client(Iface):
 
   def updateExperiment(self, authzToken, airavataExperimentId, experiment):
     """
-    Configure a previously created experiment with required inputs, scheduling and other quality of service
-      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-      to make it actionable by the server.
+
+    Update a Previously Created Experiment
+    Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+    The experiment has to be launched to make it actionable by the server.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
 
-    @param experimentConfigurationData
+    @param ExperimentModel
        The configuration information of the experiment with application input parameters, computational resource scheduling
          information, special input output handling and additional quality of service parameters.
 
@@ -4709,13 +5065,14 @@ class Client(Iface):
   def validateExperiment(self, authzToken, airavataExperimentId):
     """
      *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentId
+     * Validate experiment configuration.
+     * A true in general indicates, the experiment is ready to be launched.
      *
+     * @param airavataExperimentId
+     *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
      *
      * @return boolean
-     *      Identifier for the success or failure of the validation operation
+     *      Identifier for the success or failure of the validation operation.
      *
     *
 
@@ -4762,8 +5119,12 @@ class Client(Iface):
 
   def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
     """
-    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-      notifications and intermediate and output data will be subsequently available for this experiment.
+
+    Launch a Previously Created & Configured Experiment.
+    Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+    @gatewayId
+       ID of the gateway which will launch the experiment.
 
     @param airavataExperimentId
        The identifier for the requested experiment. This is returned during the create experiment step.
@@ -4838,17 +5199,18 @@ class Client(Iface):
 
   def getExperimentStatus(self, authzToken, airavataExperimentId):
     """
+
     Get Experiment Status
 
-    Obtain the status os an experiment by providing the Experiment Id
+    Obtain the status of an experiment by providing the Experiment Id
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you require the status
+    @param airavataExperimentId
+        Experiment ID of the experimnet you require the status.
 
     @return ExperimentStatus
-        ExperimentStatus model with current status will be returned.
+        ExperimentStatus model with the current status will be returned.
 
 
 
@@ -4895,16 +5257,17 @@ class Client(Iface):
 
   def getExperimentOutputs(self, authzToken, airavataExperimentId):
     """
+
     Get Experiment Outputs
-    This method to be used when need to obtain outputs of a certain Experiment
+    This method to be used when need to obtain final outputs of a certain Experiment
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you need the outputs
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need the outputs.
 
     @return list
-        List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+        List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
 
 
 
@@ -4951,16 +5314,17 @@ class Client(Iface):
 
   def getIntermediateOutputs(self, authzToken, airavataExperimentId):
     """
+
     Get Intermediate Experiment Outputs
     This method to be used when need to obtain intermediate outputs of a certain Experiment
 
     @param authzToken
 
-    @param experiementId
-        Experiment ID of the experimnet you need the intermediate outputs
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need intermediate outputs.
 
     @return list
-        List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+        List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
 
 
 
@@ -5007,13 +5371,14 @@ class Client(Iface):
 
   def getJobStatuses(self, authzToken, airavataExperimentId):
     """
-    Get Job Status for an Experiment
+
+    Get Job Statuses for an Experiment
     This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
 
     @param authzToken
 
     @param experiementId
-        Experiment ID of the experimnet you need the intermediate outputs
+        Experiment ID of the experimnet you need the job statuses.
 
     @return JobStatus
         Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -5063,16 +5428,17 @@ class Client(Iface):
 
   def getJobDetails(self, authzToken, airavataExperimentId):
     """
-    Get Job Details for all the jobs within an Experiment
+
+    Get Job Details for all the jobs within an Experiment.
     This method to be used when need to get the job details for one or many jobs of an Experiment.
 
     @param authzToken
 
     @param experiementId
-        Experiment ID of the experimnet you need job details
+        Experiment ID of the experimnet you need job details.
 
     @return list of JobDetails
-        Job details
+        Job details.
 
 
 
@@ -5119,7 +5485,9 @@ class Client(Iface):
 
   def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName):
     """
-    Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+
+    Clone an Existing Experiment
+    Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
       The client has to subsequently update this configuration if needed and launch the cloned experiment.
 
     @param newExperimentName
@@ -5131,7 +5499,7 @@ class Client(Iface):
          should be shared public by default.
 
     @return
-      The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
        For any incorrect forming of the request itself.
@@ -5202,12 +5570,16 @@ class Client(Iface):
 
   def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
     """
-    Terminate a running experiment.
+
+    Terminate a running Experiment.
+
+    @gatewayId
+       ID of the gateway which will terminate the running Experiment.
 
     @param airavataExperimentId
-       The identifier for the requested experiment. This is returned during the create experiment step.
+       The identifier of the experiment required termination. This ID is returned during the create experiment step.
 
-    @return
+    @return status
       This method call does not have a return value.
 
     @throws org.apache.airavata.model.error.InvalidRequestException
@@ -5277,13 +5649,17 @@ class Client(Iface):
 
   def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
     """
+
     Register a Application Module.
 
+    @gatewayId
+       ID of the gateway which is registering the new Application Module.
+
     @param applicationModule
        Application Module Object created from the datamodel.
 
     @return appModuleId
-      Returns a server-side generated airavata appModule globally unique identifier.
+      Returns the server-side generated airavata appModule globally unique identifier.
 
 
     Parameters:
@@ -5329,13 +5705,14 @@ class Client(Iface):
 
   def getApplicationModule(self, authzToken, appModuleId):
     """
+
     Fetch a Application Module.
 
     @param appModuleId
-      The identifier for the requested application module
+      The unique identifier of the application module required
 
     @return applicationModule
-      Returns a application Module Object.
+      Returns an Application Module Object.
 
 
     Parameters:
@@ -5379,6 +5756,7 @@ class Client(Iface):
 
   def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
     """
+
     Update a Application Module.
 
     @param appModuleId
@@ -5434,6 +5812,16 @@ class Client(Iface):
 
   def getAllAppModules(self, authzToken, gatewayId):
     """
+
+    Fetch all Application Module Descriptions.
+
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
+    @return list
+       Returns the list of all Application Module Objects.
+
+
     Parameters:
      - authzToken
      - gatewayId
@@ -5475,10 +5863,11 @@ class Client(Iface):
 
   def deleteApplicationModule(self, authzToken, appModuleId):
     """
-    Delete a Application Module.
+
+    Delete an Application Module.
 
     @param appModuleId
-      The identifier for the requested application module to be deleted.
+      The identifier of the Application Module to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -5525,9 +5914,13 @@ class Client(Iface):
 
   def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
     """
-    Register a Application Deployment.
 
-    @param applicationModule
+    Register an Application Deployment.
+
+    @param gatewayId
+       ID of the gateway which is registering the new Application Deployment.
+
+    @param applicationDeployment
        Application Module Object created from the datamodel.
 
     @return appDeploymentId
@@ -5577,6 +5970,7 @@ class Client(Iface):
 
   def getApplicationDeployment(self, authzToken, appDeploymentId):
     """
+
     Fetch a Application Deployment.
 
     @param appDeploymentId
@@ -5627,10 +6021,11 @@ class Client(Iface):
 
   def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
     """
-    Update a Application Deployment.
+
+    Update an Application Deployment.
 
     @param appDeploymentId
-      The identifier for the requested application deployment to be updated.
+      The identifier of the requested application deployment to be updated.
 
     @param appDeployment
        Application Deployment Object created from the datamodel.
@@ -5682,10 +6077,11 @@ class Client(Iface):
 
   def deleteApplicationDeployment(self, authzToken, appDeploymentId):
     """
-    Delete a Application deployment.
+
+    Delete an Application Deployment.
 
     @param appDeploymentId
-      The identifier for the requested application deployment to be deleted.
+      The unique identifier of application deployment to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -5732,10 +6128,14 @@ class Client(Iface):
 
   def getAllApplicationDeployments(self, authzToken, gatewayId):
     """
+
     Fetch all Application Deployment Descriptions.
 
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
     @return list<applicationDeployment.
-      Returns the list of all application Deployment Objects.
+       Returns the list of all application Deployment Objects.
 
 
     Parameters:
@@ -5829,9 +6229,10 @@ class Client(Iface):
 
   def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
     """
+
     Register a Application Interface.
 
-    @param applicationModule
+    @param applicationInterface
        Application Module Object created from the datamodel.
 
     @return appInterfaceId
@@ -5881,6 +6282,22 @@ class Client(Iface):
 
   def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
     """
+
+    Clone an Application Interface.
+
+    @gatewayId
+       The identifier for the gateway profile to be requested
+
+    @param existingAppInterfaceID
+       Identifier of the existing Application interface you wich to clone.
+
+    @param newApplicationName
+       Name for the new application interface.
+
+    @return appInterfaceId
+       Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
     Parameters:
      - authzToken
      - existingAppInterfaceID
@@ -5926,14 +6343,14 @@ class Client(Iface):
 
   def getApplicationInterface(self, authzToken, appInterfaceId):
     """
-    Fetch a Application Interface.
+
+    Fetch an Application Interface.
 
     @param appInterfaceId
-      The identifier for the requested application module
+      The identifier for the requested application interface.
 
     @return applicationInterface
-      Returns a application Interface Object.
-
+      Returns an application Interface Object.
 
 
     Parameters:
@@ -5977,10 +6394,11 @@ class Client(Iface):
 
   def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
     """
+
     Update a Application Interface.
 
     @param appInterfaceId
-      The identifier for the requested application deployment to be updated.
+      The identifier of the requested application deployment to be updated.
 
     @param appInterface
        Application Interface Object created from the datamodel.
@@ -5989,7 +6407,6 @@ class Client(Iface):
       Returns a success/failure of the update.
 
 
-
     Parameters:
      - authzToken
      - appInterfaceId
@@ -6033,7 +6450,8 @@ class Client(Iface):
 
   def deleteApplicationInterface(self, authzToken, appInterfaceId):
     """
-    Delete a Application Interface.
+
+    Delete an Application Interface.
 
     @param appInterfaceId
       The identifier for the requested application interface to be deleted.
@@ -6042,7 +6460,6 @@ class Client(Iface):
       Returns a success/failure of the deletion.
 
 
-
     Parameters:
      - authzToken
      - appInterfaceId
@@ -6084,11 +6501,12 @@ class Client(Iface):
 
   def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
     """
-    Fetch name and id of  Application Interface documents.
+
+    Fetch name and ID of  Application Interface documents.
 
 
     @return map<applicationId, applicationInterfaceNames>
-      Returns a list of application interfaces with corresponsing id's
+      Returns a list of application interfaces with corresponsing ID's
 
 
     Parameters:
@@ -6132,11 +6550,12 @@ class Client(Iface):
 
   def getAllApplicationInterfaces(self, authzToken, gatewayId):
     """
+
     Fetch all Application Interface documents.
 
 
     @return map<applicationId, applicationInterfaceNames>
-      Returns a list of application interfaces documents
+      Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
 
 
     Parameters:
@@ -6180,10 +6599,11 @@ class Client(Iface):
 
   def getApplicationInputs(self, authzToken, appInterfaceId):
     """
+
     Fetch the list of Application Inputs.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier of the application interface which need inputs to be fetched.
 
     @return list<application_interface_model.InputDataObjectType>
       Returns a list of application inputs.
@@ -6230,10 +6650,11 @@ class Client(Iface):
 
   def getApplicationOutputs(self, authzToken, appInterfaceId):
     """
-    Fetch the list of Application Outputs.
+
+    Fetch list of Application Outputs.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier of the application interface which need outputs to be fetched.
 
     @return list<application_interface_model.OutputDataObjectType>
       Returns a list of application outputs.
@@ -6280,14 +6701,15 @@ class Client(Iface):
 
   def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
     """
+
     Fetch a list of all deployed Compute Hosts for a given application interfaces.
 
     @param appInterfaceId
-      The identifier for the requested application interface
+      The identifier for the requested application interface.
 
     @return map<computeResourceId, computeResourceName>
       A map of registered compute resource id's and their corresponding hostnames.
-       Deployments of each modules listed within the interfaces will be listed.
+      Deployments of each modules listed within the interfaces will be listed.
 
 
     Parameters:
@@ -6431,6 +6853,7 @@ class Client(Iface):
 
   def getAllComputeResourceNames(self, authzToken):
     """
+
     Fetch all registered Compute Resources.
 
     @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -6726,7 +7149,7 @@ class Client(Iface):
 
   def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
     """
-    Update a Compute Resource.
+    Update a Storage Resource.
 
     @param storageResourceId
       The identifier for the requested compute resource to be updated.
@@ -6784,7 +7207,7 @@ class Client(Iface):
     Delete a Storage Resource.
 
     @param storageResourceId
-      The identifier for the requested compute resource to be deleted.
+      The identifier of the requested compute resource to be deleted.
 
     @return status
       Returns a success/failure of the deletion.
@@ -7163,6 +7586,7 @@ class Client(Iface):
 
   def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
     """
+
     Add a UNICORE Job Submission details to a compute resource
      App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
 
@@ -7224,10 +7648,13 @@ class Client(Iface):
 
   def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
     """
+      *
       * This method returns UnicoreJobSubmission object
+      *
       * @param jobSubmissionInterfaceId
       *   The identifier of the JobSubmission Interface to be retrieved.
       *  @return UnicoreJobSubmission instance
+      *
     *
 
     Parameters:
@@ -7271,6 +7698,7 @@ class Client(Iface):
 
   def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
     """
+       *
        * Add a Cloud Job Submission details to a compute resource
        *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
        *
@@ -7285,6 +7713,7 @@ class Client(Iface):
        *
        * @return status
        *   Returns the unique job submission id.
+       *
     *
 
     Parameters:
@@ -7332,6 +7761,7 @@ class Client(Iface):
 
   def getCloudJobSubmission(self, authzToken, jobSubmissionId):
     """
+       *
        * This method returns cloudJobSubmission object
        * @param jobSubmissionInterfaceI
            *   The identifier of the JobSubmission Interface to be retrieved.
@@ -7379,6 +7809,7 @@ class Client(Iface):
 
   def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
     """
+
     Update the given SSH Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -7434,6 +7865,7 @@ class Client(Iface):
 
   def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
     """
+
     Update the cloud Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -7489,6 +7921,7 @@ class Client(Iface):
 
   def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
     """
+
     Update the UNIOCRE Job Submission details
 
     @param jobSubmissionInterfaceId
@@ -7545,6 +7978,7 @@ class Client(Iface):
 
   def addLocalDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, localDataMovement):
     """
+
     Add a Local data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -7612,6 +8046,7 @@ class Client(Iface):
 
   def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
     """
+
     Update the given Local data movement details
 
     @param dataMovementInterfaceId
@@ -7668,7 +8103,8 @@ class Client(Iface):
 
   def getLocalDataMovement(self, authzToken, dataMovementId):
     """
-    This method returns local datamovement object
+
+    This method returns local datamovement object.
 
     @param dataMovementId
       The identifier of the datamovement Interface to be retrieved.
@@ -7718,6 +8154,7 @@ class Client(Iface):
 
   def addSCPDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, scpDataMovement):
     """
+
     Add a SCP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -7781,6 +8218,7 @@ class Client(Iface):
 
   def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
     """
+
     Update the given scp data movement details
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -7887,6 +8325,7 @@ class Client(Iface):
 
   def addUnicoreDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, unicoreDataMovement):
     """
+
     Add a UNICORE data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -7950,6 +8389,7 @@ class Client(Iface):
 
   def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
     """
+
     Update a selected UNICORE data movement details
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -8007,6 +8447,7 @@ class Client(Iface):
 
   def getUnicoreDataMovement(self, authzToken, dataMovementId):
     """
+
     This method returns UNICORE datamovement object
 
     @param dataMovementId
@@ -8057,6 +8498,7 @@ class Client(Iface):
 
   def addGridFTPDataMovementDetails(self, authzToken, resourceId, dataMoveType, priorityOrder, gridFTPDataMovement):
     """
+
     Add a GridFTP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
@@ -8827,7 +9269,7 @@ class Client(Iface):
     Fetch the given Gateway Resource Profile.
 
     @param gatewayID
-      The identifier for the requested gateway resource
+      The identifier for the requested gateway resource.
 
     @return gatewayResourceProfile
        Gateway Resource Profile Object.
@@ -9040,6 +9482,22 @@ class Client(Iface):
 
   def addGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId, storagePreference):
     """
+    Add a Storage Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be added.
+
+    @param storageResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be added to the resource profile.
+
+    @return status
+      Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+       Instead an update should be used.
+
+
     Parameters:
      - authzToken
      - gatewayID
@@ -9085,6 +9543,7 @@ class Client(Iface):
 
   def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
     """
+
     Fetch a Compute Resource Preference of a registered gateway profile.
 
     @param gatewayID
@@ -9140,6 +9599,19 @@ class Client(Iface):
 
   def getGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId):
     """
+
+    Fetch a Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to request to fetch the particular storage resource preference.
+
+    @pa

<TRUNCATED>

[19/50] [abbrv] airavata git commit: Added generated thrift files

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
new file mode 100644
index 0000000..5b5c9fd
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
@@ -0,0 +1,736 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._Fields>, java.io.Serializable, Cloneable, Comparable<PortModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PortModel");
+
+  private static final org.apache.thrift.protocol.TField PORT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("portId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)4);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new PortModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new PortModelTupleSchemeFactory());
+  }
+
+  private String portId; // required
+  private String name; // optional
+  private ComponentStatus status; // optional
+  private String description; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    PORT_ID((short)1, "portId"),
+    NAME((short)2, "name"),
+    STATUS((short)3, "status"),
+    DESCRIPTION((short)4, "description");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // PORT_ID
+          return PORT_ID;
+        case 2: // NAME
+          return NAME;
+        case 3: // STATUS
+          return STATUS;
+        case 4: // DESCRIPTION
+          return DESCRIPTION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.NAME,_Fields.STATUS,_Fields.DESCRIPTION};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.PORT_ID, new org.apache.thrift.meta_data.FieldMetaData("portId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentStatus.class)));
+    tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PortModel.class, metaDataMap);
+  }
+
+  public PortModel() {
+    this.portId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public PortModel(
+    String portId)
+  {
+    this();
+    this.portId = portId;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public PortModel(PortModel other) {
+    if (other.isSetPortId()) {
+      this.portId = other.portId;
+    }
+    if (other.isSetName()) {
+      this.name = other.name;
+    }
+    if (other.isSetStatus()) {
+      this.status = new ComponentStatus(other.status);
+    }
+    if (other.isSetDescription()) {
+      this.description = other.description;
+    }
+  }
+
+  public PortModel deepCopy() {
+    return new PortModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.portId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.name = null;
+    this.status = null;
+    this.description = null;
+  }
+
+  public String getPortId() {
+    return this.portId;
+  }
+
+  public void setPortId(String portId) {
+    this.portId = portId;
+  }
+
+  public void unsetPortId() {
+    this.portId = null;
+  }
+
+  /** Returns true if field portId is set (has been assigned a value) and false otherwise */
+  public boolean isSetPortId() {
+    return this.portId != null;
+  }
+
+  public void setPortIdIsSet(boolean value) {
+    if (!value) {
+      this.portId = null;
+    }
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void unsetName() {
+    this.name = null;
+  }
+
+  /** Returns true if field name is set (has been assigned a value) and false otherwise */
+  public boolean isSetName() {
+    return this.name != null;
+  }
+
+  public void setNameIsSet(boolean value) {
+    if (!value) {
+      this.name = null;
+    }
+  }
+
+  public ComponentStatus getStatus() {
+    return this.status;
+  }
+
+  public void setStatus(ComponentStatus status) {
+    this.status = status;
+  }
+
+  public void unsetStatus() {
+    this.status = null;
+  }
+
+  /** Returns true if field status is set (has been assigned a value) and false otherwise */
+  public boolean isSetStatus() {
+    return this.status != null;
+  }
+
+  public void setStatusIsSet(boolean value) {
+    if (!value) {
+      this.status = null;
+    }
+  }
+
+  public String getDescription() {
+    return this.description;
+  }
+
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  public void unsetDescription() {
+    this.description = null;
+  }
+
+  /** Returns true if field description is set (has been assigned a value) and false otherwise */
+  public boolean isSetDescription() {
+    return this.description != null;
+  }
+
+  public void setDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.description = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PORT_ID:
+      if (value == null) {
+        unsetPortId();
+      } else {
+        setPortId((String)value);
+      }
+      break;
+
+    case NAME:
+      if (value == null) {
+        unsetName();
+      } else {
+        setName((String)value);
+      }
+      break;
+
+    case STATUS:
+      if (value == null) {
+        unsetStatus();
+      } else {
+        setStatus((ComponentStatus)value);
+      }
+      break;
+
+    case DESCRIPTION:
+      if (value == null) {
+        unsetDescription();
+      } else {
+        setDescription((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PORT_ID:
+      return getPortId();
+
+    case NAME:
+      return getName();
+
+    case STATUS:
+      return getStatus();
+
+    case DESCRIPTION:
+      return getDescription();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case PORT_ID:
+      return isSetPortId();
+    case NAME:
+      return isSetName();
+    case STATUS:
+      return isSetStatus();
+    case DESCRIPTION:
+      return isSetDescription();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof PortModel)
+      return this.equals((PortModel)that);
+    return false;
+  }
+
+  public boolean equals(PortModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_portId = true && this.isSetPortId();
+    boolean that_present_portId = true && that.isSetPortId();
+    if (this_present_portId || that_present_portId) {
+      if (!(this_present_portId && that_present_portId))
+        return false;
+      if (!this.portId.equals(that.portId))
+        return false;
+    }
+
+    boolean this_present_name = true && this.isSetName();
+    boolean that_present_name = true && that.isSetName();
+    if (this_present_name || that_present_name) {
+      if (!(this_present_name && that_present_name))
+        return false;
+      if (!this.name.equals(that.name))
+        return false;
+    }
+
+    boolean this_present_status = true && this.isSetStatus();
+    boolean that_present_status = true && that.isSetStatus();
+    if (this_present_status || that_present_status) {
+      if (!(this_present_status && that_present_status))
+        return false;
+      if (!this.status.equals(that.status))
+        return false;
+    }
+
+    boolean this_present_description = true && this.isSetDescription();
+    boolean that_present_description = true && that.isSetDescription();
+    if (this_present_description || that_present_description) {
+      if (!(this_present_description && that_present_description))
+        return false;
+      if (!this.description.equals(that.description))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_portId = true && (isSetPortId());
+    list.add(present_portId);
+    if (present_portId)
+      list.add(portId);
+
+    boolean present_name = true && (isSetName());
+    list.add(present_name);
+    if (present_name)
+      list.add(name);
+
+    boolean present_status = true && (isSetStatus());
+    list.add(present_status);
+    if (present_status)
+      list.add(status);
+
+    boolean present_description = true && (isSetDescription());
+    list.add(present_description);
+    if (present_description)
+      list.add(description);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(PortModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetPortId()).compareTo(other.isSetPortId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPortId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.portId, other.portId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStatus()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.status, other.status);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDescription()).compareTo(other.isSetDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.description, other.description);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("PortModel(");
+    boolean first = true;
+
+    sb.append("portId:");
+    if (this.portId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.portId);
+    }
+    first = false;
+    if (isSetName()) {
+      if (!first) sb.append(", ");
+      sb.append("name:");
+      if (this.name == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.name);
+      }
+      first = false;
+    }
+    if (isSetStatus()) {
+      if (!first) sb.append(", ");
+      sb.append("status:");
+      if (this.status == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.status);
+      }
+      first = false;
+    }
+    if (isSetDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("description:");
+      if (this.description == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.description);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetPortId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'portId' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (status != null) {
+      status.validate();
+    }
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class PortModelStandardSchemeFactory implements SchemeFactory {
+    public PortModelStandardScheme getScheme() {
+      return new PortModelStandardScheme();
+    }
+  }
+
+  private static class PortModelStandardScheme extends StandardScheme<PortModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, PortModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // PORT_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.portId = iprot.readString();
+              struct.setPortIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.name = iprot.readString();
+              struct.setNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // STATUS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.status = new ComponentStatus();
+              struct.status.read(iprot);
+              struct.setStatusIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.description = iprot.readString();
+              struct.setDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, PortModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.portId != null) {
+        oprot.writeFieldBegin(PORT_ID_FIELD_DESC);
+        oprot.writeString(struct.portId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.name != null) {
+        if (struct.isSetName()) {
+          oprot.writeFieldBegin(NAME_FIELD_DESC);
+          oprot.writeString(struct.name);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.status != null) {
+        if (struct.isSetStatus()) {
+          oprot.writeFieldBegin(STATUS_FIELD_DESC);
+          struct.status.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.description != null) {
+        if (struct.isSetDescription()) {
+          oprot.writeFieldBegin(DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.description);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class PortModelTupleSchemeFactory implements SchemeFactory {
+    public PortModelTupleScheme getScheme() {
+      return new PortModelTupleScheme();
+    }
+  }
+
+  private static class PortModelTupleScheme extends TupleScheme<PortModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, PortModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.portId);
+      BitSet optionals = new BitSet();
+      if (struct.isSetName()) {
+        optionals.set(0);
+      }
+      if (struct.isSetStatus()) {
+        optionals.set(1);
+      }
+      if (struct.isSetDescription()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetName()) {
+        oprot.writeString(struct.name);
+      }
+      if (struct.isSetStatus()) {
+        struct.status.write(oprot);
+      }
+      if (struct.isSetDescription()) {
+        oprot.writeString(struct.description);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, PortModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.portId = iprot.readString();
+      struct.setPortIdIsSet(true);
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.name = iprot.readString();
+        struct.setNameIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.status = new ComponentStatus();
+        struct.status.read(iprot);
+        struct.setStatusIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.description = iprot.readString();
+        struct.setDescriptionIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
new file mode 100644
index 0000000..4d25b93
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
@@ -0,0 +1,1050 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, WorkflowModel._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowModel");
+
+  private static final org.apache.thrift.protocol.TField TEMPLATE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("templateId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField GRAPH_FIELD_DESC = new org.apache.thrift.protocol.TField("graph", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField IMAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("image", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField WORKFLOW_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowInputs", org.apache.thrift.protocol.TType.LIST, (short)5);
+  private static final org.apache.thrift.protocol.TField WORKFLOW_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowOutputs", org.apache.thrift.protocol.TType.LIST, (short)6);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new WorkflowModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new WorkflowModelTupleSchemeFactory());
+  }
+
+  private String templateId; // required
+  private String name; // required
+  private String graph; // required
+  private ByteBuffer image; // optional
+  private List<org.apache.airavata.model.application.io.InputDataObjectType> workflowInputs; // optional
+  private List<org.apache.airavata.model.application.io.OutputDataObjectType> workflowOutputs; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    TEMPLATE_ID((short)1, "templateId"),
+    NAME((short)2, "name"),
+    GRAPH((short)3, "graph"),
+    IMAGE((short)4, "image"),
+    WORKFLOW_INPUTS((short)5, "workflowInputs"),
+    WORKFLOW_OUTPUTS((short)6, "workflowOutputs");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // TEMPLATE_ID
+          return TEMPLATE_ID;
+        case 2: // NAME
+          return NAME;
+        case 3: // GRAPH
+          return GRAPH;
+        case 4: // IMAGE
+          return IMAGE;
+        case 5: // WORKFLOW_INPUTS
+          return WORKFLOW_INPUTS;
+        case 6: // WORKFLOW_OUTPUTS
+          return WORKFLOW_OUTPUTS;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.IMAGE,_Fields.WORKFLOW_INPUTS,_Fields.WORKFLOW_OUTPUTS};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.TEMPLATE_ID, new org.apache.thrift.meta_data.FieldMetaData("templateId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GRAPH, new org.apache.thrift.meta_data.FieldMetaData("graph", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.IMAGE, new org.apache.thrift.meta_data.FieldMetaData("image", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    tmpMap.put(_Fields.WORKFLOW_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.InputDataObjectType.class))));
+    tmpMap.put(_Fields.WORKFLOW_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("workflowOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WorkflowModel.class, metaDataMap);
+  }
+
+  public WorkflowModel() {
+    this.templateId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public WorkflowModel(
+    String templateId,
+    String name,
+    String graph)
+  {
+    this();
+    this.templateId = templateId;
+    this.name = name;
+    this.graph = graph;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public WorkflowModel(WorkflowModel other) {
+    if (other.isSetTemplateId()) {
+      this.templateId = other.templateId;
+    }
+    if (other.isSetName()) {
+      this.name = other.name;
+    }
+    if (other.isSetGraph()) {
+      this.graph = other.graph;
+    }
+    if (other.isSetImage()) {
+      this.image = org.apache.thrift.TBaseHelper.copyBinary(other.image);
+    }
+    if (other.isSetWorkflowInputs()) {
+      List<org.apache.airavata.model.application.io.InputDataObjectType> __this__workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(other.workflowInputs.size());
+      for (org.apache.airavata.model.application.io.InputDataObjectType other_element : other.workflowInputs) {
+        __this__workflowInputs.add(new org.apache.airavata.model.application.io.InputDataObjectType(other_element));
+      }
+      this.workflowInputs = __this__workflowInputs;
+    }
+    if (other.isSetWorkflowOutputs()) {
+      List<org.apache.airavata.model.application.io.OutputDataObjectType> __this__workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(other.workflowOutputs.size());
+      for (org.apache.airavata.model.application.io.OutputDataObjectType other_element : other.workflowOutputs) {
+        __this__workflowOutputs.add(new org.apache.airavata.model.application.io.OutputDataObjectType(other_element));
+      }
+      this.workflowOutputs = __this__workflowOutputs;
+    }
+  }
+
+  public WorkflowModel deepCopy() {
+    return new WorkflowModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.templateId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.name = null;
+    this.graph = null;
+    this.image = null;
+    this.workflowInputs = null;
+    this.workflowOutputs = null;
+  }
+
+  public String getTemplateId() {
+    return this.templateId;
+  }
+
+  public void setTemplateId(String templateId) {
+    this.templateId = templateId;
+  }
+
+  public void unsetTemplateId() {
+    this.templateId = null;
+  }
+
+  /** Returns true if field templateId is set (has been assigned a value) and false otherwise */
+  public boolean isSetTemplateId() {
+    return this.templateId != null;
+  }
+
+  public void setTemplateIdIsSet(boolean value) {
+    if (!value) {
+      this.templateId = null;
+    }
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void unsetName() {
+    this.name = null;
+  }
+
+  /** Returns true if field name is set (has been assigned a value) and false otherwise */
+  public boolean isSetName() {
+    return this.name != null;
+  }
+
+  public void setNameIsSet(boolean value) {
+    if (!value) {
+      this.name = null;
+    }
+  }
+
+  public String getGraph() {
+    return this.graph;
+  }
+
+  public void setGraph(String graph) {
+    this.graph = graph;
+  }
+
+  public void unsetGraph() {
+    this.graph = null;
+  }
+
+  /** Returns true if field graph is set (has been assigned a value) and false otherwise */
+  public boolean isSetGraph() {
+    return this.graph != null;
+  }
+
+  public void setGraphIsSet(boolean value) {
+    if (!value) {
+      this.graph = null;
+    }
+  }
+
+  public byte[] getImage() {
+    setImage(org.apache.thrift.TBaseHelper.rightSize(image));
+    return image == null ? null : image.array();
+  }
+
+  public ByteBuffer bufferForImage() {
+    return org.apache.thrift.TBaseHelper.copyBinary(image);
+  }
+
+  public void setImage(byte[] image) {
+    this.image = image == null ? (ByteBuffer)null : ByteBuffer.wrap(Arrays.copyOf(image, image.length));
+  }
+
+  public void setImage(ByteBuffer image) {
+    this.image = org.apache.thrift.TBaseHelper.copyBinary(image);
+  }
+
+  public void unsetImage() {
+    this.image = null;
+  }
+
+  /** Returns true if field image is set (has been assigned a value) and false otherwise */
+  public boolean isSetImage() {
+    return this.image != null;
+  }
+
+  public void setImageIsSet(boolean value) {
+    if (!value) {
+      this.image = null;
+    }
+  }
+
+  public int getWorkflowInputsSize() {
+    return (this.workflowInputs == null) ? 0 : this.workflowInputs.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.application.io.InputDataObjectType> getWorkflowInputsIterator() {
+    return (this.workflowInputs == null) ? null : this.workflowInputs.iterator();
+  }
+
+  public void addToWorkflowInputs(org.apache.airavata.model.application.io.InputDataObjectType elem) {
+    if (this.workflowInputs == null) {
+      this.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>();
+    }
+    this.workflowInputs.add(elem);
+  }
+
+  public List<org.apache.airavata.model.application.io.InputDataObjectType> getWorkflowInputs() {
+    return this.workflowInputs;
+  }
+
+  public void setWorkflowInputs(List<org.apache.airavata.model.application.io.InputDataObjectType> workflowInputs) {
+    this.workflowInputs = workflowInputs;
+  }
+
+  public void unsetWorkflowInputs() {
+    this.workflowInputs = null;
+  }
+
+  /** Returns true if field workflowInputs is set (has been assigned a value) and false otherwise */
+  public boolean isSetWorkflowInputs() {
+    return this.workflowInputs != null;
+  }
+
+  public void setWorkflowInputsIsSet(boolean value) {
+    if (!value) {
+      this.workflowInputs = null;
+    }
+  }
+
+  public int getWorkflowOutputsSize() {
+    return (this.workflowOutputs == null) ? 0 : this.workflowOutputs.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.application.io.OutputDataObjectType> getWorkflowOutputsIterator() {
+    return (this.workflowOutputs == null) ? null : this.workflowOutputs.iterator();
+  }
+
+  public void addToWorkflowOutputs(org.apache.airavata.model.application.io.OutputDataObjectType elem) {
+    if (this.workflowOutputs == null) {
+      this.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>();
+    }
+    this.workflowOutputs.add(elem);
+  }
+
+  public List<org.apache.airavata.model.application.io.OutputDataObjectType> getWorkflowOutputs() {
+    return this.workflowOutputs;
+  }
+
+  public void setWorkflowOutputs(List<org.apache.airavata.model.application.io.OutputDataObjectType> workflowOutputs) {
+    this.workflowOutputs = workflowOutputs;
+  }
+
+  public void unsetWorkflowOutputs() {
+    this.workflowOutputs = null;
+  }
+
+  /** Returns true if field workflowOutputs is set (has been assigned a value) and false otherwise */
+  public boolean isSetWorkflowOutputs() {
+    return this.workflowOutputs != null;
+  }
+
+  public void setWorkflowOutputsIsSet(boolean value) {
+    if (!value) {
+      this.workflowOutputs = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case TEMPLATE_ID:
+      if (value == null) {
+        unsetTemplateId();
+      } else {
+        setTemplateId((String)value);
+      }
+      break;
+
+    case NAME:
+      if (value == null) {
+        unsetName();
+      } else {
+        setName((String)value);
+      }
+      break;
+
+    case GRAPH:
+      if (value == null) {
+        unsetGraph();
+      } else {
+        setGraph((String)value);
+      }
+      break;
+
+    case IMAGE:
+      if (value == null) {
+        unsetImage();
+      } else {
+        setImage((ByteBuffer)value);
+      }
+      break;
+
+    case WORKFLOW_INPUTS:
+      if (value == null) {
+        unsetWorkflowInputs();
+      } else {
+        setWorkflowInputs((List<org.apache.airavata.model.application.io.InputDataObjectType>)value);
+      }
+      break;
+
+    case WORKFLOW_OUTPUTS:
+      if (value == null) {
+        unsetWorkflowOutputs();
+      } else {
+        setWorkflowOutputs((List<org.apache.airavata.model.application.io.OutputDataObjectType>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case TEMPLATE_ID:
+      return getTemplateId();
+
+    case NAME:
+      return getName();
+
+    case GRAPH:
+      return getGraph();
+
+    case IMAGE:
+      return getImage();
+
+    case WORKFLOW_INPUTS:
+      return getWorkflowInputs();
+
+    case WORKFLOW_OUTPUTS:
+      return getWorkflowOutputs();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case TEMPLATE_ID:
+      return isSetTemplateId();
+    case NAME:
+      return isSetName();
+    case GRAPH:
+      return isSetGraph();
+    case IMAGE:
+      return isSetImage();
+    case WORKFLOW_INPUTS:
+      return isSetWorkflowInputs();
+    case WORKFLOW_OUTPUTS:
+      return isSetWorkflowOutputs();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof WorkflowModel)
+      return this.equals((WorkflowModel)that);
+    return false;
+  }
+
+  public boolean equals(WorkflowModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_templateId = true && this.isSetTemplateId();
+    boolean that_present_templateId = true && that.isSetTemplateId();
+    if (this_present_templateId || that_present_templateId) {
+      if (!(this_present_templateId && that_present_templateId))
+        return false;
+      if (!this.templateId.equals(that.templateId))
+        return false;
+    }
+
+    boolean this_present_name = true && this.isSetName();
+    boolean that_present_name = true && that.isSetName();
+    if (this_present_name || that_present_name) {
+      if (!(this_present_name && that_present_name))
+        return false;
+      if (!this.name.equals(that.name))
+        return false;
+    }
+
+    boolean this_present_graph = true && this.isSetGraph();
+    boolean that_present_graph = true && that.isSetGraph();
+    if (this_present_graph || that_present_graph) {
+      if (!(this_present_graph && that_present_graph))
+        return false;
+      if (!this.graph.equals(that.graph))
+        return false;
+    }
+
+    boolean this_present_image = true && this.isSetImage();
+    boolean that_present_image = true && that.isSetImage();
+    if (this_present_image || that_present_image) {
+      if (!(this_present_image && that_present_image))
+        return false;
+      if (!this.image.equals(that.image))
+        return false;
+    }
+
+    boolean this_present_workflowInputs = true && this.isSetWorkflowInputs();
+    boolean that_present_workflowInputs = true && that.isSetWorkflowInputs();
+    if (this_present_workflowInputs || that_present_workflowInputs) {
+      if (!(this_present_workflowInputs && that_present_workflowInputs))
+        return false;
+      if (!this.workflowInputs.equals(that.workflowInputs))
+        return false;
+    }
+
+    boolean this_present_workflowOutputs = true && this.isSetWorkflowOutputs();
+    boolean that_present_workflowOutputs = true && that.isSetWorkflowOutputs();
+    if (this_present_workflowOutputs || that_present_workflowOutputs) {
+      if (!(this_present_workflowOutputs && that_present_workflowOutputs))
+        return false;
+      if (!this.workflowOutputs.equals(that.workflowOutputs))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_templateId = true && (isSetTemplateId());
+    list.add(present_templateId);
+    if (present_templateId)
+      list.add(templateId);
+
+    boolean present_name = true && (isSetName());
+    list.add(present_name);
+    if (present_name)
+      list.add(name);
+
+    boolean present_graph = true && (isSetGraph());
+    list.add(present_graph);
+    if (present_graph)
+      list.add(graph);
+
+    boolean present_image = true && (isSetImage());
+    list.add(present_image);
+    if (present_image)
+      list.add(image);
+
+    boolean present_workflowInputs = true && (isSetWorkflowInputs());
+    list.add(present_workflowInputs);
+    if (present_workflowInputs)
+      list.add(workflowInputs);
+
+    boolean present_workflowOutputs = true && (isSetWorkflowOutputs());
+    list.add(present_workflowOutputs);
+    if (present_workflowOutputs)
+      list.add(workflowOutputs);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(WorkflowModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetTemplateId()).compareTo(other.isSetTemplateId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTemplateId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.templateId, other.templateId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetGraph()).compareTo(other.isSetGraph());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGraph()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.graph, other.graph);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetImage()).compareTo(other.isSetImage());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetImage()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.image, other.image);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetWorkflowInputs()).compareTo(other.isSetWorkflowInputs());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetWorkflowInputs()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowInputs, other.workflowInputs);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetWorkflowOutputs()).compareTo(other.isSetWorkflowOutputs());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetWorkflowOutputs()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowOutputs, other.workflowOutputs);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("WorkflowModel(");
+    boolean first = true;
+
+    sb.append("templateId:");
+    if (this.templateId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.templateId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("name:");
+    if (this.name == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.name);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("graph:");
+    if (this.graph == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.graph);
+    }
+    first = false;
+    if (isSetImage()) {
+      if (!first) sb.append(", ");
+      sb.append("image:");
+      if (this.image == null) {
+        sb.append("null");
+      } else {
+        org.apache.thrift.TBaseHelper.toString(this.image, sb);
+      }
+      first = false;
+    }
+    if (isSetWorkflowInputs()) {
+      if (!first) sb.append(", ");
+      sb.append("workflowInputs:");
+      if (this.workflowInputs == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.workflowInputs);
+      }
+      first = false;
+    }
+    if (isSetWorkflowOutputs()) {
+      if (!first) sb.append(", ");
+      sb.append("workflowOutputs:");
+      if (this.workflowOutputs == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.workflowOutputs);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetTemplateId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'templateId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetName()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'name' is unset! Struct:" + toString());
+    }
+
+    if (!isSetGraph()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'graph' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class WorkflowModelStandardSchemeFactory implements SchemeFactory {
+    public WorkflowModelStandardScheme getScheme() {
+      return new WorkflowModelStandardScheme();
+    }
+  }
+
+  private static class WorkflowModelStandardScheme extends StandardScheme<WorkflowModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, WorkflowModel struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // TEMPLATE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.templateId = iprot.readString();
+              struct.setTemplateIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.name = iprot.readString();
+              struct.setNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // GRAPH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.graph = iprot.readString();
+              struct.setGraphIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // IMAGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.image = iprot.readBinary();
+              struct.setImageIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // WORKFLOW_INPUTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list0.size);
+                org.apache.airavata.model.application.io.InputDataObjectType _elem1;
+                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                {
+                  _elem1 = new org.apache.airavata.model.application.io.InputDataObjectType();
+                  _elem1.read(iprot);
+                  struct.workflowInputs.add(_elem1);
+                }
+                iprot.readListEnd();
+              }
+              struct.setWorkflowInputsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // WORKFLOW_OUTPUTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
+                struct.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list3.size);
+                org.apache.airavata.model.application.io.OutputDataObjectType _elem4;
+                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
+                {
+                  _elem4 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+                  _elem4.read(iprot);
+                  struct.workflowOutputs.add(_elem4);
+                }
+                iprot.readListEnd();
+              }
+              struct.setWorkflowOutputsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, WorkflowModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.templateId != null) {
+        oprot.writeFieldBegin(TEMPLATE_ID_FIELD_DESC);
+        oprot.writeString(struct.templateId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.name != null) {
+        oprot.writeFieldBegin(NAME_FIELD_DESC);
+        oprot.writeString(struct.name);
+        oprot.writeFieldEnd();
+      }
+      if (struct.graph != null) {
+        oprot.writeFieldBegin(GRAPH_FIELD_DESC);
+        oprot.writeString(struct.graph);
+        oprot.writeFieldEnd();
+      }
+      if (struct.image != null) {
+        if (struct.isSetImage()) {
+          oprot.writeFieldBegin(IMAGE_FIELD_DESC);
+          oprot.writeBinary(struct.image);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.workflowInputs != null) {
+        if (struct.isSetWorkflowInputs()) {
+          oprot.writeFieldBegin(WORKFLOW_INPUTS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.workflowInputs.size()));
+            for (org.apache.airavata.model.application.io.InputDataObjectType _iter6 : struct.workflowInputs)
+            {
+              _iter6.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.workflowOutputs != null) {
+        if (struct.isSetWorkflowOutputs()) {
+          oprot.writeFieldBegin(WORKFLOW_OUTPUTS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.workflowOutputs.size()));
+            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter7 : struct.workflowOutputs)
+            {
+              _iter7.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class WorkflowModelTupleSchemeFactory implements SchemeFactory {
+    public WorkflowModelTupleScheme getScheme() {
+      return new WorkflowModelTupleScheme();
+    }
+  }
+
+  private static class WorkflowModelTupleScheme extends TupleScheme<WorkflowModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, WorkflowModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.templateId);
+      oprot.writeString(struct.name);
+      oprot.writeString(struct.graph);
+      BitSet optionals = new BitSet();
+      if (struct.isSetImage()) {
+        optionals.set(0);
+      }
+      if (struct.isSetWorkflowInputs()) {
+        optionals.set(1);
+      }
+      if (struct.isSetWorkflowOutputs()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetImage()) {
+        oprot.writeBinary(struct.image);
+      }
+      if (struct.isSetWorkflowInputs()) {
+        {
+          oprot.writeI32(struct.workflowInputs.size());
+          for (org.apache.airavata.model.application.io.InputDataObjectType _iter8 : struct.workflowInputs)
+          {
+            _iter8.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetWorkflowOutputs()) {
+        {
+          oprot.writeI32(struct.workflowOutputs.size());
+          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter9 : struct.workflowOutputs)
+          {
+            _iter9.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, WorkflowModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.templateId = iprot.readString();
+      struct.setTemplateIdIsSet(true);
+      struct.name = iprot.readString();
+      struct.setNameIsSet(true);
+      struct.graph = iprot.readString();
+      struct.setGraphIsSet(true);
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.image = iprot.readBinary();
+        struct.setImageIsSet(true);
+      }
+      if (incoming.get(1)) {
+        {
+          org.apache.thrift.protocol.TList _list10 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.workflowInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list10.size);
+          org.apache.airavata.model.application.io.InputDataObjectType _elem11;
+          for (int _i12 = 0; _i12 < _list10.size; ++_i12)
+          {
+            _elem11 = new org.apache.airavata.model.application.io.InputDataObjectType();
+            _elem11.read(iprot);
+            struct.workflowInputs.add(_elem11);
+          }
+        }
+        struct.setWorkflowInputsIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TList _list13 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.workflowOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list13.size);
+          org.apache.airavata.model.application.io.OutputDataObjectType _elem14;
+          for (int _i15 = 0; _i15 < _list13.size; ++_i15)
+          {
+            _elem14 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+            _elem14.read(iprot);
+            struct.workflowOutputs.add(_elem14);
+          }
+        }
+        struct.setWorkflowOutputsIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowState.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowState.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowState.java
new file mode 100644
index 0000000..5faac14
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowState.java
@@ -0,0 +1,77 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum WorkflowState implements org.apache.thrift.TEnum {
+  CREATED(0),
+  STARTED(1),
+  EXECUTING(2),
+  COMPLETED(3),
+  FAILED(4),
+  CANCELLING(5),
+  CANCELED(6);
+
+  private final int value;
+
+  private WorkflowState(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static WorkflowState findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return CREATED;
+      case 1:
+        return STARTED;
+      case 2:
+        return EXECUTING;
+      case 3:
+        return COMPLETED;
+      case 4:
+        return FAILED;
+      case 5:
+        return CANCELLING;
+      case 6:
+        return CANCELED;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
new file mode 100644
index 0000000..73734fb
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
@@ -0,0 +1,631 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
+public class WorkflowStatus implements org.apache.thrift.TBase<WorkflowStatus, WorkflowStatus._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowStatus> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowStatus");
+
+  private static final org.apache.thrift.protocol.TField STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("state", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField TIME_OF_STATE_CHANGE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeOfStateChange", org.apache.thrift.protocol.TType.I64, (short)2);
+  private static final org.apache.thrift.protocol.TField REASON_FIELD_DESC = new org.apache.thrift.protocol.TField("reason", org.apache.thrift.protocol.TType.STRING, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new WorkflowStatusStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new WorkflowStatusTupleSchemeFactory());
+  }
+
+  private WorkflowState state; // required
+  private long timeOfStateChange; // optional
+  private String reason; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    /**
+     * 
+     * @see WorkflowState
+     */
+    STATE((short)1, "state"),
+    TIME_OF_STATE_CHANGE((short)2, "timeOfStateChange"),
+    REASON((short)3, "reason");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // STATE
+          return STATE;
+        case 2: // TIME_OF_STATE_CHANGE
+          return TIME_OF_STATE_CHANGE;
+        case 3: // REASON
+          return REASON;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __TIMEOFSTATECHANGE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.TIME_OF_STATE_CHANGE,_Fields.REASON};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.STATE, new org.apache.thrift.meta_data.FieldMetaData("state", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, WorkflowState.class)));
+    tmpMap.put(_Fields.TIME_OF_STATE_CHANGE, new org.apache.thrift.meta_data.FieldMetaData("timeOfStateChange", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.REASON, new org.apache.thrift.meta_data.FieldMetaData("reason", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WorkflowStatus.class, metaDataMap);
+  }
+
+  public WorkflowStatus() {
+  }
+
+  public WorkflowStatus(
+    WorkflowState state)
+  {
+    this();
+    this.state = state;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public WorkflowStatus(WorkflowStatus other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetState()) {
+      this.state = other.state;
+    }
+    this.timeOfStateChange = other.timeOfStateChange;
+    if (other.isSetReason()) {
+      this.reason = other.reason;
+    }
+  }
+
+  public WorkflowStatus deepCopy() {
+    return new WorkflowStatus(this);
+  }
+
+  @Override
+  public void clear() {
+    this.state = null;
+    setTimeOfStateChangeIsSet(false);
+    this.timeOfStateChange = 0;
+    this.reason = null;
+  }
+
+  /**
+   * 
+   * @see WorkflowState
+   */
+  public WorkflowState getState() {
+    return this.state;
+  }
+
+  /**
+   * 
+   * @see WorkflowState
+   */
+  public void setState(WorkflowState state) {
+    this.state = state;
+  }
+
+  public void unsetState() {
+    this.state = null;
+  }
+
+  /** Returns true if field state is set (has been assigned a value) and false otherwise */
+  public boolean isSetState() {
+    return this.state != null;
+  }
+
+  public void setStateIsSet(boolean value) {
+    if (!value) {
+      this.state = null;
+    }
+  }
+
+  public long getTimeOfStateChange() {
+    return this.timeOfStateChange;
+  }
+
+  public void setTimeOfStateChange(long timeOfStateChange) {
+    this.timeOfStateChange = timeOfStateChange;
+    setTimeOfStateChangeIsSet(true);
+  }
+
+  public void unsetTimeOfStateChange() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  /** Returns true if field timeOfStateChange is set (has been assigned a value) and false otherwise */
+  public boolean isSetTimeOfStateChange() {
+    return EncodingUtils.testBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  public void setTimeOfStateChangeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID, value);
+  }
+
+  public String getReason() {
+    return this.reason;
+  }
+
+  public void setReason(String reason) {
+    this.reason = reason;
+  }
+
+  public void unsetReason() {
+    this.reason = null;
+  }
+
+  /** Returns true if field reason is set (has been assigned a value) and false otherwise */
+  public boolean isSetReason() {
+    return this.reason != null;
+  }
+
+  public void setReasonIsSet(boolean value) {
+    if (!value) {
+      this.reason = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case STATE:
+      if (value == null) {
+        unsetState();
+      } else {
+        setState((WorkflowState)value);
+      }
+      break;
+
+    case TIME_OF_STATE_CHANGE:
+      if (value == null) {
+        unsetTimeOfStateChange();
+      } else {
+        setTimeOfStateChange((Long)value);
+      }
+      break;
+
+    case REASON:
+      if (value == null) {
+        unsetReason();
+      } else {
+        setReason((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case STATE:
+      return getState();
+
+    case TIME_OF_STATE_CHANGE:
+      return getTimeOfStateChange();
+
+    case REASON:
+      return getReason();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case STATE:
+      return isSetState();
+    case TIME_OF_STATE_CHANGE:
+      return isSetTimeOfStateChange();
+    case REASON:
+      return isSetReason();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof WorkflowStatus)
+      return this.equals((WorkflowStatus)that);
+    return false;
+  }
+
+  public boolean equals(WorkflowStatus that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_state = true && this.isSetState();
+    boolean that_present_state = true && that.isSetState();
+    if (this_present_state || that_present_state) {
+      if (!(this_present_state && that_present_state))
+        return false;
+      if (!this.state.equals(that.state))
+        return false;
+    }
+
+    boolean this_present_timeOfStateChange = true && this.isSetTimeOfStateChange();
+    boolean that_present_timeOfStateChange = true && that.isSetTimeOfStateChange();
+    if (this_present_timeOfStateChange || that_present_timeOfStateChange) {
+      if (!(this_present_timeOfStateChange && that_present_timeOfStateChange))
+        return false;
+      if (this.timeOfStateChange != that.timeOfStateChange)
+        return false;
+    }
+
+    boolean this_present_reason = true && this.isSetReason();
+    boolean that_present_reason = true && that.isSetReason();
+    if (this_present_reason || that_present_reason) {
+      if (!(this_present_reason && that_present_reason))
+        return false;
+      if (!this.reason.equals(that.reason))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_state = true && (isSetState());
+    list.add(present_state);
+    if (present_state)
+      list.add(state.getValue());
+
+    boolean present_timeOfStateChange = true && (isSetTimeOfStateChange());
+    list.add(present_timeOfStateChange);
+    if (present_timeOfStateChange)
+      list.add(timeOfStateChange);
+
+    boolean present_reason = true && (isSetReason());
+    list.add(present_reason);
+    if (present_reason)
+      list.add(reason);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(WorkflowStatus other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetState()).compareTo(other.isSetState());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetState()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.state, other.state);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTimeOfStateChange()).compareTo(other.isSetTimeOfStateChange());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTimeOfStateChange()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.timeOfStateChange, other.timeOfStateChange);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReason()).compareTo(other.isSetReason());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReason()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reason, other.reason);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("WorkflowStatus(");
+    boolean first = true;
+
+    sb.append("state:");
+    if (this.state == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.state);
+    }
+    first = false;
+    if (isSetTimeOfStateChange()) {
+      if (!first) sb.append(", ");
+      sb.append("timeOfStateChange:");
+      sb.append(this.timeOfStateChange);
+      first = false;
+    }
+    if (isSetReason()) {
+      if (!first) sb.append(", ");
+      sb.append("reason:");
+      if (this.reason == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.reason);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetState()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'state' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class WorkflowStatusStandardSchemeFactory implements SchemeFactory {
+    public WorkflowStatusStandardScheme getScheme() {
+      return new WorkflowStatusStandardScheme();
+    }
+  }
+
+  private static class WorkflowStatusStandardScheme extends StandardScheme<WorkflowStatus> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, WorkflowStatus struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // STATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.state = org.apache.airavata.model.WorkflowState.findByValue(iprot.readI32());
+              struct.setStateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // TIME_OF_STATE_CHANGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.timeOfStateChange = iprot.readI64();
+              struct.setTimeOfStateChangeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // REASON
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.reason = iprot.readString();
+              struct.setReasonIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, WorkflowStatus struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.state != null) {
+        oprot.writeFieldBegin(STATE_FIELD_DESC);
+        oprot.writeI32(struct.state.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetTimeOfStateChange()) {
+        oprot.writeFieldBegin(TIME_OF_STATE_CHANGE_FIELD_DESC);
+        oprot.writeI64(struct.timeOfStateChange);
+        oprot.writeFieldEnd();
+      }
+      if (struct.reason != null) {
+        if (struct.isSetReason()) {
+          oprot.writeFieldBegin(REASON_FIELD_DESC);
+          oprot.writeString(struct.reason);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class WorkflowStatusTupleSchemeFactory implements SchemeFactory {
+    public WorkflowStatusTupleScheme getScheme() {
+      return new WorkflowStatusTupleScheme();
+    }
+  }
+
+  private static class WorkflowStatusTupleScheme extends TupleScheme<WorkflowStatus> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, WorkflowStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeI32(struct.state.getValue());
+      BitSet optionals = new BitSet();
+      if (struct.isSetTimeOfStateChange()) {
+        optionals.set(0);
+      }
+      if (struct.isSetReason()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetTimeOfStateChange()) {
+        oprot.writeI64(struct.timeOfStateChange);
+      }
+      if (struct.isSetReason()) {
+        oprot.writeString(struct.reason);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, WorkflowStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.state = org.apache.airavata.model.WorkflowState.findByValue(iprot.readI32());
+      struct.setStateIsSet(true);
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.timeOfStateChange = iprot.readI64();
+        struct.setTimeOfStateChangeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.reason = iprot.readString();
+        struct.setReasonIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
index 01d96ca..afc2676 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *  assigns to the environment variable "NAME" the value
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ApplicationDeploymentDescription implements org.apache.thrift.TBase<ApplicationDeploymentDescription, ApplicationDeploymentDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationDeploymentDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationDeploymentDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97f4ba92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
index d442292..ee692aa 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  *    Descriprion of the Module
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-01")
 public class ApplicationModule implements org.apache.thrift.TBase<ApplicationModule, ApplicationModule._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationModule> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationModule");
 


[36/50] [abbrv] airavata git commit: changing get all ssh credentials per gateway method

Posted by ch...@apache.org.
changing get all ssh credentials per gateway method


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

Branch: refs/heads/master
Commit: fb75a2f7ea8beb53bd91e6bfee6b488e77869b3b
Parents: d2501c3
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Fri Feb 5 11:35:31 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Fri Feb 5 11:35:31 2016 -0500

----------------------------------------------------------------------
 .../airavata/api/server/AiravataAPIServer.java      |  2 +-
 .../api/server/handler/AiravataServerHandler.java   |  3 ++-
 .../store/server/CredentialStoreServerHandler.java  | 13 ++++---------
 .../credential/store/store/CredentialReader.java    |  3 +++
 .../store/store/impl/CredentialReaderImpl.java      | 16 ++++++++++++++++
 5 files changed, 26 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fb75a2f7/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
index 09d4c3f..49ddec7 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
@@ -70,7 +70,7 @@ public class AiravataAPIServer implements IServer{
         try {
             RegistryInitUtil.initializeDB();
             AppCatalogInitUtil.initializeDB();
-            WorkflowCatalogInitUtil.initializeDB();
+//            WorkflowCatalogInitUtil.initializeDB();
             final String serverHost = ServerSettings.getSetting(Constants.API_SERVER_HOST, null);
             if (!ServerSettings.isTLSEnabled()) {
                 final int serverPort = Integer.parseInt(ServerSettings.getSetting(Constants.API_SERVER_PORT, "8930"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb75a2f7/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 78e39d2..8bf0ee1 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -337,8 +337,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             if (csClient == null){
                 csClient = getCredentialStoreServiceClient();
             }
+            Map<String, String> allSSHKeysForGateway = csClient.getAllSSHKeysForGateway(gatewayId);
             logger.info("Airavata retrieved all SSH pub keys for gateway Id : " + gatewayId);
-            return csClient.getAllSSHKeysForGateway(gatewayId);
+            return allSSHKeysForGateway;
         }catch (Exception e){
             logger.error("Error occurred while retrieving SSH public keys for gateway : " + gatewayId , e);
             AiravataSystemException exception = new AiravataSystemException();

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb75a2f7/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/server/CredentialStoreServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/server/CredentialStoreServerHandler.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/server/CredentialStoreServerHandler.java
index d789f64..86b4b64 100644
--- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/server/CredentialStoreServerHandler.java
+++ b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/server/CredentialStoreServerHandler.java
@@ -233,19 +233,14 @@ public class CredentialStoreServerHandler implements CredentialStoreService.Ifac
     public Map<String, String> getAllSSHKeysForGateway(String gatewayId) throws org.apache.airavata.credential.store.exception.CredentialStoreException, TException {
         Map<String, String> sshKeyMap = new HashMap<>();
         try {
-            List<Credential> allCredentials = credentialReader.getAllCredentials();
+            List<Credential> allCredentials = credentialReader.getAllCredentialsPerGateway(gatewayId);
             if (allCredentials != null && !allCredentials.isEmpty()){
                 for (Credential credential : allCredentials) {
                     if (credential instanceof org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential) {
                         org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential sshCredential = (org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential) credential;
-                        String gateway = sshCredential.getGateway();
-                        if (gateway != null){
-                            if (gateway.equals(gatewayId)) {
-                                byte[] publicKey = sshCredential.getPublicKey();
-                                if (publicKey != null) {
-                                    sshKeyMap.put(sshCredential.getToken(), new String(publicKey));
-                                }
-                            }
+                        byte[] publicKey = sshCredential.getPublicKey();
+                        if (publicKey != null) {
+                            sshKeyMap.put(sshCredential.getToken(), new String(publicKey));
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb75a2f7/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/CredentialReader.java
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/CredentialReader.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/CredentialReader.java
index fe54b8e..ab96be4 100644
--- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/CredentialReader.java
+++ b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/CredentialReader.java
@@ -73,6 +73,9 @@ public interface CredentialReader {
      */
     public List<Credential> getAllCredentials() throws CredentialStoreException;
 
+    public List<Credential> getAllCredentialsPerGateway(String gatewayId) throws CredentialStoreException;
+
+    public List<Credential> getAllCredentialsPerUser(String userName) throws CredentialStoreException;
     /**
      * Updates the community user contact email address.
      *

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb75a2f7/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/CredentialReaderImpl.java
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/CredentialReaderImpl.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/CredentialReaderImpl.java
index dc2fd60..a7dded3 100644
--- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/CredentialReaderImpl.java
+++ b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/CredentialReaderImpl.java
@@ -87,6 +87,22 @@ public class CredentialReaderImpl implements CredentialReader, Serializable {
 
     }
 
+    @Override
+    public List<Credential> getAllCredentialsPerGateway(String gatewayId) throws CredentialStoreException {
+        Connection connection = getConnection();
+
+        try {
+            return this.credentialsDAO.getCredentials(gatewayId, connection);
+        } finally {
+            DBUtil.cleanup(connection);
+        }
+    }
+
+    @Override
+    public List<Credential> getAllCredentialsPerUser(String userName) throws CredentialStoreException {
+        return null;
+    }
+
     public String getPortalUser(String gatewayName, String tokenId) throws CredentialStoreException {
 
         Connection connection = getConnection();


[45/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Types.php
index fe337a7..71d3e01 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Types.php
@@ -17,7 +17,45 @@ use Thrift\Protocol\TBinaryProtocolAccelerated;
 use Thrift\Exception\TApplicationException;
 
 
-class Workflow {
+final class WorkflowState {
+  const CREATED = 0;
+  const STARTED = 1;
+  const EXECUTING = 2;
+  const COMPLETED = 3;
+  const FAILED = 4;
+  const CANCELLING = 5;
+  const CANCELED = 6;
+  static public $__names = array(
+    0 => 'CREATED',
+    1 => 'STARTED',
+    2 => 'EXECUTING',
+    3 => 'COMPLETED',
+    4 => 'FAILED',
+    5 => 'CANCELLING',
+    6 => 'CANCELED',
+  );
+}
+
+final class ComponentState {
+  const CREATED = 0;
+  const WAITING = 1;
+  const READY = 2;
+  const RUNNING = 3;
+  const COMPLETED = 4;
+  const FAILED = 5;
+  const CANCELED = 6;
+  static public $__names = array(
+    0 => 'CREATED',
+    1 => 'WAITING',
+    2 => 'READY',
+    3 => 'RUNNING',
+    4 => 'COMPLETED',
+    5 => 'FAILED',
+    6 => 'CANCELED',
+  );
+}
+
+class WorkflowModel {
   static $_TSPEC;
 
   /**
@@ -35,6 +73,14 @@ class Workflow {
   /**
    * @var string
    */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $createdUser = null;
+  /**
+   * @var string
+   */
   public $image = null;
   /**
    * @var \Airavata\Model\Application\Io\InputDataObjectType[]
@@ -44,6 +90,10 @@ class Workflow {
    * @var \Airavata\Model\Application\Io\OutputDataObjectType[]
    */
   public $workflowOutputs = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -61,10 +111,18 @@ class Workflow {
           'type' => TType::STRING,
           ),
         4 => array(
-          'var' => 'image',
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         5 => array(
+          'var' => 'createdUser',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'image',
+          'type' => TType::STRING,
+          ),
+        7 => array(
           'var' => 'workflowInputs',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -73,7 +131,7 @@ class Workflow {
             'class' => '\Airavata\Model\Application\Io\InputDataObjectType',
             ),
           ),
-        6 => array(
+        8 => array(
           'var' => 'workflowOutputs',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -82,6 +140,10 @@ class Workflow {
             'class' => '\Airavata\Model\Application\Io\OutputDataObjectType',
             ),
           ),
+        9 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -94,6 +156,12 @@ class Workflow {
       if (isset($vals['graph'])) {
         $this->graph = $vals['graph'];
       }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['createdUser'])) {
+        $this->createdUser = $vals['createdUser'];
+      }
       if (isset($vals['image'])) {
         $this->image = $vals['image'];
       }
@@ -103,11 +171,14 @@ class Workflow {
       if (isset($vals['workflowOutputs'])) {
         $this->workflowOutputs = $vals['workflowOutputs'];
       }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
     }
   }
 
   public function getName() {
-    return 'Workflow';
+    return 'WorkflowModel';
   }
 
   public function read($input)
@@ -148,12 +219,26 @@ class Workflow {
           break;
         case 4:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->image);
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->createdUser);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->image);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
           if ($ftype == TType::LST) {
             $this->workflowInputs = array();
             $_size0 = 0;
@@ -171,7 +256,7 @@ class Workflow {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 6:
+        case 8:
           if ($ftype == TType::LST) {
             $this->workflowOutputs = array();
             $_size6 = 0;
@@ -189,6 +274,13 @@ class Workflow {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 9:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -201,7 +293,7 @@ class Workflow {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Workflow');
+    $xfer += $output->writeStructBegin('WorkflowModel');
     if ($this->templateId !== null) {
       $xfer += $output->writeFieldBegin('templateId', TType::STRING, 1);
       $xfer += $output->writeString($this->templateId);
@@ -217,8 +309,18 @@ class Workflow {
       $xfer += $output->writeString($this->graph);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 4);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdUser !== null) {
+      $xfer += $output->writeFieldBegin('createdUser', TType::STRING, 5);
+      $xfer += $output->writeString($this->createdUser);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->image !== null) {
-      $xfer += $output->writeFieldBegin('image', TType::STRING, 4);
+      $xfer += $output->writeFieldBegin('image', TType::STRING, 6);
       $xfer += $output->writeString($this->image);
       $xfer += $output->writeFieldEnd();
     }
@@ -226,7 +328,7 @@ class Workflow {
       if (!is_array($this->workflowInputs)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('workflowInputs', TType::LST, 5);
+      $xfer += $output->writeFieldBegin('workflowInputs', TType::LST, 7);
       {
         $output->writeListBegin(TType::STRUCT, count($this->workflowInputs));
         {
@@ -243,7 +345,7 @@ class Workflow {
       if (!is_array($this->workflowOutputs)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('workflowOutputs', TType::LST, 6);
+      $xfer += $output->writeFieldBegin('workflowOutputs', TType::LST, 8);
       {
         $output->writeListBegin(TType::STRUCT, count($this->workflowOutputs));
         {
@@ -256,6 +358,769 @@ class Workflow {
       }
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 9);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class ComponentStatus {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $state =   0;
+  /**
+   * @var string
+   */
+  public $reason = null;
+  /**
+   * @var int
+   */
+  public $timeofStateChange = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'state',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'reason',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'timeofStateChange',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['state'])) {
+        $this->state = $vals['state'];
+      }
+      if (isset($vals['reason'])) {
+        $this->reason = $vals['reason'];
+      }
+      if (isset($vals['timeofStateChange'])) {
+        $this->timeofStateChange = $vals['timeofStateChange'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ComponentStatus';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->state);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->reason);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeofStateChange);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('ComponentStatus');
+    if ($this->state !== null) {
+      $xfer += $output->writeFieldBegin('state', TType::I32, 1);
+      $xfer += $output->writeI32($this->state);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reason !== null) {
+      $xfer += $output->writeFieldBegin('reason', TType::STRING, 2);
+      $xfer += $output->writeString($this->reason);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeofStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeofStateChange', TType::I64, 3);
+      $xfer += $output->writeI64($this->timeofStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class WorkflowStatus {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $state = null;
+  /**
+   * @var int
+   */
+  public $timeOfStateChange = null;
+  /**
+   * @var string
+   */
+  public $reason = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'state',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'timeOfStateChange',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'reason',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['state'])) {
+        $this->state = $vals['state'];
+      }
+      if (isset($vals['timeOfStateChange'])) {
+        $this->timeOfStateChange = $vals['timeOfStateChange'];
+      }
+      if (isset($vals['reason'])) {
+        $this->reason = $vals['reason'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'WorkflowStatus';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->state);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->timeOfStateChange);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->reason);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('WorkflowStatus');
+    if ($this->state !== null) {
+      $xfer += $output->writeFieldBegin('state', TType::I32, 1);
+      $xfer += $output->writeI32($this->state);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timeOfStateChange !== null) {
+      $xfer += $output->writeFieldBegin('timeOfStateChange', TType::I64, 2);
+      $xfer += $output->writeI64($this->timeOfStateChange);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reason !== null) {
+      $xfer += $output->writeFieldBegin('reason', TType::STRING, 3);
+      $xfer += $output->writeString($this->reason);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class EdgeModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $edgeId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var \Airavata\Model\ComponentStatus
+   */
+  public $status = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'edgeId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'status',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\ComponentStatus',
+          ),
+        4 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['edgeId'])) {
+        $this->edgeId = $vals['edgeId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['status'])) {
+        $this->status = $vals['status'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'EdgeModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->edgeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->status = new \Airavata\Model\ComponentStatus();
+            $xfer += $this->status->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('EdgeModel');
+    if ($this->edgeId !== null) {
+      $xfer += $output->writeFieldBegin('edgeId', TType::STRING, 1);
+      $xfer += $output->writeString($this->edgeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 2);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->status !== null) {
+      if (!is_object($this->status)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('status', TType::STRUCT, 3);
+      $xfer += $this->status->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 4);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class PortModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $portId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var \Airavata\Model\ComponentStatus
+   */
+  public $status = null;
+  /**
+   * @var string
+   */
+  public $value = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'portId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'status',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\ComponentStatus',
+          ),
+        4 => array(
+          'var' => 'value',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['portId'])) {
+        $this->portId = $vals['portId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['status'])) {
+        $this->status = $vals['status'];
+      }
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'PortModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->portId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->status = new \Airavata\Model\ComponentStatus();
+            $xfer += $this->status->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('PortModel');
+    if ($this->portId !== null) {
+      $xfer += $output->writeFieldBegin('portId', TType::STRING, 1);
+      $xfer += $output->writeString($this->portId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 2);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->status !== null) {
+      if (!is_object($this->status)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('status', TType::STRUCT, 3);
+      $xfer += $this->status->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::STRING, 4);
+      $xfer += $output->writeString($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 5);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class NodeModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $nodeId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $applicationId = null;
+  /**
+   * @var string
+   */
+  public $applicationName = null;
+  /**
+   * @var \Airavata\Model\ComponentStatus
+   */
+  public $status = null;
+  /**
+   * @var string
+   */
+  public $description = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'nodeId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'applicationId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'applicationName',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'status',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\ComponentStatus',
+          ),
+        6 => array(
+          'var' => 'description',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['nodeId'])) {
+        $this->nodeId = $vals['nodeId'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['applicationId'])) {
+        $this->applicationId = $vals['applicationId'];
+      }
+      if (isset($vals['applicationName'])) {
+        $this->applicationName = $vals['applicationName'];
+      }
+      if (isset($vals['status'])) {
+        $this->status = $vals['status'];
+      }
+      if (isset($vals['description'])) {
+        $this->description = $vals['description'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'NodeModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nodeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->status = new \Airavata\Model\ComponentStatus();
+            $xfer += $this->status->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->description);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('NodeModel');
+    if ($this->nodeId !== null) {
+      $xfer += $output->writeFieldBegin('nodeId', TType::STRING, 1);
+      $xfer += $output->writeString($this->nodeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 2);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationId !== null) {
+      $xfer += $output->writeFieldBegin('applicationId', TType::STRING, 3);
+      $xfer += $output->writeString($this->applicationId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationName !== null) {
+      $xfer += $output->writeFieldBegin('applicationName', TType::STRING, 4);
+      $xfer += $output->writeString($this->applicationName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->status !== null) {
+      if (!is_object($this->status)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('status', TType::STRUCT, 5);
+      $xfer += $this->status->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->description !== null) {
+      $xfer += $output->writeFieldBegin('description', TType::STRING, 6);
+      $xfer += $output->writeString($this->description);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
index 720f50c..f75c290 100755
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
@@ -151,10 +151,10 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('  bool deleteGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
   print('  bool deleteGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId)')
   print('   getAllWorkflows(AuthzToken authzToken, string gatewayId)')
-  print('  Workflow getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+  print('  WorkflowModel getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
   print('  void deleteWorkflow(AuthzToken authzToken, string workflowTemplateId)')
-  print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, Workflow workflow)')
-  print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, Workflow workflow)')
+  print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, WorkflowModel workflow)')
+  print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, WorkflowModel workflow)')
   print('  string getWorkflowTemplateId(AuthzToken authzToken, string workflowName)')
   print('  bool isWorkflowExistWithName(AuthzToken authzToken, string workflowName)')
   print('  string registerDataResource(AuthzToken authzToken, DataResourceModel dataResourceModel)')


[06/50] [abbrv] airavata git commit: Adding API method descriptions to App Catalog Airavata Thrift APIs

Posted by ch...@apache.org.
Adding API  method descriptions to App Catalog Airavata Thrift APIs


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

Branch: refs/heads/master
Commit: ea3380045d73c22ed757e9928d633a3cb2345de0
Parents: 8e421f4
Author: Eroma Abeysinghe <er...@gmail.com>
Authored: Wed Jan 20 00:53:32 2016 -0500
Committer: Eroma Abeysinghe <er...@gmail.com>
Committed: Wed Jan 20 00:53:32 2016 -0500

----------------------------------------------------------------------
 .../airavata-apis/airavata_api.thrift           | 100 ++++++++++++-------
 1 file changed, 64 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ea338004/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index 567fc50..68e145d 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -1037,19 +1037,19 @@ service Airavata {
                       5: airavata_errors.AuthorizationException ae)
 
   /**
-  * Get Job Details for all the jobs within an Experiment
+  *
+  * Get Job Details for all the jobs within an Experiment.
   * This method to be used when need to get the job details for one or many jobs of an Experiment.
   *
   * @param authzToken
   *
   * @param experiementId
-  *     Experiment ID of the experimnet you need job details
+  *     Experiment ID of the experimnet you need job details.
   *
   * @return list of JobDetails
-  *     Job details
+  *     Job details.
   *
   **/
-
   list<job_model.JobModel> getJobDetails(1: required security_model.AuthzToken authzToken,
                                          2: required string airavataExperimentId)
                 throws (1: airavata_errors.InvalidRequestException ire,
@@ -1059,7 +1059,9 @@ service Airavata {
                         5: airavata_errors.AuthorizationException ae)
 
   /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   *
+   * Clone an Existing Experiment
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment. 
    *
    * @param newExperimentName
@@ -1071,7 +1073,7 @@ service Airavata {
    *      should be shared public by default.
    *
    * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -1097,7 +1099,6 @@ service Airavata {
    *       rather an Airavata Administrator will be notified to take corrective action.
    *
   */
-
   string cloneExperiment(1: required security_model.AuthzToken authzToken,
                          2: string existingExperimentID,
                          3: string newExperimentName)
@@ -1108,12 +1109,16 @@ service Airavata {
             5: airavata_errors.AuthorizationException ae)
 
   /**
-   * Terminate a running experiment.
+   *
+   * Terminate a running Experiment.
+   *
+   * @gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
    *
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
    *
-   * @return
+   * @return status
    *   This method call does not have a return value.
    *
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1140,7 +1145,6 @@ service Airavata {
    *       rather an Airavata Administrator will be notified to take corrective action.
    *
   */
-
   void terminateExperiment(1: required security_model.AuthzToken authzToken,
                            2: string airavataExperimentId,
                            3: string gatewayId)
@@ -1151,13 +1155,16 @@ service Airavata {
             5: airavata_errors.AuthorizationException ae)
 
 /*
+ *
  * API definitions for App Catalog related operations
  *
 */
 
 /*
- * Application Module is a specific computational application. Many applications, particularly scientific applications
- *  are really a suite of applications or encompass an ecosystem. For instance, Amber is referred to dozens of binaries.
+ *
+ * Application Module
+ *  A specific computational application. Many applications, particularly scientific applications
+ *  are really a suite of applications or encompass of an ecosystem. For instance, Amber is referred to dozens of binaries.
  *  WRF is referred for an ecosystem of applications. In this context, we refer to module as a single binary.
  *
  * Note: A module has to be defined before a deployment can be registered.
@@ -1165,16 +1172,19 @@ service Airavata {
 */
 
   /**
+   *
    * Register a Application Module.
    *
+   * @gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   *
    * @param applicationModule
    *    Application Module Object created from the datamodel.
    *
    * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *   Returns the server-side generated airavata appModule globally unique identifier.
    *
   */
-
   string registerApplicationModule(1: required security_model.AuthzToken authzToken,
                         2: required string gatewayId,
                         3: required application_deployment_model.ApplicationModule applicationModule)
@@ -1184,16 +1194,16 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch a Application Module.
    *
    * @param appModuleId
-   *   The identifier for the requested application module
+   *   The unique identifier of the application module required
    *
    * @return applicationModule
-   *   Returns a application Module Object.
+   *   Returns an Application Module Object.
    *
   */
-
   application_deployment_model.ApplicationModule getApplicationModule(1: required security_model.AuthzToken authzToken,
                 2: required string appModuleId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1202,6 +1212,7 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Update a Application Module.
    *
    * @param appModuleId
@@ -1214,7 +1225,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
   */
-
   bool updateApplicationModule(1: required security_model.AuthzToken authzToken,
             2: required string appModuleId,
             3: required application_deployment_model.ApplicationModule applicationModule)
@@ -1223,7 +1233,17 @@ service Airavata {
                 3: airavata_errors.AiravataSystemException ase,
                 4: airavata_errors.AuthorizationException ae)
 
-
+  /**
+   *
+   * Fetch all Application Module Descriptions.
+   *
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   *
+   * @return list
+   *    Returns the list of all Application Module Objects.
+   *
+  */
   list<application_deployment_model.ApplicationModule> getAllAppModules (1: required security_model.AuthzToken authzToken,
                 2: required string gatewayId)
         throws (1: airavata_errors.InvalidRequestException ire,
@@ -1232,16 +1252,16 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Delete a Application Module.
+   *
+   * Delete an Application Module.
    *
    * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
+   *   The identifier of the Application Module to be deleted.
    *
    * @return status
    *   Returns a success/failure of the deletion.
    *
   */
-
   bool deleteApplicationModule(1: required security_model.AuthzToken authzToken,
                                2: required string appModuleId)
          	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1250,21 +1270,26 @@ service Airavata {
                    4: airavata_errors.AuthorizationException ae)
 
 /*
- * Application Deployment registers a deployment of a application module on a compute resource
+ *
+ * Application Deployment
+ *  Registers a deployment of an Application Module on a Compute Resource.
  *
 */
 
   /**
-   * Register a Application Deployment.
    *
-   * @param applicationModule
+   * Register an Application Deployment.
+   *
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   *
+   * @param applicationDeployment
    *    Application Module Object created from the datamodel.
    *
    * @return appDeploymentId
    *   Returns a server-side generated airavata appDeployment globally unique identifier.
    *
   */
-
   string registerApplicationDeployment(1: required security_model.AuthzToken authzToken,
                 2: required string gatewayId,
                 3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
@@ -1274,6 +1299,7 @@ service Airavata {
               4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch a Application Deployment.
    *
    * @param appDeploymentId
@@ -1283,7 +1309,6 @@ service Airavata {
    *   Returns a application Deployment Object.
    *
   */
-
   application_deployment_model.ApplicationDeploymentDescription getApplicationDeployment(1: required security_model.AuthzToken authzToken,
                 2: required string appDeploymentId)
       	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1292,10 +1317,11 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Update a Application Deployment.
+   *
+   * Update an Application Deployment.
    *
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    *
    * @param appDeployment
    *    Application Deployment Object created from the datamodel.
@@ -1304,7 +1330,6 @@ service Airavata {
    *   Returns a success/failure of the update.
    *
   */
-
   bool updateApplicationDeployment(1: required security_model.AuthzToken authzToken,
             2: required string appDeploymentId,
             3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
@@ -1314,16 +1339,16 @@ service Airavata {
                 4: airavata_errors.AuthorizationException ae)
 
   /**
-   * Delete a Application deployment.
+   *
+   * Delete an Application Deployment.
    *
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
+   *   The unique identifier of application deployment to be deleted.
    *
    * @return status
    *   Returns a success/failure of the deletion.
    *
   */
-
   bool deleteApplicationDeployment(1: required security_model.AuthzToken authzToken,
                     2: required string appDeploymentId)
          	throws (1: airavata_errors.InvalidRequestException ire,
@@ -1332,13 +1357,16 @@ service Airavata {
                    4: airavata_errors.AuthorizationException ae)
 
   /**
+   *
    * Fetch all Application Deployment Descriptions.
    *
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   *
    * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
+   *    Returns the list of all application Deployment Objects.
    *
   */
-
   list<application_deployment_model.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required security_model.AuthzToken authzToken,
                 2: required string gatewayId)
       	throws (1: airavata_errors.InvalidRequestException ire,


[15/50] [abbrv] airavata git commit: Fixed some compilation issues with workflow-core model

Posted by ch...@apache.org.
Fixed some compilation issues with workflow-core model


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

Branch: refs/heads/master
Commit: b65079a75e8a67d4c48832bcd7a168a0aa3b7d99
Parents: b5d568d
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 12:01:48 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 12:01:48 2016 -0500

----------------------------------------------------------------------
 .../airavata/workflow/core/ProcessContext.java  |  62 -----------
 .../core/SimpleWorkflowInterpreter.java         | 111 +++++++++----------
 .../airavata/workflow/core/WorkflowContext.java |  60 ++++++++++
 .../workflow/core/WorkflowEnactmentService.java |  22 ++--
 .../core/parser/JsonWorkflowParser.java         |  21 ++++
 5 files changed, 140 insertions(+), 136 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
deleted file mode 100644
index cf78f9e..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.workflow.core;
-
-import org.apache.airavata.model.experiment.TaskDetails;
-import org.apache.airavata.model.experiment.WorkflowNodeDetails;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-
-public class ProcessContext {
-    private WorkflowNode workflowNode;
-    private WorkflowNodeDetails wfNodeDetails;
-    private TaskDetails taskDetails;
-
-    public ProcessContext(WorkflowNode workflowNode, WorkflowNodeDetails wfNodeDetails, TaskDetails taskDetails) {
-        this.workflowNode = workflowNode;
-        this.wfNodeDetails = wfNodeDetails;
-        this.taskDetails = taskDetails;
-    }
-
-    public WorkflowNode getWorkflowNode() {
-        return workflowNode;
-    }
-
-    public void setWorkflowNode(WorkflowNode workflowNode) {
-        this.workflowNode = workflowNode;
-    }
-
-    public WorkflowNodeDetails getWfNodeDetails() {
-        return wfNodeDetails;
-    }
-
-    public void setWfNodeDetails(WorkflowNodeDetails wfNodeDetails) {
-        this.wfNodeDetails = wfNodeDetails;
-    }
-
-    public TaskDetails getTaskDetails() {
-        return taskDetails;
-    }
-
-    public void setTaskDetails(TaskDetails taskDetails) {
-        this.taskDetails = taskDetails;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
index 5d00354..defbad4 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
@@ -24,23 +24,15 @@ package org.apache.airavata.workflow.core;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.messaging.core.MessageContext;
-import org.apache.airavata.messaging.core.impl.RabbitMQProcessPublisher;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
-import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
-import org.apache.airavata.model.messaging.event.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.TaskIdentifier;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
-import org.apache.airavata.model.util.ExperimentModelUtil;
-import org.apache.airavata.model.experiment.ExecutionUnit;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.TaskDetails;
-import org.apache.airavata.model.experiment.TaskState;
-import org.apache.airavata.model.experiment.WorkflowNodeDetails;
-import org.apache.airavata.model.experiment.WorkflowNodeState;
-import org.apache.airavata.model.experiment.WorkflowNodeStatus;
+import org.apache.airavata.model.messaging.event.*;
+import org.apache.airavata.model.status.ProcessState;
+import org.apache.airavata.model.util.ExperimentModelUtil;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
+import org.apache.airavata.registry.core.experiment.catalog.model.Experiment;
 import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
@@ -69,7 +61,7 @@ class SimpleWorkflowInterpreter{
     private static final Logger log = LoggerFactory.getLogger(SimpleWorkflowInterpreter.class);
     private List<WorkflowInputNode> workflowInputNodes;
 
-    private Experiment experiment;
+    private ExperimentModel experiment;
 
     private String credentialToken;
 
@@ -77,23 +69,23 @@ class SimpleWorkflowInterpreter{
 
     private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<String, WorkflowNode>();
     private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<String, WorkflowNode>();
-    private Map<String, ProcessContext> processingQueue = new ConcurrentHashMap<String, ProcessContext>();
-    private Map<String, ProcessContext> completeList = new HashMap<String, ProcessContext>();
+    private Map<String, WorkflowContext> processingQueue = new ConcurrentHashMap<String, WorkflowContext>();
+    private Map<String, WorkflowContext> completeList = new HashMap<String, WorkflowContext>();
     private Registry registry;
     private List<WorkflowOutputNode> completeWorkflowOutputs = new ArrayList<WorkflowOutputNode>();
-    private RabbitMQProcessPublisher publisher;
+    private RabbitMQProcessLaunchPublisher publisher;
     private RabbitMQStatusConsumer statusConsumer;
     private String consumerId;
     private boolean continueWorkflow = true;
 
-    public SimpleWorkflowInterpreter(String experimentId, String credentialToken, String gatewayName, RabbitMQProcessPublisher publisher) throws RegistryException {
+    public SimpleWorkflowInterpreter(String experimentId, String credentialToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) throws RegistryException {
         this.gatewayName = gatewayName;
         setExperiment(experimentId);
         this.credentialToken = credentialToken;
         this.publisher = publisher;
     }
 
-    public SimpleWorkflowInterpreter(Experiment experiment, String credentialStoreToken, String gatewayName, RabbitMQProcessPublisher publisher) {
+    public SimpleWorkflowInterpreter(ExperimentModel experiment, String credentialStoreToken, String gatewayName, RabbitMQProcessLaunchPublisher publisher) {
         this.gatewayName = gatewayName;
         this.experiment = experiment;
         this.credentialToken = credentialStoreToken;
@@ -106,7 +98,7 @@ class SimpleWorkflowInterpreter{
      */
     void launchWorkflow() throws Exception {
         WorkflowFactoryImpl wfFactory = WorkflowFactoryImpl.getInstance();
-        WorkflowParser workflowParser = wfFactory.getWorkflowParser(experiment.getExperimentID(), credentialToken);
+        WorkflowParser workflowParser = wfFactory.getWorkflowParser(experiment.getExperimentId(), credentialToken);
         log.debug("Initialized workflow parser");
         setWorkflowInputNodes(workflowParser.parse());
         log.debug("Parsed the workflow and got the workflow input nodes");
@@ -144,8 +136,8 @@ class SimpleWorkflowInterpreter{
             }
             WorkflowNodeDetails workflowNodeDetails = createWorkflowNodeDetails(readyNode);
             TaskDetails process = getProcess(workflowNodeDetails);
-            ProcessContext processContext = new ProcessContext(readyNode, workflowNodeDetails, process);
-            addToProcessingQueue(processContext);
+            WorkflowContext workflowContext = new WorkflowContext(readyNode, workflowNodeDetails, process);
+            addToProcessingQueue(workflowContext);
             publishToProcessQueue(process);
         }
         if (processingQueue.isEmpty()) {
@@ -277,16 +269,16 @@ class SimpleWorkflowInterpreter{
     /**
      * First remove the node from ready list and then add the WfNodeContainer to the process queue.
      * Note that underline data structure of the process queue is a Map.
-     * @param processContext - has both workflow and correspond workflowNodeDetails and TaskDetails
+     * @param workflowContext - has both workflow and correspond workflowNodeDetails and TaskDetails
      */
-    private synchronized void addToProcessingQueue(ProcessContext processContext) {
-        readyList.remove(processContext.getWorkflowNode().getId());
-        processingQueue.put(processContext.getTaskDetails().getTaskID(), processContext);
+    private synchronized void addToProcessingQueue(WorkflowContext workflowContext) {
+        readyList.remove(workflowContext.getWorkflowNode().getId());
+        processingQueue.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
     }
 
-    private synchronized void addToCompleteQueue(ProcessContext processContext) {
-        processingQueue.remove(processContext.getTaskDetails().getTaskID());
-        completeList.put(processContext.getTaskDetails().getTaskID(), processContext);
+    private synchronized void addToCompleteQueue(WorkflowContext workflowContext) {
+        processingQueue.remove(workflowContext.getTaskDetails().getTaskID());
+        completeList.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
     }
 
 
@@ -309,10 +301,10 @@ class SimpleWorkflowInterpreter{
         String taskId = taskOutputChangeEvent.getTaskIdentity().getTaskId();
         log.debug("Task Output changed event received for workflow node : " +
                 taskOutputChangeEvent.getTaskIdentity().getWorkflowNodeId() + ", task : " + taskId);
-        ProcessContext processContext = processingQueue.get(taskId);
+        WorkflowContext workflowContext = processingQueue.get(taskId);
         Set<WorkflowNode> tempWfNodeSet = new HashSet<WorkflowNode>();
-        if (processContext != null) {
-            WorkflowNode workflowNode = processContext.getWorkflowNode();
+        if (workflowContext != null) {
+            WorkflowNode workflowNode = workflowContext.getWorkflowNode();
             if (workflowNode instanceof ApplicationNode) {
                 ApplicationNode applicationNode = (ApplicationNode) workflowNode;
                 // Workflow node can have one to many output ports and each output port can have one to many links
@@ -331,7 +323,7 @@ class SimpleWorkflowInterpreter{
                     }
                 }
             }
-            addToCompleteQueue(processContext);
+            addToCompleteQueue(workflowContext);
             log.debug("removed task from processing queue : " + taskId);
             try {
                 processReadyList();
@@ -342,67 +334,64 @@ class SimpleWorkflowInterpreter{
         }
     }
 
-    void handleTaskStatusChangeEvent(TaskStatusChangeEvent taskStatusChangeEvent) {
-        TaskState taskState = taskStatusChangeEvent.getState();
-        TaskIdentifier taskIdentity = taskStatusChangeEvent.getTaskIdentity();
-        String taskId = taskIdentity.getTaskId();
-        ProcessContext processContext = processingQueue.get(taskId);
-        if (processContext != null) {
+    void handleProcessStatusChangeEvent(ProcessStatusChangeEvent processStatusChangeEvent) {
+        ProcessState processState = processStatusChangeEvent.getState();
+        ProcessIdentifier processIdentity = processStatusChangeEvent.getProcessIdentity();
+        String processId = processIdentity.getProcessId();
+        WorkflowContext workflowContext = processingQueue.get(processId);
+        if (workflowContext != null) {
             WorkflowNodeState wfNodeState = WorkflowNodeState.INVOKED;
-            switch (taskState) {
-                case WAITING:
-                    break;
+            switch (processState) {
+                case CREATED:
+                case VALIDATED:
                 case STARTED:
                     break;
+                case CONFIGURING_WORKSPACE:
+                    wfNodeState = WorkflowNodeState.COMPLETED;
+                    break;
                 case PRE_PROCESSING:
                     wfNodeState = WorkflowNodeState.INVOKED;
-                    processContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
                     break;
                 case INPUT_DATA_STAGING:
                     wfNodeState = WorkflowNodeState.INVOKED;
-                    processContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
                     break;
                 case EXECUTING:
                     wfNodeState = WorkflowNodeState.EXECUTING;
-                    processContext.getWorkflowNode().setState(NodeState.EXECUTING);
+                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTING);
                     break;
                 case OUTPUT_DATA_STAGING:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
                     break;
                 case POST_PROCESSING:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
                     break;
                 case COMPLETED:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.EXECUTED);
+                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTED);
                     break;
                 case FAILED:
                     wfNodeState = WorkflowNodeState.FAILED;
-                    processContext.getWorkflowNode().setState(NodeState.FAILED);
-                    break;
-                case UNKNOWN:
-                    wfNodeState = WorkflowNodeState.UNKNOWN;
-                    break;
-                case CONFIGURING_WORKSPACE:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
+                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
                     break;
                 case CANCELED:
-                case CANCELING:
+                case CANCELLING:
                     wfNodeState = WorkflowNodeState.CANCELED;
-                    processContext.getWorkflowNode().setState(NodeState.FAILED);
+                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
                     break;
                 default:
                     break;
             }
             if (wfNodeState != WorkflowNodeState.UNKNOWN) {
                 try {
-                    updateWorkflowNodeStatus(processContext.getWfNodeDetails(), wfNodeState);
+                    updateWorkflowNodeStatus(workflowContext.getWfNodeDetails(), wfNodeState);
                 } catch (RegistryException e) {
                     log.error("Error while updating workflow node status update to the registry. nodeInstanceId :"
-                            + processContext.getWfNodeDetails().getNodeInstanceId() + " status to: "
-                            + processContext.getWfNodeDetails().getWorkflowNodeStatus().toString() , e);
+                            + workflowContext.getWfNodeDetails().getNodeInstanceId() + " status to: "
+                            + workflowContext.getWfNodeDetails().getWorkflowNodeStatus().toString() , e);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
new file mode 100644
index 0000000..47bd9ca
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.workflow.core;
+
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
+
+public class WorkflowContext {
+    private WorkflowNode workflowNode;
+    private WorkflowNodeDetails wfNodeDetails;
+    private TaskDetails taskDetails;
+
+    public WorkflowContext(WorkflowNode workflowNode, WorkflowNodeDetails wfNodeDetails, TaskDetails taskDetails) {
+        this.workflowNode = workflowNode;
+        this.wfNodeDetails = wfNodeDetails;
+        this.taskDetails = taskDetails;
+    }
+
+    public WorkflowNode getWorkflowNode() {
+        return workflowNode;
+    }
+
+    public void setWorkflowNode(WorkflowNode workflowNode) {
+        this.workflowNode = workflowNode;
+    }
+
+    public WorkflowNodeDetails getWfNodeDetails() {
+        return wfNodeDetails;
+    }
+
+    public void setWfNodeDetails(WorkflowNodeDetails wfNodeDetails) {
+        this.wfNodeDetails = wfNodeDetails;
+    }
+
+    public TaskDetails getTaskDetails() {
+        return taskDetails;
+    }
+
+    public void setTaskDetails(TaskDetails taskDetails) {
+        this.taskDetails = taskDetails;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
index 7795296..8ca0706 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
@@ -26,12 +26,9 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.messaging.core.MessageContext;
 import org.apache.airavata.messaging.core.MessageHandler;
 import org.apache.airavata.messaging.core.MessagingConstants;
-import org.apache.airavata.messaging.core.impl.RabbitMQProcessPublisher;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
-import org.apache.airavata.model.messaging.event.MessageType;
-import org.apache.airavata.model.messaging.event.TaskIdentifier;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -74,7 +71,7 @@ public class WorkflowEnactmentService {
     public void submitWorkflow(String experimentId,
                                   String credentialToken,
                                   String gatewayName,
-                                  RabbitMQProcessPublisher publisher) throws Exception {
+                                  RabbitMQProcessLaunchPublisher publisher) throws Exception {
 
         SimpleWorkflowInterpreter simpleWorkflowInterpreter = new SimpleWorkflowInterpreter(
                 experimentId, credentialToken,gatewayName, publisher);
@@ -129,18 +126,17 @@ public class WorkflowEnactmentService {
         private void process() {
             String message;
             SimpleWorkflowInterpreter simpleWorkflowInterpreter;
-            if (msgCtx.getType() == MessageType.TASK) {
-                TaskStatusChangeEvent event = (TaskStatusChangeEvent) msgCtx.getEvent();
-                TaskIdentifier taskIdentifier = event.getTaskIdentity();
-                simpleWorkflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
+            if (msgCtx.getType() == MessageType.PROCESS) {
+                ProcessStatusChangeEvent event = ((ProcessStatusChangeEvent) msgCtx.getEvent());
+                ProcessIdentifier processIdentity = event.getProcessIdentity();
+                simpleWorkflowInterpreter = getInterpreter(processIdentity.getExperimentId());
                 if (simpleWorkflowInterpreter != null) {
-                    simpleWorkflowInterpreter.handleTaskStatusChangeEvent(event);
+                    simpleWorkflowInterpreter.handleProcessStatusChangeEvent(event);
                 } else {
                     // this happens when Task status messages comes after the Taskoutput messages,as we have worked on
                     // output changes it is ok to ignore this.
                 }
-                message = "Received task output change event , expId : " + taskIdentifier.getExperimentId() + ", taskId : " + taskIdentifier.getTaskId() + ", workflow node Id : " + taskIdentifier.getWorkflowNodeId();
-                log.debug(message);
+
             }else if (msgCtx.getType() == MessageType.TASKOUTPUT) {
                 TaskOutputChangeEvent event = (TaskOutputChangeEvent) msgCtx.getEvent();
                 TaskIdentifier taskIdentifier = event.getTaskIdentity();

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
new file mode 100644
index 0000000..6c839e7
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
@@ -0,0 +1,21 @@
+package org.apache.airavata.workflow.core.parser;
+
+import org.apache.airavata.workflow.core.WorkflowParser;
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
+
+import java.util.List;
+
+/**
+ * Created by syodage on 1/27/16.
+ */
+public class JsonWorkflowParser implements WorkflowParser {
+
+    public JsonWorkflowParser(String workflowDescription) {
+
+    }
+
+    @Override
+    public List<WorkflowInputNode> parse() throws Exception {
+        return null;
+    }
+}


[10/50] [abbrv] airavata git commit: ignoring empty output files when output staging

Posted by ch...@apache.org.
ignoring empty output files when output staging


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

Branch: refs/heads/master
Commit: 462843a47c276806a57bd197400f0664eef13dcd
Parents: d79055a
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Jan 20 14:44:27 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Jan 20 14:44:27 2016 -0500

----------------------------------------------------------------------
 .../apache/airavata/gfac/core/cluster/RemoteCluster.java |  2 +-
 .../org/apache/airavata/gfac/impl/BESRemoteCluster.java  |  2 +-
 .../org/apache/airavata/gfac/impl/HPCRemoteCluster.java  |  6 +++---
 .../apache/airavata/gfac/impl/LocalRemoteCluster.java    |  2 +-
 .../java/org/apache/airavata/gfac/impl/SSHUtils.java     |  4 ++--
 .../apache/airavata/gfac/impl/task/SCPDataStageTask.java | 11 ++---------
 .../apache/airavata/gfac/impl/task/utils/StreamData.java |  2 +-
 7 files changed, 11 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RemoteCluster.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RemoteCluster.java
index 9e4544c..f50d660 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RemoteCluster.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RemoteCluster.java
@@ -70,7 +70,7 @@ public interface RemoteCluster { // FIXME: replace SSHApiException with suitable
      * @param inOrOut direction to file transfer , to the remote cluster(DIRECTION.IN) or from the remote cluster(DIRECTION.OUT)
 	 *
 	 */
-	public void scpThirdParty(String sourceFile, String destinationFile ,Session session , DIRECTION inOrOut) throws SSHApiException;
+	public void scpThirdParty(String sourceFile, String destinationFile ,Session session , DIRECTION inOrOut, boolean ignoreEmptyFile) throws SSHApiException;
 
 	/**
 	 * This will create directories in computing resources

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/BESRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/BESRemoteCluster.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/BESRemoteCluster.java
index 1e41eda..0dd69fe 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/BESRemoteCluster.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/BESRemoteCluster.java
@@ -52,7 +52,7 @@ public class BESRemoteCluster extends AbstractRemoteCluster{
     }
 
     @Override
-    public void scpThirdParty(String sourceFile, String destinationFile, Session session, DIRECTION inOrOut) throws SSHApiException {
+    public void scpThirdParty(String sourceFile, String destinationFile, Session session, DIRECTION inOrOut, boolean ignoreEmptyFile) throws SSHApiException {
 
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
index 022c8bc..d4988b5 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
@@ -165,16 +165,16 @@ public class HPCRemoteCluster extends AbstractRemoteCluster{
 	}
 
 	@Override
-	public void scpThirdParty(String sourceFile, String destinationFile, Session clientSession, DIRECTION direction) throws SSHApiException {
+	public void scpThirdParty(String sourceFile, String destinationFile, Session clientSession, DIRECTION direction, boolean ignoreEmptyFile) throws SSHApiException {
 		try {
 			if(!session.isConnected()){
 				session = getOpenSession();
 			}
 			log.info("Transferring from:" + sourceFile + " To: " + destinationFile);
             if (direction == DIRECTION.TO) {
-                SSHUtils.scpThirdParty(sourceFile, clientSession, destinationFile, session);
+                SSHUtils.scpThirdParty(sourceFile, clientSession, destinationFile, session, ignoreEmptyFile);
             } else {
-                SSHUtils.scpThirdParty(sourceFile, session, destinationFile, clientSession);
+                SSHUtils.scpThirdParty(sourceFile, session, destinationFile, clientSession, ignoreEmptyFile);
             }
         } catch (IOException | JSchException e) {
 			throw new SSHApiException("Failed scp file:" + sourceFile + " to remote file "

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/LocalRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/LocalRemoteCluster.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/LocalRemoteCluster.java
index d1aa6e0..1bab250 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/LocalRemoteCluster.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/LocalRemoteCluster.java
@@ -71,7 +71,7 @@ public class LocalRemoteCluster extends AbstractRemoteCluster {
     }
 
     @Override
-    public void scpThirdParty(String sourceFile, String destinationFile, Session session, DIRECTION inOrOut) throws SSHApiException {
+    public void scpThirdParty(String sourceFile, String destinationFile, Session session, DIRECTION inOrOut, boolean ignoreEmptyFile) throws SSHApiException {
         throw new UnsupportedOperationException("Scp third party is not support with LocalRemoteCluster");
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
index 2281ebc..a8e1017 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/SSHUtils.java
@@ -272,7 +272,7 @@ public class SSHUtils {
      * @param destinationSession JSch Session for target
      * @return returns the final local file path of the new file came from the remote resource
      */
-    public static void scpThirdParty(String sourceFile, Session sourceSession, String destinationFile, Session destinationSession) throws
+    public static void scpThirdParty(String sourceFile, Session sourceSession, String destinationFile, Session destinationSession, boolean ignoreEmptyFile) throws
             IOException, JSchException {
         OutputStream sout = null;
         InputStream sin = null;
@@ -346,7 +346,7 @@ public class SSHUtils {
                         break;
                     }
                 }
-                if (fileSize == 0L){
+                if (fileSize == 0L && !ignoreEmptyFile){
                     String error = "Input file is empty...";
                     log.error(error);
                     throw new JSchException(error);

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index 605b972..71f689a 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@ -25,16 +25,10 @@ import com.jcraft.jsch.Session;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ThriftUtils;
-import org.apache.airavata.credential.store.credential.Credential;
-import org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential;
-import org.apache.airavata.credential.store.store.CredentialReader;
-import org.apache.airavata.credential.store.store.CredentialStoreException;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.SSHApiException;
 import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
-import org.apache.airavata.gfac.core.authentication.SSHKeyAuthentication;
-import org.apache.airavata.gfac.core.authentication.SSHPasswordAuthentication;
 import org.apache.airavata.gfac.core.cluster.CommandInfo;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
@@ -60,7 +54,6 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -258,7 +251,7 @@ public class SCPDataStageTask implements Task {
          * scp third party file transfer 'to' compute resource.
          */
         taskContext.getParentProcessContext().getDataMovementRemoteCluster().scpThirdParty(sourceURI.getPath(),
-                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.TO);
+                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.TO, false);
     }
 
     private void outputDataStaging(TaskContext taskContext, Session sshSession, URI sourceURI, URI destinationURI)
@@ -268,7 +261,7 @@ public class SCPDataStageTask implements Task {
          * scp third party file transfer 'from' comute resource.
          */
         taskContext.getParentProcessContext().getDataMovementRemoteCluster().scpThirdParty(sourceURI.getPath(),
-                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.FROM);
+                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.FROM, true);
         // update output locations
         GFacUtils.saveExperimentOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.getPath());
         GFacUtils.saveProcessOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.getPath());

http://git-wip-us.apache.org/repos/asf/airavata/blob/462843a4/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
index d89c7d3..76b678a 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
@@ -158,7 +158,7 @@ public class StreamData extends TimerTask  {
          * scp third party file transfer 'from' comute resource.
          */
         taskContext.getParentProcessContext().getDataMovementRemoteCluster().scpThirdParty(sourceURI.getPath(),
-                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.FROM);
+                destinationURI.getPath(), sshSession, RemoteCluster.DIRECTION.FROM, true);
         // update output locations
         GFacUtils.saveExperimentOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.getPath());
         GFacUtils.saveProcessOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.getPath());


[31/50] [abbrv] airavata git commit: adding workflow related resource layer

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowResource.java
deleted file mode 100644
index 8c03213..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowResource.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.registry.core.app.catalog.resources;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.registry.core.app.catalog.model.Workflow;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-
-public class WorkflowResource extends AppCatAbstractResource {
-    private final static Logger logger = LoggerFactory.getLogger(WorkflowResource.class);
-    private String wfName;
-    private String createdUser;
-    private String graph;
-    private String wfTemplateId;
-    private Timestamp createdTime;
-    private Timestamp updatedTime;
-    private String image;
-    private String gatewayId;
-
-    public Timestamp getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(Timestamp createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public Timestamp getUpdatedTime() {
-        return updatedTime;
-    }
-
-    public void setUpdatedTime(Timestamp updatedTime) {
-        this.updatedTime = updatedTime;
-    }
-
-    public String getImage() {
-        return image;
-    }
-
-    public void setImage(String image) {
-        this.image = image;
-    }
-
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Override
-    public void remove(Object identifier) throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            generator.setParameter(WorkflowConstants.WF_TEMPLATE_ID, identifier);
-            Query q = generator.deleteQuery(em);
-            q.executeUpdate();
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public AppCatalogResource get(Object identifier) throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            generator.setParameter(WorkflowConstants.WF_TEMPLATE_ID, identifier);
-            Query q = generator.selectQuery(em);
-            Workflow workflow = (Workflow) q.getSingleResult();
-            WorkflowResource workflowResource = (WorkflowResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow);
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflowResource;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public List<AppCatalogResource> get(String fieldName, Object value) throws AppCatalogException {
-        List<AppCatalogResource> workflowResources = new ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            Query q;
-            if ((fieldName.equals(WorkflowConstants.WF_NAME)) || (fieldName.equals(WorkflowConstants.CREATED_USER)) || (fieldName.equals(WorkflowConstants.GRAPH)) || (fieldName.equals(WorkflowConstants.WF_TEMPLATE_ID))) {
-                generator.setParameter(fieldName, value);
-                q = generator.selectQuery(em);
-                List<?> results = q.getResultList();
-                for (Object result : results) {
-                    Workflow workflow = (Workflow) result;
-                    WorkflowResource workflowResource = (WorkflowResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow);
-                    workflowResources.add(workflowResource);
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Workflow Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return workflowResources;
-    }
-
-    @Override
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        List<AppCatalogResource> workflows = new ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId);
-            Query q = generator.selectQuery(em);
-            List results = q.getResultList();
-            if (results.size() != 0) {
-                for (Object result : results) {
-                    Workflow workflow = (Workflow) result;
-                    WorkflowResource wfResource =
-                            (WorkflowResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow);
-                    workflows.add(wfResource);
-                }
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return workflows;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        List<String> workflowIds = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId);
-            Query q = generator.selectQuery(em);
-            List results = q.getResultList();
-            if (results.size() != 0) {
-                for (Object result : results) {
-                    Workflow workflow = (Workflow) result;
-                    workflowIds.add(workflow.getWfTemplateId());
-                }
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return workflowIds;
-    }
-
-    @Override
-    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
-        List<String> workflowResourceIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW);
-            Query q;
-            if ((fieldName.equals(WorkflowConstants.WF_NAME)) || (fieldName.equals(WorkflowConstants.CREATED_USER)) || (fieldName.equals(WorkflowConstants.GRAPH)) || (fieldName.equals(WorkflowConstants.WF_TEMPLATE_ID))) {
-                generator.setParameter(fieldName, value);
-                q = generator.selectQuery(em);
-                List<?> results = q.getResultList();
-                for (Object result : results) {
-                    Workflow workflow = (Workflow) result;
-                    WorkflowResource workflowResource = (WorkflowResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow);
-                    workflowResourceIDs.add(workflowResource.getWfTemplateId());
-                }
-            } else {
-                em.getTransaction().commit();
-                if (em.isOpen()) {
-                    if (em.getTransaction().isActive()){
-                        em.getTransaction().rollback();
-                    }
-                    em.close();
-                }
-                logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Workflow Resource.");
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return workflowResourceIDs;
-    }
-
-    @Override
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            Workflow existingWorkflow = em.find(Workflow.class, wfTemplateId);
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            Workflow workflow;
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            if (existingWorkflow == null) {
-                workflow = new Workflow();
-                workflow.setCreationTime(AiravataUtils.getCurrentTimestamp());
-            } else {
-                workflow = existingWorkflow;
-                workflow.setUpdateTime(AiravataUtils.getCurrentTimestamp());
-            }
-            workflow.setWfName(getWfName());
-            workflow.setCreatedUser(getCreatedUser());
-            workflow.setGatewayId(gatewayId);
-            if (getGraph() != null){
-                workflow.setGraph(getGraph().toCharArray());
-            }
-            if (image != null){
-                workflow.setImage(image.getBytes());
-            }
-            workflow.setWfTemplateId(getWfTemplateId());
-            if (existingWorkflow == null) {
-                em.persist(workflow);
-            } else {
-                em.merge(workflow);
-            }
-            em.getTransaction().commit();
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public boolean isExists(Object identifier) throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            Workflow workflow = em.find(Workflow.class, identifier);
-            if (em.isOpen()) {
-                if (em.getTransaction().isActive()){
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-            return workflow != null;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public String getWfName() {
-        return wfName;
-    }
-
-    public String getCreatedUser() {
-        return createdUser;
-    }
-
-    public String getGraph() {
-        return graph;
-    }
-
-    public String getWfTemplateId() {
-        return wfTemplateId;
-    }
-
-    public void setWfName(String wfName) {
-        this.wfName=wfName;
-    }
-
-    public void setCreatedUser(String createdUser) {
-        this.createdUser=createdUser;
-    }
-
-    public void setGraph(String graph) {
-        this.graph=graph;
-    }
-
-    public void setWfTemplateId(String wfTemplateId) {
-        this.wfTemplateId=wfTemplateId;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
index 2a7d47e..5cfca50 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
@@ -42,9 +42,9 @@ public class AppCatalogJPAUtils {
     private static final String APPCATALOG_VALIDATION_QUERY = "appcatalog.validationQuery";
     private static final String JPA_CACHE_SIZE = "jpa.cache.size";
     private static final String JPA_CACHE_ENABLED = "cache.enable";
-    @PersistenceUnit(unitName="appcatalog_data")
+    @PersistenceUnit(unitName = "appcatalog_data")
     protected static EntityManagerFactory factory;
-    @PersistenceContext(unitName="appcatalog_data")
+    @PersistenceContext(unitName = "appcatalog_data")
     private static EntityManager appCatEntityManager;
 
     public static EntityManager getEntityManager() throws ApplicationSettingsException {
@@ -63,8 +63,8 @@ public class AppCatalogJPAUtils {
             // For app catalog, we don't need caching
 //            properties.put("openjpa.DataCache","" + readServerProperties(JPA_CACHE_ENABLED) + "(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)");
 //            properties.put("openjpa.QueryCache","" + readServerProperties(JPA_CACHE_ENABLED) + "(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)");
-            properties.put("openjpa.RemoteCommitProvider","sjvm");
-            properties.put("openjpa.Log","DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
+            properties.put("openjpa.RemoteCommitProvider", "sjvm");
+            properties.put("openjpa.Log", "DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
             properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
             properties.put("openjpa.jdbc.QuerySQLCache", "false");
             properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000,  autoReconnect=true");
@@ -74,7 +74,7 @@ public class AppCatalogJPAUtils {
         return appCatEntityManager;
     }
 
-    private static String readServerProperties (String propertyName) throws ApplicationSettingsException {
+    private static String readServerProperties(String propertyName) throws ApplicationSettingsException {
         try {
             return ServerSettings.getSetting(propertyName);
         } catch (ApplicationSettingsException e) {
@@ -84,118 +84,117 @@ public class AppCatalogJPAUtils {
     }
 
     /**
-     *
      * @param type model type
-     * @param o model type instance
+     * @param o    model type instance
      * @return corresponding resource object
      */
     public static AppCatalogResource getResource(AppCatalogResourceType type, Object o) {
-        switch (type){
-	        case COMPUTE_RESOURCE:
-				if (o instanceof ComputeResource){
-					return createComputeResource((ComputeResource) o);
-				}else{
-					logger.error("Object should be a Compute Resource.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Compute Resource.");
-				}
+        switch (type) {
+            case COMPUTE_RESOURCE:
+                if (o instanceof ComputeResource) {
+                    return createComputeResource((ComputeResource) o);
+                } else {
+                    logger.error("Object should be a Compute Resource.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Compute Resource.");
+                }
             case HOST_ALIAS:
-                if (o instanceof HostAlias){
+                if (o instanceof HostAlias) {
                     return createHostAlias((HostAlias) o);
-                }else {
+                } else {
                     logger.error("Object should be a Host Alias.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Host Alias.");
                 }
             case HOST_IPADDRESS:
-                if (o instanceof HostIPAddress){
+                if (o instanceof HostIPAddress) {
                     return createHostIPAddress((HostIPAddress) o);
-                }else {
+                } else {
                     logger.error("Object should be a Host IPAdress.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Host IPAdress.");
                 }
             case GSISSH_SUBMISSION:
-                if (o instanceof GSISSHSubmission){
+                if (o instanceof GSISSHSubmission) {
                     return createGSSISSHSubmission((GSISSHSubmission) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSH Submission", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSH Submission.");
                 }
             case UNICORE_JOB_SUBMISSION:
-                if (o instanceof UnicoreJobSubmission){
+                if (o instanceof UnicoreJobSubmission) {
                     return createUnicoreJobSubmission((UnicoreJobSubmission) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSH Submission", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSH Submission.");
                 }
             case UNICORE_DATA_MOVEMENT:
-                if (o instanceof UnicoreDataMovement){
+                if (o instanceof UnicoreDataMovement) {
                     return createUnicoreDataMovement((UnicoreDataMovement) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSH Submission", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSH Submission.");
                 }
             case GSISSH_EXPORT:
-                if (o instanceof GSISSHExport){
+                if (o instanceof GSISSHExport) {
                     return createGSISSHExport((GSISSHExport) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSH Export.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSH Export.");
                 }
             case PRE_JOBCOMMAND:
-                if (o instanceof PreJobCommand){
+                if (o instanceof PreJobCommand) {
                     return createPreJobCommand((PreJobCommand) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSHPreJobCommand.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSHPreJobCommand.");
                 }
             case POST_JOBCOMMAND:
-                if (o instanceof PostJobCommand){
+                if (o instanceof PostJobCommand) {
                     return createPostJObCommand((PostJobCommand) o);
-                }else {
+                } else {
                     logger.error("Object should be a GSISSHPostJobCommand.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GSISSHPostJobCommand.");
                 }
             case GLOBUS_SUBMISSION:
-                if (o instanceof GlobusJobSubmission){
+                if (o instanceof GlobusJobSubmission) {
                     return createGlobusJobSubmission((GlobusJobSubmission) o);
-                }else {
+                } else {
                     logger.error("Object should be a GlobusJobSubmission.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GlobusJobSubmission.");
                 }
             case GLOBUS_GK_ENDPOINT:
-                if (o instanceof GlobusGKEndpoint){
+                if (o instanceof GlobusGKEndpoint) {
                     return createGlobusEndpoint((GlobusGKEndpoint) o);
-                }else {
+                } else {
                     logger.error("Object should be a GlobusJobSubmission.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GlobusJobSubmission.");
                 }
             case SSH_JOB_SUBMISSION:
-				if (o instanceof SshJobSubmission){
-					return createSshJobSubmission((SshJobSubmission) o);
-				}else{
-					logger.error("Object should be a Ssh Job Submission.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Ssh Job Submission.");
-				}
+                if (o instanceof SshJobSubmission) {
+                    return createSshJobSubmission((SshJobSubmission) o);
+                } else {
+                    logger.error("Object should be a Ssh Job Submission.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Ssh Job Submission.");
+                }
             case SCP_DATA_MOVEMENT:
-				if (o instanceof ScpDataMovement){
-					return createScpDataMovement((ScpDataMovement) o);
-				}else{
-					logger.error("Object should be a Scp Data Movement.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Scp Data Movement.");
-				}
+                if (o instanceof ScpDataMovement) {
+                    return createScpDataMovement((ScpDataMovement) o);
+                } else {
+                    logger.error("Object should be a Scp Data Movement.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Scp Data Movement.");
+                }
             case GRIDFTP_DATA_MOVEMENT:
-				if (o instanceof GridftpDataMovement){
-					return createGridftpDataMovement((GridftpDataMovement) o);
-				}else{
-					logger.error("Object should be a Gridftp Data Movement.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Gridftp Data Movement.");
-				}
+                if (o instanceof GridftpDataMovement) {
+                    return createGridftpDataMovement((GridftpDataMovement) o);
+                } else {
+                    logger.error("Object should be a Gridftp Data Movement.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Gridftp Data Movement.");
+                }
             case GRIDFTP_ENDPOINT:
-				if (o instanceof GridftpEndpoint){
-					return createGridftpEndpoint((GridftpEndpoint) o);
-				}else{
-					logger.error("Object should be a Gridftp Endpoint.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Gridftp Endpoint.");
-				}
+                if (o instanceof GridftpEndpoint) {
+                    return createGridftpEndpoint((GridftpEndpoint) o);
+                } else {
+                    logger.error("Object should be a Gridftp Endpoint.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Gridftp Endpoint.");
+                }
 //            case JOB_SUBMISSION_PROTOCOL:
 //                if (o instanceof JobSubmissionProtocol){
 //                    return createJobSubmissionProtocol((JobSubmissionProtocol) o);
@@ -211,159 +210,159 @@ public class AppCatalogJPAUtils {
 //                    throw new IllegalArgumentException("Object should be a DataMovementProtocol.");
 //                }
             case APPLICATION_MODULE:
-                if (o instanceof ApplicationModule){
+                if (o instanceof ApplicationModule) {
                     return createApplicationModule((ApplicationModule) o);
-                }else {
+                } else {
                     logger.error("Object should be a Application Module.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Application Module.");
                 }
             case APPLICATION_DEPLOYMENT:
-                if (o instanceof ApplicationDeployment){
+                if (o instanceof ApplicationDeployment) {
                     return createApplicationDeployment((ApplicationDeployment) o);
-                }else {
+                } else {
                     logger.error("Object should be a Application Deployment.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Application Deployment.");
                 }
             case LIBRARY_PREPAND_PATH:
-                if (o instanceof LibraryPrepandPath){
+                if (o instanceof LibraryPrepandPath) {
                     return createLibraryPrepPathResource((LibraryPrepandPath) o);
-                }else {
+                } else {
                     logger.error("Object should be a Library Prepand path.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Library Prepand path.");
                 }
             case LIBRARY_APEND_PATH:
-                if (o instanceof LibraryApendPath){
+                if (o instanceof LibraryApendPath) {
                     return createLibraryApendPathResource((LibraryApendPath) o);
-                }else {
+                } else {
                     logger.error("Object should be a Library Apend path.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Library Apend.");
                 }
             case APP_ENVIRONMENT:
-                if (o instanceof AppEnvironment){
+                if (o instanceof AppEnvironment) {
                     return createAppEnvironmentResource((AppEnvironment) o);
-                }else {
+                } else {
                     logger.error("Object should be a AppEnvironment.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a AppEnvironment.");
                 }
             case APPLICATION_INTERFACE:
-                if (o instanceof ApplicationInterface){
+                if (o instanceof ApplicationInterface) {
                     return createAppInterfaceResource((ApplicationInterface) o);
-                }else {
+                } else {
                     logger.error("Object should be a ApplicationInterface.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a ApplicationInterface.");
                 }
             case APP_MODULE_MAPPING:
-                if (o instanceof AppModuleMapping){
+                if (o instanceof AppModuleMapping) {
                     return createAppModMappingResource((AppModuleMapping) o);
-                }else {
+                } else {
                     logger.error("Object should be a AppModuleMapping.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a AppModuleMapping.");
                 }
             case APPLICATION_OUTPUT:
-                if (o instanceof ApplicationIntOutput){
+                if (o instanceof ApplicationIntOutput) {
                     return createApplicationOutput((ApplicationIntOutput) o);
-                }else {
+                } else {
                     logger.error("Object should be a ApplicationOutput.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a ApplicationOutput.");
                 }
             case GATEWAY_PROFILE:
-                if (o instanceof GatewayProfile){
+                if (o instanceof GatewayProfile) {
                     return createGatewayProfile((GatewayProfile) o);
-                }else {
+                } else {
                     logger.error("Object should be a GatewayProfile.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GatewayProfile.");
                 }
             case COMPUTE_RESOURCE_PREFERENCE:
-                if (o instanceof ComputeResourcePreference){
+                if (o instanceof ComputeResourcePreference) {
                     return createComputeResourcePref((ComputeResourcePreference) o);
-                }else {
+                } else {
                     logger.error("Object should be a Compute Resource Preference.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Compute Resource Preference.");
                 }
             case STORAGE_PREFERENCE:
-                if (o instanceof StoragePreference){
+                if (o instanceof StoragePreference) {
                     return createStoragePref((StoragePreference) o);
-                }else {
+                } else {
                     logger.error("Object should be a data storage Preference.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a data storage Preference.");
                 }
             case STORAGE_RESOURCE:
-                if (o instanceof StorageResource){
+                if (o instanceof StorageResource) {
                     return createStorageResource((StorageResource) o);
-                }else {
+                } else {
                     logger.error("Object should be a storage resource.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a storage resource.");
                 }
             case STORAGE_INTERFACE:
-                if (o instanceof StorageInterface){
+                if (o instanceof StorageInterface) {
                     return createStorageInterface((StorageInterface) o);
-                }else {
+                } else {
                     logger.error("Object should be a storage interface.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a storage interface.");
                 }
             case APPLICATION_INPUT:
-                if (o instanceof ApplicationIntInput){
+                if (o instanceof ApplicationIntInput) {
                     return createApplicationInput((ApplicationIntInput) o);
-                }else {
+                } else {
                     logger.error("Object should be a ApplicationInput.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a ApplicationInput.");
                 }
             case BATCH_QUEUE:
-				if (o instanceof BatchQueue){
-					return createBatchQueue((BatchQueue) o);
-				}else{
-					logger.error("Object should be a Batch Queue.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Batch Queue.");
-				}
+                if (o instanceof BatchQueue) {
+                    return createBatchQueue((BatchQueue) o);
+                } else {
+                    logger.error("Object should be a Batch Queue.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Batch Queue.");
+                }
             case COMPUTE_RESOURCE_FILE_SYSTEM:
-				if (o instanceof ComputeResourceFileSystem){
-					return createComputeResourceFileSystem((ComputeResourceFileSystem) o);
-				}else{
-					logger.error("Object should be a Compute Resource File System.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Compute Resource File System.");
-				}
+                if (o instanceof ComputeResourceFileSystem) {
+                    return createComputeResourceFileSystem((ComputeResourceFileSystem) o);
+                } else {
+                    logger.error("Object should be a Compute Resource File System.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Compute Resource File System.");
+                }
             case JOB_SUBMISSION_INTERFACE:
-				if (o instanceof JobSubmissionInterface){
-					return createJobSubmissionInterface((JobSubmissionInterface) o);
-				}else{
-					logger.error("Object should be a Job Submission Interface.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Job Submission Interface.");
-				}
+                if (o instanceof JobSubmissionInterface) {
+                    return createJobSubmissionInterface((JobSubmissionInterface) o);
+                } else {
+                    logger.error("Object should be a Job Submission Interface.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Job Submission Interface.");
+                }
             case DATA_MOVEMENT_INTERFACE:
-				if (o instanceof DataMovementInterface){
-					return createDataMovementInterface((DataMovementInterface) o);
-				}else{
-					logger.error("Object should be a Data Movement Interface.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Data Movement Interface.");
-				}
+                if (o instanceof DataMovementInterface) {
+                    return createDataMovementInterface((DataMovementInterface) o);
+                } else {
+                    logger.error("Object should be a Data Movement Interface.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Data Movement Interface.");
+                }
             case RESOURCE_JOB_MANAGER:
-				if (o instanceof ResourceJobManager){
-					return createResourceJobManager((ResourceJobManager) o);
-				}else{
-					logger.error("Object should be a Resource Job Manager.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Resource Job Manager.");
-				}
+                if (o instanceof ResourceJobManager) {
+                    return createResourceJobManager((ResourceJobManager) o);
+                } else {
+                    logger.error("Object should be a Resource Job Manager.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Resource Job Manager.");
+                }
             case JOB_MANAGER_COMMAND:
-				if (o instanceof JobManagerCommand){
-					return createJobManagerCommand((JobManagerCommand) o);
-				}else{
-					logger.error("Object should be a Job Manager Command.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Job Manager Command.");
-				}
-			case LOCAL_SUBMISSION:
-				if (o instanceof LocalSubmission){
-					return createLocalSubmission((LocalSubmission) o);
-				}else{
-					logger.error("Object should be a Local Submission.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Local Submission.");
-				}
-			case LOCAL_DATA_MOVEMENT:
-				if (o instanceof LocalDataMovement){
-					return createLocalDataMovement((LocalDataMovement) o);
-				}else{
-					logger.error("Object should be a Local Data Movement.", new IllegalArgumentException());
-					throw new IllegalArgumentException("Object should be a Local Data Movement.");
-				}
+                if (o instanceof JobManagerCommand) {
+                    return createJobManagerCommand((JobManagerCommand) o);
+                } else {
+                    logger.error("Object should be a Job Manager Command.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Job Manager Command.");
+                }
+            case LOCAL_SUBMISSION:
+                if (o instanceof LocalSubmission) {
+                    return createLocalSubmission((LocalSubmission) o);
+                } else {
+                    logger.error("Object should be a Local Submission.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Local Submission.");
+                }
+            case LOCAL_DATA_MOVEMENT:
+                if (o instanceof LocalDataMovement) {
+                    return createLocalDataMovement((LocalDataMovement) o);
+                } else {
+                    logger.error("Object should be a Local Data Movement.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Local Data Movement.");
+                }
             case MODULE_LOAD_CMD:
                 if (o instanceof ModuleLoadCmd) {
                     return createModuleLoadCmd((ModuleLoadCmd) o);
@@ -371,31 +370,10 @@ public class AppCatalogJPAUtils {
                     logger.error("Object should be a Module Load Cmd.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Module Load Cmd.");
                 }
-            case WORKFLOW:
-                if (o instanceof Workflow) {
-                    return createWorkflow((Workflow) o);
-                } else {
-                    logger.error("Object should be a Workflow.", new IllegalArgumentException());
-                    throw new IllegalArgumentException("Object should be a Workflow.");
-                }
-            case WORKFLOW_INPUT:
-                if (o instanceof WorkflowInput){
-                    return createWorflowInput((WorkflowInput) o);
-                }else {
-                    logger.error("Object should be a Workflow Input.", new IllegalArgumentException());
-                    throw new IllegalArgumentException("Object should be a Workflow Input.");
-                }
-            case WORKFLOW_OUTPUT:
-                if (o instanceof WorkflowOutput){
-                    return createWorkflowOutput((WorkflowOutput) o);
-                }else {
-                    logger.error("Object should be a Workflow Output.", new IllegalArgumentException());
-                    throw new IllegalArgumentException("Object should be a Workflow Output.");
-                }
             case GATEWAY_CLIENT_CREDENTIAL:
-                if (o instanceof GatewayClientCredential){
+                if (o instanceof GatewayClientCredential) {
                     return createGatewayClientCredential((GatewayClientCredential) o);
-                }else {
+                } else {
                     logger.error("Object should be a Gateway Client Credential.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a Gateway Client Credential.");
                 }
@@ -404,103 +382,103 @@ public class AppCatalogJPAUtils {
                 throw new IllegalArgumentException("Illegal data type..");
         }
     }
-	
-	private static AppCatalogResource createLocalDataMovement(LocalDataMovement o) {
-		LocalDataMovementResource localDataMovementResource = new LocalDataMovementResource();
-        if (o != null){
+
+    private static AppCatalogResource createLocalDataMovement(LocalDataMovement o) {
+        LocalDataMovementResource localDataMovementResource = new LocalDataMovementResource();
+        if (o != null) {
             localDataMovementResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
         }
-		return localDataMovementResource;
-	}
-	
+        return localDataMovementResource;
+    }
+
     private static AppCatalogResource createLocalSubmission(LocalSubmission o) {
-		LocalSubmissionResource localSubmissionResource = new LocalSubmissionResource();
-        if (o != null){
+        LocalSubmissionResource localSubmissionResource = new LocalSubmissionResource();
+        if (o != null) {
             localSubmissionResource.setResourceJobManagerId(o.getResourceJobManagerId());
-            localSubmissionResource.setResourceJobManagerResource((ResourceJobManagerResource)createResourceJobManager(o.getResourceJobManager()));
+            localSubmissionResource.setResourceJobManagerResource((ResourceJobManagerResource) createResourceJobManager(o.getResourceJobManager()));
             localSubmissionResource.setJobSubmissionInterfaceId(o.getJobSubmissionInterfaceId());
             localSubmissionResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 localSubmissionResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return localSubmissionResource;
-	}
-    
+        return localSubmissionResource;
+    }
+
     private static AppCatalogResource createJobManagerCommand(JobManagerCommand o) {
-		JobManagerCommandResource jobManagerCommandResource = new JobManagerCommandResource();
-        if (o != null){
+        JobManagerCommandResource jobManagerCommandResource = new JobManagerCommandResource();
+        if (o != null) {
             jobManagerCommandResource.setResourceJobManagerId(o.getResourceJobManagerId());
-            jobManagerCommandResource.setResourceJobManagerResource((ResourceJobManagerResource)createResourceJobManager(o.getResourceJobManager()));
+            jobManagerCommandResource.setResourceJobManagerResource((ResourceJobManagerResource) createResourceJobManager(o.getResourceJobManager()));
             jobManagerCommandResource.setCommandType(o.getCommandType());
             jobManagerCommandResource.setCommand(o.getCommand());
         }
-		return jobManagerCommandResource;
-	}
-    
+        return jobManagerCommandResource;
+    }
+
     private static AppCatalogResource createResourceJobManager(ResourceJobManager o) {
-		ResourceJobManagerResource resourceJobManagerResource = new ResourceJobManagerResource();
+        ResourceJobManagerResource resourceJobManagerResource = new ResourceJobManagerResource();
         if (o != null) {
             resourceJobManagerResource.setResourceJobManagerId(o.getResourceJobManagerId());
             resourceJobManagerResource.setPushMonitoringEndpoint(o.getPushMonitoringEndpoint());
             resourceJobManagerResource.setJobManagerBinPath(o.getJobManagerBinPath());
             resourceJobManagerResource.setResourceJobManagerType(o.getResourceJobManagerType());
             resourceJobManagerResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 resourceJobManagerResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return resourceJobManagerResource;
-	}
-    
+        return resourceJobManagerResource;
+    }
+
     private static AppCatalogResource createDataMovementInterface(DataMovementInterface o) {
-		DataMovementInterfaceResource dataMovementInterfaceResource = new DataMovementInterfaceResource();
+        DataMovementInterfaceResource dataMovementInterfaceResource = new DataMovementInterfaceResource();
         if (o != null) {
             dataMovementInterfaceResource.setComputeResourceId(o.getComputeResourceId());
-            dataMovementInterfaceResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            dataMovementInterfaceResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
             dataMovementInterfaceResource.setDataMovementProtocol(o.getDataMovementProtocol());
             dataMovementInterfaceResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             dataMovementInterfaceResource.setPriorityOrder(o.getPriorityOrder());
             dataMovementInterfaceResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 dataMovementInterfaceResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return dataMovementInterfaceResource;
-	}
-    
+        return dataMovementInterfaceResource;
+    }
+
     private static AppCatalogResource createJobSubmissionInterface(JobSubmissionInterface o) {
-		JobSubmissionInterfaceResource jobSubmissionInterfaceResource = new JobSubmissionInterfaceResource();
+        JobSubmissionInterfaceResource jobSubmissionInterfaceResource = new JobSubmissionInterfaceResource();
         if (o != null) {
             jobSubmissionInterfaceResource.setJobSubmissionInterfaceId(o.getJobSubmissionInterfaceId());
             jobSubmissionInterfaceResource.setComputeResourceId(o.getComputeResourceId());
-            jobSubmissionInterfaceResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            jobSubmissionInterfaceResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
             jobSubmissionInterfaceResource.setJobSubmissionProtocol(o.getJobSubmissionProtocol());
             jobSubmissionInterfaceResource.setPriorityOrder(o.getPriorityOrder());
             jobSubmissionInterfaceResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 jobSubmissionInterfaceResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return jobSubmissionInterfaceResource;
-	}
-    
+        return jobSubmissionInterfaceResource;
+    }
+
     private static AppCatalogResource createComputeResourceFileSystem(ComputeResourceFileSystem o) {
-		ComputeResourceFileSystemResource computeResourceFileSystemResource = new ComputeResourceFileSystemResource();
-        if (o != null){
+        ComputeResourceFileSystemResource computeResourceFileSystemResource = new ComputeResourceFileSystemResource();
+        if (o != null) {
             computeResourceFileSystemResource.setComputeResourceId(o.getComputeResourceId());
-            computeResourceFileSystemResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            computeResourceFileSystemResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
             computeResourceFileSystemResource.setPath(o.getPath());
             computeResourceFileSystemResource.setFileSystem(o.getFileSystem());
         }
-		return computeResourceFileSystemResource;
-	}
-    
+        return computeResourceFileSystemResource;
+    }
+
     private static AppCatalogResource createBatchQueue(BatchQueue o) {
-		BatchQueueResource batchQueueResource = new BatchQueueResource();
-        if (o != null){
+        BatchQueueResource batchQueueResource = new BatchQueueResource();
+        if (o != null) {
             batchQueueResource.setComputeResourceId(o.getComputeResourceId());
-            batchQueueResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            batchQueueResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
             batchQueueResource.setMaxRuntime(o.getMaxRuntime());
             batchQueueResource.setMaxJobInQueue(o.getMaxJobInQueue());
             batchQueueResource.setQueueDescription(o.getQueueDescription());
@@ -509,10 +487,11 @@ public class AppCatalogJPAUtils {
             batchQueueResource.setMaxNodes(o.getMaxNodes());
             batchQueueResource.setMaxMemory(o.getMaxMemory());
         }
-		return batchQueueResource;
-	}
+        return batchQueueResource;
+    }
+
     private static AppCatalogResource createComputeResource(ComputeResource o) {
-		ComputeResourceResource computeResourceResource = new ComputeResourceResource();
+        ComputeResourceResource computeResourceResource = new ComputeResourceResource();
         if (o != null) {
             computeResourceResource.setResourceDescription(o.getResourceDescription());
             computeResourceResource.setResourceId(o.getResourceId());
@@ -520,29 +499,29 @@ public class AppCatalogJPAUtils {
             computeResourceResource.setCreatedTime(o.getCreationTime());
             computeResourceResource.setEnabled(o.getEnabled());
             computeResourceResource.setMaxMemoryPerNode(o.getMaxMemoryPerNode());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 computeResourceResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return computeResourceResource;
-	}
+        return computeResourceResource;
+    }
 
     private static AppCatalogResource createHostAlias(HostAlias o) {
         HostAliasAppResource aliasResource = new HostAliasAppResource();
-        if (o != null){
+        if (o != null) {
             aliasResource.setResourceID(o.getResourceID());
             aliasResource.setAlias(o.getAlias());
-            aliasResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            aliasResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
         }
         return aliasResource;
     }
 
     private static AppCatalogResource createHostIPAddress(HostIPAddress o) {
         HostIPAddressResource ipAddressResource = new HostIPAddressResource();
-        if (o != null){
+        if (o != null) {
             ipAddressResource.setResourceID(o.getResourceID());
             ipAddressResource.setIpaddress(o.getIpaddress());
-            ipAddressResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+            ipAddressResource.setComputeHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
         }
         return ipAddressResource;
     }
@@ -558,8 +537,7 @@ public class AppCatalogJPAUtils {
         }
         return submissionResource;
     }
-    
-    
+
     private static AppCatalogResource createUnicoreJobSubmission(UnicoreJobSubmission o) {
         UnicoreJobSubmissionResource submissionResource = new UnicoreJobSubmissionResource();
         if (o != null) {
@@ -579,18 +557,18 @@ public class AppCatalogJPAUtils {
         }
         return dataMovementResource;
     }
-    
-    private static AppCatalogResource createGSISSHExport(GSISSHExport o){
+
+    private static AppCatalogResource createGSISSHExport(GSISSHExport o) {
         GSISSHExportResource resource = new GSISSHExportResource();
         if (o != null) {
             resource.setSubmissionID(o.getSubmissionID());
             resource.setExport(o.getExport());
-            resource.setGsisshSubmissionResource((GSISSHSubmissionResource)createGSSISSHSubmission(o.getGsisshJobSubmission()));
+            resource.setGsisshSubmissionResource((GSISSHSubmissionResource) createGSSISSHSubmission(o.getGsisshJobSubmission()));
         }
         return resource;
     }
 
-    private static AppCatalogResource createPreJobCommand(PreJobCommand o){
+    private static AppCatalogResource createPreJobCommand(PreJobCommand o) {
         PreJobCommandResource resource = new PreJobCommandResource();
         if (o != null) {
             resource.setAppDeploymentId(o.getDeploymentId());
@@ -601,9 +579,9 @@ public class AppCatalogJPAUtils {
         return resource;
     }
 
-    private static AppCatalogResource createPostJObCommand(PostJobCommand o){
+    private static AppCatalogResource createPostJObCommand(PostJobCommand o) {
         PostJobCommandResource resource = new PostJobCommandResource();
-        if (o != null){
+        if (o != null) {
             resource.setAppDeploymentId(o.getDeploymentId());
             resource.setCommand(o.getCommand());
             resource.setOrder(o.getOrder());
@@ -614,7 +592,7 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createGlobusJobSubmission(GlobusJobSubmission o) {
         GlobusJobSubmissionResource resource = new GlobusJobSubmissionResource();
-        if (o != null){
+        if (o != null) {
             resource.setSubmissionID(o.getSubmissionID());
             resource.setResourceJobManager(o.getResourceJobManager());
             resource.setSecurityProtocol(o.getSecurityProtocol());
@@ -624,15 +602,15 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createGlobusEndpoint(GlobusGKEndpoint o) {
         GlobusGKEndpointResource resource = new GlobusGKEndpointResource();
-        if (o != null){
+        if (o != null) {
             resource.setSubmissionID(o.getSubmissionID());
             resource.setEndpoint(o.getEndpoint());
-            resource.setGlobusJobSubmissionResource((GlobusJobSubmissionResource)createGlobusJobSubmission(o.getGlobusSubmission()));
+            resource.setGlobusJobSubmissionResource((GlobusJobSubmissionResource) createGlobusJobSubmission(o.getGlobusSubmission()));
         }
         return resource;
     }
-	
-	private static AppCatalogResource createSshJobSubmission(SshJobSubmission o) {
+
+    private static AppCatalogResource createSshJobSubmission(SshJobSubmission o) {
         SshJobSubmissionResource sshJobSubmissionResource = new SshJobSubmissionResource();
         if (o != null) {
             sshJobSubmissionResource.setResourceJobManagerId(o.getResourceJobManagerId());
@@ -643,7 +621,7 @@ public class AppCatalogJPAUtils {
             sshJobSubmissionResource.setSshPort(o.getSshPort());
             sshJobSubmissionResource.setMonitorMode(o.getMonitorMode());
             sshJobSubmissionResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 sshJobSubmissionResource.setUpdatedTime(o.getUpdateTime());
             }
         }
@@ -651,47 +629,47 @@ public class AppCatalogJPAUtils {
     }
 
     private static AppCatalogResource createScpDataMovement(ScpDataMovement o) {
-		ScpDataMovementResource scpDataMovementResource = new ScpDataMovementResource();
-        if (o != null){
+        ScpDataMovementResource scpDataMovementResource = new ScpDataMovementResource();
+        if (o != null) {
             scpDataMovementResource.setQueueDescription(o.getQueueDescription());
             scpDataMovementResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             scpDataMovementResource.setSecurityProtocol(o.getSecurityProtocol());
             scpDataMovementResource.setAlternativeScpHostname(o.getAlternativeScpHostname());
             scpDataMovementResource.setSshPort(o.getSshPort());
             scpDataMovementResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 scpDataMovementResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return scpDataMovementResource;
-	}
+        return scpDataMovementResource;
+    }
 
     private static AppCatalogResource createGridftpDataMovement(GridftpDataMovement o) {
-		GridftpDataMovementResource gridftpDataMovementResource = new GridftpDataMovementResource();
-        if (o != null){
+        GridftpDataMovementResource gridftpDataMovementResource = new GridftpDataMovementResource();
+        if (o != null) {
             gridftpDataMovementResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             gridftpDataMovementResource.setSecurityProtocol(o.getSecurityProtocol());
             gridftpDataMovementResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 gridftpDataMovementResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return gridftpDataMovementResource;
-	}
+        return gridftpDataMovementResource;
+    }
 
     private static AppCatalogResource createGridftpEndpoint(GridftpEndpoint o) {
-		GridftpEndpointResource gridftpEndpointResource = new GridftpEndpointResource();
-        if (o != null){
+        GridftpEndpointResource gridftpEndpointResource = new GridftpEndpointResource();
+        if (o != null) {
             gridftpEndpointResource.setEndpoint(o.getEndpoint());
             gridftpEndpointResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
-            gridftpEndpointResource.setGridftpDataMovementResource((GridftpDataMovementResource)createGridftpDataMovement(o.getGridftpDataMovement()));
+            gridftpEndpointResource.setGridftpDataMovementResource((GridftpDataMovementResource) createGridftpDataMovement(o.getGridftpDataMovement()));
             gridftpEndpointResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 gridftpEndpointResource.setUpdatedTime(o.getUpdateTime());
             }
         }
-		return gridftpEndpointResource;
-	}
+        return gridftpEndpointResource;
+    }
 
 //    private static Resource createJobSubmissionProtocol(JobSubmissionProtocol o) {
 //        JobSubmissionProtocolResource resource = new JobSubmissionProtocolResource();
@@ -717,14 +695,14 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createApplicationModule(ApplicationModule o) {
         AppModuleResource moduleResource = new AppModuleResource();
-        if (o != null){
+        if (o != null) {
             moduleResource.setModuleId(o.getModuleID());
             moduleResource.setModuleDesc(o.getModuleDesc());
             moduleResource.setGatewayId(o.getGatewayId());
             moduleResource.setModuleName(o.getModuleName());
             moduleResource.setModuleVersion(o.getModuleVersion());
             moduleResource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 moduleResource.setUpdatedTime(o.getUpdateTime());
             }
         }
@@ -733,7 +711,7 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createApplicationDeployment(ApplicationDeployment o) {
         AppDeploymentResource resource = new AppDeploymentResource();
-        if (o != null){
+        if (o != null) {
             resource.setDeploymentId(o.getDeploymentID());
             resource.setAppDes(o.getApplicationDesc());
             resource.setAppModuleId(o.getAppModuleID());
@@ -744,7 +722,7 @@ public class AppCatalogJPAUtils {
             resource.setModuleResource((AppModuleResource) createApplicationModule(o.getApplicationModule()));
             resource.setHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
             resource.setCreatedTime(o.getCreationTime());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 resource.setUpdatedTime(o.getUpdateTime());
             }
         }
@@ -753,7 +731,7 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createLibraryPrepPathResource(LibraryPrepandPath o) {
         LibraryPrepandPathResource resource = new LibraryPrepandPathResource();
-        if (o != null){
+        if (o != null) {
             resource.setDeploymentId(o.getDeploymentID());
             resource.setName(o.getName());
             resource.setValue(o.getValue());
@@ -764,36 +742,36 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createLibraryApendPathResource(LibraryApendPath o) {
         LibraryApendPathResource resource = new LibraryApendPathResource();
-        if (o != null){
+        if (o != null) {
             resource.setDeploymentId(o.getDeploymentID());
             resource.setName(o.getName());
             resource.setValue(o.getValue());
-            resource.setAppDeploymentResource((AppDeploymentResource)createApplicationDeployment(o.getApplicationDeployment()));
+            resource.setAppDeploymentResource((AppDeploymentResource) createApplicationDeployment(o.getApplicationDeployment()));
         }
         return resource;
     }
 
     private static AppCatalogResource createAppEnvironmentResource(AppEnvironment o) {
         AppEnvironmentResource resource = new AppEnvironmentResource();
-        if (o != null){
+        if (o != null) {
             resource.setDeploymentId(o.getDeploymentID());
             resource.setName(o.getName());
             resource.setValue(o.getValue());
             resource.setOrder(o.getOrder());
-            resource.setAppDeploymentResource((AppDeploymentResource)createApplicationDeployment(o.getApplicationDeployment()));
+            resource.setAppDeploymentResource((AppDeploymentResource) createApplicationDeployment(o.getApplicationDeployment()));
         }
         return resource;
     }
 
     private static AppCatalogResource createAppInterfaceResource(ApplicationInterface o) {
         AppInterfaceResource resource = new AppInterfaceResource();
-        if (o != null){
+        if (o != null) {
             resource.setInterfaceId(o.getInterfaceID());
             resource.setAppName(o.getAppName());
             resource.setAppDescription(o.getAppDescription());
             resource.setCreatedTime(o.getCreationTime());
             resource.setGatewayId(o.getGatewayId());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 resource.setUpdatedTime(o.getUpdateTime());
             }
         }
@@ -802,7 +780,7 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createAppModMappingResource(AppModuleMapping o) {
         AppModuleMappingAppCatalogResourceAppCat resource = new AppModuleMappingAppCatalogResourceAppCat();
-        if (o != null){
+        if (o != null) {
             resource.setInterfaceId(o.getInterfaceID());
             resource.setModuleId(o.getModuleID());
         }
@@ -811,7 +789,7 @@ public class AppCatalogJPAUtils {
 
     private static AppCatalogResource createApplicationInput(ApplicationIntInput o) {
         ApplicationInputResource resource = new ApplicationInputResource();
-        if (o != null){
+        if (o != null) {
             resource.setInterfaceID(o.getInterfaceID());
             resource.setInputKey(o.getInputKey());
             resource.setInputVal(o.getInputVal());
@@ -824,36 +802,14 @@ public class AppCatalogJPAUtils {
             resource.setRequired(o.isRequired());
             resource.setRequiredToCMD(o.isRequiredToCMD());
             resource.setDataStaged(o.isDataStaged());
-            resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
-        }
-        return resource;
-    }
-
-    private static AppCatalogResource createWorflowInput(WorkflowInput o) {
-        WorkflowInputResource resource = new WorkflowInputResource();
-        if (o != null){
-            resource.setWfTemplateId(o.getWfTemplateId());
-            resource.setInputKey(o.getInputKey());
-            if (o.getInputVal() != null){
-                resource.setInputVal(new String(o.getInputVal()));
-            }
-            resource.setDataType(o.getDataType());
-            resource.setMetadata(o.getMetadata());
-            resource.setAppArgument(o.getAppArgument());
-            resource.setInputOrder(o.getInputOrder());
-            resource.setUserFriendlyDesc(o.getUserFriendlyDesc());
-            resource.setStandardInput(o.isStandardInput());
-            resource.setRequired(o.isRequired());
-            resource.setRequiredToCMD(o.isRequiredToCMD());
-            resource.setDataStaged(o.isDataStaged());
-            resource.setWorkflowResource((WorkflowResource)createWorkflow(o.getWorkflow()));
+            resource.setAppInterfaceResource((AppInterfaceResource) createAppInterfaceResource(o.getApplicationInterface()));
         }
         return resource;
     }
 
     private static AppCatalogResource createApplicationOutput(ApplicationIntOutput o) {
         ApplicationOutputResource resource = new ApplicationOutputResource();
-        if (o != null){
+        if (o != null) {
             resource.setInterfaceID(o.getInterfaceID());
             resource.setOutputKey(o.getOutputKey());
             resource.setOutputVal(o.getOutputVal());
@@ -865,31 +821,14 @@ public class AppCatalogJPAUtils {
             resource.setSearchQuery(o.getSearchQuery());
             resource.setAppArgument(o.getApplicationArgument());
             resource.setOutputStreaming(o.isOutputStreaming());
-            resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
-        }
-        return resource;
-    }
-
-    private static AppCatalogResource createWorkflowOutput(WorkflowOutput o) {
-        WorkflowOutputResource resource = new WorkflowOutputResource();
-        if (o != null){
-            resource.setWfTemplateId(o.getWfTemplateId());
-            resource.setOutputKey(o.getOutputKey());
-            if (o.getOutputVal() != null){
-                resource.setOutputVal(new String(o.getOutputVal()));
-            }
-            resource.setDataType(o.getDataType());
-            resource.setValidityType(o.getValidityType());
-            resource.setDataMovement(o.isDataMovement());
-            resource.setDataNameLocation(o.getDataNameLocation());
-            resource.setWorkflowResource((WorkflowResource)createWorkflow(o.getWorkflow()));
+            resource.setAppInterfaceResource((AppInterfaceResource) createAppInterfaceResource(o.getApplicationInterface()));
         }
         return resource;
     }
 
     private static AppCatalogResource createGatewayClientCredential(GatewayClientCredential o) {
         GatewayClientCredentialResource resource = new GatewayClientCredentialResource();
-        if (o != null){
+        if (o != null) {
             resource.setClientKey(o.getClientKey());
             resource.setClientSecret(o.getClientSecret());
             resource.setGatewayId(o.getGatewayId());
@@ -903,7 +842,7 @@ public class AppCatalogJPAUtils {
             resource.setGatewayID(o.getGatewayID());
             resource.setCreatedTime(o.getCreationTime());
             resource.setCredentialStoreToken(o.getCredentialStoreToken());
-            if (o.getUpdateTime() != null){
+            if (o.getUpdateTime() != null) {
                 resource.setUpdatedTime(o.getUpdateTime());
             }
         }
@@ -960,38 +899,20 @@ public class AppCatalogJPAUtils {
             resource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             resource.setDataMovementProtocol(o.getDataMovementProtocol());
             resource.setPriorityOrder(o.getPriorityOrder());
-            resource.setStorageResourceResource((StorageResourceResource)createStorageResource(o.getStorageResource()));
+            resource.setStorageResourceResource((StorageResourceResource) createStorageResource(o.getStorageResource()));
         }
         return resource;
     }
 
     private static AppCatalogResource createModuleLoadCmd(ModuleLoadCmd o) {
         ModuleLoadCmdResource moduleLoadCmdResource = new ModuleLoadCmdResource();
-        if (o != null){
+        if (o != null) {
             moduleLoadCmdResource.setCmd(o.getCmd());
             moduleLoadCmdResource.setAppDeploymentId(o.getAppDeploymentId());
             moduleLoadCmdResource.setOrder(o.getOrder());
-            moduleLoadCmdResource.setAppDeploymentResource((AppDeploymentResource)createApplicationDeployment(o.getApplicationDeployment()));
+            moduleLoadCmdResource.setAppDeploymentResource((AppDeploymentResource) createApplicationDeployment(o.getApplicationDeployment()));
         }
         return moduleLoadCmdResource;
     }
-
-    private static AppCatalogResource createWorkflow(Workflow o) {
-        WorkflowResource workflowResource = new WorkflowResource();
-        workflowResource.setWfName(o.getWfName());
-        workflowResource.setCreatedUser(o.getCreatedUser());
-        if (o.getGraph() != null){
-            workflowResource.setGraph(new String(o.getGraph()));
-        }
-        if (o.getImage() != null){
-            workflowResource.setImage(new String(o.getImage()));
-        }
-        workflowResource.setCreatedTime(o.getCreationTime());
-        if (o.getUpdateTime() != null){
-            workflowResource.setUpdatedTime(o.getUpdateTime());
-        }
-        workflowResource.setWfTemplateId(o.getWfTemplateId());
-        workflowResource.setGatewayId(o.getGatewayId());
-        return workflowResource;
-    }
 }
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogResourceType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogResourceType.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogResourceType.java
index 66a8a03..e30ea06 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogResourceType.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogResourceType.java
@@ -63,8 +63,5 @@ public enum AppCatalogResourceType {
 	LOCAL_DATA_MOVEMENT,
     MODULE_LOAD_CMD,
     ClOUD_SUBMISSION,
-    WORKFLOW,
-    WORKFLOW_INPUT,
-    WORKFLOW_OUTPUT,
     GATEWAY_CLIENT_CREDENTIAL,
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
index 1420fd1..056181f 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
@@ -21,7 +21,6 @@
 
 package org.apache.airavata.registry.core.app.catalog.util;
 
-import org.apache.airavata.model.Workflow;
 import org.apache.airavata.model.appcatalog.appdeployment.*;
 import org.apache.airavata.model.appcatalog.appinterface.*;
 import org.apache.airavata.model.appcatalog.computeresource.*;
@@ -846,30 +845,6 @@ public class AppCatalogThriftConversion {
         return preferences;
     }
 
-    public static InputDataObjectType getWorkflowInput (WorkflowInputResource resource){
-        InputDataObjectType input = new InputDataObjectType();
-        input.setName(resource.getInputKey());
-        input.setApplicationArgument(resource.getAppArgument());
-        input.setInputOrder(resource.getInputOrder());
-        input.setType(DataType.valueOf(resource.getDataType()));
-        input.setMetaData(resource.getMetadata());
-        input.setUserFriendlyDescription(resource.getUserFriendlyDesc());
-        input.setIsRequired(resource.getRequired());
-        input.setRequiredToAddedToCommandLine(resource.getRequiredToCMD());
-        input.setDataStaged(resource.isDataStaged());
-        return input;
-    }
-
-    public static List<InputDataObjectType> getWFInputs(List<AppCatalogResource> resources){
-        List<InputDataObjectType> inputResources = new ArrayList<InputDataObjectType>();
-        if (resources != null && !resources.isEmpty()){
-            for (AppCatalogResource resource : resources){
-                inputResources.add(getWorkflowInput((WorkflowInputResource) resource));
-            }
-        }
-        return inputResources;
-    }
-
     public static GatewayResourceProfile getGatewayResourceProfile(GatewayProfileResource gw, List<ComputeResourcePreference> preferences, List<StoragePreference> storagePreferences){
         GatewayResourceProfile gatewayProfile = new GatewayResourceProfile();
         gatewayProfile.setGatewayID(gw.getGatewayID());
@@ -879,18 +854,4 @@ public class AppCatalogThriftConversion {
         return gatewayProfile;
     }
 
-    public static Workflow getWorkflow (WorkflowResource resource) throws AppCatalogException {
-        Workflow workflow = new Workflow();
-        workflow.setTemplateId(resource.getWfTemplateId());
-        workflow.setGraph(resource.getGraph());
-        workflow.setName(resource.getWfName());
-        if (resource.getImage() != null){
-            workflow.setImage(resource.getImage().getBytes());
-        }
-        WorkflowInputResource inputResource = new WorkflowInputResource();
-        List<AppCatalogResource> resources = inputResource.get(AppCatAbstractResource.WFInputConstants.WF_TEMPLATE_ID, resource.getWfTemplateId());
-        workflow.setWorkflowInputs(getWFInputs(resources));
-
-        return workflow;
-    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
index b6353b4..92c06de 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/ComponentStatus.java
@@ -43,6 +43,13 @@ public class ComponentStatus implements Serializable {
     @Column(name = "UPDATE_TIME")
     private Timestamp updateTime;
 
+    @Column(name = "TEMPLATE_ID")
+    private String templateId;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "TEMPLATE_ID")
+    private Workflow workflow;
+
     public String getStatusId() {
         return statusId;
     }
@@ -74,5 +81,21 @@ public class ComponentStatus implements Serializable {
     public void setUpdateTime(Timestamp updateTime) {
         this.updateTime = updateTime;
     }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public Workflow getWorkflow() {
+        return workflow;
+    }
+
+    public void setWorkflow(Workflow workflow) {
+        this.workflow = workflow;
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
index 48ececb..8078000 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Edge.java
@@ -48,6 +48,9 @@ public class Edge implements Serializable {
     @Column(name = "DESCRIPTION")
     private String description;
 
+    @Column(name = "CREATED_TIME")
+    private Timestamp createdTime;
+
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "TEMPLATE_ID")
     private Workflow workflow;
@@ -99,5 +102,13 @@ public class Edge implements Serializable {
     public void setWorkflow(Workflow workflow) {
         this.workflow = workflow;
     }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
index 0711ad5..54bd079 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Node.java
@@ -24,6 +24,7 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "NODE")
@@ -53,6 +54,9 @@ public class Node implements Serializable {
     @Column(name = "APPLICATION_NAME")
     private String applicationName;
 
+    @Column(name = "CREATED_TIME")
+    private Timestamp createdTime;
+
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "TEMPLATE_ID")
     private Workflow workflow;
@@ -120,5 +124,13 @@ public class Node implements Serializable {
     public void setApplicationName(String applicationName) {
         this.applicationName = applicationName;
     }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2a2782a6/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
index f0be41f..0badd6e 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/workflow/catalog/model/Port.java
@@ -24,6 +24,7 @@ package org.apache.airavata.registry.core.workflow.catalog.model;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "PORT")
@@ -47,6 +48,9 @@ public class Port implements Serializable {
     @Column(name = "DESCRIPTION")
     private String description;
 
+    @Column(name = "CREATED_TIME")
+    private Timestamp createdTime;
+
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "TEMPLATE_ID")
     private Workflow workflow;
@@ -98,5 +102,13 @@ public class Port implements Serializable {
     public void setPortId(String portId) {
         this.portId = portId;
     }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
 }
 


[27/50] [abbrv] airavata git commit: Merge branch 'develop' of https://git-wip-us.apache.org/repos/asf/airavata into develop

Posted by ch...@apache.org.
Merge branch 'develop' of https://git-wip-us.apache.org/repos/asf/airavata into develop


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

Branch: refs/heads/master
Commit: ad0116126d12b6b2afdd43c60f3190884a56d9d2
Parents: 225f462 72a6f6a
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Feb 1 16:48:26 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Feb 1 16:48:26 2016 -0500

----------------------------------------------------------------------
 .../workflow/catalog/model/ComponentStatus.java |  78 +++++++++
 .../core/workflow/catalog/model/Edge.java       | 103 ++++++++++++
 .../core/workflow/catalog/model/Edge_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Node.java       | 124 ++++++++++++++
 .../core/workflow/catalog/model/Node_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Port.java       | 102 ++++++++++++
 .../core/workflow/catalog/model/Port_PK.java    |  64 +++++++
 .../core/workflow/catalog/model/Workflow.java   | 124 ++++++++++++++
 .../catalog/model/WorkflowInput_PK.java         |  64 +++++++
 .../catalog/model/WorkflowIntInput.java         | 166 +++++++++++++++++++
 .../workflow/catalog/model/WorkflowOutput.java  | 156 +++++++++++++++++
 .../catalog/model/WorkflowOutput_PK.java        |  64 +++++++
 .../workflow/catalog/model/WorkflowStatus.java  | 103 ++++++++++++
 .../catalog/model/WorkflowStatus_PK.java        |  64 +++++++
 .../src/main/resources/workflow-derby.sql       | 123 ++++++++++++++
 .../src/main/resources/workflow-mysql.sql       | 123 ++++++++++++++
 16 files changed, 1586 insertions(+)
----------------------------------------------------------------------



[09/50] [abbrv] airavata git commit: set correct gateway id

Posted by ch...@apache.org.
set correct gateway id


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

Branch: refs/heads/master
Commit: d79055a693f3d0a417b4ac611c02cedec95985e7
Parents: d527fc5
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Jan 20 13:32:32 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Jan 20 13:32:32 2016 -0500

----------------------------------------------------------------------
 .../airavata/orchestrator/server/OrchestratorServerHandler.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d79055a6/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index f04fdae..a461ba4 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -538,7 +538,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 					}
 					if (status.getState() != null) {
 						status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-						OrchestratorUtils.updageAndPublishExperimentStatus(processIdentity.getExperimentId(), status, publisher, gatewayName);
+						OrchestratorUtils.updageAndPublishExperimentStatus(processIdentity.getExperimentId(), status, publisher,  processIdentity.getGatewayId());
 						log.info("expId : " + processIdentity.getExperimentId() + " :- Experiment status updated to " +
 								status.getState());
 					}


[49/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 3deb9d1..1ad3333 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-15")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-02-08")
 public class Airavata {
 
   public interface Iface {
@@ -200,6 +200,7 @@ public class Airavata {
     public String getSSHPubKey(org.apache.airavata.model.security.AuthzToken authzToken, String airavataCredStoreToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get a Public Key by Providing the Token
      * 
      * @param CredStoreToken
@@ -218,6 +219,7 @@ public class Airavata {
     public Map<String,String> getAllUserSSHPubKeys(org.apache.airavata.model.security.AuthzToken authzToken, String userName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get all Public Keys of the Gateway
      * 
      * @param CredStoreToken
@@ -236,6 +238,7 @@ public class Airavata {
     public Map<String,String> getAllGatewaySSHPubKeys(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * 
      * Delete a Gateway
      * 
      * @param gatewayId
@@ -253,6 +256,7 @@ public class Airavata {
     public boolean deleteSSHPubKey(org.apache.airavata.model.security.AuthzToken authzToken, String airavataCredStoreToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
+     * 
      * Creates a Project with basic metadata.
      *    A Project is a container of experiments.
      * 
@@ -260,7 +264,7 @@ public class Airavata {
      *    The identifier for the requested gateway.
      * 
      * @param Project
-     *    The Project Object described in the workspace_model
+     *    The Project Object described in the workspace_model.
      * 
      * 
      * 
@@ -271,6 +275,7 @@ public class Airavata {
     public String createProject(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.workspace.Project project) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update an Existing Project
      * 
      * @param projectId
@@ -288,14 +293,15 @@ public class Airavata {
     public void updateProject(org.apache.airavata.model.security.AuthzToken authzToken, String projectId, org.apache.airavata.model.workspace.Project updatedProject) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get a Project by ID
-     *    This method is to obtain a project by providing a projectId
+     *    This method is to obtain a project by providing a projectId.
      * 
      * @param projectId
-     *    projectId of the project you require
+     *    projectId of the project you require.
      * 
      * @return project
-     *    project data model will be returned
+     *    project data model will be returned.
      * 
      * 
      * 
@@ -305,15 +311,18 @@ public class Airavata {
     public org.apache.airavata.model.workspace.Project getProject(org.apache.airavata.model.security.AuthzToken authzToken, String projectId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Delete a Project
-     *    This method is used to delete an existing Project
+     *    This method is used to delete an existing Project.
      * 
      * @param projectId
-     *    projectId of the project you want to delete
+     *    projectId of the project you want to delete.
      * 
      * @return boolean
      *    Boolean identifier for the success or failure of the deletion operation.
      * 
+     *    NOTE: This method is not used within gateways connected with Airavata.
+     * 
      * 
      * 
      * @param authzToken
@@ -322,20 +331,21 @@ public class Airavata {
     public boolean deleteProject(org.apache.airavata.model.security.AuthzToken authzToken, String projectId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get all Project by user with pagination. Results will be ordered based
-     * on creation time DESC
+     * 
+     * Get All User Projects
+     * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
      * 
      * @param gatewayId
      *    The identifier for the requested gateway.
      * 
      * @param userName
-     *    The identifier of the user
+     *    The identifier of the user.
      * 
      * @param limit
-     *    The amount results to be fetched
+     *    The amount results to be fetched.
      * 
      * @param offset
-     *    The starting point of the results to be fetched
+     *    The starting point of the results to be fetched.
      * 
      * 
      * 
@@ -348,19 +358,25 @@ public class Airavata {
     public List<org.apache.airavata.model.workspace.Project> getUserProjects(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get all Project for user by project name with pagination.Results will be ordered based
-     * on creation time DESC
+     * 
+     * Search User Projects by Project Name
+     * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
      * 
      * @param gatewayId
-     *    The identifier for the requested gateway.
+     *    The unique identifier for the requested gateway.
+     * 
      * @param userName
-     *    The identifier of the user
+     *    The identifier of the user.
+     * 
      * @param projectName
-     *    The name of the project on which the results to be fetched
+     *    The name of the project on which the results to be fetched.
+     * 
      * @param limit
-     *    The amount results to be fetched
+     *    The amount results to be fetched.
+     * 
      * @param offset
-     *    The starting point of the results to be fetched
+     *    The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -373,19 +389,25 @@ public class Airavata {
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectName(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, String projectName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search and get all Projects for user by project description with pagination. Results
-     * will be ordered based on creation time DESC
+     * 
+     * Search User Projects by Project Description
+     * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
      * 
      * @param gatewayId
-     *    The identifier for the requested gateway.
+     *    The unique identifier of the gateway making the request.
+     * 
      * @param userName
-     *    The identifier of the user
+     *    The identifier of the user.
+     * 
      * @param description
-     *    The description to be matched
+     *    The description to be matched.
+     * 
      * @param limit
-     *    The amount results to be fetched
+     *    The amount results to be fetched.
+     * 
      * @param offset
-     *    The starting point of the results to be fetched
+     *    The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -398,19 +420,25 @@ public class Airavata {
     public List<org.apache.airavata.model.workspace.Project> searchProjectsByProjectDesc(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by experiment name with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Search User Experiments by Name
+     * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the user who created the experiments.
+     * 
      * @param expName
-     *       Experiment name to be matched
+     *       Experiment name to be matched.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -423,19 +451,25 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperimentsByName(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, String expName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by experiment name with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Search By Experiment Description
+     * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the requested user.
+     * 
      * @param description
-     *       Experiment description to be matched
+     *       Experiment description to be matched.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -448,19 +482,25 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperimentsByDesc(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, String description, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by application id with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Search Experiment By the Application
+     * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the requested user.
+     * 
      * @param applicationId
-     *       Application id to be matched
+     *       Application id to be matched.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -473,19 +513,25 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperimentsByApplication(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, String applicationId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by experiment status with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Search User Experiments by Status
+     * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the user making the request.
+     * 
      * @param experimentState
-     *       Experiement state to be matched
+     *       Experiement state to be matched.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -498,21 +544,31 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperimentsByStatus(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, org.apache.airavata.model.status.ExperimentState experimentState, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by experiment creation time with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Search User Experiments by the Creation Time
+     * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the requested user.
+     * 
      * @param fromTime
-     *       Start time of the experiments creation time
+     *       Start time of the experiments creation time.
+     * 
      * @param toTime
-     *       End time of the  experiement creation time
+     *       End time of the  experiement creation time.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
+     * @return ExperimentSummaryModel
+     *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+     * 
      * 
      * 
      * @param authzToken
@@ -526,19 +582,27 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperimentsByCreationTime(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, long fromTime, long toTime, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-     * based on creation time DESC
+     * Search Experiments.
+     * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Identifier of the requested gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the user requesting the search function.
+     * 
      * @param filters
-     *       map of multiple filter criteria.
+     *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
+     * @return ExperimentSummaryModel
+     *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+     * 
      * 
      * 
      * @param authzToken
@@ -551,13 +615,19 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentSummaryModel> searchExperiments(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, Map<org.apache.airavata.model.experiment.ExperimentSearchFields,String> filters, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get Experiment Statisitics for the given gateway for a specific time period
+     * 
+     * Get Experiment Statistics
+     * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+     * 
      * @param gatewayId
-     *       Identifier of the requested gateway
+     *       Unique identifier of the gateway making the request to fetch statistics.
+     * 
      * @param fromTime
-     *       Starting date time
+     *       Starting date time.
+     * 
      * @param toTime
-     *       Ending data time
+     *       Ending data time.
+     * 
      * 
      * 
      * @param authzToken
@@ -568,15 +638,19 @@ public class Airavata {
     public org.apache.airavata.model.experiment.ExperimentStatistics getExperimentStatistics(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, long fromTime, long toTime) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get Experiments within project with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Get All Experiments of the Project
+     * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param projectId
-     *       Identifier of the project
+     *       Uniqie identifier of the project.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -587,17 +661,22 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentModel> getExperimentsInProject(org.apache.airavata.model.security.AuthzToken authzToken, String projectId, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.ProjectNotFoundException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get experiments by user with pagination. Results will be sorted
-     * based on creation time DESC
+     * 
+     * Get All Experiments of the User
+     * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
      * 
      * @param gatewayId
-     *       Identifier of the requesting gateway
+     *       Identifier of the requesting gateway.
+     * 
      * @param userName
-     *       Username of the requested user
+     *       Username of the requested end user.
+     * 
      * @param limit
-     *       Amount of results to be fetched
+     *       Amount of results to be fetched.
+     * 
      * @param offset
-     *       The starting point of the results to be fetched
+     *       The starting point of the results to be fetched.
+     * 
      * 
      * 
      * @param authzToken
@@ -609,12 +688,17 @@ public class Airavata {
     public List<org.apache.airavata.model.experiment.ExperimentModel> getUserExperiments(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, String userName, int limit, int offset) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     *   *
+     *   * Create New Experiment
      *   * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
      *   *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
      *   *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
      *   *   registering the experiment in a persistent store.
      *   *
-     *   * @param basicExperimentMetadata
+     *   * @param gatewayId
+     *   *    The unique ID of the gateway where the experiment is been created.
+     *   *
+     *   * @param ExperimentModel
      *   *    The create experiment will require the basic experiment metadata like the name and description, intended user,
      *   *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
      *   *      the ExperimentMetadata is a required field.
@@ -651,8 +735,8 @@ public class Airavata {
     public String createExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.experiment.ExperimentModel experiment) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Delete an Experiment
      * 
+     * Delete an Experiment
      * If the experiment is not already launched experiment can be deleted.
      * 
      * @param authzToken
@@ -661,7 +745,7 @@ public class Airavata {
      *     Experiment ID of the experimnet you want to delete.
      * 
      * @return boolean
-     *     Identifier for the success or failure of the deletion operation
+     *     Identifier for the success or failure of the deletion operation.
      * 
      * 
      * 
@@ -671,12 +755,14 @@ public class Airavata {
     public boolean deleteExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String experimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     *   *
+     *   * Get Experiment
      *   * Fetch previously created experiment metadata.
      *   *
      *   * @param airavataExperimentId
-     *   *    The identifier for the requested experiment. This is returned during the create experiment step.
+     *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
      *   *
-     *   * @return experimentMetada
+     *   * @return ExperimentModel
      *   *   This method will return the previously stored experiment metadata.
      *   *
      *   * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -710,14 +796,17 @@ public class Airavata {
     public org.apache.airavata.model.experiment.ExperimentModel getExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
+     * Get Complete Experiment Details
      * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
      * tasks -> jobs information.
      * 
      * @param airavataExperimentId
      *    The identifier for the requested experiment. This is returned during the create experiment step.
      * 
-     * @return experimentMetada
-     *   This method will return the previously stored experiment metadata.
+     * @return ExperimentModel
+     *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+     *   information, special input output handling and additional quality of service parameters.
      * 
      * @throws org.apache.airavata.model.error.InvalidRequestException
      *    For any incorrect forming of the request itself.
@@ -749,14 +838,15 @@ public class Airavata {
     public org.apache.airavata.model.experiment.ExperimentModel getDetailedExperimentTree(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Configure a previously created experiment with required inputs, scheduling and other quality of service
-     *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-     *   to make it actionable by the server.
+     * 
+     * Update a Previously Created Experiment
+     * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+     * The experiment has to be launched to make it actionable by the server.
      * 
      * @param airavataExperimentId
      *    The identifier for the requested experiment. This is returned during the create experiment step.
      * 
-     * @param experimentConfigurationData
+     * @param ExperimentModel
      *    The configuration information of the experiment with application input parameters, computational resource scheduling
      *      information, special input output handling and additional quality of service parameters.
      * 
@@ -799,13 +889,14 @@ public class Airavata {
 
     /**
      *  *
-     *  * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *  *
-     *  * @param experimentId
+     *  * Validate experiment configuration.
+     *  * A true in general indicates, the experiment is ready to be launched.
      *  *
+     *  * @param airavataExperimentId
+     *  *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
      *  *
      *  * @return boolean
-     *  *      Identifier for the success or failure of the validation operation
+     *  *      Identifier for the success or failure of the validation operation.
      *  *
      * *
      * 
@@ -815,8 +906,12 @@ public class Airavata {
     public boolean validateExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-     *   notifications and intermediate and output data will be subsequently available for this experiment.
+     * 
+     * Launch a Previously Created & Configured Experiment.
+     * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+     * 
+     * @gatewayId
+     *    ID of the gateway which will launch the experiment.
      * 
      * @param airavataExperimentId
      *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -855,17 +950,18 @@ public class Airavata {
     public void launchExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get Experiment Status
      * 
-     * Obtain the status os an experiment by providing the Experiment Id
+     * Obtain the status of an experiment by providing the Experiment Id
      * 
      * @param authzToken
      * 
-     * @param experiementId
-     *     Experiment ID of the experimnet you require the status
+     * @param airavataExperimentId
+     *     Experiment ID of the experimnet you require the status.
      * 
      * @return ExperimentStatus
-     *     ExperimentStatus model with current status will be returned.
+     *     ExperimentStatus model with the current status will be returned.
      * 
      * 
      * 
@@ -875,16 +971,17 @@ public class Airavata {
     public org.apache.airavata.model.status.ExperimentStatus getExperimentStatus(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get Experiment Outputs
-     * This method to be used when need to obtain outputs of a certain Experiment
+     * This method to be used when need to obtain final outputs of a certain Experiment
      * 
      * @param authzToken
      * 
-     * @param experiementId
-     *     Experiment ID of the experimnet you need the outputs
+     * @param airavataExperimentId
+     *     Experiment ID of the experimnet you need the outputs.
      * 
      * @return list
-     *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+     *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
      * 
      * 
      * 
@@ -894,16 +991,17 @@ public class Airavata {
     public List<org.apache.airavata.model.application.io.OutputDataObjectType> getExperimentOutputs(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Get Intermediate Experiment Outputs
      * This method to be used when need to obtain intermediate outputs of a certain Experiment
      * 
      * @param authzToken
      * 
-     * @param experiementId
-     *     Experiment ID of the experimnet you need the intermediate outputs
+     * @param airavataExperimentId
+     *     Experiment ID of the experimnet you need intermediate outputs.
      * 
      * @return list
-     *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+     *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
      * 
      * 
      * 
@@ -913,13 +1011,14 @@ public class Airavata {
     public List<org.apache.airavata.model.application.io.OutputDataObjectType> getIntermediateOutputs(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get Job Status for an Experiment
+     * 
+     * Get Job Statuses for an Experiment
      * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
      * 
      * @param authzToken
      * 
      * @param experiementId
-     *     Experiment ID of the experimnet you need the intermediate outputs
+     *     Experiment ID of the experimnet you need the job statuses.
      * 
      * @return JobStatus
      *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -932,16 +1031,17 @@ public class Airavata {
     public Map<String,org.apache.airavata.model.status.JobStatus> getJobStatuses(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Get Job Details for all the jobs within an Experiment
+     * 
+     * Get Job Details for all the jobs within an Experiment.
      * This method to be used when need to get the job details for one or many jobs of an Experiment.
      * 
      * @param authzToken
      * 
      * @param experiementId
-     *     Experiment ID of the experimnet you need job details
+     *     Experiment ID of the experimnet you need job details.
      * 
      * @return list of JobDetails
-     *     Job details
+     *     Job details.
      * 
      * 
      * 
@@ -951,7 +1051,9 @@ public class Airavata {
     public List<org.apache.airavata.model.job.JobModel> getJobDetails(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+     * 
+     * Clone an Existing Experiment
+     * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
      *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
      * 
      * @param newExperimentName
@@ -963,7 +1065,7 @@ public class Airavata {
      *      should be shared public by default.
      * 
      * @return
-     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
      * 
      * @throws org.apache.airavata.model.error.InvalidRequestException
      *    For any incorrect forming of the request itself.
@@ -996,12 +1098,16 @@ public class Airavata {
     public String cloneExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String existingExperimentID, String newExperimentName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Terminate a running experiment.
+     * 
+     * Terminate a running Experiment.
+     * 
+     * @gatewayId
+     *    ID of the gateway which will terminate the running Experiment.
      * 
      * @param airavataExperimentId
-     *    The identifier for the requested experiment. This is returned during the create experiment step.
+     *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
      * 
-     * @return
+     * @return status
      *   This method call does not have a return value.
      * 
      * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1035,13 +1141,17 @@ public class Airavata {
     public void terminateExperiment(org.apache.airavata.model.security.AuthzToken authzToken, String airavataExperimentId, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.ExperimentNotFoundException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Register a Application Module.
      * 
+     * @gatewayId
+     *    ID of the gateway which is registering the new Application Module.
+     * 
      * @param applicationModule
      *    Application Module Object created from the datamodel.
      * 
      * @return appModuleId
-     *   Returns a server-side generated airavata appModule globally unique identifier.
+     *   Returns the server-side generated airavata appModule globally unique identifier.
      * 
      * 
      * @param authzToken
@@ -1051,13 +1161,14 @@ public class Airavata {
     public String registerApplicationModule(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule applicationModule) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch a Application Module.
      * 
      * @param appModuleId
-     *   The identifier for the requested application module
+     *   The unique identifier of the application module required
      * 
      * @return applicationModule
-     *   Returns a application Module Object.
+     *   Returns an Application Module Object.
      * 
      * 
      * @param authzToken
@@ -1066,6 +1177,7 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule getApplicationModule(org.apache.airavata.model.security.AuthzToken authzToken, String appModuleId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update a Application Module.
      * 
      * @param appModuleId
@@ -1084,13 +1196,28 @@ public class Airavata {
      */
     public boolean updateApplicationModule(org.apache.airavata.model.security.AuthzToken authzToken, String appModuleId, org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule applicationModule) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * 
+     * Fetch all Application Module Descriptions.
+     * 
+     * @param gatewayId
+     *    ID of the gateway which need to list all available application deployment documentation.
+     * 
+     * @return list
+     *    Returns the list of all Application Module Objects.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayId
+     */
     public List<org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule> getAllAppModules(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Delete a Application Module.
+     * 
+     * Delete an Application Module.
      * 
      * @param appModuleId
-     *   The identifier for the requested application module to be deleted.
+     *   The identifier of the Application Module to be deleted.
      * 
      * @return status
      *   Returns a success/failure of the deletion.
@@ -1102,9 +1229,13 @@ public class Airavata {
     public boolean deleteApplicationModule(org.apache.airavata.model.security.AuthzToken authzToken, String appModuleId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Register a Application Deployment.
      * 
-     * @param applicationModule
+     * Register an Application Deployment.
+     * 
+     * @param gatewayId
+     *    ID of the gateway which is registering the new Application Deployment.
+     * 
+     * @param applicationDeployment
      *    Application Module Object created from the datamodel.
      * 
      * @return appDeploymentId
@@ -1118,6 +1249,7 @@ public class Airavata {
     public String registerApplicationDeployment(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription applicationDeployment) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch a Application Deployment.
      * 
      * @param appDeploymentId
@@ -1133,10 +1265,11 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription getApplicationDeployment(org.apache.airavata.model.security.AuthzToken authzToken, String appDeploymentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Update a Application Deployment.
+     * 
+     * Update an Application Deployment.
      * 
      * @param appDeploymentId
-     *   The identifier for the requested application deployment to be updated.
+     *   The identifier of the requested application deployment to be updated.
      * 
      * @param appDeployment
      *    Application Deployment Object created from the datamodel.
@@ -1152,10 +1285,11 @@ public class Airavata {
     public boolean updateApplicationDeployment(org.apache.airavata.model.security.AuthzToken authzToken, String appDeploymentId, org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription applicationDeployment) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Delete a Application deployment.
+     * 
+     * Delete an Application Deployment.
      * 
      * @param appDeploymentId
-     *   The identifier for the requested application deployment to be deleted.
+     *   The unique identifier of application deployment to be deleted.
      * 
      * @return status
      *   Returns a success/failure of the deletion.
@@ -1167,10 +1301,14 @@ public class Airavata {
     public boolean deleteApplicationDeployment(org.apache.airavata.model.security.AuthzToken authzToken, String appDeploymentId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch all Application Deployment Descriptions.
      * 
+     * @param gatewayId
+     *    ID of the gateway which need to list all available application deployment documentation.
+     * 
      * @return list<applicationDeployment.
-     *   Returns the list of all application Deployment Objects.
+     *    Returns the list of all application Deployment Objects.
      * 
      * 
      * @param authzToken
@@ -1194,9 +1332,10 @@ public class Airavata {
     public List<String> getAppModuleDeployedResources(org.apache.airavata.model.security.AuthzToken authzToken, String appModuleId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Register a Application Interface.
      * 
-     * @param applicationModule
+     * @param applicationInterface
      *    Application Module Object created from the datamodel.
      * 
      * @return appInterfaceId
@@ -1209,17 +1348,39 @@ public class Airavata {
      */
     public String registerApplicationInterface(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription applicationInterface) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * 
+     * Clone an Application Interface.
+     * 
+     * @gatewayId
+     *    The identifier for the gateway profile to be requested
+     * 
+     * @param existingAppInterfaceID
+     *    Identifier of the existing Application interface you wich to clone.
+     * 
+     * @param newApplicationName
+     *    Name for the new application interface.
+     * 
+     * @return appInterfaceId
+     *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+     * 
+     * 
+     * @param authzToken
+     * @param existingAppInterfaceID
+     * @param newApplicationName
+     * @param gatewayId
+     */
     public String cloneApplicationInterface(org.apache.airavata.model.security.AuthzToken authzToken, String existingAppInterfaceID, String newApplicationName, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Fetch a Application Interface.
+     * 
+     * Fetch an Application Interface.
      * 
      * @param appInterfaceId
-     *   The identifier for the requested application module
+     *   The identifier for the requested application interface.
      * 
      * @return applicationInterface
-     *   Returns a application Interface Object.
-     * 
+     *   Returns an application Interface Object.
      * 
      * 
      * @param authzToken
@@ -1228,10 +1389,11 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription getApplicationInterface(org.apache.airavata.model.security.AuthzToken authzToken, String appInterfaceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update a Application Interface.
      * 
      * @param appInterfaceId
-     *   The identifier for the requested application deployment to be updated.
+     *   The identifier of the requested application deployment to be updated.
      * 
      * @param appInterface
      *    Application Interface Object created from the datamodel.
@@ -1240,7 +1402,6 @@ public class Airavata {
      *   Returns a success/failure of the update.
      * 
      * 
-     * 
      * @param authzToken
      * @param appInterfaceId
      * @param applicationInterface
@@ -1248,7 +1409,8 @@ public class Airavata {
     public boolean updateApplicationInterface(org.apache.airavata.model.security.AuthzToken authzToken, String appInterfaceId, org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription applicationInterface) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Delete a Application Interface.
+     * 
+     * Delete an Application Interface.
      * 
      * @param appInterfaceId
      *   The identifier for the requested application interface to be deleted.
@@ -1257,18 +1419,18 @@ public class Airavata {
      *   Returns a success/failure of the deletion.
      * 
      * 
-     * 
      * @param authzToken
      * @param appInterfaceId
      */
     public boolean deleteApplicationInterface(org.apache.airavata.model.security.AuthzToken authzToken, String appInterfaceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Fetch name and id of  Application Interface documents.
+     * 
+     * Fetch name and ID of  Application Interface documents.
      * 
      * 
      * @return map<applicationId, applicationInterfaceNames>
-     *   Returns a list of application interfaces with corresponsing id's
+     *   Returns a list of application interfaces with corresponsing ID's
      * 
      * 
      * @param authzToken
@@ -1277,11 +1439,12 @@ public class Airavata {
     public Map<String,String> getAllApplicationInterfaceNames(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch all Application Interface documents.
      * 
      * 
      * @return map<applicationId, applicationInterfaceNames>
-     *   Returns a list of application interfaces documents
+     *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
      * 
      * 
      * @param authzToken
@@ -1290,10 +1453,11 @@ public class Airavata {
     public List<org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription> getAllApplicationInterfaces(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch the list of Application Inputs.
      * 
      * @param appInterfaceId
-     *   The identifier for the requested application interface
+     *   The identifier of the application interface which need inputs to be fetched.
      * 
      * @return list<application_interface_model.InputDataObjectType>
      *   Returns a list of application inputs.
@@ -1305,10 +1469,11 @@ public class Airavata {
     public List<org.apache.airavata.model.application.io.InputDataObjectType> getApplicationInputs(org.apache.airavata.model.security.AuthzToken authzToken, String appInterfaceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Fetch the list of Application Outputs.
+     * 
+     * Fetch list of Application Outputs.
      * 
      * @param appInterfaceId
-     *   The identifier for the requested application interface
+     *   The identifier of the application interface which need outputs to be fetched.
      * 
      * @return list<application_interface_model.OutputDataObjectType>
      *   Returns a list of application outputs.
@@ -1320,14 +1485,15 @@ public class Airavata {
     public List<org.apache.airavata.model.application.io.OutputDataObjectType> getApplicationOutputs(org.apache.airavata.model.security.AuthzToken authzToken, String appInterfaceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch a list of all deployed Compute Hosts for a given application interfaces.
      * 
      * @param appInterfaceId
-     *   The identifier for the requested application interface
+     *   The identifier for the requested application interface.
      * 
      * @return map<computeResourceId, computeResourceName>
      *   A map of registered compute resource id's and their corresponding hostnames.
-     *    Deployments of each modules listed within the interfaces will be listed.
+     *   Deployments of each modules listed within the interfaces will be listed.
      * 
      * 
      * @param authzToken
@@ -1366,6 +1532,7 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription getComputeResource(org.apache.airavata.model.security.AuthzToken authzToken, String computeResourceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch all registered Compute Resources.
      * 
      * @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1452,7 +1619,7 @@ public class Airavata {
     public Map<String,String> getAllStorageResourceNames(org.apache.airavata.model.security.AuthzToken authzToken) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Update a Compute Resource.
+     * Update a Storage Resource.
      * 
      * @param storageResourceId
      *   The identifier for the requested compute resource to be updated.
@@ -1474,7 +1641,7 @@ public class Airavata {
      * Delete a Storage Resource.
      * 
      * @param storageResourceId
-     *   The identifier for the requested compute resource to be deleted.
+     *   The identifier of the requested compute resource to be deleted.
      * 
      * @return status
      *   Returns a success/failure of the deletion.
@@ -1601,6 +1768,7 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission getSSHJobSubmission(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Add a UNICORE Job Submission details to a compute resource
      *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
      * 
@@ -1625,10 +1793,13 @@ public class Airavata {
     public String addUNICOREJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String computeResourceId, int priorityOrder, org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission unicoreJobSubmission) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     *   *
      *   * This method returns UnicoreJobSubmission object
+     *   *
      *   * @param jobSubmissionInterfaceId
      *   *   The identifier of the JobSubmission Interface to be retrieved.
      *   *  @return UnicoreJobSubmission instance
+     *   *
      * *
      * 
      * @param authzToken
@@ -1637,6 +1808,7 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission getUnicoreJobSubmission(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     *    *
      *    * Add a Cloud Job Submission details to a compute resource
      *    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
      *    *
@@ -1651,6 +1823,7 @@ public class Airavata {
      *    *
      *    * @return status
      *    *   Returns the unique job submission id.
+     *    *
      * *
      * 
      * @param authzToken
@@ -1661,6 +1834,7 @@ public class Airavata {
     public String addCloudJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String computeResourceId, int priorityOrder, org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission cloudSubmission) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     *    *
      *    * This method returns cloudJobSubmission object
      *    * @param jobSubmissionInterfaceI
      *        *   The identifier of the JobSubmission Interface to be retrieved.
@@ -1673,6 +1847,7 @@ public class Airavata {
     public org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission getCloudJobSubmission(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update the given SSH Job Submission details
      * 
      * @param jobSubmissionInterfaceId
@@ -1692,6 +1867,7 @@ public class Airavata {
     public boolean updateSSHJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionInterfaceId, org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission sshJobSubmission) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update the cloud Job Submission details
      * 
      * @param jobSubmissionInterfaceId
@@ -1711,6 +1887,7 @@ public class Airavata {
     public boolean updateCloudJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionInterfaceId, org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission sshJobSubmission) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update the UNIOCRE Job Submission details
      * 
      * @param jobSubmissionInterfaceId
@@ -1731,6 +1908,7 @@ public class Airavata {
     public boolean updateUnicoreJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionInterfaceId, org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission unicoreJobSubmission) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Add a Local data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -1760,6 +1938,7 @@ public class Airavata {
     public String addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String resourceId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update the given Local data movement details
      * 
      * @param dataMovementInterfaceId
@@ -1780,7 +1959,8 @@ public class Airavata {
     public boolean updateLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * This method returns local datamovement object
+     * 
+     * This method returns local datamovement object.
      * 
      * @param dataMovementId
      *   The identifier of the datamovement Interface to be retrieved.
@@ -1795,6 +1975,7 @@ public class Airavata {
     public org.apache.airavata.model.data.movement.LOCALDataMovement getLocalDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Add a SCP data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -1820,6 +2001,7 @@ public class Airavata {
     public String addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String resourceId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update the given scp data movement details
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -1855,6 +2037,7 @@ public class Airavata {
     public org.apache.airavata.model.data.movement.SCPDataMovement getSCPDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Add a UNICORE data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -1880,6 +2063,7 @@ public class Airavata {
     public String addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String resourceId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Update a selected UNICORE data movement details
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -1901,6 +2085,7 @@ public class Airavata {
     public boolean updateUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * This method returns UNICORE datamovement object
      * 
      * @param dataMovementId
@@ -1916,6 +2101,7 @@ public class Airavata {
     public org.apache.airavata.model.data.movement.UnicoreDataMovement getUnicoreDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Add a GridFTP data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
@@ -2134,7 +2320,7 @@ public class Airavata {
      * Fetch the given Gateway Resource Profile.
      * 
      * @param gatewayID
-     *   The identifier for the requested gateway resource
+     *   The identifier for the requested gateway resource.
      * 
      * @return gatewayResourceProfile
      *    Gateway Resource Profile Object.
@@ -2203,9 +2389,32 @@ public class Airavata {
      */
     public boolean addGatewayComputeResourcePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String computeResourceId, org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference computeResourcePreference) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * Add a Storage Resource Preference to a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier of the gateway profile to be added.
+     * 
+     * @param storageResourceId
+     *   Preferences related to a particular compute resource
+     * 
+     * @param computeResourcePreference
+     *   The ComputeResourcePreference object to be added to the resource profile.
+     * 
+     * @return status
+     *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+     *    Instead an update should be used.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayID
+     * @param storageResourceId
+     * @param storagePreference
+     */
     public boolean addGatewayStoragePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String storageResourceId, org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference storagePreference) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch a Compute Resource Preference of a registered gateway profile.
      * 
      * @param gatewayID
@@ -2224,9 +2433,28 @@ public class Airavata {
      */
     public org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference getGatewayComputeResourcePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String computeResourceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * 
+     * Fetch a Storage Resource Preference of a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+     * 
+     * @param storageResourceId
+     *   Identifier of the Stprage Preference required to be fetched.
+     * 
+     * @return StoragePreference
+     *   Returns the StoragePreference object.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayID
+     * @param storageResourceId
+     */
     public org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference getGatewayStoragePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String storageResourceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
+     * 
      * Fetch all Compute Resource Preferences of a registered gateway profile.
      * 
      * @param gatewayID
@@ -2241,10 +2469,28 @@ public class Airavata {
      */
     public List<org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference> getAllGatewayComputeResourcePreferences(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * Fetch all Storage Resource Preferences of a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier for the gateway profile to be requested
+     * 
+     * @return StoragePreference
+     *   Returns the StoragePreference object.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayID
+     */
     public List<org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference> getAllGatewayStoragePreferences(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     * Fetch all gateway profiles registered
+     * 
+     * Fetch all Gateway Profiles registered
+     * 
+     * @return GatewayResourceProfile
+     *   Returns all the GatewayResourcePrifle list object.
+     * 
      * 
      * 
      * @param authzToken
@@ -2274,6 +2520,27 @@ public class Airavata {
      */
     public boolean updateGatewayComputeResourcePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String computeResourceId, org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference computeResourcePreference) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * Update a Storage Resource Preference of a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier of the gateway profile to be updated.
+     * 
+     * @param storageId
+     *   The Storage resource identifier of the one that you want to update
+     * 
+     * @param storagePreference
+     *   The storagePreference object to be updated to the resource profile.
+     * 
+     * @return status
+     *   Returns a success/failure of the updation.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayID
+     * @param storageId
+     * @param storagePreference
+     */
     public boolean updateGatewayStoragePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String storageId, org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference storagePreference) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
@@ -2295,24 +2562,67 @@ public class Airavata {
      */
     public boolean deleteGatewayComputeResourcePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String computeResourceId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * Delete the Storage Resource Preference of a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier of the gateway profile to be deleted.
+     * 
+     * @param storageId
+     *   ID of the storage preference you want to delete.
+     * 
+     * @return status
+     *   Returns a success/failure of the deletion.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayID
+     * @param storageId
+     */
     public boolean deleteGatewayStoragePreference(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayID, String storageId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    /**
+     * Delete the Storage Resource Preference of a registered gateway profile.
+     * 
+     * @param gatewayID
+     *   The identifier of the gateway profile to be deleted.
+     * 
+     * @param storageId
+     *   ID of the storage preference you want to delete.
+     * 
+     * @return status
+     *   Returns a success/failure of the deletion.
+     * 
+     * 
+     * @param authzToken
+     * @param gatewayId
+     */
     public List<String> getAllWorkflows(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
-    public org.apache.airavata.model.Workflow getWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
+    /**
+     * 
+     * API Methods Related for Work-Flow Submission Features.
+     * 
+     * 
+     * @param authzToken
+     * @param workflowTemplateId
+     */
+    public org.apache.airavata.model.WorkflowModel getWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     public void deleteWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
-    public String registerWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.Workflow workflow) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
+    public String registerWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.WorkflowModel workflow) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
-    public void updateWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId, org.apache.airavata.model.Workflow workflow) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
+    public void updateWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId, org.apache.airavata.model.WorkflowModel workflow) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     public String getWorkflowTemplateId(org.apache.airavata.model.security.AuthzToken authzToken, String workflowName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     public boolean isWorkflowExistWithName(org.apache.airavata.model.security.AuthzToken authzToken, String workflowName) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     /**
-     *  * Data Manager Related API Methods
+     *  *
+     *  * Data Manager Related API Methods.
+     *  *
      * *
      * 
      * @param authzToken
@@ -2592,9 +2902,9 @@ public class Airavata {
 
     public void deleteWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void registerWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.Workflow workflow, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void registerWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String gatewayId, org.apache.airavata.model.WorkflowModel workflow, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void updateWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId, org.apache.airavata.model.Workflow workflow, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void updateWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId, org.apache.airavata.model.WorkflowModel workflow, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getWorkflowTemplateId(org.apache.airavata.model.security.AuthzToken authzToken, String workflowName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -7310,7 +7620,7 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getAllWorkflows failed: unknown result");
     }
 
-    public org.apache.airavata.model.Workflow getWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientException, org.apache.airavata.model.error.AiravataSystemException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+    public org.apache.airavata.model.WorkflowModel getWorkflow(org.apache.airavata.model.security.AuthzToken authzToken, String workflowTemplateId) throws org.apache.airavata.model.error.InvalidRequestException, org.apache.airavata.model.error.AiravataClientExcepti

<TRUNCATED>

[47/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
index 3fabb7d..ee0d60d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
@@ -210,6 +210,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get a Public Key by Providing the Token
    * 
    * @param CredStoreToken
@@ -231,6 +232,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get all Public Keys of the Gateway
    * 
    * @param CredStoreToken
@@ -252,6 +254,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Delete a Gateway
    * 
    * @param gatewayId
@@ -272,6 +275,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
    * 
@@ -279,7 +283,7 @@ class AiravataHandler : virtual public AiravataIf {
    *    The identifier for the requested gateway.
    * 
    * @param Project
-   *    The Project Object described in the workspace_model
+   *    The Project Object described in the workspace_model.
    * 
    * 
    * 
@@ -293,6 +297,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update an Existing Project
    * 
    * @param projectId
@@ -313,14 +318,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get a Project by ID
-   *    This method is to obtain a project by providing a projectId
+   *    This method is to obtain a project by providing a projectId.
    * 
    * @param projectId
-   *    projectId of the project you require
+   *    projectId of the project you require.
    * 
    * @return project
-   *    project data model will be returned
+   *    project data model will be returned.
    * 
    * 
    * 
@@ -333,15 +339,18 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Delete a Project
-   *    This method is used to delete an existing Project
+   *    This method is used to delete an existing Project.
    * 
    * @param projectId
-   *    projectId of the project you want to delete
+   *    projectId of the project you want to delete.
    * 
    * @return boolean
    *    Boolean identifier for the success or failure of the deletion operation.
    * 
+   *    NOTE: This method is not used within gateways connected with Airavata.
+   * 
    * 
    * 
    * @param authzToken
@@ -353,20 +362,21 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
+   * 
+   * Get All User Projects
+   * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
    *    The identifier for the requested gateway.
    * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
    * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
    * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
    * 
    * 
    * 
@@ -382,19 +392,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
+   * 
+   * Search User Projects by Project Name
+   * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier for the requested gateway.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param projectName
-   *    The name of the project on which the results to be fetched
+   *    The name of the project on which the results to be fetched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -410,19 +426,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search and get all Projects for user by project description with pagination. Results
-   * will be ordered based on creation time DESC
+   * 
+   * Search User Projects by Project Description
+   * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier of the gateway making the request.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param description
-   *    The description to be matched
+   *    The description to be matched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -438,19 +460,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Name
+   * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user who created the experiments.
+   * 
    * @param expName
-   *       Experiment name to be matched
+   *       Experiment name to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -466,19 +494,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search By Experiment Description
+   * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param description
-   *       Experiment description to be matched
+   *       Experiment description to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -494,19 +528,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search Experiment By the Application
+   * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param applicationId
-   *       Application id to be matched
+   *       Application id to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -522,19 +562,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Status
+   * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user making the request.
+   * 
    * @param experimentState
-   *       Experiement state to be matched
+   *       Experiement state to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -550,21 +596,31 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by the Creation Time
+   * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param fromTime
-   *       Start time of the experiments creation time
+   *       Start time of the experiments creation time.
+   * 
    * @param toTime
-   *       End time of the  experiement creation time
+   *       End time of the  experiement creation time.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -581,19 +637,27 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
+   * Search Experiments.
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user requesting the search function.
+   * 
    * @param filters
-   *       map of multiple filter criteria.
+   *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -609,13 +673,19 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Experiment Statisitics for the given gateway for a specific time period
+   * 
+   * Get Experiment Statistics
+   * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+   * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the gateway making the request to fetch statistics.
+   * 
    * @param fromTime
-   *       Starting date time
+   *       Starting date time.
+   * 
    * @param toTime
-   *       Ending data time
+   *       Ending data time.
+   * 
    * 
    * 
    * @param authzToken
@@ -629,15 +699,19 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the Project
+   * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param projectId
-   *       Identifier of the project
+   *       Uniqie identifier of the project.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -651,17 +725,22 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get experiments by user with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the User
+   * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requesting gateway
+   *       Identifier of the requesting gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested end user.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -676,12 +755,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
+   *   * Create New Experiment
    *   * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
    *   *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
    *   *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
    *   *   registering the experiment in a persistent store.
    *   *
-   *   * @param basicExperimentMetadata
+   *   * @param gatewayId
+   *   *    The unique ID of the gateway where the experiment is been created.
+   *   *
+   *   * @param ExperimentModel
    *   *    The create experiment will require the basic experiment metadata like the name and description, intended user,
    *   *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
    *   *      the ExperimentMetadata is a required field.
@@ -721,8 +805,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete an Experiment
    * 
+   * Delete an Experiment
    * If the experiment is not already launched experiment can be deleted.
    * 
    * @param authzToken
@@ -731,7 +815,7 @@ class AiravataHandler : virtual public AiravataIf {
    *     Experiment ID of the experimnet you want to delete.
    * 
    * @return boolean
-   *     Identifier for the success or failure of the deletion operation
+   *     Identifier for the success or failure of the deletion operation.
    * 
    * 
    * 
@@ -744,12 +828,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
+   *   * Get Experiment
    *   * Fetch previously created experiment metadata.
    *   *
    *   * @param airavataExperimentId
-   *   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
    *   *
-   *   * @return experimentMetada
+   *   * @return ExperimentModel
    *   *   This method will return the previously stored experiment metadata.
    *   *
    *   * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -786,14 +872,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
+   * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
    * tasks -> jobs information.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
+   * @return ExperimentModel
+   *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+   *   information, special input output handling and additional quality of service parameters.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -828,14 +917,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
+   * 
+   * Update a Previously Created Experiment
+   * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+   * The experiment has to be launched to make it actionable by the server.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @param experimentConfigurationData
+   * @param ExperimentModel
    *    The configuration information of the experiment with application input parameters, computational resource scheduling
    *      information, special input output handling and additional quality of service parameters.
    * 
@@ -887,13 +977,14 @@ class AiravataHandler : virtual public AiravataIf {
 
   /**
    *  *
-   *  * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-   *  *
-   *  * @param experimentId
+   *  * Validate experiment configuration.
+   *  * A true in general indicates, the experiment is ready to be launched.
    *  *
+   *  * @param airavataExperimentId
+   *  *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
    *  *
    *  * @return boolean
-   *  *      Identifier for the success or failure of the validation operation
+   *  *      Identifier for the success or failure of the validation operation.
    *  *
    * *
    * 
@@ -906,8 +997,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * Launch a Previously Created & Configured Experiment.
+   * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will launch the experiment.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -949,17 +1044,18 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Experiment Status
    * 
-   * Obtain the status os an experiment by providing the Experiment Id
+   * Obtain the status of an experiment by providing the Experiment Id
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you require the status
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you require the status.
    * 
    * @return ExperimentStatus
-   *     ExperimentStatus model with current status will be returned.
+   *     ExperimentStatus model with the current status will be returned.
    * 
    * 
    * 
@@ -972,16 +1068,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Experiment Outputs
-   * This method to be used when need to obtain outputs of a certain Experiment
+   * This method to be used when need to obtain final outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need the outputs.
    * 
    * @return list
-   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -994,16 +1091,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Intermediate Experiment Outputs
    * This method to be used when need to obtain intermediate outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need intermediate outputs.
    * 
    * @return list
-   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -1016,13 +1114,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Job Status for an Experiment
+   * 
+   * Get Job Statuses for an Experiment
    * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   *     Experiment ID of the experimnet you need the job statuses.
    * 
    * @return JobStatus
    *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -1038,16 +1137,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Job Details for all the jobs within an Experiment
+   * 
+   * Get Job Details for all the jobs within an Experiment.
    * This method to be used when need to get the job details for one or many jobs of an Experiment.
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need job details
+   *     Experiment ID of the experimnet you need job details.
    * 
    * @return list of JobDetails
-   *     Job details
+   *     Job details.
    * 
    * 
    * 
@@ -1060,7 +1160,9 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   * 
+   * Clone an Existing Experiment
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
    * 
    * @param newExperimentName
@@ -1072,7 +1174,7 @@ class AiravataHandler : virtual public AiravataIf {
    *      should be shared public by default.
    * 
    * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -1108,12 +1210,16 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Terminate a running experiment.
+   * 
+   * Terminate a running Experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will terminate the running Experiment.
    * 
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
    * 
-   * @return
+   * @return status
    *   This method call does not have a return value.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1150,13 +1256,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Register a Application Module.
    * 
+   * @gatewayId
+   *    ID of the gateway which is registering the new Application Module.
+   * 
    * @param applicationModule
    *    Application Module Object created from the datamodel.
    * 
    * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *   Returns the server-side generated airavata appModule globally unique identifier.
    * 
    * 
    * @param authzToken
@@ -1169,13 +1279,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module
+   *   The unique identifier of the application module required
    * 
    * @return applicationModule
-   *   Returns a application Module Object.
+   *   Returns an Application Module Object.
    * 
    * 
    * @param authzToken
@@ -1187,6 +1298,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a Application Module.
    * 
    * @param appModuleId
@@ -1208,16 +1320,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("updateApplicationModule\n");
   }
 
+  /**
+   * 
+   * Fetch all Application Module Descriptions.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
+   * @return list
+   *    Returns the list of all Application Module Objects.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   void getAllAppModules(std::vector< ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) {
     // Your implementation goes here
     printf("getAllAppModules\n");
   }
 
   /**
-   * Delete a Application Module.
+   * 
+   * Delete an Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
+   *   The identifier of the Application Module to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1232,9 +1359,13 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Register a Application Deployment.
    * 
-   * @param applicationModule
+   * Register an Application Deployment.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which is registering the new Application Deployment.
+   * 
+   * @param applicationDeployment
    *    Application Module Object created from the datamodel.
    * 
    * @return appDeploymentId
@@ -1251,6 +1382,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a Application Deployment.
    * 
    * @param appDeploymentId
@@ -1269,10 +1401,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Update a Application Deployment.
+   * 
+   * Update an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appDeployment
    *    Application Deployment Object created from the datamodel.
@@ -1291,10 +1424,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete a Application deployment.
+   * 
+   * Delete an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
+   *   The unique identifier of application deployment to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1309,10 +1443,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all Application Deployment Descriptions.
    * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
    * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
+   *    Returns the list of all application Deployment Objects.
    * 
    * 
    * @param authzToken
@@ -1342,9 +1480,10 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Register a Application Interface.
    * 
-   * @param applicationModule
+   * @param applicationInterface
    *    Application Module Object created from the datamodel.
    * 
    * @return appInterfaceId
@@ -1360,20 +1499,42 @@ class AiravataHandler : virtual public AiravataIf {
     printf("registerApplicationInterface\n");
   }
 
+  /**
+   * 
+   * Clone an Application Interface.
+   * 
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   * 
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   * 
+   * @param newApplicationName
+   *    Name for the new application interface.
+   * 
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   * 
+   * 
+   * @param authzToken
+   * @param existingAppInterfaceID
+   * @param newApplicationName
+   * @param gatewayId
+   */
   void cloneApplicationInterface(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& existingAppInterfaceID, const std::string& newApplicationName, const std::string& gatewayId) {
     // Your implementation goes here
     printf("cloneApplicationInterface\n");
   }
 
   /**
-   * Fetch a Application Interface.
+   * 
+   * Fetch an Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application module
+   *   The identifier for the requested application interface.
    * 
    * @return applicationInterface
-   *   Returns a application Interface Object.
-   * 
+   *   Returns an application Interface Object.
    * 
    * 
    * @param authzToken
@@ -1385,10 +1546,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appInterface
    *    Application Interface Object created from the datamodel.
@@ -1397,7 +1559,6 @@ class AiravataHandler : virtual public AiravataIf {
    *   Returns a success/failure of the update.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    * @param applicationInterface
@@ -1408,7 +1569,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete a Application Interface.
+   * 
+   * Delete an Application Interface.
    * 
    * @param appInterfaceId
    *   The identifier for the requested application interface to be deleted.
@@ -1417,7 +1579,6 @@ class AiravataHandler : virtual public AiravataIf {
    *   Returns a success/failure of the deletion.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    */
@@ -1427,11 +1588,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Fetch name and id of  Application Interface documents.
+   * 
+   * Fetch name and ID of  Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
+   *   Returns a list of application interfaces with corresponsing ID's
    * 
    * 
    * @param authzToken
@@ -1443,11 +1605,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
+   *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
    * 
    * 
    * @param authzToken
@@ -1459,10 +1622,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch the list of Application Inputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need inputs to be fetched.
    * 
    * @return list<application_interface_model.InputDataObjectType>
    *   Returns a list of application inputs.
@@ -1477,10 +1641,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Fetch the list of Application Outputs.
+   * 
+   * Fetch list of Application Outputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need outputs to be fetched.
    * 
    * @return list<application_interface_model.OutputDataObjectType>
    *   Returns a list of application outputs.
@@ -1495,14 +1660,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a list of all deployed Compute Hosts for a given application interfaces.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier for the requested application interface.
    * 
    * @return map<computeResourceId, computeResourceName>
    *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
+   *   Deployments of each modules listed within the interfaces will be listed.
    * 
    * 
    * @param authzToken
@@ -1550,6 +1716,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all registered Compute Resources.
    * 
    * @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1654,7 +1821,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Update a Compute Resource.
+   * Update a Storage Resource.
    * 
    * @param storageResourceId
    *   The identifier for the requested compute resource to be updated.
@@ -1679,7 +1846,7 @@ class AiravataHandler : virtual public AiravataIf {
    * Delete a Storage Resource.
    * 
    * @param storageResourceId
-   *   The identifier for the requested compute resource to be deleted.
+   *   The identifier of the requested compute resource to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1827,6 +1994,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a UNICORE Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    * 
@@ -1854,10 +2022,13 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
    *   * This method returns UnicoreJobSubmission object
+   *   *
    *   * @param jobSubmissionInterfaceId
    *   *   The identifier of the JobSubmission Interface to be retrieved.
    *   *  @return UnicoreJobSubmission instance
+   *   *
    * *
    * 
    * @param authzToken
@@ -1869,6 +2040,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *    *
    *    * Add a Cloud Job Submission details to a compute resource
    *    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *    *
@@ -1883,6 +2055,7 @@ class AiravataHandler : virtual public AiravataIf {
    *    *
    *    * @return status
    *    *   Returns the unique job submission id.
+   *    *
    * *
    * 
    * @param authzToken
@@ -1896,6 +2069,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *    *
    *    * This method returns cloudJobSubmission object
    *    * @param jobSubmissionInterfaceI
    *        *   The identifier of the JobSubmission Interface to be retrieved.
@@ -1911,6 +2085,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given SSH Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1933,6 +2108,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the cloud Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1955,6 +2131,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the UNIOCRE Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1978,6 +2155,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2010,6 +2188,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given Local data movement details
    * 
    * @param dataMovementInterfaceId
@@ -2033,7 +2212,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * This method returns local datamovement object
+   * 
+   * This method returns local datamovement object.
    * 
    * @param dataMovementId
    *   The identifier of the datamovement Interface to be retrieved.
@@ -2051,6 +2231,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2079,6 +2260,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given scp data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2120,6 +2302,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2148,6 +2331,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a selected UNICORE data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2172,6 +2356,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * This method returns UNICORE datamovement object
    * 
    * @param dataMovementId
@@ -2190,6 +2375,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2453,7 +2639,7 @@ class AiravataHandler : virtual public AiravataIf {
    * Fetch the given Gateway Resource Profile.
    * 
    * @param gatewayID
-   *   The identifier for the requested gateway resource
+   *   The identifier for the requested gateway resource.
    * 
    * @return gatewayResourceProfile
    *    Gateway Resource Profile Object.
@@ -2534,12 +2720,35 @@ class AiravataHandler : virtual public AiravataIf {
     printf("addGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Add a Storage Resource Preference to a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be added.
+   * 
+   * @param storageResourceId
+   *   Preferences related to a particular compute resource
+   * 
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   * @param storagePreference
+   */
   bool addGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) {
     // Your implementation goes here
     printf("addGatewayStoragePreference\n");
   }
 
   /**
+   * 
    * Fetch a Compute Resource Preference of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2561,12 +2770,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * 
+   * Fetch a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+   * 
+   * @param storageResourceId
+   *   Identifier of the Stprage Preference required to be fetched.
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   */
   void getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId) {
     // Your implementation goes here
     printf("getGatewayStoragePreference\n");
   }
 
   /**
+   * 
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2584,13 +2812,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getAllGatewayComputeResourcePreferences\n");
   }
 
+  /**
+   * Fetch all Storage Resource Preferences of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   */
   void getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID) {
     // Your implementation goes here
     printf("getAllGatewayStoragePreferences\n");
   }
 
   /**
-   * Fetch all gateway profiles registered
+   * 
+   * Fetch all Gateway Profiles registered
+   * 
+   * @return GatewayResourceProfile
+   *   Returns all the GatewayResourcePrifle list object.
+   * 
    * 
    * 
    * @param authzToken
@@ -2626,6 +2872,27 @@ class AiravataHandler : virtual public AiravataIf {
     printf("updateGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Update a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be updated.
+   * 
+   * @param storageId
+   *   The Storage resource identifier of the one that you want to update
+   * 
+   * @param storagePreference
+   *   The storagePreference object to be updated to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the updation.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   * @param storagePreference
+   */
   bool updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) {
     // Your implementation goes here
     printf("updateGatewayStoragePreference\n");
@@ -2653,17 +2920,58 @@ class AiravataHandler : virtual public AiravataIf {
     printf("deleteGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   */
   bool deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId) {
     // Your implementation goes here
     printf("deleteGatewayStoragePreference\n");
   }
 
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   void getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) {
     // Your implementation goes here
     printf("getAllWorkflows\n");
   }
 
-  void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
+  /**
+   * 
+   * API Methods Related for Work-Flow Submission Features.
+   * 
+   * 
+   * @param authzToken
+   * @param workflowTemplateId
+   */
+  void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
     // Your implementation goes here
     printf("getWorkflow\n");
   }
@@ -2673,12 +2981,12 @@ class AiravataHandler : virtual public AiravataIf {
     printf("deleteWorkflow\n");
   }
 
-  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow) {
+  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow) {
     // Your implementation goes here
     printf("registerWorkflow\n");
   }
 
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow) {
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow) {
     // Your implementation goes here
     printf("updateWorkflow\n");
   }
@@ -2694,7 +3002,9 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   *  * Data Manager Related API Methods
+   *  *
+   *  * Data Manager Related API Methods.
+   *  *
    * *
    * 
    * @param authzToken

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
index 6c8c6cc..b87ae6d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
@@ -30,40 +30,92 @@
 
 
 
+int _kWorkflowStateValues[] = {
+  WorkflowState::CREATED,
+  WorkflowState::STARTED,
+  WorkflowState::EXECUTING,
+  WorkflowState::COMPLETED,
+  WorkflowState::FAILED,
+  WorkflowState::CANCELLING,
+  WorkflowState::CANCELED
+};
+const char* _kWorkflowStateNames[] = {
+  "CREATED",
+  "STARTED",
+  "EXECUTING",
+  "COMPLETED",
+  "FAILED",
+  "CANCELLING",
+  "CANCELED"
+};
+const std::map<int, const char*> _WorkflowState_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(7, _kWorkflowStateValues, _kWorkflowStateNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
-Workflow::~Workflow() throw() {
+int _kComponentStateValues[] = {
+  ComponentState::CREATED,
+  ComponentState::WAITING,
+  ComponentState::READY,
+  ComponentState::RUNNING,
+  ComponentState::COMPLETED,
+  ComponentState::FAILED,
+  ComponentState::CANCELED
+};
+const char* _kComponentStateNames[] = {
+  "CREATED",
+  "WAITING",
+  "READY",
+  "RUNNING",
+  "COMPLETED",
+  "FAILED",
+  "CANCELED"
+};
+const std::map<int, const char*> _ComponentState_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(7, _kComponentStateValues, _kComponentStateNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+
+WorkflowModel::~WorkflowModel() throw() {
 }
 
 
-void Workflow::__set_templateId(const std::string& val) {
+void WorkflowModel::__set_templateId(const std::string& val) {
   this->templateId = val;
 }
 
-void Workflow::__set_name(const std::string& val) {
+void WorkflowModel::__set_name(const std::string& val) {
   this->name = val;
 }
 
-void Workflow::__set_graph(const std::string& val) {
+void WorkflowModel::__set_graph(const std::string& val) {
   this->graph = val;
-__isset.graph = true;
 }
 
-void Workflow::__set_image(const std::string& val) {
+void WorkflowModel::__set_gatewayId(const std::string& val) {
+  this->gatewayId = val;
+}
+
+void WorkflowModel::__set_createdUser(const std::string& val) {
+  this->createdUser = val;
+}
+
+void WorkflowModel::__set_image(const std::string& val) {
   this->image = val;
 __isset.image = true;
 }
 
-void Workflow::__set_workflowInputs(const std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & val) {
+void WorkflowModel::__set_workflowInputs(const std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & val) {
   this->workflowInputs = val;
 __isset.workflowInputs = true;
 }
 
-void Workflow::__set_workflowOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val) {
+void WorkflowModel::__set_workflowOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val) {
   this->workflowOutputs = val;
 __isset.workflowOutputs = true;
 }
 
-uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
+void WorkflowModel::__set_creationTime(const int64_t val) {
+  this->creationTime = val;
+__isset.creationTime = true;
+}
+
+uint32_t WorkflowModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
@@ -77,6 +129,9 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   bool isset_templateId = false;
   bool isset_name = false;
+  bool isset_graph = false;
+  bool isset_gatewayId = false;
+  bool isset_createdUser = false;
 
   while (true)
   {
@@ -105,20 +160,36 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->graph);
-          this->__isset.graph = true;
+          isset_graph = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->createdUser);
+          isset_createdUser = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readBinary(this->image);
           this->__isset.image = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 5:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->workflowInputs.clear();
@@ -138,7 +209,7 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->workflowOutputs.clear();
@@ -158,6 +229,14 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->creationTime);
+          this->__isset.creationTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -171,13 +250,19 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_name)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_graph)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_createdUser)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t WorkflowModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
   apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("Workflow");
+  xfer += oprot->writeStructBegin("WorkflowModel");
 
   xfer += oprot->writeFieldBegin("templateId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->templateId);
@@ -187,18 +272,25 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeString(this->name);
   xfer += oprot->writeFieldEnd();
 
-  if (this->__isset.graph) {
-    xfer += oprot->writeFieldBegin("graph", ::apache::thrift::protocol::T_STRING, 3);
-    xfer += oprot->writeString(this->graph);
-    xfer += oprot->writeFieldEnd();
-  }
+  xfer += oprot->writeFieldBegin("graph", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->graph);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 4);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("createdUser", ::apache::thrift::protocol::T_STRING, 5);
+  xfer += oprot->writeString(this->createdUser);
+  xfer += oprot->writeFieldEnd();
+
   if (this->__isset.image) {
-    xfer += oprot->writeFieldBegin("image", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeFieldBegin("image", ::apache::thrift::protocol::T_STRING, 6);
     xfer += oprot->writeBinary(this->image);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.workflowInputs) {
-    xfer += oprot->writeFieldBegin("workflowInputs", ::apache::thrift::protocol::T_LIST, 5);
+    xfer += oprot->writeFieldBegin("workflowInputs", ::apache::thrift::protocol::T_LIST, 7);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->workflowInputs.size()));
       std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter10;
@@ -211,7 +303,7 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.workflowOutputs) {
-    xfer += oprot->writeFieldBegin("workflowOutputs", ::apache::thrift::protocol::T_LIST, 6);
+    xfer += oprot->writeFieldBegin("workflowOutputs", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->workflowOutputs.size()));
       std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter11;
@@ -223,50 +315,868 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
     }
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.creationTime) {
+    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 9);
+    xfer += oprot->writeI64(this->creationTime);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-void swap(Workflow &a, Workflow &b) {
+void swap(WorkflowModel &a, WorkflowModel &b) {
   using ::std::swap;
   swap(a.templateId, b.templateId);
   swap(a.name, b.name);
   swap(a.graph, b.graph);
+  swap(a.gatewayId, b.gatewayId);
+  swap(a.createdUser, b.createdUser);
   swap(a.image, b.image);
   swap(a.workflowInputs, b.workflowInputs);
   swap(a.workflowOutputs, b.workflowOutputs);
+  swap(a.creationTime, b.creationTime);
   swap(a.__isset, b.__isset);
 }
 
-Workflow::Workflow(const Workflow& other12) {
+WorkflowModel::WorkflowModel(const WorkflowModel& other12) {
   templateId = other12.templateId;
   name = other12.name;
   graph = other12.graph;
+  gatewayId = other12.gatewayId;
+  createdUser = other12.createdUser;
   image = other12.image;
   workflowInputs = other12.workflowInputs;
   workflowOutputs = other12.workflowOutputs;
+  creationTime = other12.creationTime;
   __isset = other12.__isset;
 }
-Workflow& Workflow::operator=(const Workflow& other13) {
+WorkflowModel& WorkflowModel::operator=(const WorkflowModel& other13) {
   templateId = other13.templateId;
   name = other13.name;
   graph = other13.graph;
+  gatewayId = other13.gatewayId;
+  createdUser = other13.createdUser;
   image = other13.image;
   workflowInputs = other13.workflowInputs;
   workflowOutputs = other13.workflowOutputs;
+  creationTime = other13.creationTime;
   __isset = other13.__isset;
   return *this;
 }
-void Workflow::printTo(std::ostream& out) const {
+void WorkflowModel::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
-  out << "Workflow(";
+  out << "WorkflowModel(";
   out << "templateId=" << to_string(templateId);
   out << ", " << "name=" << to_string(name);
-  out << ", " << "graph="; (__isset.graph ? (out << to_string(graph)) : (out << "<null>"));
+  out << ", " << "graph=" << to_string(graph);
+  out << ", " << "gatewayId=" << to_string(gatewayId);
+  out << ", " << "createdUser=" << to_string(createdUser);
   out << ", " << "image="; (__isset.image ? (out << to_string(image)) : (out << "<null>"));
   out << ", " << "workflowInputs="; (__isset.workflowInputs ? (out << to_string(workflowInputs)) : (out << "<null>"));
   out << ", " << "workflowOutputs="; (__isset.workflowOutputs ? (out << to_string(workflowOutputs)) : (out << "<null>"));
+  out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+ComponentStatus::~ComponentStatus() throw() {
+}
+
+
+void ComponentStatus::__set_state(const ComponentState::type val) {
+  this->state = val;
+}
+
+void ComponentStatus::__set_reason(const std::string& val) {
+  this->reason = val;
+__isset.reason = true;
+}
+
+void ComponentStatus::__set_timeofStateChange(const int64_t val) {
+  this->timeofStateChange = val;
+__isset.timeofStateChange = true;
+}
+
+uint32_t ComponentStatus::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_state = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast14;
+          xfer += iprot->readI32(ecast14);
+          this->state = (ComponentState::type)ecast14;
+          isset_state = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reason);
+          this->__isset.reason = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->timeofStateChange);
+          this->__isset.timeofStateChange = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_state)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t ComponentStatus::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("ComponentStatus");
+
+  xfer += oprot->writeFieldBegin("state", ::apache::thrift::protocol::T_I32, 1);
+  xfer += oprot->writeI32((int32_t)this->state);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.reason) {
+    xfer += oprot->writeFieldBegin("reason", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->reason);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.timeofStateChange) {
+    xfer += oprot->writeFieldBegin("timeofStateChange", ::apache::thrift::protocol::T_I64, 3);
+    xfer += oprot->writeI64(this->timeofStateChange);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(ComponentStatus &a, ComponentStatus &b) {
+  using ::std::swap;
+  swap(a.state, b.state);
+  swap(a.reason, b.reason);
+  swap(a.timeofStateChange, b.timeofStateChange);
+  swap(a.__isset, b.__isset);
+}
+
+ComponentStatus::ComponentStatus(const ComponentStatus& other15) {
+  state = other15.state;
+  reason = other15.reason;
+  timeofStateChange = other15.timeofStateChange;
+  __isset = other15.__isset;
+}
+ComponentStatus& ComponentStatus::operator=(const ComponentStatus& other16) {
+  state = other16.state;
+  reason = other16.reason;
+  timeofStateChange = other16.timeofStateChange;
+  __isset = other16.__isset;
+  return *this;
+}
+void ComponentStatus::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "ComponentStatus(";
+  out << "state=" << to_string(state);
+  out << ", " << "reason="; (__isset.reason ? (out << to_string(reason)) : (out << "<null>"));
+  out << ", " << "timeofStateChange="; (__isset.timeofStateChange ? (out << to_string(timeofStateChange)) : (out << "<null>"));
+  out << ")";
+}
+
+
+WorkflowStatus::~WorkflowStatus() throw() {
+}
+
+
+void WorkflowStatus::__set_state(const WorkflowState::type val) {
+  this->state = val;
+}
+
+void WorkflowStatus::__set_timeOfStateChange(const int64_t val) {
+  this->timeOfStateChange = val;
+__isset.timeOfStateChange = true;
+}
+
+void WorkflowStatus::__set_reason(const std::string& val) {
+  this->reason = val;
+__isset.reason = true;
+}
+
+uint32_t WorkflowStatus::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_state = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast17;
+          xfer += iprot->readI32(ecast17);
+          this->state = (WorkflowState::type)ecast17;
+          isset_state = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->timeOfStateChange);
+          this->__isset.timeOfStateChange = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reason);
+          this->__isset.reason = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_state)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t WorkflowStatus::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("WorkflowStatus");
+
+  xfer += oprot->writeFieldBegin("state", ::apache::thrift::protocol::T_I32, 1);
+  xfer += oprot->writeI32((int32_t)this->state);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.timeOfStateChange) {
+    xfer += oprot->writeFieldBegin("timeOfStateChange", ::apache::thrift::protocol::T_I64, 2);
+    xfer += oprot->writeI64(this->timeOfStateChange);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reason) {
+    xfer += oprot->writeFieldBegin("reason", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->reason);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(WorkflowStatus &a, WorkflowStatus &b) {
+  using ::std::swap;
+  swap(a.state, b.state);
+  swap(a.timeOfStateChange, b.timeOfStateChange);
+  swap(a.reason, b.reason);
+  swap(a.__isset, b.__isset);
+}
+
+WorkflowStatus::WorkflowStatus(const WorkflowStatus& other18) {
+  state = other18.state;
+  timeOfStateChange = other18.timeOfStateChange;
+  reason = other18.reason;
+  __isset = other18.__isset;
+}
+WorkflowStatus& WorkflowStatus::operator=(const WorkflowStatus& other19) {
+  state = other19.state;
+  timeOfStateChange = other19.timeOfStateChange;
+  reason = other19.reason;
+  __isset = other19.__isset;
+  return *this;
+}
+void WorkflowStatus::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "WorkflowStatus(";
+  out << "state=" << to_string(state);
+  out << ", " << "timeOfStateChange="; (__isset.timeOfStateChange ? (out << to_string(timeOfStateChange)) : (out << "<null>"));
+  out << ", " << "reason="; (__isset.reason ? (out << to_string(reason)) : (out << "<null>"));
+  out << ")";
+}
+
+
+EdgeModel::~EdgeModel() throw() {
+}
+
+
+void EdgeModel::__set_edgeId(const std::string& val) {
+  this->edgeId = val;
+}
+
+void EdgeModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void EdgeModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void EdgeModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t EdgeModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_edgeId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->edgeId);
+          isset_edgeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_edgeId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t EdgeModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("EdgeModel");
+
+  xfer += oprot->writeFieldBegin("edgeId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->edgeId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(EdgeModel &a, EdgeModel &b) {
+  using ::std::swap;
+  swap(a.edgeId, b.edgeId);
+  swap(a.name, b.name);
+  swap(a.status, b.status);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+EdgeModel::EdgeModel(const EdgeModel& other20) {
+  edgeId = other20.edgeId;
+  name = other20.name;
+  status = other20.status;
+  description = other20.description;
+  __isset = other20.__isset;
+}
+EdgeModel& EdgeModel::operator=(const EdgeModel& other21) {
+  edgeId = other21.edgeId;
+  name = other21.name;
+  status = other21.status;
+  description = other21.description;
+  __isset = other21.__isset;
+  return *this;
+}
+void EdgeModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "EdgeModel(";
+  out << "edgeId=" << to_string(edgeId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ")";
+}
+
+
+PortModel::~PortModel() throw() {
+}
+
+
+void PortModel::__set_portId(const std::string& val) {
+  this->portId = val;
+}
+
+void PortModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void PortModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void PortModel::__set_value(const std::string& val) {
+  this->value = val;
+__isset.value = true;
+}
+
+void PortModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t PortModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_portId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->portId);
+          isset_portId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->value);
+          this->__isset.value = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_portId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t PortModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("PortModel");
+
+  xfer += oprot->writeFieldBegin("portId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->portId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.value) {
+    xfer += oprot->writeFieldBegin("value", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->value);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(PortModel &a, PortModel &b) {
+  using ::std::swap;
+  swap(a.portId, b.portId);
+  swap(a.name, b.name);
+  swap(a.status, b.status);
+  swap(a.value, b.value);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+PortModel::PortModel(const PortModel& other22) {
+  portId = other22.portId;
+  name = other22.name;
+  status = other22.status;
+  value = other22.value;
+  description = other22.description;
+  __isset = other22.__isset;
+}
+PortModel& PortModel::operator=(const PortModel& other23) {
+  portId = other23.portId;
+  name = other23.name;
+  status = other23.status;
+  value = other23.value;
+  description = other23.description;
+  __isset = other23.__isset;
+  return *this;
+}
+void PortModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "PortModel(";
+  out << "portId=" << to_string(portId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "value="; (__isset.value ? (out << to_string(value)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ")";
+}
+
+
+NodeModel::~NodeModel() throw() {
+}
+
+
+void NodeModel::__set_nodeId(const std::string& val) {
+  this->nodeId = val;
+}
+
+void NodeModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void NodeModel::__set_applicationId(const std::string& val) {
+  this->applicationId = val;
+__isset.applicationId = true;
+}
+
+void NodeModel::__set_applicationName(const std::string& val) {
+  this->applicationName = val;
+__isset.applicationName = true;
+}
+
+void NodeModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void NodeModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t NodeModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_nodeId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->nodeId);
+          isset_nodeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationId);
+          this->__isset.applicationId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationName);
+          this->__isset.applicationName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_nodeId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t NodeModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("NodeModel");
+
+  xfer += oprot->writeFieldBegin("nodeId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->nodeId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.applicationId) {
+    xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->applicationId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.applicationName) {
+    xfer += oprot->writeFieldBegin("applicationName", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->applicationName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 5);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(NodeModel &a, NodeModel &b) {
+  using ::std::swap;
+  swap(a.nodeId, b.nodeId);
+  swap(a.name, b.name);
+  swap(a.applicationId, b.applicationId);
+  swap(a.applicationName, b.applicationName);
+  swap(a.status, b.status);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+NodeModel::NodeModel(const NodeModel& other24) {
+  nodeId = other24.nodeId;
+  name = other24.name;
+  applicationId = other24.applicationId;
+  applicationName = other24.applicationName;
+  status = other24.status;
+  description = other24.description;
+  __isset = other24.__isset;
+}
+NodeModel& NodeModel::operator=(const NodeModel& other25) {
+  nodeId = other25.nodeId;
+  name = other25.name;
+  applicationId = other25.applicationId;
+  applicationName = other25.applicationName;
+  status = other25.status;
+  description = other25.description;
+  __isset = other25.__isset;
+  return *this;
+}
+void NodeModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "NodeModel(";
+  out << "nodeId=" << to_string(nodeId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "applicationId="; (__isset.applicationId ? (out << to_string(applicationId)) : (out << "<null>"));
+  out << ", " << "applicationName="; (__isset.applicationName ? (out << to_string(applicationName)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
   out << ")";
 }