You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/03/25 22:22:24 UTC

[01/55] [abbrv] airavata git commit: adding replica catalog related API methods

Repository: airavata
Updated Branches:
  refs/heads/master 7e7e3a969 -> ab262c706


http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
index 07cda34..e129db4 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
@@ -596,21 +596,21 @@ class LOCALSubmission:
 
   Attributes:
    - jobSubmissionInterfaceId
-   - securityProtocol
    - resourceJobManager
+   - securityProtocol
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
-    (2, TType.I32, 'securityProtocol', None, None, ), # 2
-    (3, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 3
+    (2, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 2
+    (3, TType.I32, 'securityProtocol', None, None, ), # 3
   )
 
-  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None,):
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], resourceJobManager=None, securityProtocol=None,):
     self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
-    self.securityProtocol = securityProtocol
     self.resourceJobManager = resourceJobManager
+    self.securityProtocol = securityProtocol
 
   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:
@@ -627,16 +627,16 @@ class LOCALSubmission:
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I32:
-          self.securityProtocol = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
         if ftype == TType.STRUCT:
           self.resourceJobManager = ResourceJobManager()
           self.resourceJobManager.read(iprot)
         else:
           iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -651,22 +651,20 @@ class LOCALSubmission:
       oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
       oprot.writeString(self.jobSubmissionInterfaceId)
       oprot.writeFieldEnd()
-    if self.securityProtocol is not None:
-      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
-      oprot.writeI32(self.securityProtocol)
-      oprot.writeFieldEnd()
     if self.resourceJobManager is not None:
-      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 3)
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 2)
       self.resourceJobManager.write(oprot)
       oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 3)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
     if self.jobSubmissionInterfaceId is None:
       raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
-    if self.securityProtocol is None:
-      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
     if self.resourceJobManager is None:
       raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
     return
@@ -675,8 +673,8 @@ class LOCALSubmission:
   def __hash__(self):
     value = 17
     value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
-    value = (value * 31) ^ hash(self.securityProtocol)
     value = (value * 31) ^ hash(self.resourceJobManager)
+    value = (value * 31) ^ hash(self.securityProtocol)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
new file mode 100644
index 0000000..c26d371
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
@@ -0,0 +1,73 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.model.data.product.*;
+import org.apache.airavata.model.security.AuthzToken;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DataCatalogSample {
+    private final static Logger logger = LoggerFactory.getLogger(DataCatalogSample.class);
+
+    public static final String THRIFT_SERVER_HOST = "gw56.iu.xsede.org";
+    public static final int THRIFT_SERVER_PORT = 8930;
+    private static final String USER_NAME = "master";
+    private static final String DEFAULT_GATEWAY = "default";
+    private static final String STORAGE_RESOURCE_ID = "gw75.iu.xsede.org_3e40e62b-be11-4590-bf24-b1b6796c3572";
+    private static final AuthzToken authzToken = new AuthzToken("empty-token");
+    private static Airavata.Client client;
+
+    public static void main(String[] args) {
+        try {
+            client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+            System.out.println(client.getAPIVersion(authzToken));
+
+            DataProductModel dataProductModel = new DataProductModel();
+            dataProductModel.setGatewayId(DEFAULT_GATEWAY);
+            dataProductModel.setOwnerName(USER_NAME);
+            dataProductModel.setProductName("test-1");
+            dataProductModel.setLogicalPath("/test/test/test");
+            dataProductModel.setDataProductType(DataProductType.FILE);
+
+            DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
+            replicaLocationModel.setStorageResourceId(STORAGE_RESOURCE_ID);
+            replicaLocationModel.setReplicaName("test-1-replica-1");
+            replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE);
+            replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
+            replicaLocationModel.setFilePath("/var/www/portals/gateway-user-data/testdrive/test.txt");
+
+            dataProductModel.addToReplicaLocations(replicaLocationModel);
+
+            String productUri = client.registerDataProduct(authzToken, dataProductModel);
+            System.out.println(productUri);
+
+
+            dataProductModel = client.getDataProduct(authzToken, productUri);
+            System.out.println(dataProductModel.getReplicaLocations().size());
+        } catch (Exception e) {
+            logger.error("Error while connecting with server", e.getMessage());
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 d1be73d..3171c2e 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
@@ -65,8 +65,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALSubmission");
 
   private static final org.apache.thrift.protocol.TField JOB_SUBMISSION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("jobSubmissionInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField SECURITY_PROTOCOL_FIELD_DESC = new org.apache.thrift.protocol.TField("securityProtocol", org.apache.thrift.protocol.TType.I32, (short)2);
-  private static final org.apache.thrift.protocol.TField RESOURCE_JOB_MANAGER_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceJobManager", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+  private static final org.apache.thrift.protocol.TField RESOURCE_JOB_MANAGER_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceJobManager", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+  private static final org.apache.thrift.protocol.TField SECURITY_PROTOCOL_FIELD_DESC = new org.apache.thrift.protocol.TField("securityProtocol", org.apache.thrift.protocol.TType.I32, (short)3);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -75,18 +75,18 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   }
 
   private String jobSubmissionInterfaceId; // required
-  private org.apache.airavata.model.data.movement.SecurityProtocol securityProtocol; // required
   private ResourceJobManager resourceJobManager; // required
+  private org.apache.airavata.model.data.movement.SecurityProtocol securityProtocol; // 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 {
     JOB_SUBMISSION_INTERFACE_ID((short)1, "jobSubmissionInterfaceId"),
+    RESOURCE_JOB_MANAGER((short)2, "resourceJobManager"),
     /**
      * 
      * @see org.apache.airavata.model.data.movement.SecurityProtocol
      */
-    SECURITY_PROTOCOL((short)2, "securityProtocol"),
-    RESOURCE_JOB_MANAGER((short)3, "resourceJobManager");
+    SECURITY_PROTOCOL((short)3, "securityProtocol");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -103,10 +103,10 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       switch(fieldId) {
         case 1: // JOB_SUBMISSION_INTERFACE_ID
           return JOB_SUBMISSION_INTERFACE_ID;
-        case 2: // SECURITY_PROTOCOL
-          return SECURITY_PROTOCOL;
-        case 3: // RESOURCE_JOB_MANAGER
+        case 2: // RESOURCE_JOB_MANAGER
           return RESOURCE_JOB_MANAGER;
+        case 3: // SECURITY_PROTOCOL
+          return SECURITY_PROTOCOL;
         default:
           return null;
       }
@@ -147,15 +147,16 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   }
 
   // isset id assignments
+  private static final _Fields optionals[] = {_Fields.SECURITY_PROTOCOL};
   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.JOB_SUBMISSION_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("jobSubmissionInterfaceId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.SECURITY_PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("securityProtocol", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, org.apache.airavata.model.data.movement.SecurityProtocol.class)));
     tmpMap.put(_Fields.RESOURCE_JOB_MANAGER, new org.apache.thrift.meta_data.FieldMetaData("resourceJobManager", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ResourceJobManager.class)));
+    tmpMap.put(_Fields.SECURITY_PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("securityProtocol", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, org.apache.airavata.model.data.movement.SecurityProtocol.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(LOCALSubmission.class, metaDataMap);
   }
@@ -167,12 +168,10 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
 
   public LOCALSubmission(
     String jobSubmissionInterfaceId,
-    org.apache.airavata.model.data.movement.SecurityProtocol securityProtocol,
     ResourceJobManager resourceJobManager)
   {
     this();
     this.jobSubmissionInterfaceId = jobSubmissionInterfaceId;
-    this.securityProtocol = securityProtocol;
     this.resourceJobManager = resourceJobManager;
   }
 
@@ -183,12 +182,12 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     if (other.isSetJobSubmissionInterfaceId()) {
       this.jobSubmissionInterfaceId = other.jobSubmissionInterfaceId;
     }
-    if (other.isSetSecurityProtocol()) {
-      this.securityProtocol = other.securityProtocol;
-    }
     if (other.isSetResourceJobManager()) {
       this.resourceJobManager = new ResourceJobManager(other.resourceJobManager);
     }
+    if (other.isSetSecurityProtocol()) {
+      this.securityProtocol = other.securityProtocol;
+    }
   }
 
   public LOCALSubmission deepCopy() {
@@ -199,8 +198,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   public void clear() {
     this.jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
 
-    this.securityProtocol = null;
     this.resourceJobManager = null;
+    this.securityProtocol = null;
   }
 
   public String getJobSubmissionInterfaceId() {
@@ -226,6 +225,29 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     }
   }
 
+  public ResourceJobManager getResourceJobManager() {
+    return this.resourceJobManager;
+  }
+
+  public void setResourceJobManager(ResourceJobManager resourceJobManager) {
+    this.resourceJobManager = resourceJobManager;
+  }
+
+  public void unsetResourceJobManager() {
+    this.resourceJobManager = null;
+  }
+
+  /** Returns true if field resourceJobManager is set (has been assigned a value) and false otherwise */
+  public boolean isSetResourceJobManager() {
+    return this.resourceJobManager != null;
+  }
+
+  public void setResourceJobManagerIsSet(boolean value) {
+    if (!value) {
+      this.resourceJobManager = null;
+    }
+  }
+
   /**
    * 
    * @see org.apache.airavata.model.data.movement.SecurityProtocol
@@ -257,29 +279,6 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     }
   }
 
-  public ResourceJobManager getResourceJobManager() {
-    return this.resourceJobManager;
-  }
-
-  public void setResourceJobManager(ResourceJobManager resourceJobManager) {
-    this.resourceJobManager = resourceJobManager;
-  }
-
-  public void unsetResourceJobManager() {
-    this.resourceJobManager = null;
-  }
-
-  /** Returns true if field resourceJobManager is set (has been assigned a value) and false otherwise */
-  public boolean isSetResourceJobManager() {
-    return this.resourceJobManager != null;
-  }
-
-  public void setResourceJobManagerIsSet(boolean value) {
-    if (!value) {
-      this.resourceJobManager = null;
-    }
-  }
-
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case JOB_SUBMISSION_INTERFACE_ID:
@@ -290,19 +289,19 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       }
       break;
 
-    case SECURITY_PROTOCOL:
+    case RESOURCE_JOB_MANAGER:
       if (value == null) {
-        unsetSecurityProtocol();
+        unsetResourceJobManager();
       } else {
-        setSecurityProtocol((org.apache.airavata.model.data.movement.SecurityProtocol)value);
+        setResourceJobManager((ResourceJobManager)value);
       }
       break;
 
-    case RESOURCE_JOB_MANAGER:
+    case SECURITY_PROTOCOL:
       if (value == null) {
-        unsetResourceJobManager();
+        unsetSecurityProtocol();
       } else {
-        setResourceJobManager((ResourceJobManager)value);
+        setSecurityProtocol((org.apache.airavata.model.data.movement.SecurityProtocol)value);
       }
       break;
 
@@ -314,12 +313,12 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     case JOB_SUBMISSION_INTERFACE_ID:
       return getJobSubmissionInterfaceId();
 
-    case SECURITY_PROTOCOL:
-      return getSecurityProtocol();
-
     case RESOURCE_JOB_MANAGER:
       return getResourceJobManager();
 
+    case SECURITY_PROTOCOL:
+      return getSecurityProtocol();
+
     }
     throw new IllegalStateException();
   }
@@ -333,10 +332,10 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     switch (field) {
     case JOB_SUBMISSION_INTERFACE_ID:
       return isSetJobSubmissionInterfaceId();
-    case SECURITY_PROTOCOL:
-      return isSetSecurityProtocol();
     case RESOURCE_JOB_MANAGER:
       return isSetResourceJobManager();
+    case SECURITY_PROTOCOL:
+      return isSetSecurityProtocol();
     }
     throw new IllegalStateException();
   }
@@ -363,15 +362,6 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         return false;
     }
 
-    boolean this_present_securityProtocol = true && this.isSetSecurityProtocol();
-    boolean that_present_securityProtocol = true && that.isSetSecurityProtocol();
-    if (this_present_securityProtocol || that_present_securityProtocol) {
-      if (!(this_present_securityProtocol && that_present_securityProtocol))
-        return false;
-      if (!this.securityProtocol.equals(that.securityProtocol))
-        return false;
-    }
-
     boolean this_present_resourceJobManager = true && this.isSetResourceJobManager();
     boolean that_present_resourceJobManager = true && that.isSetResourceJobManager();
     if (this_present_resourceJobManager || that_present_resourceJobManager) {
@@ -381,6 +371,15 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         return false;
     }
 
+    boolean this_present_securityProtocol = true && this.isSetSecurityProtocol();
+    boolean that_present_securityProtocol = true && that.isSetSecurityProtocol();
+    if (this_present_securityProtocol || that_present_securityProtocol) {
+      if (!(this_present_securityProtocol && that_present_securityProtocol))
+        return false;
+      if (!this.securityProtocol.equals(that.securityProtocol))
+        return false;
+    }
+
     return true;
   }
 
@@ -393,16 +392,16 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     if (present_jobSubmissionInterfaceId)
       list.add(jobSubmissionInterfaceId);
 
-    boolean present_securityProtocol = true && (isSetSecurityProtocol());
-    list.add(present_securityProtocol);
-    if (present_securityProtocol)
-      list.add(securityProtocol.getValue());
-
     boolean present_resourceJobManager = true && (isSetResourceJobManager());
     list.add(present_resourceJobManager);
     if (present_resourceJobManager)
       list.add(resourceJobManager);
 
+    boolean present_securityProtocol = true && (isSetSecurityProtocol());
+    list.add(present_securityProtocol);
+    if (present_securityProtocol)
+      list.add(securityProtocol.getValue());
+
     return list.hashCode();
   }
 
@@ -424,22 +423,22 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetSecurityProtocol()).compareTo(other.isSetSecurityProtocol());
+    lastComparison = Boolean.valueOf(isSetResourceJobManager()).compareTo(other.isSetResourceJobManager());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetSecurityProtocol()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.securityProtocol, other.securityProtocol);
+    if (isSetResourceJobManager()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceJobManager, other.resourceJobManager);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetResourceJobManager()).compareTo(other.isSetResourceJobManager());
+    lastComparison = Boolean.valueOf(isSetSecurityProtocol()).compareTo(other.isSetSecurityProtocol());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetResourceJobManager()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceJobManager, other.resourceJobManager);
+    if (isSetSecurityProtocol()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.securityProtocol, other.securityProtocol);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -472,14 +471,6 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     }
     first = false;
     if (!first) sb.append(", ");
-    sb.append("securityProtocol:");
-    if (this.securityProtocol == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.securityProtocol);
-    }
-    first = false;
-    if (!first) sb.append(", ");
     sb.append("resourceJobManager:");
     if (this.resourceJobManager == null) {
       sb.append("null");
@@ -487,6 +478,16 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       sb.append(this.resourceJobManager);
     }
     first = false;
+    if (isSetSecurityProtocol()) {
+      if (!first) sb.append(", ");
+      sb.append("securityProtocol:");
+      if (this.securityProtocol == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.securityProtocol);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -497,10 +498,6 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'jobSubmissionInterfaceId' is unset! Struct:" + toString());
     }
 
-    if (!isSetSecurityProtocol()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'securityProtocol' is unset! Struct:" + toString());
-    }
-
     if (!isSetResourceJobManager()) {
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'resourceJobManager' is unset! Struct:" + toString());
     }
@@ -553,15 +550,7 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // SECURITY_PROTOCOL
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
-              struct.setSecurityProtocolIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 3: // RESOURCE_JOB_MANAGER
+          case 2: // RESOURCE_JOB_MANAGER
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.resourceJobManager = new ResourceJobManager();
               struct.resourceJobManager.read(iprot);
@@ -570,6 +559,14 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 3: // SECURITY_PROTOCOL
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+              struct.setSecurityProtocolIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -588,16 +585,18 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         oprot.writeString(struct.jobSubmissionInterfaceId);
         oprot.writeFieldEnd();
       }
-      if (struct.securityProtocol != null) {
-        oprot.writeFieldBegin(SECURITY_PROTOCOL_FIELD_DESC);
-        oprot.writeI32(struct.securityProtocol.getValue());
-        oprot.writeFieldEnd();
-      }
       if (struct.resourceJobManager != null) {
         oprot.writeFieldBegin(RESOURCE_JOB_MANAGER_FIELD_DESC);
         struct.resourceJobManager.write(oprot);
         oprot.writeFieldEnd();
       }
+      if (struct.securityProtocol != null) {
+        if (struct.isSetSecurityProtocol()) {
+          oprot.writeFieldBegin(SECURITY_PROTOCOL_FIELD_DESC);
+          oprot.writeI32(struct.securityProtocol.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -616,8 +615,15 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     public void write(org.apache.thrift.protocol.TProtocol prot, LOCALSubmission struct) throws org.apache.thrift.TException {
       TTupleProtocol oprot = (TTupleProtocol) prot;
       oprot.writeString(struct.jobSubmissionInterfaceId);
-      oprot.writeI32(struct.securityProtocol.getValue());
       struct.resourceJobManager.write(oprot);
+      BitSet optionals = new BitSet();
+      if (struct.isSetSecurityProtocol()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetSecurityProtocol()) {
+        oprot.writeI32(struct.securityProtocol.getValue());
+      }
     }
 
     @Override
@@ -625,11 +631,14 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.jobSubmissionInterfaceId = iprot.readString();
       struct.setJobSubmissionInterfaceIdIsSet(true);
-      struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
-      struct.setSecurityProtocolIsSet(true);
       struct.resourceJobManager = new ResourceJobManager();
       struct.resourceJobManager.read(iprot);
       struct.setResourceJobManagerIsSet(true);
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+        struct.setSecurityProtocolIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 31148ab..be0cb40 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -43,7 +43,18 @@ public class DataCatalogImpl implements DataCatalog {
 
     @Override
     public String registerDataProduct(DataProductModel productModel) throws DataCatalogException {
-        String productUri = UUID.randomUUID().toString();
+        if(productModel.getOwnerName() == null || productModel.getGatewayId() == null || productModel
+                .getLogicalPath() == null || !productModel.getLogicalPath().startsWith("/")){
+            throw new DataCatalogException("owner name, gateway id and logical path should be non empty and logical path" +
+                    " should start with /");
+        }
+        if(!productModel.getLogicalPath().endsWith(productModel.getProductName())){
+            if(!productModel.getLogicalPath().endsWith("/"))
+                productModel.setLogicalPath(productModel.getLogicalPath()+"/");
+            productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
+        }
+        String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
+                + productModel.getLogicalPath();
         productModel.setProductUri(productUri);
         long currentTime = System.currentTimeMillis();
         productModel.setCreationTime(currentTime);
@@ -260,8 +271,7 @@ public class DataCatalogImpl implements DataCatalog {
     }
 
     @Override
-    public List<DataReplicaLocationModel> getAllReplicaLocations(String
-                                                                             productUri) throws DataCatalogException {
+    public List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws DataCatalogException {
         EntityManager em = null;
         try {
             em = DataCatalogJPAUtils.getEntityManager();

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
index 9c86c60..287a400 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
@@ -21,7 +21,10 @@
 package org.apache.airavata.data.catalog;
 
 import org.apache.airavata.data.catalog.util.Initialize;
-import org.apache.airavata.model.data.product.*;
+import org.apache.airavata.model.data.product.DataProductModel;
+import org.apache.airavata.model.data.product.DataReplicaLocationModel;
+import org.apache.airavata.model.data.product.ReplicaLocationCategory;
+import org.apache.airavata.model.data.product.ReplicaPersistentType;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import org.apache.airavata.registry.cpi.DataCatalog;
 import org.apache.airavata.registry.cpi.DataCatalogException;
@@ -33,8 +36,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
 
 public class DataCatalogTest {
     private final static Logger logger = LoggerFactory.getLogger(DataCatalogTest.class);
@@ -52,6 +53,9 @@ public class DataCatalogTest {
             datacatalog = RegistryFactory.getDataCatalog();
             dataProductModel = new DataProductModel();
             dataProductModel.setProductName("test-file.txt");
+            dataProductModel.setOwnerName("scnakandala");
+            dataProductModel.setGatewayId("default");
+            dataProductModel.setLogicalPath("/test/test/test");
             HashMap<String, String> resMetadata = new HashMap<>();
             resMetadata.put("name", "name");
             dataProductModel.setProductMetadata(resMetadata);
@@ -76,22 +80,15 @@ public class DataCatalogTest {
     }
 
     @Test
-    public void testPublishDataProduct(){
+    public void testDataCatalog(){
         try {
             String productUri = datacatalog.registerDataProduct(dataProductModel);
             org.junit.Assert.assertNotNull(productUri);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testRemoveDataProduct(){
-        try {
-            boolean result = datacatalog.removeDataProduct("234234234");
-            Assert.assertFalse(result);
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
+            dataProductModel = datacatalog.getDataProduct(productUri);
+            Assert.assertNotNull(dataProductModel);
+            boolean result = datacatalog.removeDataProduct(productUri);
+            Assert.assertTrue(result);
+            productUri = datacatalog.registerDataProduct(dataProductModel);
             Assert.assertNotNull(productUri);
             result = datacatalog.removeDataProduct(productUri);
             Assert.assertTrue(result);
@@ -102,121 +99,4 @@ public class DataCatalogTest {
             Assert.fail();
         }
     }
-
-    @Test
-    public void testGetDataProduct(){
-        try {
-            dataProductModel.setDataProductType(DataProductType.COLLECTION);
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            Assert.assertNotNull(productUri);
-            DataProductModel persistedCopy = datacatalog.getDataProduct(productUri);
-            Assert.assertNotNull(persistedCopy);
-            dataProductModel.setParentProductUri(productUri);
-            dataProductModel.setDataProductType(DataProductType.FILE);
-            datacatalog.registerDataProduct(dataProductModel);
-            datacatalog.registerDataProduct(dataProductModel);
-            persistedCopy = datacatalog.getDataProduct(productUri);
-            Assert.assertTrue(persistedCopy.getChildProducts().size()==2);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testUpdateDataProduct(){
-        try {
-            dataProductModel.setProductUri(UUID.randomUUID().toString());
-            boolean result = datacatalog.updateDataProduct(dataProductModel);
-            Assert.assertFalse(result);
-            datacatalog.registerDataProduct(dataProductModel);
-            dataProductModel.setProductName("updated-name");
-            datacatalog.updateDataProduct(dataProductModel);
-            dataProductModel = datacatalog.getDataProduct(dataProductModel.getProductUri());
-            Assert.assertTrue(dataProductModel.getProductName().equals("updated-name"));
-            Assert.assertTrue(dataProductModel.getProductMetadata().size()==1);
-            dataProductModel.getProductMetadata().put("name2","name2");
-            datacatalog.updateDataProduct(dataProductModel);
-            dataProductModel = datacatalog.getDataProduct(dataProductModel.getProductUri());
-            Assert.assertTrue(dataProductModel.getProductMetadata().size()==2);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testPublishReplicaLocation(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            replicaLocationModel.setProductUri(productUri);
-            String replicaId = datacatalog.registerReplicaLocation(replicaLocationModel);
-            Assert.assertNotNull(replicaId);;
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testRemoveReplicaLocation(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            replicaLocationModel.setProductUri(productUri);
-            String replicaId = datacatalog.registerReplicaLocation(replicaLocationModel);
-            boolean result = datacatalog.removeReplicaLocation(replicaId);
-            Assert.assertTrue(result);
-            result = datacatalog.removeReplicaLocation(replicaLocationModel.getReplicaId());
-            Assert.assertFalse(result);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testGetReplicaLocation(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            replicaLocationModel.setProductUri(productUri);
-            String replicaId = datacatalog.registerReplicaLocation(replicaLocationModel);
-            DataReplicaLocationModel persistedCopy = datacatalog.getReplicaLocation(replicaId);
-            Assert.assertNotNull(persistedCopy);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testUpdateReplicaLocation(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            replicaLocationModel.setProductUri(productUri);
-            String replicaId = datacatalog.registerReplicaLocation(replicaLocationModel);
-            DataReplicaLocationModel persistedCopy = datacatalog.getReplicaLocation(replicaId);
-            persistedCopy.setReplicaDescription("updated-description");
-            datacatalog.updateReplicaLocation(persistedCopy);
-            persistedCopy = datacatalog.getReplicaLocation(replicaId);
-            Assert.assertTrue(persistedCopy.getReplicaDescription().equals("updated-description"));
-            Assert.assertEquals(persistedCopy.getReplicaLocationCategory(), replicaLocationModel.getReplicaLocationCategory());
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void testGetAllReplicaLocations(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            replicaLocationModel.setProductUri(productUri);
-            datacatalog.registerReplicaLocation(replicaLocationModel);
-            List<DataReplicaLocationModel> replicaLocationModelList = datacatalog.getAllReplicaLocations(productUri);
-            Assert.assertNotNull(replicaLocationModelList.get(0).getReplicaId());
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
index 49ae6f5..89b0cc8 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
@@ -26,6 +26,7 @@ import org.apache.airavata.model.data.product.DataReplicaLocationModel;
 import java.util.List;
 
 public interface DataCatalog {
+    String schema = "airavata-dp";
 
     String registerDataProduct(DataProductModel resource) throws DataCatalogException;
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 6e6f38f..3835c8e 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2959,6 +2959,29 @@ service Airavata {
                   2: airavata_errors.AiravataClientException ace,
                   3: airavata_errors.AiravataSystemException ase,
                   4: airavata_errors.AuthorizationException ae)
+
+
+ /**
+ * API Methods related to data catalog
+ **/
+ string registerDataProduct(1: required security_model.AuthzToken authzToken, 2: required  data_catalog_models.DataProductModel dataProductModel)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                              2: airavata_errors.AiravataClientException ace,
+                              3: airavata_errors.AiravataSystemException ase,
+                              4: airavata_errors.AuthorizationException ae)
+
+ data_catalog_models.DataProductModel getDataProduct(1: required security_model.AuthzToken authzToken, 2: required  string dataProductUri)
+             throws (1: airavata_errors.InvalidRequestException ire,
+                               2: airavata_errors.AiravataClientException ace,
+                               3: airavata_errors.AiravataSystemException ase,
+                               4: airavata_errors.AuthorizationException ae)
+
+ string registerReplicaLocation(1: required security_model.AuthzToken authzToken, 2: required  data_catalog_models.DataReplicaLocationModel replicaLocationModel)
+              throws (1: airavata_errors.InvalidRequestException ire,
+                                2: airavata_errors.AiravataClientException ace,
+                                3: airavata_errors.AiravataSystemException ase,
+                                4: airavata_errors.AuthorizationException ae)
+
  //End of API
  }
 


[13/55] [abbrv] airavata git commit: append filename to logical path only when data type is file

Posted by sh...@apache.org.
append filename to logical path only when data type is file


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

Branch: refs/heads/master
Commit: a23cc639e0ee34bc78e64706328feccc482c30f5
Parents: 3748742
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 14:45:42 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 14:45:42 2016 -0400

----------------------------------------------------------------------
 .../airavata/registry/core/data/catalog/impl/DataCatalogImpl.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a23cc639/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index be0cb40..308abfc 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -22,6 +22,7 @@
 package org.apache.airavata.registry.core.data.catalog.impl;
 
 import org.apache.airavata.model.data.product.DataProductModel;
+import org.apache.airavata.model.data.product.DataProductType;
 import org.apache.airavata.model.data.product.DataReplicaLocationModel;
 import org.apache.airavata.registry.core.data.catalog.model.DataProduct;
 import org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation;
@@ -48,7 +49,7 @@ public class DataCatalogImpl implements DataCatalog {
             throw new DataCatalogException("owner name, gateway id and logical path should be non empty and logical path" +
                     " should start with /");
         }
-        if(!productModel.getLogicalPath().endsWith(productModel.getProductName())){
+        if(productModel.getDataProductType().equals(DataProductType.FILE) && !productModel.getLogicalPath().endsWith(productModel.getProductName())){
             if(!productModel.getLogicalPath().endsWith("/"))
                 productModel.setLogicalPath(productModel.getLogicalPath()+"/");
             productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());


[33/55] [abbrv] airavata git commit: fixing missing /

Posted by sh...@apache.org.
fixing missing /


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

Branch: refs/heads/master
Commit: b2740e74dee0634662c06895943d7447da9fbda8
Parents: cf8dc28
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 11:47:45 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 11:47:45 2016 -0400

----------------------------------------------------------------------
 .../registry/core/replica/catalog/impl/ReplicaCatalogImpl.java      | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b2740e74/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
index 2da6724..6a9a4fd 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
@@ -73,6 +73,7 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
             String dir = bits[i];
             if(!isExists(parentUri + dir)){
                 tempDp = new DataProductModel();
+                if(!parentUri.endsWith("/")) parentUri += "/";
                 try {
                     tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
                 } catch (URISyntaxException e) {


[38/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 f885e7a..82c79ff 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
@@ -2610,7 +2610,7 @@ class AiravataIf {
   virtual bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName) = 0;
 
   /**
-   * API Methods related to data catalog
+   * API Methods related to replica catalog
    * 
    * 
    * @param authzToken
@@ -2619,6 +2619,8 @@ class AiravataIf {
   virtual void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel) = 0;
   virtual void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) = 0;
   virtual void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel) = 0;
+  virtual void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) = 0;
+  virtual void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) = 0;
 };
 
 class AiravataIfFactory {
@@ -3102,6 +3104,12 @@ class AiravataNull : virtual public AiravataIf {
   void registerReplicaLocation(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& /* replicaLocationModel */) {
     return;
   }
+  void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */) {
+    return;
+  }
+  void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */) {
+    return;
+  }
 };
 
 
@@ -22416,6 +22424,278 @@ class Airavata_registerReplicaLocation_presult {
 
 };
 
+
+class Airavata_getParentDataProduct_args {
+ public:
+
+  Airavata_getParentDataProduct_args(const Airavata_getParentDataProduct_args&);
+  Airavata_getParentDataProduct_args& operator=(const Airavata_getParentDataProduct_args&);
+  Airavata_getParentDataProduct_args() : productUri() {
+  }
+
+  virtual ~Airavata_getParentDataProduct_args() throw();
+   ::apache::airavata::model::security::AuthzToken authzToken;
+  std::string productUri;
+
+  void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
+
+  void __set_productUri(const std::string& val);
+
+  bool operator == (const Airavata_getParentDataProduct_args & rhs) const
+  {
+    if (!(authzToken == rhs.authzToken))
+      return false;
+    if (!(productUri == rhs.productUri))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getParentDataProduct_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getParentDataProduct_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_getParentDataProduct_pargs {
+ public:
+
+
+  virtual ~Airavata_getParentDataProduct_pargs() throw();
+  const  ::apache::airavata::model::security::AuthzToken* authzToken;
+  const std::string* productUri;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getParentDataProduct_result__isset {
+  _Airavata_getParentDataProduct_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getParentDataProduct_result__isset;
+
+class Airavata_getParentDataProduct_result {
+ public:
+
+  Airavata_getParentDataProduct_result(const Airavata_getParentDataProduct_result&);
+  Airavata_getParentDataProduct_result& operator=(const Airavata_getParentDataProduct_result&);
+  Airavata_getParentDataProduct_result() {
+  }
+
+  virtual ~Airavata_getParentDataProduct_result() throw();
+   ::apache::airavata::model::data::replica::DataProductModel success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getParentDataProduct_result__isset __isset;
+
+  void __set_success(const  ::apache::airavata::model::data::replica::DataProductModel& val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_getParentDataProduct_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getParentDataProduct_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getParentDataProduct_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getParentDataProduct_presult__isset {
+  _Airavata_getParentDataProduct_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getParentDataProduct_presult__isset;
+
+class Airavata_getParentDataProduct_presult {
+ public:
+
+
+  virtual ~Airavata_getParentDataProduct_presult() throw();
+   ::apache::airavata::model::data::replica::DataProductModel* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getParentDataProduct_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_getChildDataProducts_args {
+ public:
+
+  Airavata_getChildDataProducts_args(const Airavata_getChildDataProducts_args&);
+  Airavata_getChildDataProducts_args& operator=(const Airavata_getChildDataProducts_args&);
+  Airavata_getChildDataProducts_args() : productUri() {
+  }
+
+  virtual ~Airavata_getChildDataProducts_args() throw();
+   ::apache::airavata::model::security::AuthzToken authzToken;
+  std::string productUri;
+
+  void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
+
+  void __set_productUri(const std::string& val);
+
+  bool operator == (const Airavata_getChildDataProducts_args & rhs) const
+  {
+    if (!(authzToken == rhs.authzToken))
+      return false;
+    if (!(productUri == rhs.productUri))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getChildDataProducts_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getChildDataProducts_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_getChildDataProducts_pargs {
+ public:
+
+
+  virtual ~Airavata_getChildDataProducts_pargs() throw();
+  const  ::apache::airavata::model::security::AuthzToken* authzToken;
+  const std::string* productUri;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getChildDataProducts_result__isset {
+  _Airavata_getChildDataProducts_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getChildDataProducts_result__isset;
+
+class Airavata_getChildDataProducts_result {
+ public:
+
+  Airavata_getChildDataProducts_result(const Airavata_getChildDataProducts_result&);
+  Airavata_getChildDataProducts_result& operator=(const Airavata_getChildDataProducts_result&);
+  Airavata_getChildDataProducts_result() {
+  }
+
+  virtual ~Airavata_getChildDataProducts_result() throw();
+  std::vector< ::apache::airavata::model::data::replica::DataProductModel>  success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getChildDataProducts_result__isset __isset;
+
+  void __set_success(const std::vector< ::apache::airavata::model::data::replica::DataProductModel> & val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_getChildDataProducts_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getChildDataProducts_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getChildDataProducts_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getChildDataProducts_presult__isset {
+  _Airavata_getChildDataProducts_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getChildDataProducts_presult__isset;
+
+class Airavata_getChildDataProducts_presult {
+ public:
+
+
+  virtual ~Airavata_getChildDataProducts_presult() throw();
+  std::vector< ::apache::airavata::model::data::replica::DataProductModel> * success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getChildDataProducts_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
 class AiravataClient : virtual public AiravataIf {
  public:
   AiravataClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
@@ -22852,6 +23132,12 @@ class AiravataClient : virtual public AiravataIf {
   void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   void send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   void recv_registerReplicaLocation(std::string& _return);
+  void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void send_getParentDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void recv_getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return);
+  void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void send_getChildDataProducts(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void recv_getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;
@@ -23004,6 +23290,8 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
   void process_registerDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_registerReplicaLocation(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_getParentDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_getChildDataProducts(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
  public:
   AiravataProcessor(boost::shared_ptr<AiravataIf> iface) :
     iface_(iface) {
@@ -23144,6 +23432,8 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
     processMap_["registerDataProduct"] = &AiravataProcessor::process_registerDataProduct;
     processMap_["getDataProduct"] = &AiravataProcessor::process_getDataProduct;
     processMap_["registerReplicaLocation"] = &AiravataProcessor::process_registerReplicaLocation;
+    processMap_["getParentDataProduct"] = &AiravataProcessor::process_getParentDataProduct;
+    processMap_["getChildDataProducts"] = &AiravataProcessor::process_getChildDataProducts;
   }
 
   virtual ~AiravataProcessor() {}
@@ -24490,6 +24780,26 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
+  void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->getParentDataProduct(_return, authzToken, productUri);
+    }
+    ifaces_[i]->getParentDataProduct(_return, authzToken, productUri);
+    return;
+  }
+
+  void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->getChildDataProducts(_return, authzToken, productUri);
+    }
+    ifaces_[i]->getChildDataProducts(_return, authzToken, productUri);
+    return;
+  }
+
 };
 
 // The 'concurrent' client is a thread safe client that correctly handles
@@ -24931,6 +25241,12 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   int32_t send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   void recv_registerReplicaLocation(std::string& _return, const int32_t seqid);
+  void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  int32_t send_getParentDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void recv_getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const int32_t seqid);
+  void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  int32_t send_getChildDataProducts(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri);
+  void recv_getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const int32_t seqid);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 f9d80e4..bc63cc3 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
@@ -3023,7 +3023,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * API Methods related to data catalog
+   * API Methods related to replica catalog
    * 
    * 
    * @param authzToken
@@ -3044,6 +3044,16 @@ class AiravataHandler : virtual public AiravataIf {
     printf("registerReplicaLocation\n");
   }
 
+  void getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) {
+    // Your implementation goes here
+    printf("getParentDataProduct\n");
+  }
+
+  void getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri) {
+    // Your implementation goes here
+    printf("getChildDataProducts\n");
+  }
+
 };
 
 int main(int argc, char **argv) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
index ed2e025..1334b5f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
@@ -136,11 +136,6 @@ void DataProductModel::__set_replicaLocations(const std::vector<DataReplicaLocat
 __isset.replicaLocations = true;
 }
 
-void DataProductModel::__set_childProducts(const std::vector<DataProductModel> & val) {
-  this->childProducts = val;
-__isset.childProducts = true;
-}
-
 uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -295,26 +290,6 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 14:
-        if (ftype == ::apache::thrift::protocol::T_LIST) {
-          {
-            this->childProducts.clear();
-            uint32_t _size13;
-            ::apache::thrift::protocol::TType _etype16;
-            xfer += iprot->readListBegin(_etype16, _size13);
-            this->childProducts.resize(_size13);
-            uint32_t _i17;
-            for (_i17 = 0; _i17 < _size13; ++_i17)
-            {
-              xfer += this->childProducts[_i17].read(iprot);
-            }
-            xfer += iprot->readListEnd();
-          }
-          this->__isset.childProducts = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -391,11 +366,11 @@ uint32_t DataProductModel::write(::apache::thrift::protocol::TProtocol* oprot) c
     xfer += oprot->writeFieldBegin("productMetadata", ::apache::thrift::protocol::T_MAP, 12);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->productMetadata.size()));
-      std::map<std::string, std::string> ::const_iterator _iter18;
-      for (_iter18 = this->productMetadata.begin(); _iter18 != this->productMetadata.end(); ++_iter18)
+      std::map<std::string, std::string> ::const_iterator _iter13;
+      for (_iter13 = this->productMetadata.begin(); _iter13 != this->productMetadata.end(); ++_iter13)
       {
-        xfer += oprot->writeString(_iter18->first);
-        xfer += oprot->writeString(_iter18->second);
+        xfer += oprot->writeString(_iter13->first);
+        xfer += oprot->writeString(_iter13->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -405,23 +380,10 @@ uint32_t DataProductModel::write(::apache::thrift::protocol::TProtocol* oprot) c
     xfer += oprot->writeFieldBegin("replicaLocations", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->replicaLocations.size()));
-      std::vector<DataReplicaLocationModel> ::const_iterator _iter19;
-      for (_iter19 = this->replicaLocations.begin(); _iter19 != this->replicaLocations.end(); ++_iter19)
-      {
-        xfer += (*_iter19).write(oprot);
-      }
-      xfer += oprot->writeListEnd();
-    }
-    xfer += oprot->writeFieldEnd();
-  }
-  if (this->__isset.childProducts) {
-    xfer += oprot->writeFieldBegin("childProducts", ::apache::thrift::protocol::T_LIST, 14);
-    {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->childProducts.size()));
-      std::vector<DataProductModel> ::const_iterator _iter20;
-      for (_iter20 = this->childProducts.begin(); _iter20 != this->childProducts.end(); ++_iter20)
+      std::vector<DataReplicaLocationModel> ::const_iterator _iter14;
+      for (_iter14 = this->replicaLocations.begin(); _iter14 != this->replicaLocations.end(); ++_iter14)
       {
-        xfer += (*_iter20).write(oprot);
+        xfer += (*_iter14).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -447,43 +409,40 @@ void swap(DataProductModel &a, DataProductModel &b) {
   swap(a.lastModifiedTime, b.lastModifiedTime);
   swap(a.productMetadata, b.productMetadata);
   swap(a.replicaLocations, b.replicaLocations);
-  swap(a.childProducts, b.childProducts);
   swap(a.__isset, b.__isset);
 }
 
-DataProductModel::DataProductModel(const DataProductModel& other21) {
-  productUri = other21.productUri;
-  gatewayId = other21.gatewayId;
-  parentProductUri = other21.parentProductUri;
-  logicalPath = other21.logicalPath;
-  productName = other21.productName;
-  productDescription = other21.productDescription;
-  ownerName = other21.ownerName;
-  dataProductType = other21.dataProductType;
-  productSize = other21.productSize;
-  creationTime = other21.creationTime;
-  lastModifiedTime = other21.lastModifiedTime;
-  productMetadata = other21.productMetadata;
-  replicaLocations = other21.replicaLocations;
-  childProducts = other21.childProducts;
-  __isset = other21.__isset;
-}
-DataProductModel& DataProductModel::operator=(const DataProductModel& other22) {
-  productUri = other22.productUri;
-  gatewayId = other22.gatewayId;
-  parentProductUri = other22.parentProductUri;
-  logicalPath = other22.logicalPath;
-  productName = other22.productName;
-  productDescription = other22.productDescription;
-  ownerName = other22.ownerName;
-  dataProductType = other22.dataProductType;
-  productSize = other22.productSize;
-  creationTime = other22.creationTime;
-  lastModifiedTime = other22.lastModifiedTime;
-  productMetadata = other22.productMetadata;
-  replicaLocations = other22.replicaLocations;
-  childProducts = other22.childProducts;
-  __isset = other22.__isset;
+DataProductModel::DataProductModel(const DataProductModel& other15) {
+  productUri = other15.productUri;
+  gatewayId = other15.gatewayId;
+  parentProductUri = other15.parentProductUri;
+  logicalPath = other15.logicalPath;
+  productName = other15.productName;
+  productDescription = other15.productDescription;
+  ownerName = other15.ownerName;
+  dataProductType = other15.dataProductType;
+  productSize = other15.productSize;
+  creationTime = other15.creationTime;
+  lastModifiedTime = other15.lastModifiedTime;
+  productMetadata = other15.productMetadata;
+  replicaLocations = other15.replicaLocations;
+  __isset = other15.__isset;
+}
+DataProductModel& DataProductModel::operator=(const DataProductModel& other16) {
+  productUri = other16.productUri;
+  gatewayId = other16.gatewayId;
+  parentProductUri = other16.parentProductUri;
+  logicalPath = other16.logicalPath;
+  productName = other16.productName;
+  productDescription = other16.productDescription;
+  ownerName = other16.ownerName;
+  dataProductType = other16.dataProductType;
+  productSize = other16.productSize;
+  creationTime = other16.creationTime;
+  lastModifiedTime = other16.lastModifiedTime;
+  productMetadata = other16.productMetadata;
+  replicaLocations = other16.replicaLocations;
+  __isset = other16.__isset;
   return *this;
 }
 void DataProductModel::printTo(std::ostream& out) const {
@@ -502,7 +461,6 @@ void DataProductModel::printTo(std::ostream& out) const {
   out << ", " << "lastModifiedTime="; (__isset.lastModifiedTime ? (out << to_string(lastModifiedTime)) : (out << "<null>"));
   out << ", " << "productMetadata="; (__isset.productMetadata ? (out << to_string(productMetadata)) : (out << "<null>"));
   out << ", " << "replicaLocations="; (__isset.replicaLocations ? (out << to_string(replicaLocations)) : (out << "<null>"));
-  out << ", " << "childProducts="; (__isset.childProducts ? (out << to_string(childProducts)) : (out << "<null>"));
   out << ")";
 }
 
@@ -650,9 +608,9 @@ uint32_t DataReplicaLocationModel::read(::apache::thrift::protocol::TProtocol* i
         break;
       case 8:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast23;
-          xfer += iprot->readI32(ecast23);
-          this->replicaLocationCategory = (ReplicaLocationCategory::type)ecast23;
+          int32_t ecast17;
+          xfer += iprot->readI32(ecast17);
+          this->replicaLocationCategory = (ReplicaLocationCategory::type)ecast17;
           this->__isset.replicaLocationCategory = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -660,9 +618,9 @@ uint32_t DataReplicaLocationModel::read(::apache::thrift::protocol::TProtocol* i
         break;
       case 9:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast24;
-          xfer += iprot->readI32(ecast24);
-          this->replicaPersistentType = (ReplicaPersistentType::type)ecast24;
+          int32_t ecast18;
+          xfer += iprot->readI32(ecast18);
+          this->replicaPersistentType = (ReplicaPersistentType::type)ecast18;
           this->__isset.replicaPersistentType = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -688,17 +646,17 @@ uint32_t DataReplicaLocationModel::read(::apache::thrift::protocol::TProtocol* i
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->replicaMetadata.clear();
-            uint32_t _size25;
-            ::apache::thrift::protocol::TType _ktype26;
-            ::apache::thrift::protocol::TType _vtype27;
-            xfer += iprot->readMapBegin(_ktype26, _vtype27, _size25);
-            uint32_t _i29;
-            for (_i29 = 0; _i29 < _size25; ++_i29)
+            uint32_t _size19;
+            ::apache::thrift::protocol::TType _ktype20;
+            ::apache::thrift::protocol::TType _vtype21;
+            xfer += iprot->readMapBegin(_ktype20, _vtype21, _size19);
+            uint32_t _i23;
+            for (_i23 = 0; _i23 < _size19; ++_i23)
             {
-              std::string _key30;
-              xfer += iprot->readString(_key30);
-              std::string& _val31 = this->replicaMetadata[_key30];
-              xfer += iprot->readString(_val31);
+              std::string _key24;
+              xfer += iprot->readString(_key24);
+              std::string& _val25 = this->replicaMetadata[_key24];
+              xfer += iprot->readString(_val25);
             }
             xfer += iprot->readMapEnd();
           }
@@ -783,11 +741,11 @@ uint32_t DataReplicaLocationModel::write(::apache::thrift::protocol::TProtocol*
     xfer += oprot->writeFieldBegin("replicaMetadata", ::apache::thrift::protocol::T_MAP, 12);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->replicaMetadata.size()));
-      std::map<std::string, std::string> ::const_iterator _iter32;
-      for (_iter32 = this->replicaMetadata.begin(); _iter32 != this->replicaMetadata.end(); ++_iter32)
+      std::map<std::string, std::string> ::const_iterator _iter26;
+      for (_iter26 = this->replicaMetadata.begin(); _iter26 != this->replicaMetadata.end(); ++_iter26)
       {
-        xfer += oprot->writeString(_iter32->first);
-        xfer += oprot->writeString(_iter32->second);
+        xfer += oprot->writeString(_iter26->first);
+        xfer += oprot->writeString(_iter26->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -815,35 +773,35 @@ void swap(DataReplicaLocationModel &a, DataReplicaLocationModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-DataReplicaLocationModel::DataReplicaLocationModel(const DataReplicaLocationModel& other33) {
-  replicaId = other33.replicaId;
-  productUri = other33.productUri;
-  replicaName = other33.replicaName;
-  replicaDescription = other33.replicaDescription;
-  creationTime = other33.creationTime;
-  lastModifiedTime = other33.lastModifiedTime;
-  validUntilTime = other33.validUntilTime;
-  replicaLocationCategory = other33.replicaLocationCategory;
-  replicaPersistentType = other33.replicaPersistentType;
-  storageResourceId = other33.storageResourceId;
-  filePath = other33.filePath;
-  replicaMetadata = other33.replicaMetadata;
-  __isset = other33.__isset;
-}
-DataReplicaLocationModel& DataReplicaLocationModel::operator=(const DataReplicaLocationModel& other34) {
-  replicaId = other34.replicaId;
-  productUri = other34.productUri;
-  replicaName = other34.replicaName;
-  replicaDescription = other34.replicaDescription;
-  creationTime = other34.creationTime;
-  lastModifiedTime = other34.lastModifiedTime;
-  validUntilTime = other34.validUntilTime;
-  replicaLocationCategory = other34.replicaLocationCategory;
-  replicaPersistentType = other34.replicaPersistentType;
-  storageResourceId = other34.storageResourceId;
-  filePath = other34.filePath;
-  replicaMetadata = other34.replicaMetadata;
-  __isset = other34.__isset;
+DataReplicaLocationModel::DataReplicaLocationModel(const DataReplicaLocationModel& other27) {
+  replicaId = other27.replicaId;
+  productUri = other27.productUri;
+  replicaName = other27.replicaName;
+  replicaDescription = other27.replicaDescription;
+  creationTime = other27.creationTime;
+  lastModifiedTime = other27.lastModifiedTime;
+  validUntilTime = other27.validUntilTime;
+  replicaLocationCategory = other27.replicaLocationCategory;
+  replicaPersistentType = other27.replicaPersistentType;
+  storageResourceId = other27.storageResourceId;
+  filePath = other27.filePath;
+  replicaMetadata = other27.replicaMetadata;
+  __isset = other27.__isset;
+}
+DataReplicaLocationModel& DataReplicaLocationModel::operator=(const DataReplicaLocationModel& other28) {
+  replicaId = other28.replicaId;
+  productUri = other28.productUri;
+  replicaName = other28.replicaName;
+  replicaDescription = other28.replicaDescription;
+  creationTime = other28.creationTime;
+  lastModifiedTime = other28.lastModifiedTime;
+  validUntilTime = other28.validUntilTime;
+  replicaLocationCategory = other28.replicaLocationCategory;
+  replicaPersistentType = other28.replicaPersistentType;
+  storageResourceId = other28.storageResourceId;
+  filePath = other28.filePath;
+  replicaMetadata = other28.replicaMetadata;
+  __isset = other28.__isset;
   return *this;
 }
 void DataReplicaLocationModel::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
index d9072c7..f188f39 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
@@ -71,7 +71,7 @@ class DataProductModel;
 class DataReplicaLocationModel;
 
 typedef struct _DataProductModel__isset {
-  _DataProductModel__isset() : productUri(false), gatewayId(false), parentProductUri(false), logicalPath(false), productName(false), productDescription(false), ownerName(false), dataProductType(false), productSize(false), creationTime(false), lastModifiedTime(false), productMetadata(false), replicaLocations(false), childProducts(false) {}
+  _DataProductModel__isset() : productUri(false), gatewayId(false), parentProductUri(false), logicalPath(false), productName(false), productDescription(false), ownerName(false), dataProductType(false), productSize(false), creationTime(false), lastModifiedTime(false), productMetadata(false), replicaLocations(false) {}
   bool productUri :1;
   bool gatewayId :1;
   bool parentProductUri :1;
@@ -85,7 +85,6 @@ typedef struct _DataProductModel__isset {
   bool lastModifiedTime :1;
   bool productMetadata :1;
   bool replicaLocations :1;
-  bool childProducts :1;
 } _DataProductModel__isset;
 
 class DataProductModel {
@@ -110,7 +109,6 @@ class DataProductModel {
   int64_t lastModifiedTime;
   std::map<std::string, std::string>  productMetadata;
   std::vector<DataReplicaLocationModel>  replicaLocations;
-  std::vector<DataProductModel>  childProducts;
 
   _DataProductModel__isset __isset;
 
@@ -140,8 +138,6 @@ class DataProductModel {
 
   void __set_replicaLocations(const std::vector<DataReplicaLocationModel> & val);
 
-  void __set_childProducts(const std::vector<DataProductModel> & val);
-
   bool operator == (const DataProductModel & rhs) const
   {
     if (__isset.productUri != rhs.__isset.productUri)
@@ -196,10 +192,6 @@ class DataProductModel {
       return false;
     else if (__isset.replicaLocations && !(replicaLocations == rhs.replicaLocations))
       return false;
-    if (__isset.childProducts != rhs.__isset.childProducts)
-      return false;
-    else if (__isset.childProducts && !(childProducts == rhs.childProducts))
-      return false;
     return true;
   }
   bool operator != (const DataProductModel &rhs) const {


[50/55] [abbrv] airavata git commit: setting username in process model

Posted by sh...@apache.org.
setting username in process model


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

Branch: refs/heads/master
Commit: 5d36493a8855635f9045cfa6c18b58755b6c640e
Parents: fd9b64f
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 14:19:07 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 14:19:07 2016 -0400

----------------------------------------------------------------------
 .../lib/airavata/process_model_types.cpp        |  22 ++++
 .../lib/airavata/process_model_types.h          |  12 +-
 .../lib/Airavata/Model/Process/Types.php        |  23 ++++
 .../lib/apache/airavata/model/process/ttypes.py |  15 ++-
 .../airavata/model/process/ProcessModel.java    | 114 ++++++++++++++++++-
 .../model/util/ExperimentModelUtil.java         |   1 +
 .../apache/airavata/gfac/core/GFacUtils.java    |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   2 +
 .../core/experiment/catalog/model/Process.java  |  10 ++
 .../catalog/resources/ProcessResource.java      |  10 ++
 .../utils/ThriftDataModelConversion.java        |   1 +
 .../src/main/resources/expcatalog-derby.sql     |   1 +
 .../src/main/resources/expcatalog-mysql.sql     |   1 +
 .../process_model.thrift                        |   3 +-
 14 files changed, 208 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
index 629b78f..cdd437a 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
@@ -143,6 +143,11 @@ void ProcessModel::__set_experimentDataDir(const std::string& val) {
 __isset.experimentDataDir = true;
 }
 
+void ProcessModel::__set_userName(const std::string& val) {
+  this->userName = val;
+__isset.userName = true;
+}
+
 uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -390,6 +395,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 23:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->userName);
+          this->__isset.userName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -551,6 +564,11 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeString(this->experimentDataDir);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.userName) {
+    xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 23);
+    xfer += oprot->writeString(this->userName);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -580,6 +598,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.userDn, b.userDn);
   swap(a.generateCert, b.generateCert);
   swap(a.experimentDataDir, b.experimentDataDir);
+  swap(a.userName, b.userName);
   swap(a.__isset, b.__isset);
 }
 
@@ -606,6 +625,7 @@ ProcessModel::ProcessModel(const ProcessModel& other24) {
   userDn = other24.userDn;
   generateCert = other24.generateCert;
   experimentDataDir = other24.experimentDataDir;
+  userName = other24.userName;
   __isset = other24.__isset;
 }
 ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
@@ -631,6 +651,7 @@ ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
   userDn = other25.userDn;
   generateCert = other25.generateCert;
   experimentDataDir = other25.experimentDataDir;
+  userName = other25.userName;
   __isset = other25.__isset;
   return *this;
 }
@@ -659,6 +680,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "userDn="; (__isset.userDn ? (out << to_string(userDn)) : (out << "<null>"));
   out << ", " << "generateCert="; (__isset.generateCert ? (out << to_string(generateCert)) : (out << "<null>"));
   out << ", " << "experimentDataDir="; (__isset.experimentDataDir ? (out << to_string(experimentDataDir)) : (out << "<null>"));
+  out << ", " << "userName="; (__isset.userName ? (out << to_string(userName)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
index efa30d1..bf5b5d0 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
@@ -44,7 +44,7 @@ namespace apache { namespace airavata { namespace model { namespace process {
 class ProcessModel;
 
 typedef struct _ProcessModel__isset {
-  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false) {}
+  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
   bool creationTime :1;
   bool lastUpdateTime :1;
   bool processStatus :1;
@@ -65,6 +65,7 @@ typedef struct _ProcessModel__isset {
   bool userDn :1;
   bool generateCert :1;
   bool experimentDataDir :1;
+  bool userName :1;
 } _ProcessModel__isset;
 
 class ProcessModel {
@@ -72,7 +73,7 @@ class ProcessModel {
 
   ProcessModel(const ProcessModel&);
   ProcessModel& operator=(const ProcessModel&);
-  ProcessModel() : processId("DO_NOT_SET_AT_CLIENTS"), experimentId(), creationTime(0), lastUpdateTime(0), processDetail(), applicationInterfaceId(), applicationDeploymentId(), computeResourceId(), taskDag(), gatewayExecutionId(), enableEmailNotification(0), storageResourceId(), userDn(), generateCert(false), experimentDataDir() {
+  ProcessModel() : processId("DO_NOT_SET_AT_CLIENTS"), experimentId(), creationTime(0), lastUpdateTime(0), processDetail(), applicationInterfaceId(), applicationDeploymentId(), computeResourceId(), taskDag(), gatewayExecutionId(), enableEmailNotification(0), storageResourceId(), userDn(), generateCert(false), experimentDataDir(), userName() {
   }
 
   virtual ~ProcessModel() throw();
@@ -98,6 +99,7 @@ class ProcessModel {
   std::string userDn;
   bool generateCert;
   std::string experimentDataDir;
+  std::string userName;
 
   _ProcessModel__isset __isset;
 
@@ -145,6 +147,8 @@ class ProcessModel {
 
   void __set_experimentDataDir(const std::string& val);
 
+  void __set_userName(const std::string& val);
+
   bool operator == (const ProcessModel & rhs) const
   {
     if (!(processId == rhs.processId))
@@ -231,6 +235,10 @@ class ProcessModel {
       return false;
     else if (__isset.experimentDataDir && !(experimentDataDir == rhs.experimentDataDir))
       return false;
+    if (__isset.userName != rhs.__isset.userName)
+      return false;
+    else if (__isset.userName && !(userName == rhs.userName))
+      return false;
     return true;
   }
   bool operator != (const ProcessModel &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
index c0000d0..179be2b 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
@@ -117,6 +117,10 @@ class ProcessModel {
    * @var string
    */
   public $experimentDataDir = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -231,6 +235,10 @@ class ProcessModel {
           'var' => 'experimentDataDir',
           'type' => TType::STRING,
           ),
+        23 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -300,6 +308,9 @@ class ProcessModel {
       if (isset($vals['experimentDataDir'])) {
         $this->experimentDataDir = $vals['experimentDataDir'];
       }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
     }
   }
 
@@ -522,6 +533,13 @@ class ProcessModel {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 23:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -702,6 +720,11 @@ class ProcessModel {
       $xfer += $output->writeString($this->experimentDataDir);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 23);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
index 7355759..7da3b53 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
@@ -56,6 +56,7 @@ class ProcessModel:
    - userDn
    - generateCert
    - experimentDataDir
+   - userName
   """
 
   thrift_spec = (
@@ -82,9 +83,10 @@ class ProcessModel:
     (20, TType.STRING, 'userDn', None, None, ), # 20
     (21, TType.BOOL, 'generateCert', None, False, ), # 21
     (22, TType.STRING, 'experimentDataDir', None, None, ), # 22
+    (23, TType.STRING, 'userName', None, None, ), # 23
   )
 
-  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None,):
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
     self.processId = processId
     self.experimentId = experimentId
     self.creationTime = creationTime
@@ -107,6 +109,7 @@ class ProcessModel:
     self.userDn = userDn
     self.generateCert = generateCert
     self.experimentDataDir = experimentDataDir
+    self.userName = userName
 
   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:
@@ -253,6 +256,11 @@ class ProcessModel:
           self.experimentDataDir = iprot.readString()
         else:
           iprot.skip(ftype)
+      elif fid == 23:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -363,6 +371,10 @@ class ProcessModel:
       oprot.writeFieldBegin('experimentDataDir', TType.STRING, 22)
       oprot.writeString(self.experimentDataDir)
       oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 23)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -398,6 +410,7 @@ class ProcessModel:
     value = (value * 31) ^ hash(self.userDn)
     value = (value * 31) ^ hash(self.generateCert)
     value = (value * 31) ^ hash(self.experimentDataDir)
+    value = (value * 31) ^ hash(self.userName)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/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 607d5bc..170a30a 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
@@ -86,6 +86,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDn", org.apache.thrift.protocol.TType.STRING, (short)20);
   private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)21);
   private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)22);
+  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)23);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -115,6 +116,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String userDn; // optional
   private boolean generateCert; // optional
   private String experimentDataDir; // optional
+  private String userName; // 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 {
@@ -139,7 +141,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     STORAGE_RESOURCE_ID((short)19, "storageResourceId"),
     USER_DN((short)20, "userDn"),
     GENERATE_CERT((short)21, "generateCert"),
-    EXPERIMENT_DATA_DIR((short)22, "experimentDataDir");
+    EXPERIMENT_DATA_DIR((short)22, "experimentDataDir"),
+    USER_NAME((short)23, "userName");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -198,6 +201,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           return GENERATE_CERT;
         case 22: // EXPERIMENT_DATA_DIR
           return EXPERIMENT_DATA_DIR;
+        case 23: // USER_NAME
+          return USER_NAME;
         default:
           return null;
       }
@@ -243,7 +248,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
   private static final int __GENERATECERT_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
   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);
@@ -295,6 +300,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", 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(ProcessModel.class, metaDataMap);
   }
@@ -391,6 +398,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (other.isSetExperimentDataDir()) {
       this.experimentDataDir = other.experimentDataDir;
     }
+    if (other.isSetUserName()) {
+      this.userName = other.userName;
+    }
   }
 
   public ProcessModel deepCopy() {
@@ -426,6 +436,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.generateCert = false;
 
     this.experimentDataDir = null;
+    this.userName = null;
   }
 
   public String getProcessId() {
@@ -990,6 +1001,29 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
+  public String getUserName() {
+    return this.userName;
+  }
+
+  public void setUserName(String userName) {
+    this.userName = userName;
+  }
+
+  public void unsetUserName() {
+    this.userName = null;
+  }
+
+  /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+  public boolean isSetUserName() {
+    return this.userName != null;
+  }
+
+  public void setUserNameIsSet(boolean value) {
+    if (!value) {
+      this.userName = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case PROCESS_ID:
@@ -1168,6 +1202,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       break;
 
+    case USER_NAME:
+      if (value == null) {
+        unsetUserName();
+      } else {
+        setUserName((String)value);
+      }
+      break;
+
     }
   }
 
@@ -1239,6 +1281,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     case EXPERIMENT_DATA_DIR:
       return getExperimentDataDir();
 
+    case USER_NAME:
+      return getUserName();
+
     }
     throw new IllegalStateException();
   }
@@ -1294,6 +1339,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return isSetGenerateCert();
     case EXPERIMENT_DATA_DIR:
       return isSetExperimentDataDir();
+    case USER_NAME:
+      return isSetUserName();
     }
     throw new IllegalStateException();
   }
@@ -1509,6 +1556,15 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return false;
     }
 
+    boolean this_present_userName = true && this.isSetUserName();
+    boolean that_present_userName = true && that.isSetUserName();
+    if (this_present_userName || that_present_userName) {
+      if (!(this_present_userName && that_present_userName))
+        return false;
+      if (!this.userName.equals(that.userName))
+        return false;
+    }
+
     return true;
   }
 
@@ -1626,6 +1682,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (present_experimentDataDir)
       list.add(experimentDataDir);
 
+    boolean present_userName = true && (isSetUserName());
+    list.add(present_userName);
+    if (present_userName)
+      list.add(userName);
+
     return list.hashCode();
   }
 
@@ -1857,6 +1918,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUserName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -2076,6 +2147,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       first = false;
     }
+    if (isSetUserName()) {
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -2360,6 +2441,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 23: // USER_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.userName = iprot.readString();
+              struct.setUserNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -2543,6 +2632,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldEnd();
         }
       }
+      if (struct.userName != null) {
+        if (struct.isSetUserName()) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -2623,7 +2719,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetExperimentDataDir()) {
         optionals.set(19);
       }
-      oprot.writeBitSet(optionals, 20);
+      if (struct.isSetUserName()) {
+        optionals.set(20);
+      }
+      oprot.writeBitSet(optionals, 21);
       if (struct.isSetCreationTime()) {
         oprot.writeI64(struct.creationTime);
       }
@@ -2708,6 +2807,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetExperimentDataDir()) {
         oprot.writeString(struct.experimentDataDir);
       }
+      if (struct.isSetUserName()) {
+        oprot.writeString(struct.userName);
+      }
     }
 
     @Override
@@ -2717,7 +2819,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       struct.setProcessIdIsSet(true);
       struct.experimentId = iprot.readString();
       struct.setExperimentIdIsSet(true);
-      BitSet incoming = iprot.readBitSet(20);
+      BitSet incoming = iprot.readBitSet(21);
       if (incoming.get(0)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
@@ -2840,6 +2942,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.experimentDataDir = iprot.readString();
         struct.setExperimentDataDirIsSet(true);
       }
+      if (incoming.get(20)) {
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
index 502c8ce..d1b25b0 100644
--- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
+++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
@@ -107,6 +107,7 @@ public class ExperimentModelUtil {
                 processModel.setComputeResourceId(scheduling.getResourceHostId());
             }
         }
+        processModel.setUserName(experiment.getUserName());
         return processModel;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 65085db..799ea28 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -864,8 +864,8 @@ public class GFacUtils {
                 for (OutputDataObjectType expOutput : experimentOutputs){
                     if (expOutput.getName().equals(outputName)){
                         DataProductModel dataProductModel = new DataProductModel();
-                        //FIXME We need to set the username here
                         dataProductModel.setGatewayId(processContext.getGatewayId());
+                        dataProductModel.setOwnerName(processContext.getProcessModel().getUserName());
                         dataProductModel.setProductName(outputName);
                         dataProductModel.setDataProductType(DataProductType.FILE);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index e890905..3db46f1 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -281,6 +281,7 @@ public class ExperimentRegistry {
             processResource.setUserDn(process.getUserDn());
             processResource.setGenerateCert(process.isGenerateCert());
             processResource.setExperimentDataDir(process.getExperimentDataDir());
+            processResource.setUserName(process.getUserName());
             if(process.isEnableEmailNotification()){
                 processResource.setEnableEmailNotification(true);
                 if(process.getEmailAddresses() != null){
@@ -739,6 +740,7 @@ public class ExperimentRegistry {
             processResource.setUserDn(process.getUserDn());
             processResource.setGenerateCert(process.isGenerateCert());
             processResource.setExperimentDataDir(process.getExperimentDataDir());
+            processResource.setUserName(process.getUserName());
             if(process.isEnableEmailNotification()){
                 processResource.setEnableEmailNotification(true);
                 if(process.getEmailAddresses() != null){

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
index cc777a1..0722647 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
@@ -45,6 +45,7 @@ public class Process {
     private String emailAddresses;
     private String storageId;
     private String experimentDataDir;
+    private String userName;
     private Experiment experiment;
     private Collection<ProcessError> processErrors;
     private Collection<ProcessInput> processInputs;
@@ -111,6 +112,15 @@ public class Process {
         this.applicationInterfaceId = applicationInterfaceId;
     }
 
+    @Column(name = "USERNAME")
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userDn = userName;
+    }
+
     @Column(name = "STORAGE_RESOURCE_ID")
     public String getStorageId() {
         return storageId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
index e1720de..c0c974d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
@@ -54,6 +54,7 @@ public class ProcessResource extends AbstractExpCatResource {
     private String emailAddresses;
     private String storageResourceId;
     private String userDn;
+    private String userName;
     private boolean generateCert;
     private String experimentDataDir;
 
@@ -185,6 +186,14 @@ public class ProcessResource extends AbstractExpCatResource {
         this.experimentDataDir = experimentDataDir;
     }
 
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException{
        switch (type){
            case PROCESS_ERROR:
@@ -590,6 +599,7 @@ public class ProcessResource extends AbstractExpCatResource {
             process.setUserDn(userDn);
             process.setGenerateCert(generateCert);
             process.setExperimentDataDir(experimentDataDir);
+            process.setUserName(userName);
             if (existingProcess == null){
                 em.persist(process);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 1e6dda1..e39adc2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -380,6 +380,7 @@ public class ThriftDataModelConversion {
             processModel.setStorageResourceId(processResource.getStorageResourceId());
             processModel.setUserDn(processResource.getUserDn());
             processModel.setGenerateCert(processResource.isGenerateCert());
+            processModel.setUserName(processResource.getUserName());
             return processModel;
         }
         return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index dd2c9ee..ded83b0 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -196,6 +196,7 @@ CREATE TABLE PROCESS (
   USER_DN varchar(255),
   GENERATE_CERT SMALLINT,
   EXPERIMENT_DATA_DIR VARCHAR (512),
+  USERNAME VARCHAR (255),
   PRIMARY KEY (PROCESS_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index aef0b89..04c7cee 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -200,6 +200,7 @@ CREATE TABLE PROCESS (
   USER_DN varchar(255),
   GENERATE_CERT SMALLINT,
   EXPERIMENT_DATA_DIR VARCHAR (512),
+  USERNAME VARCHAR (255),
   PRIMARY KEY (PROCESS_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/5d36493a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index d46a7f4..b780203 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -61,5 +61,6 @@ struct ProcessModel {
     19: optional string storageResourceId,
     20: optional string userDn,
     21: optional bool generateCert = 0,
-    22: optional string experimentDataDir
+    22: optional string experimentDataDir,
+    23: optional string userName;
 }
\ No newline at end of file


[44/55] [abbrv] airavata git commit: setting replica URIs for experiment outputs

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 7bc9899..27d3cff 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 8dd871b..4c6a844 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 d21c7ec..641abc3 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index aa44fc6..65085db 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -35,6 +35,7 @@ import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.ErrorModel;
+import org.apache.airavata.model.data.replica.*;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.messaging.event.*;
@@ -862,7 +863,23 @@ public class GFacUtils {
             if (experimentOutputs != null && !experimentOutputs.isEmpty()){
                 for (OutputDataObjectType expOutput : experimentOutputs){
                     if (expOutput.getName().equals(outputName)){
-                        expOutput.setValue(outputVal);
+                        DataProductModel dataProductModel = new DataProductModel();
+                        //FIXME We need to set the username here
+                        dataProductModel.setGatewayId(processContext.getGatewayId());
+                        dataProductModel.setProductName(outputName);
+                        dataProductModel.setDataProductType(DataProductType.FILE);
+
+                        DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
+                        replicaLocationModel.setStorageResourceId(processContext.getStorageResource().getStorageResourceId());
+                        replicaLocationModel.setReplicaName(outputName + " gateway data store copy");
+                        replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE);
+                        replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.TRANSIENT);
+                        replicaLocationModel.setFilePath(outputVal);
+                        dataProductModel.addToReplicaLocations(replicaLocationModel);
+
+                        ReplicaCatalog replicaCatalog = RegistryFactory.getReplicaCatalog();
+                        String productUri = replicaCatalog.registerDataProduct(dataProductModel);
+                        expOutput.setValue(productUri);
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
index b946710..c35a3bd 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
@@ -34,8 +34,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -47,58 +45,17 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
 
     @Override
     public String registerDataProduct(DataProductModel productModel) throws ReplicaCatalogException {
-        if(productModel.getOwnerName() == null || productModel.getGatewayId() == null || productModel
-                .getLogicalPath() == null || !productModel.getLogicalPath().startsWith("/")){
-            throw new ReplicaCatalogException("owner name, gateway id and logical path should be non empty and logical path" +
-                    " should start with /");
+        if(productModel.getOwnerName() == null || productModel.getGatewayId() == null){
+            throw new ReplicaCatalogException("owner name and gateway id should be non empty");
         }
-        if(productModel.getDataProductType().equals(DataProductType.FILE) && !productModel.getLogicalPath().endsWith(productModel.getProductName())){
-            if(!productModel.getLogicalPath().endsWith("/"))
-                productModel.setLogicalPath(productModel.getLogicalPath()+"/");
-            productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
-        }
-        //Creating parent logical dir if not exist too
-        String parentUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + ":/" ;
-        DataProductModel tempDp;
-        final long currentTime = System.currentTimeMillis();
-        if(!isExists(parentUri)){
-            tempDp = new DataProductModel();
-            tempDp.setProductUri(parentUri);
-            tempDp.setLogicalPath("/");
-            tempDp.setOwnerName(productModel.getOwnerName());
-            tempDp.setGatewayId(productModel.getGatewayId());
-            tempDp.setProductName("/");
-            tempDp.setCreationTime(currentTime);
-            tempDp.setLastModifiedTime(currentTime);
-            tempDp.setDataProductType(DataProductType.DIR);
-            createDataProduct(tempDp);
-        }
-        String[] bits = productModel.getLogicalPath().split("/");
-        for(int i=0; i<bits.length-1;i++){
-            String dir = bits[i];
-            if(!isExists(parentUri + dir)){
-                tempDp = new DataProductModel();
-                try {
-                    if(!parentUri.endsWith("/")) dir = "/" + dir;
-                    tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
-                } catch (URISyntaxException e) {
-                    throw new ReplicaCatalogException(e);
-                }
-                tempDp.setProductUri(parentUri + dir);
-                tempDp.setOwnerName(productModel.getOwnerName());
-                tempDp.setGatewayId(productModel.getGatewayId());
-                tempDp.setProductName(dir.substring(1));
-                tempDp.setCreationTime(currentTime);
-                tempDp.setLastModifiedTime(currentTime);
-                tempDp.setDataProductType(DataProductType.DIR);
-                tempDp.setParentProductUri(parentUri);
-                parentUri = createDataProduct(tempDp);
-            }
+
+        if(productModel.getParentProductUri() != null && (!isExists(productModel.getParentProductUri())
+                || !getDataProduct(productModel.getParentProductUri()).getDataProductType().equals(DataProductType.COLLECTION))){
+            throw new ReplicaCatalogException("Parent Product does not exists or parent type is not Collection");
         }
 
-        productModel.setParentProductUri(parentUri);
-        String productUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
-                + ":" + productModel.getLogicalPath();
+        final long currentTime = System.currentTimeMillis();
+        String productUri = ReplicaCatalog.schema + "://" + UUID.randomUUID().toString();
         productModel.setProductUri(productUri);
         productModel.setCreationTime(currentTime);
         productModel.setLastModifiedTime(currentTime);

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
index 8052c2b..f91d4bf 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
@@ -34,7 +34,6 @@ public class DataProduct {
     private String productUri;
     private String gatewayId;
     private String productName;
-    private String logicalPath;
     private String productDescription;
     private String dataProductType;
     private String ownerName;
@@ -85,15 +84,6 @@ public class DataProduct {
         this.productDescription = productDescription;
     }
 
-    @Column(name = "LOGICAL_PATH")
-    public String getLogicalPath() {
-        return logicalPath;
-    }
-
-    public void setLogicalPath(String logicalPath) {
-        this.logicalPath = logicalPath;
-    }
-
     @Column(name = "OWNER_NAME")
     public String getOwnerName() {
         return ownerName;

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
index 741215a..aba37c9 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
@@ -43,7 +43,6 @@ public class ThriftDataModelConversion {
         if (dataProduct != null) {
             DataProductModel dataProductModel = new DataProductModel();
             dataProductModel.setProductUri(dataProduct.getProductUri());
-            dataProductModel.setLogicalPath(dataProduct.getLogicalPath());
             dataProductModel.setGatewayId(dataProduct.getGatewayId());
             dataProductModel.setParentProductUri(dataProduct.getParentProductUri());
             dataProductModel.setProductName(dataProduct.getProductName());
@@ -80,7 +79,6 @@ public class ThriftDataModelConversion {
 
     public static DataProduct getUpdatedDataProduct(DataProductModel dataProductModel, DataProduct dataProduct){
         dataProduct.setProductUri(dataProductModel.getProductUri());
-        dataProduct.setLogicalPath(dataProductModel.getLogicalPath());
         dataProduct.setGatewayId(dataProductModel.getGatewayId());
         dataProduct.setProductName(dataProductModel.getProductName());
         dataProduct.setParentProductUri(dataProductModel.getParentProductUri());

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql b/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
index 78dc165..f510f36 100644
--- a/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
@@ -26,7 +26,6 @@ CREATE TABLE DATA_PRODUCT
         PRODUCT_NAME VARCHAR (255),
         PRODUCT_DESCRIPTION VARCHAR (1024),
         PARENT_PRODUCT_URI VARCHAR (255),
-        LOGICAL_PATH VARCHAR (255),
         OWNER_NAME VARCHAR (255),
         PRODUCT_SIZE INTEGER ,
         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
index d612194..bb9bbfc 100644
--- a/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
@@ -24,7 +24,6 @@ CREATE TABLE DATA_PRODUCT
         PRODUCT_URI VARCHAR (255),
         GATEWAY_ID VARCHAR (255),
         PRODUCT_NAME VARCHAR (255),
-        LOGICAL_PATH VARCHAR (255),
         PRODUCT_DESCRIPTION VARCHAR (255),
         OWNER_NAME VARCHAR (255),
         PARENT_PRODUCT_URI VARCHAR (255),

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
index 1bfa014..a2e2abf 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
@@ -52,7 +52,6 @@ public class ReplicaCatalogTest {
             dataProductModel.setProductName("test-file.txt");
             dataProductModel.setOwnerName("scnakandala");
             dataProductModel.setGatewayId("default");
-            dataProductModel.setLogicalPath("/test/test/test");
             dataProductModel.setDataProductType(DataProductType.FILE);
             HashMap<String, String> resMetadata = new HashMap<>();
             resMetadata.put("name", "name");

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
index f0eb5cd..3b49aed 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
@@ -19,7 +19,7 @@
 
 package org.apache.airavata.registry.cpi;
 
-public class ReplicaCatalogException extends Exception{
+public class ReplicaCatalogException extends RegistryException{
 
     public ReplicaCatalogException(Throwable e) {
         super(e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
index cd41eda..b7fdff7 100644
--- a/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
+++ b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
@@ -35,7 +35,6 @@ enum ReplicaPersistentType {
 }
 
 enum DataProductType {
-    DIR,
     FILE,
     COLLECTION,
 }
@@ -44,16 +43,15 @@ struct DataProductModel {
     1: optional string productUri,
     2: optional string gatewayId,
     3: optional string parentProductUri,
-    4: optional string logicalPath,
-    5: optional string productName,
-    6: optional string productDescription,
-    7: optional string ownerName,
-    8: optional DataProductType dataProductType,
-    9: optional i32 productSize,
-    10: optional i64 creationTime,
-    11: optional i64 lastModifiedTime,
-    12: optional map<string, string> productMetadata,
-    13: optional list<DataReplicaLocationModel> replicaLocations,
+    4: optional string productName,
+    5: optional string productDescription,
+    6: optional string ownerName,
+    7: optional DataProductType dataProductType,
+    8: optional i32 productSize,
+    9: optional i64 creationTime,
+    10: optional i64 lastModifiedTime,
+    11: optional map<string, string> productMetadata,
+    12: optional list<DataReplicaLocationModel> replicaLocations,
 }
 
 struct DataReplicaLocationModel {


[42/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
adding API methods to get parent and child products


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

Branch: refs/heads/master
Commit: 3357169c67f64a0347aa64a834c792a4f634ed12
Parents: 02cbb8d
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 14:41:29 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 14:41:29 2016 -0400

----------------------------------------------------------------------
 .../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/3357169c/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 718243f..b881222 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
@@ -4356,7 +4356,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             dataCatalog = RegistryFactory.getReplicaCatalog();
-            DataProductModel dataProductModel = dataCatalog.getParentDataProduct(productUri;
+            DataProductModel dataProductModel = dataCatalog.getParentDataProduct(productUri);
             return dataProductModel;
         } catch (Exception e) {
             String msg = "Error in retreiving the parent data product for "+ productUri+".";


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

Posted by sh...@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/253dee8c
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/253dee8c
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/253dee8c

Branch: refs/heads/master
Commit: 253dee8cd8771966b4ae9d8b323e1d9207f61414
Parents: ef4329c fd9b64f
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Mar 25 14:11:17 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Mar 25 14:11:17 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |    55 +-
 .../api/server/handler/utils/DataCatInit.java   |   315 -
 .../server/handler/utils/ReplicaCatInit.java    |   315 +
 .../java/org/apache/airavata/api/Airavata.java  | 40373 +++++++++--------
 .../main/resources/lib/airavata/Airavata.cpp    |  3498 +-
 .../src/main/resources/lib/airavata/Airavata.h  |   378 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    18 +-
 .../resources/lib/airavata/airavata_api_types.h |     2 +-
 .../lib/airavata/airavata_data_models_types.h   |     2 +-
 .../airavata/application_io_models_types.cpp    |    44 +
 .../lib/airavata/application_io_models_types.h  |    24 +-
 .../replica_catalog_models_constants.cpp        |     2 +-
 .../airavata/replica_catalog_models_constants.h |     2 +-
 .../airavata/replica_catalog_models_types.cpp   |   434 +-
 .../lib/airavata/replica_catalog_models_types.h |   143 +-
 .../resources/lib/Airavata/API/Airavata.php     | 11205 ++---
 .../lib/Airavata/Model/Application/Io/Types.php |    46 +
 .../lib/Airavata/Model/Data/Replica/Types.php   |   803 +
 .../lib/apache/airavata/api/Airavata-remote     |    14 +
 .../lib/apache/airavata/api/Airavata.py         |   594 +-
 .../resources/lib/apache/airavata/api/ttypes.py |     2 +-
 .../airavata/model/application/io/ttypes.py     |    30 +-
 .../airavata/model/data/replica/__init__.py     |     1 +
 .../airavata/model/data/replica/constants.py    |    11 +
 .../airavata/model/data/replica/ttypes.py       |   511 +
 .../lib/apache/airavata/model/ttypes.py         |     2 +-
 .../client/samples/DataCatalogSample.java       |    73 -
 .../client/samples/ReplicaCatalogSample.java    |    72 +
 .../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 +-
 .../apache/airavata/model/WorkflowModel.java    |     2 +-
 .../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     |   116 +-
 .../application/io/OutputDataObjectType.java    |   116 +-
 .../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 +-
 .../model/data/product/DataProductModel.java    |  1943 -
 .../model/data/product/DataProductType.java     |    65 -
 .../data/product/DataReplicaLocationModel.java  |  1635 -
 .../data/product/ReplicaLocationCategory.java   |    68 -
 .../data/product/ReplicaPersistentType.java     |    62 -
 .../model/data/replica/DataProductModel.java    |  1677 +
 .../model/data/replica/DataProductType.java     |    62 +
 .../data/replica/DataReplicaLocationModel.java  |  1635 +
 .../data/replica/ReplicaLocationCategory.java   |    68 +
 .../data/replica/ReplicaPersistentType.java     |    62 +
 .../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 +-
 .../main/resources/airavata-server.properties   |    14 +-
 .../test/resources/airavata-server.properties   |    16 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |    19 +-
 .../server/OrchestratorServerHandler.java       |    12 +-
 .../core/data/catalog/impl/DataCatalogImpl.java |   355 -
 .../core/data/catalog/model/Configuration.java  |    55 -
 .../core/data/catalog/model/DataProduct.java    |   187 -
 .../data/catalog/model/DataProductMetaData.java |    77 -
 .../catalog/model/DataProductMetaData_PK.java   |    59 -
 .../data/catalog/model/DataReplicaLocation.java |   169 -
 .../data/catalog/model/DataReplicaMetaData.java |    77 -
 .../catalog/model/DataReplicaMetaData_PK.java   |    59 -
 .../catalog/utils/DataCatalogConstants.java     |    49 -
 .../data/catalog/utils/DataCatalogJPAUtils.java |    82 -
 .../utils/DataCatalogQueryGenerator.java        |   111 -
 .../utils/ThriftDataModelConversion.java        |   215 -
 .../catalog/impl/ExperimentRegistry.java        |     9 +-
 .../catalog/impl/RegistryFactory.java           |    10 +-
 .../catalog/model/ExperimentInput.java          |    10 +
 .../catalog/model/ExperimentOutput.java         |    11 +
 .../experiment/catalog/model/ProcessInput.java  |    11 +
 .../experiment/catalog/model/ProcessOutput.java |    11 +
 .../resources/ExperimentInputResource.java      |    10 +
 .../resources/ExperimentOutputResource.java     |    10 +
 .../catalog/resources/ProcessInputResource.java |    10 +
 .../resources/ProcessOutputResource.java        |    10 +
 .../utils/ThriftDataModelConversion.java        |     4 +
 .../registry/core/impl/RegistryImpl.java        |     6 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |   366 +
 .../replica/catalog/model/Configuration.java    |    55 +
 .../core/replica/catalog/model/DataProduct.java |   177 +
 .../catalog/model/DataProductMetaData.java      |    77 +
 .../catalog/model/DataProductMetaData_PK.java   |    59 +
 .../catalog/model/DataReplicaLocation.java      |   169 +
 .../catalog/model/DataReplicaMetaData.java      |    77 +
 .../catalog/model/DataReplicaMetaData_PK.java   |    59 +
 .../catalog/utils/ReplicaCatalogConstants.java  |    49 +
 .../catalog/utils/ReplicaCatalogJPAUtils.java   |    82 +
 .../utils/ReplicaCatalogQueryGenerator.java     |   111 +
 .../utils/ThriftDataModelConversion.java        |   203 +
 .../src/main/resources/META-INF/persistence.xml |    12 +-
 .../src/main/resources/datacatalog-derby.sql    |    78 -
 .../src/main/resources/datacatalog-mysql.sql    |    77 -
 .../src/main/resources/expcatalog-derby.sql     |     4 +
 .../src/main/resources/expcatalog-mysql.sql     |     4 +
 .../src/main/resources/replicacatalog-derby.sql |    77 +
 .../src/main/resources/replicacatalog-mysql.sql |    76 +
 .../airavata/data/catalog/DataCatalogTest.java  |   100 -
 .../airavata/data/catalog/util/Initialize.java  |   315 -
 .../replica/catalog/ReplicaCatalogTest.java     |    99 +
 .../replica/catalog/util/Initialize.java        |   315 +
 .../airavata/registry/cpi/DataCatalog.java      |    50 -
 .../registry/cpi/DataCatalogException.java      |    35 -
 .../apache/airavata/registry/cpi/Registry.java  |     2 +-
 .../airavata/registry/cpi/ReplicaCatalog.java   |    54 +
 .../registry/cpi/ReplicaCatalogException.java   |    35 +
 .../airavata-apis/airavata_api.thrift           |    21 +-
 .../data-models/airavata_data_models.thrift     |     2 +-
 .../application_io_models.thrift                |     6 +-
 .../data_catalog_models.thrift                  |    73 -
 .../replica_catalog_models.thrift               |    70 +
 179 files changed, 39224 insertions(+), 32067 deletions(-)
----------------------------------------------------------------------



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

Posted by sh...@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/6f39725a
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6f39725a
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6f39725a

Branch: refs/heads/master
Commit: 6f39725a1fe14b6280bf4c5068a3115b00171c36
Parents: 5d36493 253dee8
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 14:19:26 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 14:19:26 2016 -0400

----------------------------------------------------------------------
 .../gfac/impl/task/BESJobSubmissionTask.java    | 48 ++++++++------
 .../impl/task/utils/bes/DataTransferrer.java    | 70 +++++++++++---------
 2 files changed, 64 insertions(+), 54 deletions(-)
----------------------------------------------------------------------



[14/55] [abbrv] airavata git commit: creating parent logical dir when creating replicas

Posted by sh...@apache.org.
creating parent logical dir when creating replicas


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

Branch: refs/heads/master
Commit: 5e9bf914c251ac5cd36f8718417bbe4d7ba4f1fe
Parents: a23cc63
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 15:56:05 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 15:56:05 2016 -0400

----------------------------------------------------------------------
 .../core/data/catalog/impl/DataCatalogImpl.java | 59 +++++++++++++++++++-
 .../airavata/data/catalog/DataCatalogTest.java  |  6 +-
 .../airavata/registry/cpi/DataCatalog.java      |  2 +
 3 files changed, 62 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5e9bf914/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 308abfc..27e6976 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -34,6 +34,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -54,6 +56,37 @@ public class DataCatalogImpl implements DataCatalog {
                 productModel.setLogicalPath(productModel.getLogicalPath()+"/");
             productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
         }
+        //Creating parent logical dir if not exist too
+        String parentUri = DataCatalog.schema + productModel.getOwnerName() + "@" + productModel.getGatewayId() + "/" ;
+        DataProductModel tempDp;
+        if(!isExists(parentUri)){
+            tempDp = new DataProductModel();
+            tempDp.setProductUri(parentUri);
+            tempDp.setLogicalPath("/");
+            tempDp.setOwnerName(productModel.getOwnerName());
+            tempDp.setGatewayId(productModel.getGatewayId());
+            tempDp.setDataProductType(DataProductType.DIR);
+            createDataProduct(tempDp);
+        }
+        String[] bits = productModel.getLogicalPath().split("/");
+        for(int i=0; i<bits.length-1;i++){
+            String dir = bits[i];
+            if(!isExists(parentUri + dir)){
+                tempDp = new DataProductModel();
+                try {
+                    tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
+                } catch (URISyntaxException e) {
+                    throw new DataCatalogException(e);
+                }
+                tempDp.setProductUri(parentUri + dir);
+                tempDp.setOwnerName(productModel.getOwnerName());
+                tempDp.setGatewayId(productModel.getGatewayId());
+                tempDp.setDataProductType(DataProductType.DIR);
+                tempDp.setParentProductUri(parentUri);
+                parentUri = createDataProduct(tempDp);
+            }
+        }
+
         String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
                 + productModel.getLogicalPath();
         productModel.setProductUri(productUri);
@@ -70,6 +103,10 @@ public class DataCatalogImpl implements DataCatalog {
         }
         productModel.setCreationTime(System.currentTimeMillis());
         productModel.setLastModifiedTime(System.currentTimeMillis());
+        return createDataProduct(productModel);
+    }
+
+    private String createDataProduct(DataProductModel productModel) throws DataCatalogException {
         DataProduct dataProduct = ThriftDataModelConversion.getDataProduct(productModel);
         EntityManager em = null;
         try {
@@ -89,7 +126,7 @@ public class DataCatalogImpl implements DataCatalog {
                 em.close();
             }
         }
-        return productUri;
+        return dataProduct.getProductUri();
     }
 
     @Override
@@ -167,6 +204,26 @@ public class DataCatalogImpl implements DataCatalog {
     }
 
     @Override
+    public boolean isExists(String productUri) throws DataCatalogException {
+        EntityManager em = null;
+        try {
+            em = DataCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            return dataProduct != null;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new DataCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
     public String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException {
         String replicaId = UUID.randomUUID().toString();
         dataReplicaLocationModel.setReplicaId(replicaId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/5e9bf914/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
index 287a400..627a6e6 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
@@ -21,10 +21,7 @@
 package org.apache.airavata.data.catalog;
 
 import org.apache.airavata.data.catalog.util.Initialize;
-import org.apache.airavata.model.data.product.DataProductModel;
-import org.apache.airavata.model.data.product.DataReplicaLocationModel;
-import org.apache.airavata.model.data.product.ReplicaLocationCategory;
-import org.apache.airavata.model.data.product.ReplicaPersistentType;
+import org.apache.airavata.model.data.product.*;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import org.apache.airavata.registry.cpi.DataCatalog;
 import org.apache.airavata.registry.cpi.DataCatalogException;
@@ -56,6 +53,7 @@ public class DataCatalogTest {
             dataProductModel.setOwnerName("scnakandala");
             dataProductModel.setGatewayId("default");
             dataProductModel.setLogicalPath("/test/test/test");
+            dataProductModel.setDataProductType(DataProductType.FILE);
             HashMap<String, String> resMetadata = new HashMap<>();
             resMetadata.put("name", "name");
             dataProductModel.setProductMetadata(resMetadata);

http://git-wip-us.apache.org/repos/asf/airavata/blob/5e9bf914/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
index 2ddda7c..42eff2a 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
@@ -36,6 +36,8 @@ public interface DataCatalog {
 
     DataProductModel getDataProduct(String productUri) throws DataCatalogException;
 
+    boolean isExists(String productUri) throws DataCatalogException;
+
     String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException;
 
     boolean removeReplicaLocation(String replicaId) throws DataCatalogException;


[40/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 29f1056..19dc169 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
@@ -2638,7 +2638,7 @@ public class Airavata {
     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;
 
     /**
-     * API Methods related to data catalog
+     * API Methods related to replica catalog
      * 
      * 
      * @param authzToken
@@ -2650,6 +2650,10 @@ public class Airavata {
 
     public String registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel) 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.data.replica.DataProductModel getParentDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) 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 List<org.apache.airavata.model.data.replica.DataProductModel> getChildDataProducts(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) 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 interface AsyncIface {
@@ -2928,6 +2932,10 @@ public class Airavata {
 
     public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void getParentDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getChildDataProducts(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
   }
 
   public static class Client extends org.apache.thrift.TServiceClient implements Iface {
@@ -7984,6 +7992,78 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerReplicaLocation failed: unknown result");
     }
 
+    public org.apache.airavata.model.data.replica.DataProductModel getParentDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) 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
+    {
+      send_getParentDataProduct(authzToken, productUri);
+      return recv_getParentDataProduct();
+    }
+
+    public void send_getParentDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) throws org.apache.thrift.TException
+    {
+      getParentDataProduct_args args = new getParentDataProduct_args();
+      args.setAuthzToken(authzToken);
+      args.setProductUri(productUri);
+      sendBase("getParentDataProduct", args);
+    }
+
+    public org.apache.airavata.model.data.replica.DataProductModel recv_getParentDataProduct() 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
+    {
+      getParentDataProduct_result result = new getParentDataProduct_result();
+      receiveBase(result, "getParentDataProduct");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getParentDataProduct failed: unknown result");
+    }
+
+    public List<org.apache.airavata.model.data.replica.DataProductModel> getChildDataProducts(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) 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
+    {
+      send_getChildDataProducts(authzToken, productUri);
+      return recv_getChildDataProducts();
+    }
+
+    public void send_getChildDataProducts(org.apache.airavata.model.security.AuthzToken authzToken, String productUri) throws org.apache.thrift.TException
+    {
+      getChildDataProducts_args args = new getChildDataProducts_args();
+      args.setAuthzToken(authzToken);
+      args.setProductUri(productUri);
+      sendBase("getChildDataProducts", args);
+    }
+
+    public List<org.apache.airavata.model.data.replica.DataProductModel> recv_getChildDataProducts() 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
+    {
+      getChildDataProducts_result result = new getChildDataProducts_result();
+      receiveBase(result, "getChildDataProducts");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getChildDataProducts failed: unknown result");
+    }
+
   }
   public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
     public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
@@ -13139,6 +13219,76 @@ public class Airavata {
       }
     }
 
+    public void getParentDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getParentDataProduct_call method_call = new getParentDataProduct_call(authzToken, productUri, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getParentDataProduct_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private String productUri;
+      public getParentDataProduct_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.productUri = productUri;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getParentDataProduct", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getParentDataProduct_args args = new getParentDataProduct_args();
+        args.setAuthzToken(authzToken);
+        args.setProductUri(productUri);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.data.replica.DataProductModel getResult() 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 {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getParentDataProduct();
+      }
+    }
+
+    public void getChildDataProducts(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getChildDataProducts_call method_call = new getChildDataProducts_call(authzToken, productUri, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getChildDataProducts_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private String productUri;
+      public getChildDataProducts_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.productUri = productUri;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getChildDataProducts", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getChildDataProducts_args args = new getChildDataProducts_args();
+        args.setAuthzToken(authzToken);
+        args.setProductUri(productUri);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<org.apache.airavata.model.data.replica.DataProductModel> getResult() 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 {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getChildDataProducts();
+      }
+    }
+
   }
 
   public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
@@ -13289,6 +13439,8 @@ public class Airavata {
       processMap.put("registerDataProduct", new registerDataProduct());
       processMap.put("getDataProduct", new getDataProduct());
       processMap.put("registerReplicaLocation", new registerReplicaLocation());
+      processMap.put("getParentDataProduct", new getParentDataProduct());
+      processMap.put("getChildDataProducts", new getChildDataProducts());
       return processMap;
     }
 
@@ -17455,6 +17607,66 @@ public class Airavata {
       }
     }
 
+    public static class getParentDataProduct<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getParentDataProduct_args> {
+      public getParentDataProduct() {
+        super("getParentDataProduct");
+      }
+
+      public getParentDataProduct_args getEmptyArgsInstance() {
+        return new getParentDataProduct_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getParentDataProduct_result getResult(I iface, getParentDataProduct_args args) throws org.apache.thrift.TException {
+        getParentDataProduct_result result = new getParentDataProduct_result();
+        try {
+          result.success = iface.getParentDataProduct(args.authzToken, args.productUri);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
+    public static class getChildDataProducts<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getChildDataProducts_args> {
+      public getChildDataProducts() {
+        super("getChildDataProducts");
+      }
+
+      public getChildDataProducts_args getEmptyArgsInstance() {
+        return new getChildDataProducts_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getChildDataProducts_result getResult(I iface, getChildDataProducts_args args) throws org.apache.thrift.TException {
+        getChildDataProducts_result result = new getChildDataProducts_result();
+        try {
+          result.success = iface.getChildDataProducts(args.authzToken, args.productUri);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
@@ -17605,6 +17817,8 @@ public class Airavata {
       processMap.put("registerDataProduct", new registerDataProduct());
       processMap.put("getDataProduct", new getDataProduct());
       processMap.put("registerReplicaLocation", new registerReplicaLocation());
+      processMap.put("getParentDataProduct", new getParentDataProduct());
+      processMap.put("getChildDataProducts", new getChildDataProducts());
       return processMap;
     }
 
@@ -27531,395 +27745,168 @@ public class Airavata {
       }
     }
 
-  }
-
-  public static class getAPIVersion_args implements org.apache.thrift.TBase<getAPIVersion_args, getAPIVersion_args._Fields>, java.io.Serializable, Cloneable, Comparable<getAPIVersion_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAPIVersion_args");
-
-    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-
-    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-    static {
-      schemes.put(StandardScheme.class, new getAPIVersion_argsStandardSchemeFactory());
-      schemes.put(TupleScheme.class, new getAPIVersion_argsTupleSchemeFactory());
-    }
-
-    public org.apache.airavata.model.security.AuthzToken authzToken; // required
-
-    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
-    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      AUTHZ_TOKEN((short)1, "authzToken");
-
-      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: // AUTHZ_TOKEN
-            return AUTHZ_TOKEN;
-          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
-    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.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
-      metaDataMap = Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getAPIVersion_args.class, metaDataMap);
-    }
-
-    public getAPIVersion_args() {
-    }
-
-    public getAPIVersion_args(
-      org.apache.airavata.model.security.AuthzToken authzToken)
-    {
-      this();
-      this.authzToken = authzToken;
-    }
-
-    /**
-     * Performs a deep copy on <i>other</i>.
-     */
-    public getAPIVersion_args(getAPIVersion_args other) {
-      if (other.isSetAuthzToken()) {
-        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
-      }
-    }
-
-    public getAPIVersion_args deepCopy() {
-      return new getAPIVersion_args(this);
-    }
-
-    @Override
-    public void clear() {
-      this.authzToken = null;
-    }
-
-    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
-      return this.authzToken;
-    }
-
-    public getAPIVersion_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
-      this.authzToken = authzToken;
-      return this;
-    }
-
-    public void unsetAuthzToken() {
-      this.authzToken = null;
-    }
-
-    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
-    public boolean isSetAuthzToken() {
-      return this.authzToken != null;
-    }
-
-    public void setAuthzTokenIsSet(boolean value) {
-      if (!value) {
-        this.authzToken = null;
+    public static class getParentDataProduct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getParentDataProduct_args, org.apache.airavata.model.data.replica.DataProductModel> {
+      public getParentDataProduct() {
+        super("getParentDataProduct");
       }
-    }
-
-    public void setFieldValue(_Fields field, Object value) {
-      switch (field) {
-      case AUTHZ_TOKEN:
-        if (value == null) {
-          unsetAuthzToken();
-        } else {
-          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
-        }
-        break;
 
+      public getParentDataProduct_args getEmptyArgsInstance() {
+        return new getParentDataProduct_args();
       }
-    }
-
-    public Object getFieldValue(_Fields field) {
-      switch (field) {
-      case AUTHZ_TOKEN:
-        return getAuthzToken();
 
+      public AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel>() { 
+          public void onComplete(org.apache.airavata.model.data.replica.DataProductModel o) {
+            getParentDataProduct_result result = new getParentDataProduct_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            getParentDataProduct_result result = new getParentDataProduct_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
       }
-      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 AUTHZ_TOKEN:
-        return isSetAuthzToken();
-      }
-      throw new IllegalStateException();
-    }
 
-    @Override
-    public boolean equals(Object that) {
-      if (that == null)
-        return false;
-      if (that instanceof getAPIVersion_args)
-        return this.equals((getAPIVersion_args)that);
-      return false;
-    }
-
-    public boolean equals(getAPIVersion_args that) {
-      if (that == null)
+      protected boolean isOneway() {
         return false;
-
-      boolean this_present_authzToken = true && this.isSetAuthzToken();
-      boolean that_present_authzToken = true && that.isSetAuthzToken();
-      if (this_present_authzToken || that_present_authzToken) {
-        if (!(this_present_authzToken && that_present_authzToken))
-          return false;
-        if (!this.authzToken.equals(that.authzToken))
-          return false;
-      }
-
-      return true;
-    }
-
-    @Override
-    public int hashCode() {
-      List<Object> list = new ArrayList<Object>();
-
-      boolean present_authzToken = true && (isSetAuthzToken());
-      list.add(present_authzToken);
-      if (present_authzToken)
-        list.add(authzToken);
-
-      return list.hashCode();
-    }
-
-    @Override
-    public int compareTo(getAPIVersion_args other) {
-      if (!getClass().equals(other.getClass())) {
-        return getClass().getName().compareTo(other.getClass().getName());
-      }
-
-      int lastComparison = 0;
-
-      lastComparison = Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetAuthzToken()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authzToken, other.authzToken);
-        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("getAPIVersion_args(");
-      boolean first = true;
-
-      sb.append("authzToken:");
-      if (this.authzToken == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.authzToken);
       }
-      first = false;
-      sb.append(")");
-      return sb.toString();
-    }
 
-    public void validate() throws org.apache.thrift.TException {
-      // check for required fields
-      if (authzToken == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'authzToken' was not present! Struct: " + toString());
-      }
-      // check for sub-struct validity
-      if (authzToken != null) {
-        authzToken.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);
+      public void start(I iface, getParentDataProduct_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel> resultHandler) throws TException {
+        iface.getParentDataProduct(args.authzToken, args.productUri,resultHandler);
       }
     }
 
-    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);
+    public static class getChildDataProducts<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getChildDataProducts_args, List<org.apache.airavata.model.data.replica.DataProductModel>> {
+      public getChildDataProducts() {
+        super("getChildDataProducts");
       }
-    }
 
-    private static class getAPIVersion_argsStandardSchemeFactory implements SchemeFactory {
-      public getAPIVersion_argsStandardScheme getScheme() {
-        return new getAPIVersion_argsStandardScheme();
+      public getChildDataProducts_args getEmptyArgsInstance() {
+        return new getChildDataProducts_args();
       }
-    }
 
-    private static class getAPIVersion_argsStandardScheme extends StandardScheme<getAPIVersion_args> {
-
-      public void read(org.apache.thrift.protocol.TProtocol iprot, getAPIVersion_args 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;
+      public AsyncMethodCallback<List<org.apache.airavata.model.data.replica.DataProductModel>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<List<org.apache.airavata.model.data.replica.DataProductModel>>() { 
+          public void onComplete(List<org.apache.airavata.model.data.replica.DataProductModel> o) {
+            getChildDataProducts_result result = new getChildDataProducts_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
           }
-          switch (schemeField.id) {
-            case 1: // AUTHZ_TOKEN
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
-                struct.authzToken.read(iprot);
-                struct.setAuthzTokenIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
-            default:
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            getChildDataProducts_result result = new getChildDataProducts_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
           }
-          iprot.readFieldEnd();
-        }
-        iprot.readStructEnd();
-
-        // check for required fields of primitive type, which can't be checked in the validate method
-        struct.validate();
-      }
-
-      public void write(org.apache.thrift.protocol.TProtocol oprot, getAPIVersion_args struct) throws org.apache.thrift.TException {
-        struct.validate();
-
-        oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.authzToken != null) {
-          oprot.writeFieldBegin(AUTHZ_TOKEN_FIELD_DESC);
-          struct.authzToken.write(oprot);
-          oprot.writeFieldEnd();
-        }
-        oprot.writeFieldStop();
-        oprot.writeStructEnd();
-      }
-
-    }
-
-    private static class getAPIVersion_argsTupleSchemeFactory implements SchemeFactory {
-      public getAPIVersion_argsTupleScheme getScheme() {
-        return new getAPIVersion_argsTupleScheme();
+        };
       }
-    }
-
-    private static class getAPIVersion_argsTupleScheme extends TupleScheme<getAPIVersion_args> {
 
-      @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, getAPIVersion_args struct) throws org.apache.thrift.TException {
-        TTupleProtocol oprot = (TTupleProtocol) prot;
-        struct.authzToken.write(oprot);
+      protected boolean isOneway() {
+        return false;
       }
 
-      @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, getAPIVersion_args struct) throws org.apache.thrift.TException {
-        TTupleProtocol iprot = (TTupleProtocol) prot;
-        struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
-        struct.authzToken.read(iprot);
-        struct.setAuthzTokenIsSet(true);
+      public void start(I iface, getChildDataProducts_args args, org.apache.thrift.async.AsyncMethodCallback<List<org.apache.airavata.model.data.replica.DataProductModel>> resultHandler) throws TException {
+        iface.getChildDataProducts(args.authzToken, args.productUri,resultHandler);
       }
     }
 
   }
 
-  public static class getAPIVersion_result implements org.apache.thrift.TBase<getAPIVersion_result, getAPIVersion_result._Fields>, java.io.Serializable, Cloneable, Comparable<getAPIVersion_result>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAPIVersion_result");
+  public static class getAPIVersion_args implements org.apache.thrift.TBase<getAPIVersion_args, getAPIVersion_args._Fields>, java.io.Serializable, Cloneable, Comparable<getAPIVersion_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAPIVersion_args");
 
-    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short)0);
-    private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-    private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
-    private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
-    private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
+    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
-      schemes.put(StandardScheme.class, new getAPIVersion_resultStandardSchemeFactory());
-      schemes.put(TupleScheme.class, new getAPIVersion_resultTupleSchemeFactory());
+      schemes.put(StandardScheme.class, new getAPIVersion_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new getAPIVersion_argsTupleSchemeFactory());
     }
 
-    public String success; // required
-    public org.apache.airavata.model.error.InvalidRequestException ire; // required
-    public org.apache.airavata.model.error.AiravataClientException ace; // required
-    public org.apache.airavata.model.error.AiravataSystemException ase; // required
-    public org.apache.airavata.model.error.AuthorizationException ae; // required
+    public org.apache.airavata.model.security.AuthzToken authzToken; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      SUCCESS((short)0, "success"),
-      IRE((short)1, "ire"),
-      ACE((short)2, "ace"),
-      ASE((short)3, "ase"),
-      AE((short)4, "ae");
+      AUTHZ_TOKEN((short)1, "authzToken");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -27934,16 +27921,387 @@ public class Airavata {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 0: // SUCCESS
-            return SUCCESS;
-          case 1: // IRE
-            return IRE;
-          case 2: // ACE
-            return ACE;
-          case 3: // ASE
-            return ASE;
-          case 4: // AE
-            return AE;
+          case 1: // AUTHZ_TOKEN
+            return AUTHZ_TOKEN;
+          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
+    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.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getAPIVersion_args.class, metaDataMap);
+    }
+
+    public getAPIVersion_args() {
+    }
+
+    public getAPIVersion_args(
+      org.apache.airavata.model.security.AuthzToken authzToken)
+    {
+      this();
+      this.authzToken = authzToken;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getAPIVersion_args(getAPIVersion_args other) {
+      if (other.isSetAuthzToken()) {
+        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+      }
+    }
+
+    public getAPIVersion_args deepCopy() {
+      return new getAPIVersion_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.authzToken = null;
+    }
+
+    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
+      return this.authzToken;
+    }
+
+    public getAPIVersion_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+      this.authzToken = authzToken;
+      return this;
+    }
+
+    public void unsetAuthzToken() {
+      this.authzToken = null;
+    }
+
+    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
+    public boolean isSetAuthzToken() {
+      return this.authzToken != null;
+    }
+
+    public void setAuthzTokenIsSet(boolean value) {
+      if (!value) {
+        this.authzToken = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        if (value == null) {
+          unsetAuthzToken();
+        } else {
+          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return getAuthzToken();
+
+      }
+      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 AUTHZ_TOKEN:
+        return isSetAuthzToken();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getAPIVersion_args)
+        return this.equals((getAPIVersion_args)that);
+      return false;
+    }
+
+    public boolean equals(getAPIVersion_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_authzToken = true && this.isSetAuthzToken();
+      boolean that_present_authzToken = true && that.isSetAuthzToken();
+      if (this_present_authzToken || that_present_authzToken) {
+        if (!(this_present_authzToken && that_present_authzToken))
+          return false;
+        if (!this.authzToken.equals(that.authzToken))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_authzToken = true && (isSetAuthzToken());
+      list.add(present_authzToken);
+      if (present_authzToken)
+        list.add(authzToken);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(getAPIVersion_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAuthzToken()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authzToken, other.authzToken);
+        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("getAPIVersion_args(");
+      boolean first = true;
+
+      sb.append("authzToken:");
+      if (this.authzToken == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.authzToken);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (authzToken == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'authzToken' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+      if (authzToken != null) {
+        authzToken.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 getAPIVersion_argsStandardSchemeFactory implements SchemeFactory {
+      public getAPIVersion_argsStandardScheme getScheme() {
+        return new getAPIVersion_argsStandardScheme();
+      }
+    }
+
+    private static class getAPIVersion_argsStandardScheme extends StandardScheme<getAPIVersion_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getAPIVersion_args 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: // AUTHZ_TOKEN
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+                struct.authzToken.read(iprot);
+                struct.setAuthzTokenIsSet(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();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, getAPIVersion_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.authzToken != null) {
+          oprot.writeFieldBegin(AUTHZ_TOKEN_FIELD_DESC);
+          struct.authzToken.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getAPIVersion_argsTupleSchemeFactory implements SchemeFactory {
+      public getAPIVersion_argsTupleScheme getScheme() {
+        return new getAPIVersion_argsTupleScheme();
+      }
+    }
+
+    private static class getAPIVersion_argsTupleScheme extends TupleScheme<getAPIVersion_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getAPIVersion_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        struct.authzToken.write(oprot);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getAPIVersion_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+        struct.authzToken.read(iprot);
+        struct.setAuthzTokenIsSet(true);
+      }
+    }
+
+  }
+
+  public static class getAPIVersion_result implements org.apache.thrift.TBase<getAPIVersion_result, getAPIVersion_result._Fields>, java.io.Serializable, Cloneable, Comparable<getAPIVersion_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAPIVersion_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short)0);
+    private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField ACE_FIELD_DESC = new org.apache.thrift.protocol.TField("ace", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+    private static final org.apache.thrift.protocol.TField ASE_FIELD_DESC = new org.apache.thrift.protocol.TField("ase", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)4);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new getAPIVersion_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new getAPIVersion_resultTupleSchemeFactory());
+    }
+
+    public String success; // required
+    public org.apache.airavata.model.error.InvalidRequestException ire; // required
+    public org.apache.airavata.model.error.AiravataClientException ace; // required
+    public org.apache.airavata.model.error.AiravataSystemException ase; // required
+    public org.apache.airavata.model.error.AuthorizationException ae; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
+      IRE((short)1, "ire"),
+      ACE((short)2, "ace"),
+      ASE((short)3, "ase"),
+      AE((short)4, "ae");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          case 1: // IRE
+            return IRE;
+          case 2: // ACE
+            return ACE;
+          case 3: // ASE
+            return ASE;
+          case 4: // AE
+            return AE;
           default:
             return null;
         }
@@ -78174,13 +78532,2719 @@ public class Airavata {
     }
 
     // isset id assignments
-    private static final int __SUCCESS_ISSET_ID = 0;
-    private byte __isset_bitfield = 0;
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+      tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.ENF, new org.apache.thrift.meta_data.FieldMetaData("enf", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.ASE, new org.apache.thrift.meta_data.FieldMetaData("ase", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(validateExperiment_result.class, metaDataMap);
+    }
+
+    public validateExperiment_result() {
+    }
+
+    public validateExperiment_result(
+      boolean success,
+      org.apache.airavata.model.error.InvalidRequestException ire,
+      org.apache.airavata.model.error.ExperimentNotFoundException enf,
+      org.apache.airavata.model.error.AiravataClientException ace,
+      org.apache.airavata.model.error.AiravataSystemException ase,
+      org.apache.airavata.model.error.AuthorizationException ae)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+      this.ire = ire;
+      this.enf = enf;
+      this.ace = ace;
+      this.ase = ase;
+      this.ae = ae;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public validateExperiment_result(validateExperiment_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
+      if (other.isSetIre()) {
+        this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
+      }
+      if (other.isSetEnf()) {
+        this.enf = new org.apache.airavata.model.error.ExperimentNotFoundException(other.enf);
+      }
+      if (other.isSetAce()) {
+        this.ace = new org.apache.airavata.model.error.AiravataClientException(other.ace);
+      }
+      if (other.isSetAse()) {
+        this.ase = new org.apache.airavata.model.error.AiravataSystemException(other.ase);
+      }
+      if (other.isSetAe()) {
+        this.ae = new org.apache.airavata.model.error.AuthorizationException(other.ae);
+      }
+    }
+
+    public validateExperiment_result deepCopy() {
+      return new validateExperiment_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = false;
+      this.ire = null;
+      this.enf = null;
+      this.ace = null;
+      this.ase = null;
+      this.ae = null;
+    }
+
+    public boolean isSuccess() {
+      return this.success;
+    }
+
+    public validateExperiment_result setSuccess(boolean success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+    }
+
+    public org.apache.airavata.model.error.InvalidRequestException getIre() {
+      return this.ire;
+    }
+
+    public validateExperiment_result setIre(org.apache.airavata.model.error.InvalidRequestException ire) {
+      this.ire = ire;
+      return this;
+    }
+
+    public void unsetIre() {
+      this.ire = null;
+    }
+
+    /** Returns true if field ire is set (has been assigned a value) and false otherwise */
+    public boolean isSetIre() {
+      return this.ire != null;
+    }
+
+    public void setIreIsSet(boolean value) {
+      if (!value) {
+        this.ire = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.ExperimentNotFoundException getEnf() {
+      return this.enf;
+    }
+
+    public validateExperiment_result setEnf(org.apache.airavata.model.error.ExperimentNotFoundException enf) {
+      this.enf = enf;
+      return this;
+    }
+
+    public void unsetEnf() {
+      this.enf = null;
+    }
+
+    /** Returns true if field enf is set (has been assigned a value) and false otherwise */
+    public boolean isSetEnf() {
+      return this.enf != null;
+    }
+
+    public void setEnfIsSet(boolean value) {
+      if (!value) {
+        this.enf = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataClientException getAce() {
+      return this.ace;
+    }
+
+    public validateExperiment_result setAce(org.apache.airavata.model.error.AiravataClientException ace) {
+      this.ace = ace;
+      return this;
+    }
+
+    public void unsetAce() {
+      this.ace = null;
+    }
+
+    /** Returns true if field ace is set (has been assigned a value) and false otherwise */
+    public boolean isSetAce() {
+      return this.ace != null;
+    }
+
+    public void setAceIsSet(boolean value) {
+      if (!value) {
+        this.ace = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AiravataSystemException getAse() {
+      return this.ase;
+    }
+
+    public validateExperiment_result setAse(org.apache.airavata.model.error.AiravataSystemException ase) {
+      this.ase = ase;
+      return this;
+    }
+
+    public void unsetAse() {
+      this.ase = null;
+    }
+
+    /** Returns true if field ase is set (has been assigned a value) and false otherwise */
+    public boolean isSetAse() {
+      return this.ase != null;
+    }
+
+    public void setAseIsSet(boolean value) {
+      if (!value) {
+        this.ase = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AuthorizationException getAe() {
+      return this.ae;
+    }
+
+    public validateExperiment_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+      this.ae = ae;
+      return this;
+    }
+
+    public void unsetAe() {
+      this.ae = null;
+    }
+
+    /** Returns true if field ae is set (has been assigned a value) and false otherwise */
+    public boolean isSetAe() {
+      return this.ae != null;
+    }
+
+    public void setAeIsSet(boolean value) {
+      if (!value) {
+        this.ae = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Boolean)value);
+        }
+        break;
+
+      case IRE:
+        if (value == null) {
+          unsetIre();
+        } else {
+          setIre((org.apache.airavata.model.error.InvalidRequestException)value);
+        }
+        break;
+
+      case ENF:
+        if (value == null) {
+          unsetEnf();
+        } else {
+          setEnf((org.apache.airavata.model.error.ExperimentNotFoundException)value);
+        }
+        break;
+
+      case ACE:
+        if (value == null) {
+          unsetAce();
+        } else {
+          setAce((org.apache.airavata.model.error.AiravataClientException)value);
+        }
+        break;
+
+      case ASE:
+        if (value == null) {
+          unsetAse();
+        } else {
+          setAse((org.apache.airavata.model.error.AiravataSystemException)value);
+        }
+        break;
+
+      case AE:
+        if (value == null) {
+          unsetAe();
+        } else {
+          setAe((org.apache.airavata.model.error.AuthorizationException)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return isSuccess();
+
+      case IRE:
+        return getIre();
+
+      case ENF:
+        return getEnf();
+
+      case ACE:
+        return getAce();
+
+      case ASE:
+        return getAse();
+
+      case AE:
+        return getAe();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      case IRE:
+        return isSetIre();
+      case ENF:
+        return isSetEnf();
+      case ACE:
+        return isSetAce();
+      case ASE:
+        return isSetAse();
+      case AE:
+        return isSetAe();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof validateExperiment_result)
+        return this.equals((validateExperiment_result)that);
+      return false;
+    }
+
+    public boolean equals(validateExperiment_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      boolean this_present_ire = true && this.isSetIre();
+      boolean that_present_ire = true && that.isSetIre();
+      if (this_present_ire || that_present_ire) {
+        if (!(this_present_ire && that_present_ire))
+          return false;
+        if (!this.ire.equals(that.ire))
+          return false;
+      }
+
+      boolean this_present_enf = true && this.isSetEnf();
+      boolean that_present_enf = true && that.isSetEnf();
+      if (this_present_enf || that_present_enf) {
+        if (!(this_present_enf && that_present_enf))
+          return false;
+        if (!this.enf.equals(that.enf))
+          return false;
+      }
+
+      boolean this_present_ace = true && this.isSetAce();
+      boolean that_present_ace = true && that.isSetAce();
+      if (this_present_ace || that_present_ace) {
+        if (!(this_present_ace && that_present_ace))
+          return false;
+        if (!this.ace.equals(that.ace))
+          return false;
+      }
+
+      boolean this_present_ase = true && this.isSetAse();
+      boolean that_present_ase = true && that.isSetAse();
+      if (this_present_ase || that_present_ase) {
+        if (!(this_present_ase && that_present_ase))
+          return false;
+        if (!this.ase.equals(that.ase))
+          return false;
+      }
+
+      boolean this_present_ae = true && this.isSetAe();
+      boolean that_present_ae = true && that.isSetAe();
+      if (this_present_ae || that_present_ae) {
+        if (!(this_present_ae && that_present_ae))
+          return false;
+        if (!this.ae.equals(that.ae))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true;
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      boolean present_ire = true && (isSetIre());
+      list.add(present_ire);
+      if (present_ire)
+        list.add(ire);
+
+      boolean present_enf = true && (isSetEnf());
+      list.add(present_enf);
+      if (present_enf)
+        list.add(enf);
+
+      boolean present_ace = true && (isSetAce());
+      list.add(present_ace);
+      if (present_ace)
+        list.add(ace);
+
+      boolean present_ase = true && (isSetAse());
+      list.add(present_ase);
+      if (present_ase)
+        list.add(ase);
+
+      boolean present_ae = true && (isSetAe());
+      list.add(present_ae);
+      if (present_ae)
+        list.add(ae);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(validateExperiment_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetIre()).compareTo(other.isSetIre());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetIre()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ire, other.ire);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetEnf()).compareTo(other.isSetEnf());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEnf()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.enf, other.enf);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAce()).compareTo(other.isSetAce());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAce()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ace, other.ace);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAse()).compareTo(other.isSetAse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ase, other.ase);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAe()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ae, other.ae);
+        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("validateExperiment_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ire:");
+      if (this.ire == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ire);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("enf:");
+      if (this.enf == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.enf);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ace:");
+      if (this.ace == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ace);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ase:");
+      if (this.ase == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ase);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ae:");
+      if (this.ae == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ae);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // 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 validateExperiment_resultStandardSchemeFactory implements SchemeFactory {
+      public validateExperiment_resultStandardScheme getScheme() {
+        return new validateExperiment_resultStandardScheme();
+      }
+    }
+
+    private static class validateExperiment_resultStandardScheme extends StandardScheme<validateExperiment_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, validateExperiment_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // IRE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+                struct.ire.read(iprot);
+                struct.setIreIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // ENF
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.enf = new org.apache.airavata.model.error.ExperimentNotFoundException();
+                struct.enf.read(iprot);
+                struct.setEnfIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // ACE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+                struct.ace.read(iprot);
+                struct.setAceIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // ASE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+                struct.ase.read(iprot);
+                struct.setAseIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // AE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+                struct.ae.read(iprot);
+                struct.setAeIsSet(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();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, validateExperiment_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ire != null) {
+          oprot.writeFieldBegin(IRE_FIELD_DESC);
+          struct.ire.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.enf != null) {
+          oprot.writeFieldBegin(ENF_FIELD_DESC);
+          struct.enf.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ace != null) {
+          oprot.writeFieldBegin(ACE_FIELD_DESC);
+          struct.ace.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ase != null) {
+          oprot.writeFieldBegin(ASE_FIELD_DESC);
+          struct.ase.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ae != null) {
+          oprot.writeFieldBegin(AE_FIELD_DESC);
+          struct.ae.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class validateExperiment_resultTupleSchemeFactory implements SchemeFactory {
+      public validateExperiment_resultTupleScheme getScheme() {
+        return new validateExperiment_resultTupleScheme();
+      }
+    }
+
+    private static class validateExperiment_resultTupleScheme extends TupleScheme<validateExperiment_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, validateExperiment_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        if (struct.isSetIre()) {
+          optionals.set(1);
+        }
+        if (struct.isSetEnf()) {
+          optionals.set(2);
+        }
+        if (struct.isSetAce()) {
+          optionals.set(3);
+        }
+        if (struct.isSetAse()) {
+          optionals.set(4);
+        }
+        if (struct.isSetAe()) {
+          optionals.set(5);
+        }
+        oprot.writeBitSet(optionals, 6);
+        if (struct.isSetSuccess()) {
+          oprot.writeBool(struct.success);
+        }
+        if (struct.isSetIre()) {
+          struct.ire.write(oprot);
+        }
+        if (struct.isSetEnf()) {
+          struct.enf.write(oprot);
+        }
+        if (struct.isSetAce()) {
+          struct.ace.write(oprot);
+        }
+        if (struct.isSetAse()) {
+          struct.ase.write(oprot);
+        }
+        if (struct.isSetAe()) {
+          struct.ae.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, validateExperiment_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(6);
+        if (incoming.get(0)) {
+          struct.success = iprot.readBool();
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.ire = new org.apache.airavata.model.error.InvalidRequestException();
+          struct.ire.read(iprot);
+          struct.setIreIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.enf = new org.apache.airavata.model.error.ExperimentNotFoundException();
+          struct.enf.read(iprot);
+          struct.setEnfIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.ace = new org.apache.airavata.model.error.AiravataClientException();
+          struct.ace.read(iprot);
+          struct.setAceIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.ase = new org.apache.airavata.model.error.AiravataSystemException();
+          struct.ase.read(iprot);
+          struct.setAseIsSet(true);
+        }
+        if (incoming.get(5)) {
+          struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+          struct.ae.read(iprot);
+          struct.setAeIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class launchExperiment_args implements org.apache.thrift.TBase<launchExperiment_args, launchExperiment_args._Fields>, java.io.Serializable, Cloneable, Comparable<launchExperiment_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("launchExperiment_args");
+
+    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField AIRAVATA_EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataExperimentId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    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)3);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new launchExperiment_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new launchExperiment_argsTupleSchemeFactory());
+    }
+
+    public org.apache.airavata.model.security.AuthzToken authzToken; // required
+    public String airavataExperimentId; // required
+    public String gatewayId; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      AUTHZ_TOKEN((short)1, "authzToken"),
+      AIRAVATA_EXPERIMENT_ID((short)2, "airavataExperimentId"),
+      GATEWAY_ID((short)3, "gatewayId");
+
+      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: // AUTHZ_TOKEN
+            return AUTHZ_TOKEN;
+          case 2: // AIRAVATA_EXPERIMENT_ID
+            return AIRAVATA_EXPERIMENT_ID;
+          case 3: // GATEWAY_ID
+            return GATEWAY_ID;
+          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
+    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.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
+      tmpMap.put(_Fields.AIRAVATA_EXPERIMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("airavataExperimentId", 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)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(launchExperiment_args.class, metaDataMap);
+    }
+
+    public launchExperiment_args() {
+    }
+
+    public launchExperiment_args(
+      org.apache.airavata.model.security.AuthzToken authzToken,
+      String airavataExperimentId,
+      String gatewayId)
+    {
+      this();
+      this.authzToken = authzToken;
+      this.airavataExperimentId = airavataExperimentId;
+      this.gatewayId = gatewayId;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public launchExperiment_args(launchExperiment_args other) {
+      if (other.isSetAuthzToken()) {
+        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+      }
+      if (other.isSetAiravataExperimentId()) {
+        this.airavataExperimentId = other.airavataExperimentId;
+      }
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
+    }
+
+    public launchExperiment_args deepCopy() {
+      return new launchExperiment_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.authzToken = null;
+      this.airavataExperimentId = null;
+      this.gatewayId = null;
+    }
+
+    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
+      return this.authzToken;
+    }
+
+    public launchExperiment_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+      this.authzToken = authzToken;
+      return this;
+    }
+
+    public void unsetAuthzToken() {
+      this.authzToken = null;
+    }
+
+    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
+    public boolean isSetAuthzToken() {
+      return this.authzToken != null;
+    }
+
+    public void setAuthzTokenIsSet(boolean value) {
+      if (!value) {
+        this.authzToken = null;
+      }
+    }
+
+    public String getAiravataExperimentId() {
+      return this.airavataExperimentId;
+    }
+
+    public launchExperiment_args setAiravataExperimentId(String airavataExperimentId) {
+      this.airavataExperimentId = airavataExperimentId;
+      return this;
+    }
+
+    public void unsetAiravataExperimentId() {
+      this.airavataExperimentId = null;
+    }
+
+    /** Returns true if field airavataExperimentId is set (has been assigned a value) and false otherwise */
+    public boolean isSetAiravataExperimentId() {
+      return this.airavataExperimentId != null;
+    }
+
+    public void setAiravataExperimentIdIsSet(boolean value) {
+      if (!value) {
+        this.airavataExperimentId = null;
+      }
+    }
+
+    public String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public launchExperiment_args setGatewayId(String gatewayId) {
+      this.gatewayId = gatewayId;
+      return this;
+    }
+
+    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 void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        if (value == null) {
+          unsetAuthzToken();
+        } else {
+          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
+        }
+        break;
+
+      case AIRAVATA_EXPERIMENT_ID:
+        if (value == null) {
+          unsetAiravataExperimentId();
+        } else {
+          setAiravataExperimentId((String)value);
+        }
+        break;
+
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return getAuthzToken();
+
+      case AIRAVATA_EXPERIMENT_ID:
+        return getAiravataExperimentId();
+
+      case GATEWAY_ID:
+        return getGatewayId();
+
+      }
+      throw new IllegalStateException(

<TRUNCATED>

[46/55] [abbrv] airavata git commit: setting replica URIs for experiment outputs

Posted by sh...@apache.org.
setting replica URIs for experiment outputs


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

Branch: refs/heads/master
Commit: 8e4212ea0e9aa574329cc128b36b49743b6dcc73
Parents: 2453195
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 13:06:13 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 13:06:13 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  11 +-
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../airavata/replica_catalog_models_types.cpp   |  60 ++---
 .../lib/airavata/replica_catalog_models_types.h |  17 +-
 .../lib/Airavata/Model/Data/Replica/Types.php   |  83 +++----
 .../airavata/model/data/replica/ttypes.py       |  82 +++----
 .../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 +-
 .../apache/airavata/model/WorkflowModel.java    |   2 +-
 .../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 +-
 .../model/data/replica/DataProductModel.java    | 220 +++++--------------
 .../model/data/replica/DataProductType.java     |   9 +-
 .../data/replica/DataReplicaLocationModel.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 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |  19 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |  59 +----
 .../core/replica/catalog/model/DataProduct.java |  10 -
 .../utils/ThriftDataModelConversion.java        |   2 -
 .../src/main/resources/replicacatalog-derby.sql |   1 -
 .../src/main/resources/replicacatalog-mysql.sql |   1 -
 .../replica/catalog/ReplicaCatalogTest.java     |   1 -
 .../registry/cpi/ReplicaCatalogException.java   |   2 +-
 .../replica_catalog_models.thrift               |  20 +-
 98 files changed, 268 insertions(+), 493 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 b881222..a176573 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
@@ -1992,6 +1992,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             logger.info("Airavata cloned experiment with experiment id : " + existingExperimentID);
             return (String) experimentCatalog.add(ExpCatParentDataType.EXPERIMENT, existingExperiment, gatewayId);
         } catch (Exception e) {
+
             logger.error(existingExperimentID, "Error while cloning the experiment with existing configuration...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -4308,7 +4309,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataCatalog = RegistryFactory.getReplicaCatalog();
             String productUrl = dataCatalog.registerDataProduct(dataProductModel);
             return productUrl;
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             String msg = "Error in registering the data resource"+dataProductModel.getProductName()+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4325,7 +4326,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataCatalog = RegistryFactory.getReplicaCatalog();
             DataProductModel dataProductModel = dataCatalog.getDataProduct(productUri);
             return dataProductModel;
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             String msg = "Error in retreiving the data product "+productUri+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4342,7 +4343,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataCatalog = RegistryFactory.getReplicaCatalog();
             String replicaId = dataCatalog.registerReplicaLocation(replicaLocationModel);
             return replicaId;
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             String msg = "Error in retreiving the replica "+replicaLocationModel.getReplicaName()+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4358,7 +4359,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataCatalog = RegistryFactory.getReplicaCatalog();
             DataProductModel dataProductModel = dataCatalog.getParentDataProduct(productUri);
             return dataProductModel;
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             String msg = "Error in retreiving the parent data product for "+ productUri+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
@@ -4374,7 +4375,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataCatalog = RegistryFactory.getReplicaCatalog();
             List<DataProductModel> dataProductModels = dataCatalog.getChildDataProducts(productUri);
             return dataProductModels;
-        } catch (Exception e) {
+        } catch (RegistryException e) {
             String msg = "Error in retreiving the child products for "+productUri+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 19dc169..7781f0d 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 public class Airavata {
 
   public interface Iface {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
index 1334b5f..937030b 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
@@ -55,16 +55,14 @@ const char* _kReplicaPersistentTypeNames[] = {
 const std::map<int, const char*> _ReplicaPersistentType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kReplicaPersistentTypeValues, _kReplicaPersistentTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 int _kDataProductTypeValues[] = {
-  DataProductType::DIR,
   DataProductType::FILE,
   DataProductType::COLLECTION
 };
 const char* _kDataProductTypeNames[] = {
-  "DIR",
   "FILE",
   "COLLECTION"
 };
-const std::map<int, const char*> _DataProductType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(3, _kDataProductTypeValues, _kDataProductTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _DataProductType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kDataProductTypeValues, _kDataProductTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 
 DataProductModel::~DataProductModel() throw() {
@@ -86,11 +84,6 @@ void DataProductModel::__set_parentProductUri(const std::string& val) {
 __isset.parentProductUri = true;
 }
 
-void DataProductModel::__set_logicalPath(const std::string& val) {
-  this->logicalPath = val;
-__isset.logicalPath = true;
-}
-
 void DataProductModel::__set_productName(const std::string& val) {
   this->productName = val;
 __isset.productName = true;
@@ -183,21 +176,13 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->logicalPath);
-          this->__isset.logicalPath = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 5:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->productName);
           this->__isset.productName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->productDescription);
           this->__isset.productDescription = true;
@@ -205,7 +190,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 7:
+      case 6:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->ownerName);
           this->__isset.ownerName = true;
@@ -213,7 +198,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 8:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           int32_t ecast0;
           xfer += iprot->readI32(ecast0);
@@ -223,7 +208,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 9:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           xfer += iprot->readI32(this->productSize);
           this->__isset.productSize = true;
@@ -231,7 +216,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 10:
+      case 9:
         if (ftype == ::apache::thrift::protocol::T_I64) {
           xfer += iprot->readI64(this->creationTime);
           this->__isset.creationTime = true;
@@ -239,7 +224,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 11:
+      case 10:
         if (ftype == ::apache::thrift::protocol::T_I64) {
           xfer += iprot->readI64(this->lastModifiedTime);
           this->__isset.lastModifiedTime = true;
@@ -247,7 +232,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 12:
+      case 11:
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->productMetadata.clear();
@@ -270,7 +255,7 @@ uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 13:
+      case 12:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->replicaLocations.clear();
@@ -322,48 +307,43 @@ uint32_t DataProductModel::write(::apache::thrift::protocol::TProtocol* oprot) c
     xfer += oprot->writeString(this->parentProductUri);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.logicalPath) {
-    xfer += oprot->writeFieldBegin("logicalPath", ::apache::thrift::protocol::T_STRING, 4);
-    xfer += oprot->writeString(this->logicalPath);
-    xfer += oprot->writeFieldEnd();
-  }
   if (this->__isset.productName) {
-    xfer += oprot->writeFieldBegin("productName", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeFieldBegin("productName", ::apache::thrift::protocol::T_STRING, 4);
     xfer += oprot->writeString(this->productName);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.productDescription) {
-    xfer += oprot->writeFieldBegin("productDescription", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeFieldBegin("productDescription", ::apache::thrift::protocol::T_STRING, 5);
     xfer += oprot->writeString(this->productDescription);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.ownerName) {
-    xfer += oprot->writeFieldBegin("ownerName", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeFieldBegin("ownerName", ::apache::thrift::protocol::T_STRING, 6);
     xfer += oprot->writeString(this->ownerName);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.dataProductType) {
-    xfer += oprot->writeFieldBegin("dataProductType", ::apache::thrift::protocol::T_I32, 8);
+    xfer += oprot->writeFieldBegin("dataProductType", ::apache::thrift::protocol::T_I32, 7);
     xfer += oprot->writeI32((int32_t)this->dataProductType);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.productSize) {
-    xfer += oprot->writeFieldBegin("productSize", ::apache::thrift::protocol::T_I32, 9);
+    xfer += oprot->writeFieldBegin("productSize", ::apache::thrift::protocol::T_I32, 8);
     xfer += oprot->writeI32(this->productSize);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.creationTime) {
-    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 10);
+    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 9);
     xfer += oprot->writeI64(this->creationTime);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.lastModifiedTime) {
-    xfer += oprot->writeFieldBegin("lastModifiedTime", ::apache::thrift::protocol::T_I64, 11);
+    xfer += oprot->writeFieldBegin("lastModifiedTime", ::apache::thrift::protocol::T_I64, 10);
     xfer += oprot->writeI64(this->lastModifiedTime);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.productMetadata) {
-    xfer += oprot->writeFieldBegin("productMetadata", ::apache::thrift::protocol::T_MAP, 12);
+    xfer += oprot->writeFieldBegin("productMetadata", ::apache::thrift::protocol::T_MAP, 11);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->productMetadata.size()));
       std::map<std::string, std::string> ::const_iterator _iter13;
@@ -377,7 +357,7 @@ uint32_t DataProductModel::write(::apache::thrift::protocol::TProtocol* oprot) c
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.replicaLocations) {
-    xfer += oprot->writeFieldBegin("replicaLocations", ::apache::thrift::protocol::T_LIST, 13);
+    xfer += oprot->writeFieldBegin("replicaLocations", ::apache::thrift::protocol::T_LIST, 12);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->replicaLocations.size()));
       std::vector<DataReplicaLocationModel> ::const_iterator _iter14;
@@ -399,7 +379,6 @@ void swap(DataProductModel &a, DataProductModel &b) {
   swap(a.productUri, b.productUri);
   swap(a.gatewayId, b.gatewayId);
   swap(a.parentProductUri, b.parentProductUri);
-  swap(a.logicalPath, b.logicalPath);
   swap(a.productName, b.productName);
   swap(a.productDescription, b.productDescription);
   swap(a.ownerName, b.ownerName);
@@ -416,7 +395,6 @@ DataProductModel::DataProductModel(const DataProductModel& other15) {
   productUri = other15.productUri;
   gatewayId = other15.gatewayId;
   parentProductUri = other15.parentProductUri;
-  logicalPath = other15.logicalPath;
   productName = other15.productName;
   productDescription = other15.productDescription;
   ownerName = other15.ownerName;
@@ -432,7 +410,6 @@ DataProductModel& DataProductModel::operator=(const DataProductModel& other16) {
   productUri = other16.productUri;
   gatewayId = other16.gatewayId;
   parentProductUri = other16.parentProductUri;
-  logicalPath = other16.logicalPath;
   productName = other16.productName;
   productDescription = other16.productDescription;
   ownerName = other16.ownerName;
@@ -451,7 +428,6 @@ void DataProductModel::printTo(std::ostream& out) const {
   out << "productUri="; (__isset.productUri ? (out << to_string(productUri)) : (out << "<null>"));
   out << ", " << "gatewayId="; (__isset.gatewayId ? (out << to_string(gatewayId)) : (out << "<null>"));
   out << ", " << "parentProductUri="; (__isset.parentProductUri ? (out << to_string(parentProductUri)) : (out << "<null>"));
-  out << ", " << "logicalPath="; (__isset.logicalPath ? (out << to_string(logicalPath)) : (out << "<null>"));
   out << ", " << "productName="; (__isset.productName ? (out << to_string(productName)) : (out << "<null>"));
   out << ", " << "productDescription="; (__isset.productDescription ? (out << to_string(productDescription)) : (out << "<null>"));
   out << ", " << "ownerName="; (__isset.ownerName ? (out << to_string(ownerName)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
index f188f39..c30079f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
@@ -58,9 +58,8 @@ extern const std::map<int, const char*> _ReplicaPersistentType_VALUES_TO_NAMES;
 
 struct DataProductType {
   enum type {
-    DIR = 0,
-    FILE = 1,
-    COLLECTION = 2
+    FILE = 0,
+    COLLECTION = 1
   };
 };
 
@@ -71,11 +70,10 @@ class DataProductModel;
 class DataReplicaLocationModel;
 
 typedef struct _DataProductModel__isset {
-  _DataProductModel__isset() : productUri(false), gatewayId(false), parentProductUri(false), logicalPath(false), productName(false), productDescription(false), ownerName(false), dataProductType(false), productSize(false), creationTime(false), lastModifiedTime(false), productMetadata(false), replicaLocations(false) {}
+  _DataProductModel__isset() : productUri(false), gatewayId(false), parentProductUri(false), productName(false), productDescription(false), ownerName(false), dataProductType(false), productSize(false), creationTime(false), lastModifiedTime(false), productMetadata(false), replicaLocations(false) {}
   bool productUri :1;
   bool gatewayId :1;
   bool parentProductUri :1;
-  bool logicalPath :1;
   bool productName :1;
   bool productDescription :1;
   bool ownerName :1;
@@ -92,14 +90,13 @@ class DataProductModel {
 
   DataProductModel(const DataProductModel&);
   DataProductModel& operator=(const DataProductModel&);
-  DataProductModel() : productUri(), gatewayId(), parentProductUri(), logicalPath(), productName(), productDescription(), ownerName(), dataProductType((DataProductType::type)0), productSize(0), creationTime(0), lastModifiedTime(0) {
+  DataProductModel() : productUri(), gatewayId(), parentProductUri(), productName(), productDescription(), ownerName(), dataProductType((DataProductType::type)0), productSize(0), creationTime(0), lastModifiedTime(0) {
   }
 
   virtual ~DataProductModel() throw();
   std::string productUri;
   std::string gatewayId;
   std::string parentProductUri;
-  std::string logicalPath;
   std::string productName;
   std::string productDescription;
   std::string ownerName;
@@ -118,8 +115,6 @@ class DataProductModel {
 
   void __set_parentProductUri(const std::string& val);
 
-  void __set_logicalPath(const std::string& val);
-
   void __set_productName(const std::string& val);
 
   void __set_productDescription(const std::string& val);
@@ -152,10 +147,6 @@ class DataProductModel {
       return false;
     else if (__isset.parentProductUri && !(parentProductUri == rhs.parentProductUri))
       return false;
-    if (__isset.logicalPath != rhs.__isset.logicalPath)
-      return false;
-    else if (__isset.logicalPath && !(logicalPath == rhs.logicalPath))
-      return false;
     if (__isset.productName != rhs.__isset.productName)
       return false;
     else if (__isset.productName && !(productName == rhs.productName))

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
index 03978b0..7fba287 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
@@ -40,13 +40,11 @@ final class ReplicaPersistentType {
 }
 
 final class DataProductType {
-  const DIR = 0;
-  const FILE = 1;
-  const COLLECTION = 2;
+  const FILE = 0;
+  const COLLECTION = 1;
   static public $__names = array(
-    0 => 'DIR',
-    1 => 'FILE',
-    2 => 'COLLECTION',
+    0 => 'FILE',
+    1 => 'COLLECTION',
   );
 }
 
@@ -68,10 +66,6 @@ class DataProductModel {
   /**
    * @var string
    */
-  public $logicalPath = null;
-  /**
-   * @var string
-   */
   public $productName = null;
   /**
    * @var string
@@ -122,38 +116,34 @@ class DataProductModel {
           'type' => TType::STRING,
           ),
         4 => array(
-          'var' => 'logicalPath',
-          'type' => TType::STRING,
-          ),
-        5 => array(
           'var' => 'productName',
           'type' => TType::STRING,
           ),
-        6 => array(
+        5 => array(
           'var' => 'productDescription',
           'type' => TType::STRING,
           ),
-        7 => array(
+        6 => array(
           'var' => 'ownerName',
           'type' => TType::STRING,
           ),
-        8 => array(
+        7 => array(
           'var' => 'dataProductType',
           'type' => TType::I32,
           ),
-        9 => array(
+        8 => array(
           'var' => 'productSize',
           'type' => TType::I32,
           ),
-        10 => array(
+        9 => array(
           'var' => 'creationTime',
           'type' => TType::I64,
           ),
-        11 => array(
+        10 => array(
           'var' => 'lastModifiedTime',
           'type' => TType::I64,
           ),
-        12 => array(
+        11 => array(
           'var' => 'productMetadata',
           'type' => TType::MAP,
           'ktype' => TType::STRING,
@@ -165,7 +155,7 @@ class DataProductModel {
             'type' => TType::STRING,
             ),
           ),
-        13 => array(
+        12 => array(
           'var' => 'replicaLocations',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -186,9 +176,6 @@ class DataProductModel {
       if (isset($vals['parentProductUri'])) {
         $this->parentProductUri = $vals['parentProductUri'];
       }
-      if (isset($vals['logicalPath'])) {
-        $this->logicalPath = $vals['logicalPath'];
-      }
       if (isset($vals['productName'])) {
         $this->productName = $vals['productName'];
       }
@@ -261,61 +248,54 @@ class DataProductModel {
           break;
         case 4:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->logicalPath);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->productName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 6:
+        case 5:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->productDescription);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 7:
+        case 6:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->ownerName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 8:
+        case 7:
           if ($ftype == TType::I32) {
             $xfer += $input->readI32($this->dataProductType);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 9:
+        case 8:
           if ($ftype == TType::I32) {
             $xfer += $input->readI32($this->productSize);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 10:
+        case 9:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->creationTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 11:
+        case 10:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->lastModifiedTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 12:
+        case 11:
           if ($ftype == TType::MAP) {
             $this->productMetadata = array();
             $_size0 = 0;
@@ -335,7 +315,7 @@ class DataProductModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 13:
+        case 12:
           if ($ftype == TType::LST) {
             $this->replicaLocations = array();
             $_size7 = 0;
@@ -381,43 +361,38 @@ class DataProductModel {
       $xfer += $output->writeString($this->parentProductUri);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->logicalPath !== null) {
-      $xfer += $output->writeFieldBegin('logicalPath', TType::STRING, 4);
-      $xfer += $output->writeString($this->logicalPath);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->productName !== null) {
-      $xfer += $output->writeFieldBegin('productName', TType::STRING, 5);
+      $xfer += $output->writeFieldBegin('productName', TType::STRING, 4);
       $xfer += $output->writeString($this->productName);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->productDescription !== null) {
-      $xfer += $output->writeFieldBegin('productDescription', TType::STRING, 6);
+      $xfer += $output->writeFieldBegin('productDescription', TType::STRING, 5);
       $xfer += $output->writeString($this->productDescription);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ownerName !== null) {
-      $xfer += $output->writeFieldBegin('ownerName', TType::STRING, 7);
+      $xfer += $output->writeFieldBegin('ownerName', TType::STRING, 6);
       $xfer += $output->writeString($this->ownerName);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->dataProductType !== null) {
-      $xfer += $output->writeFieldBegin('dataProductType', TType::I32, 8);
+      $xfer += $output->writeFieldBegin('dataProductType', TType::I32, 7);
       $xfer += $output->writeI32($this->dataProductType);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->productSize !== null) {
-      $xfer += $output->writeFieldBegin('productSize', TType::I32, 9);
+      $xfer += $output->writeFieldBegin('productSize', TType::I32, 8);
       $xfer += $output->writeI32($this->productSize);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 10);
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 9);
       $xfer += $output->writeI64($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->lastModifiedTime !== null) {
-      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 11);
+      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 10);
       $xfer += $output->writeI64($this->lastModifiedTime);
       $xfer += $output->writeFieldEnd();
     }
@@ -425,7 +400,7 @@ class DataProductModel {
       if (!is_array($this->productMetadata)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('productMetadata', TType::MAP, 12);
+      $xfer += $output->writeFieldBegin('productMetadata', TType::MAP, 11);
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, count($this->productMetadata));
         {
@@ -443,7 +418,7 @@ class DataProductModel {
       if (!is_array($this->replicaLocations)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('replicaLocations', TType::LST, 13);
+      $xfer += $output->writeFieldBegin('replicaLocations', TType::LST, 12);
       {
         $output->writeListBegin(TType::STRUCT, count($this->replicaLocations));
         {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
index 38f07f5..e40994d 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
@@ -51,20 +51,17 @@ class ReplicaPersistentType:
   }
 
 class DataProductType:
-  DIR = 0
-  FILE = 1
-  COLLECTION = 2
+  FILE = 0
+  COLLECTION = 1
 
   _VALUES_TO_NAMES = {
-    0: "DIR",
-    1: "FILE",
-    2: "COLLECTION",
+    0: "FILE",
+    1: "COLLECTION",
   }
 
   _NAMES_TO_VALUES = {
-    "DIR": 0,
-    "FILE": 1,
-    "COLLECTION": 2,
+    "FILE": 0,
+    "COLLECTION": 1,
   }
 
 
@@ -74,7 +71,6 @@ class DataProductModel:
    - productUri
    - gatewayId
    - parentProductUri
-   - logicalPath
    - productName
    - productDescription
    - ownerName
@@ -91,23 +87,21 @@ class DataProductModel:
     (1, TType.STRING, 'productUri', None, None, ), # 1
     (2, TType.STRING, 'gatewayId', None, None, ), # 2
     (3, TType.STRING, 'parentProductUri', None, None, ), # 3
-    (4, TType.STRING, 'logicalPath', None, None, ), # 4
-    (5, TType.STRING, 'productName', None, None, ), # 5
-    (6, TType.STRING, 'productDescription', None, None, ), # 6
-    (7, TType.STRING, 'ownerName', None, None, ), # 7
-    (8, TType.I32, 'dataProductType', None, None, ), # 8
-    (9, TType.I32, 'productSize', None, None, ), # 9
-    (10, TType.I64, 'creationTime', None, None, ), # 10
-    (11, TType.I64, 'lastModifiedTime', None, None, ), # 11
-    (12, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
-    (13, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 13
+    (4, TType.STRING, 'productName', None, None, ), # 4
+    (5, TType.STRING, 'productDescription', None, None, ), # 5
+    (6, TType.STRING, 'ownerName', None, None, ), # 6
+    (7, TType.I32, 'dataProductType', None, None, ), # 7
+    (8, TType.I32, 'productSize', None, None, ), # 8
+    (9, TType.I64, 'creationTime', None, None, ), # 9
+    (10, TType.I64, 'lastModifiedTime', None, None, ), # 10
+    (11, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 11
+    (12, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 12
   )
 
-  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, logicalPath=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None,):
+  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None,):
     self.productUri = productUri
     self.gatewayId = gatewayId
     self.parentProductUri = parentProductUri
-    self.logicalPath = logicalPath
     self.productName = productName
     self.productDescription = productDescription
     self.ownerName = ownerName
@@ -144,45 +138,40 @@ class DataProductModel:
           iprot.skip(ftype)
       elif fid == 4:
         if ftype == TType.STRING:
-          self.logicalPath = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
           self.productName = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 6:
+      elif fid == 5:
         if ftype == TType.STRING:
           self.productDescription = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 7:
+      elif fid == 6:
         if ftype == TType.STRING:
           self.ownerName = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 8:
+      elif fid == 7:
         if ftype == TType.I32:
           self.dataProductType = iprot.readI32()
         else:
           iprot.skip(ftype)
-      elif fid == 9:
+      elif fid == 8:
         if ftype == TType.I32:
           self.productSize = iprot.readI32()
         else:
           iprot.skip(ftype)
-      elif fid == 10:
+      elif fid == 9:
         if ftype == TType.I64:
           self.creationTime = iprot.readI64()
         else:
           iprot.skip(ftype)
-      elif fid == 11:
+      elif fid == 10:
         if ftype == TType.I64:
           self.lastModifiedTime = iprot.readI64()
         else:
           iprot.skip(ftype)
-      elif fid == 12:
+      elif fid == 11:
         if ftype == TType.MAP:
           self.productMetadata = {}
           (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
@@ -193,7 +182,7 @@ class DataProductModel:
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 13:
+      elif fid == 12:
         if ftype == TType.LIST:
           self.replicaLocations = []
           (_etype10, _size7) = iprot.readListBegin()
@@ -226,40 +215,36 @@ class DataProductModel:
       oprot.writeFieldBegin('parentProductUri', TType.STRING, 3)
       oprot.writeString(self.parentProductUri)
       oprot.writeFieldEnd()
-    if self.logicalPath is not None:
-      oprot.writeFieldBegin('logicalPath', TType.STRING, 4)
-      oprot.writeString(self.logicalPath)
-      oprot.writeFieldEnd()
     if self.productName is not None:
-      oprot.writeFieldBegin('productName', TType.STRING, 5)
+      oprot.writeFieldBegin('productName', TType.STRING, 4)
       oprot.writeString(self.productName)
       oprot.writeFieldEnd()
     if self.productDescription is not None:
-      oprot.writeFieldBegin('productDescription', TType.STRING, 6)
+      oprot.writeFieldBegin('productDescription', TType.STRING, 5)
       oprot.writeString(self.productDescription)
       oprot.writeFieldEnd()
     if self.ownerName is not None:
-      oprot.writeFieldBegin('ownerName', TType.STRING, 7)
+      oprot.writeFieldBegin('ownerName', TType.STRING, 6)
       oprot.writeString(self.ownerName)
       oprot.writeFieldEnd()
     if self.dataProductType is not None:
-      oprot.writeFieldBegin('dataProductType', TType.I32, 8)
+      oprot.writeFieldBegin('dataProductType', TType.I32, 7)
       oprot.writeI32(self.dataProductType)
       oprot.writeFieldEnd()
     if self.productSize is not None:
-      oprot.writeFieldBegin('productSize', TType.I32, 9)
+      oprot.writeFieldBegin('productSize', TType.I32, 8)
       oprot.writeI32(self.productSize)
       oprot.writeFieldEnd()
     if self.creationTime is not None:
-      oprot.writeFieldBegin('creationTime', TType.I64, 10)
+      oprot.writeFieldBegin('creationTime', TType.I64, 9)
       oprot.writeI64(self.creationTime)
       oprot.writeFieldEnd()
     if self.lastModifiedTime is not None:
-      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 11)
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 10)
       oprot.writeI64(self.lastModifiedTime)
       oprot.writeFieldEnd()
     if self.productMetadata is not None:
-      oprot.writeFieldBegin('productMetadata', TType.MAP, 12)
+      oprot.writeFieldBegin('productMetadata', TType.MAP, 11)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.productMetadata))
       for kiter13,viter14 in self.productMetadata.items():
         oprot.writeString(kiter13)
@@ -267,7 +252,7 @@ class DataProductModel:
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.replicaLocations is not None:
-      oprot.writeFieldBegin('replicaLocations', TType.LIST, 13)
+      oprot.writeFieldBegin('replicaLocations', TType.LIST, 12)
       oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
       for iter15 in self.replicaLocations:
         iter15.write(oprot)
@@ -285,7 +270,6 @@ class DataProductModel:
     value = (value * 31) ^ hash(self.productUri)
     value = (value * 31) ^ hash(self.gatewayId)
     value = (value * 31) ^ hash(self.parentProductUri)
-    value = (value * 31) ^ hash(self.logicalPath)
     value = (value * 31) ^ hash(self.productName)
     value = (value * 31) ^ hash(self.productDescription)
     value = (value * 31) ^ hash(self.ownerName)

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 5d4e331..7a85d05 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 ed759d4..33221f8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 29beaba..36910d8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 ce4d7e4..557f861 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 38bb50e..1868c5c 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,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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 8fa23cf..cd2efe0 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 eb74aaf..a2fbcef 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 eb2bbef..e757c83 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 6303047..a48fc03 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 5cd0076..f0fc336 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 0c0eb10..47a037c 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 f96036a..b41e918 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 9d3cd9f..bea570d 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 6e66e41..0c41f35 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 0ad7ea1..3000092 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 f93b4b2..564997f 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 e0e3e68..4f1cfc5 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 15bc83f..a14d5cc 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 c34d55a..2a417f9 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 5fc5d26..e262222 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 bf51b4c..d16cd3e 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 0625220..fa3b782 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 2ae6125..e6a800a 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 7306ece..35ac8b8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 3cf7d8a..dde272f 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 7cd3ed7..3e2308e 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 68da980..a674147 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 cabc7cf..38be5b1 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 75abc53..c18a045 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 a2cd48f..4e45246 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 d83cf69..9d0a53b 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 caa1cd3..fafa7e1 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 dc4f1c9..d8af655 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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");
 


[05/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
index 7756b6c..650bcac 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
@@ -622,14 +622,15 @@ void LOCALSubmission::__set_jobSubmissionInterfaceId(const std::string& val) {
   this->jobSubmissionInterfaceId = val;
 }
 
-void LOCALSubmission::__set_securityProtocol(const  ::apache::airavata::model::data::movement::SecurityProtocol::type val) {
-  this->securityProtocol = val;
-}
-
 void LOCALSubmission::__set_resourceJobManager(const ResourceJobManager& val) {
   this->resourceJobManager = val;
 }
 
+void LOCALSubmission::__set_securityProtocol(const  ::apache::airavata::model::data::movement::SecurityProtocol::type val) {
+  this->securityProtocol = val;
+__isset.securityProtocol = true;
+}
+
 uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -643,7 +644,6 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_jobSubmissionInterfaceId = false;
-  bool isset_securityProtocol = false;
   bool isset_resourceJobManager = false;
 
   while (true)
@@ -663,19 +663,19 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 2:
-        if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast23;
-          xfer += iprot->readI32(ecast23);
-          this->securityProtocol = ( ::apache::airavata::model::data::movement::SecurityProtocol::type)ecast23;
-          isset_securityProtocol = true;
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->resourceJobManager.read(iprot);
+          isset_resourceJobManager = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 3:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->resourceJobManager.read(iprot);
-          isset_resourceJobManager = true;
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast23;
+          xfer += iprot->readI32(ecast23);
+          this->securityProtocol = ( ::apache::airavata::model::data::movement::SecurityProtocol::type)ecast23;
+          this->__isset.securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -691,8 +691,6 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   if (!isset_jobSubmissionInterfaceId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_securityProtocol)
-    throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_resourceJobManager)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
@@ -707,14 +705,15 @@ uint32_t LOCALSubmission::write(::apache::thrift::protocol::TProtocol* oprot) co
   xfer += oprot->writeString(this->jobSubmissionInterfaceId);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("securityProtocol", ::apache::thrift::protocol::T_I32, 2);
-  xfer += oprot->writeI32((int32_t)this->securityProtocol);
-  xfer += oprot->writeFieldEnd();
-
-  xfer += oprot->writeFieldBegin("resourceJobManager", ::apache::thrift::protocol::T_STRUCT, 3);
+  xfer += oprot->writeFieldBegin("resourceJobManager", ::apache::thrift::protocol::T_STRUCT, 2);
   xfer += this->resourceJobManager.write(oprot);
   xfer += oprot->writeFieldEnd();
 
+  if (this->__isset.securityProtocol) {
+    xfer += oprot->writeFieldBegin("securityProtocol", ::apache::thrift::protocol::T_I32, 3);
+    xfer += oprot->writeI32((int32_t)this->securityProtocol);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -723,27 +722,30 @@ uint32_t LOCALSubmission::write(::apache::thrift::protocol::TProtocol* oprot) co
 void swap(LOCALSubmission &a, LOCALSubmission &b) {
   using ::std::swap;
   swap(a.jobSubmissionInterfaceId, b.jobSubmissionInterfaceId);
-  swap(a.securityProtocol, b.securityProtocol);
   swap(a.resourceJobManager, b.resourceJobManager);
+  swap(a.securityProtocol, b.securityProtocol);
+  swap(a.__isset, b.__isset);
 }
 
 LOCALSubmission::LOCALSubmission(const LOCALSubmission& other24) {
   jobSubmissionInterfaceId = other24.jobSubmissionInterfaceId;
-  securityProtocol = other24.securityProtocol;
   resourceJobManager = other24.resourceJobManager;
+  securityProtocol = other24.securityProtocol;
+  __isset = other24.__isset;
 }
 LOCALSubmission& LOCALSubmission::operator=(const LOCALSubmission& other25) {
   jobSubmissionInterfaceId = other25.jobSubmissionInterfaceId;
-  securityProtocol = other25.securityProtocol;
   resourceJobManager = other25.resourceJobManager;
+  securityProtocol = other25.securityProtocol;
+  __isset = other25.__isset;
   return *this;
 }
 void LOCALSubmission::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
   out << "LOCALSubmission(";
   out << "jobSubmissionInterfaceId=" << to_string(jobSubmissionInterfaceId);
-  out << ", " << "securityProtocol=" << to_string(securityProtocol);
   out << ", " << "resourceJobManager=" << to_string(resourceJobManager);
+  out << ", " << "securityProtocol="; (__isset.securityProtocol ? (out << to_string(securityProtocol)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
index ff02515..f18dcd6 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
@@ -314,6 +314,10 @@ inline std::ostream& operator<<(std::ostream& out, const BatchQueue& obj)
   return out;
 }
 
+typedef struct _LOCALSubmission__isset {
+  _LOCALSubmission__isset() : securityProtocol(false) {}
+  bool securityProtocol :1;
+} _LOCALSubmission__isset;
 
 class LOCALSubmission {
  public:
@@ -325,23 +329,27 @@ class LOCALSubmission {
 
   virtual ~LOCALSubmission() throw();
   std::string jobSubmissionInterfaceId;
-   ::apache::airavata::model::data::movement::SecurityProtocol::type securityProtocol;
   ResourceJobManager resourceJobManager;
+   ::apache::airavata::model::data::movement::SecurityProtocol::type securityProtocol;
 
-  void __set_jobSubmissionInterfaceId(const std::string& val);
+  _LOCALSubmission__isset __isset;
 
-  void __set_securityProtocol(const  ::apache::airavata::model::data::movement::SecurityProtocol::type val);
+  void __set_jobSubmissionInterfaceId(const std::string& val);
 
   void __set_resourceJobManager(const ResourceJobManager& val);
 
+  void __set_securityProtocol(const  ::apache::airavata::model::data::movement::SecurityProtocol::type val);
+
   bool operator == (const LOCALSubmission & rhs) const
   {
     if (!(jobSubmissionInterfaceId == rhs.jobSubmissionInterfaceId))
       return false;
-    if (!(securityProtocol == rhs.securityProtocol))
-      return false;
     if (!(resourceJobManager == rhs.resourceJobManager))
       return false;
+    if (__isset.securityProtocol != rhs.__isset.securityProtocol)
+      return false;
+    else if (__isset.securityProtocol && !(securityProtocol == rhs.securityProtocol))
+      return false;
     return true;
   }
   bool operator != (const LOCALSubmission &rhs) const {


[45/55] [abbrv] airavata git commit: setting replica URIs for experiment outputs

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/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 767d4ef..90d8a93 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
index 8f44e79..9207a93 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
@@ -51,23 +51,22 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 public class DataProductModel implements org.apache.thrift.TBase<DataProductModel, DataProductModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataProductModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataProductModel");
 
   private static final org.apache.thrift.protocol.TField PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("productUri", org.apache.thrift.protocol.TType.STRING, (short)1);
   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)2);
   private static final org.apache.thrift.protocol.TField PARENT_PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("parentProductUri", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField LOGICAL_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("logicalPath", org.apache.thrift.protocol.TType.STRING, (short)4);
-  private static final org.apache.thrift.protocol.TField PRODUCT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("productName", org.apache.thrift.protocol.TType.STRING, (short)5);
-  private static final org.apache.thrift.protocol.TField PRODUCT_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("productDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
-  private static final org.apache.thrift.protocol.TField OWNER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("ownerName", org.apache.thrift.protocol.TType.STRING, (short)7);
-  private static final org.apache.thrift.protocol.TField DATA_PRODUCT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("dataProductType", org.apache.thrift.protocol.TType.I32, (short)8);
-  private static final org.apache.thrift.protocol.TField PRODUCT_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("productSize", org.apache.thrift.protocol.TType.I32, (short)9);
-  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)10);
-  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)11);
-  private static final org.apache.thrift.protocol.TField PRODUCT_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("productMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
-  private static final org.apache.thrift.protocol.TField REPLICA_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocations", org.apache.thrift.protocol.TType.LIST, (short)13);
+  private static final org.apache.thrift.protocol.TField PRODUCT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("productName", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField PRODUCT_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("productDescription", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField OWNER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("ownerName", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField DATA_PRODUCT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("dataProductType", org.apache.thrift.protocol.TType.I32, (short)7);
+  private static final org.apache.thrift.protocol.TField PRODUCT_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("productSize", org.apache.thrift.protocol.TType.I32, (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 org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)10);
+  private static final org.apache.thrift.protocol.TField PRODUCT_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("productMetadata", org.apache.thrift.protocol.TType.MAP, (short)11);
+  private static final org.apache.thrift.protocol.TField REPLICA_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocations", org.apache.thrift.protocol.TType.LIST, (short)12);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -78,7 +77,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
   private String productUri; // optional
   private String gatewayId; // optional
   private String parentProductUri; // optional
-  private String logicalPath; // optional
   private String productName; // optional
   private String productDescription; // optional
   private String ownerName; // optional
@@ -94,20 +92,19 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     PRODUCT_URI((short)1, "productUri"),
     GATEWAY_ID((short)2, "gatewayId"),
     PARENT_PRODUCT_URI((short)3, "parentProductUri"),
-    LOGICAL_PATH((short)4, "logicalPath"),
-    PRODUCT_NAME((short)5, "productName"),
-    PRODUCT_DESCRIPTION((short)6, "productDescription"),
-    OWNER_NAME((short)7, "ownerName"),
+    PRODUCT_NAME((short)4, "productName"),
+    PRODUCT_DESCRIPTION((short)5, "productDescription"),
+    OWNER_NAME((short)6, "ownerName"),
     /**
      * 
      * @see DataProductType
      */
-    DATA_PRODUCT_TYPE((short)8, "dataProductType"),
-    PRODUCT_SIZE((short)9, "productSize"),
-    CREATION_TIME((short)10, "creationTime"),
-    LAST_MODIFIED_TIME((short)11, "lastModifiedTime"),
-    PRODUCT_METADATA((short)12, "productMetadata"),
-    REPLICA_LOCATIONS((short)13, "replicaLocations");
+    DATA_PRODUCT_TYPE((short)7, "dataProductType"),
+    PRODUCT_SIZE((short)8, "productSize"),
+    CREATION_TIME((short)9, "creationTime"),
+    LAST_MODIFIED_TIME((short)10, "lastModifiedTime"),
+    PRODUCT_METADATA((short)11, "productMetadata"),
+    REPLICA_LOCATIONS((short)12, "replicaLocations");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -128,25 +125,23 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
           return GATEWAY_ID;
         case 3: // PARENT_PRODUCT_URI
           return PARENT_PRODUCT_URI;
-        case 4: // LOGICAL_PATH
-          return LOGICAL_PATH;
-        case 5: // PRODUCT_NAME
+        case 4: // PRODUCT_NAME
           return PRODUCT_NAME;
-        case 6: // PRODUCT_DESCRIPTION
+        case 5: // PRODUCT_DESCRIPTION
           return PRODUCT_DESCRIPTION;
-        case 7: // OWNER_NAME
+        case 6: // OWNER_NAME
           return OWNER_NAME;
-        case 8: // DATA_PRODUCT_TYPE
+        case 7: // DATA_PRODUCT_TYPE
           return DATA_PRODUCT_TYPE;
-        case 9: // PRODUCT_SIZE
+        case 8: // PRODUCT_SIZE
           return PRODUCT_SIZE;
-        case 10: // CREATION_TIME
+        case 9: // CREATION_TIME
           return CREATION_TIME;
-        case 11: // LAST_MODIFIED_TIME
+        case 10: // LAST_MODIFIED_TIME
           return LAST_MODIFIED_TIME;
-        case 12: // PRODUCT_METADATA
+        case 11: // PRODUCT_METADATA
           return PRODUCT_METADATA;
-        case 13: // REPLICA_LOCATIONS
+        case 12: // REPLICA_LOCATIONS
           return REPLICA_LOCATIONS;
         default:
           return null;
@@ -192,7 +187,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
   private static final int __CREATIONTIME_ISSET_ID = 1;
   private static final int __LASTMODIFIEDTIME_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.LOGICAL_PATH,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS};
+  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS};
   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);
@@ -202,8 +197,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PARENT_PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("parentProductUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.LOGICAL_PATH, new org.apache.thrift.meta_data.FieldMetaData("logicalPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PRODUCT_NAME, new org.apache.thrift.meta_data.FieldMetaData("productName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PRODUCT_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("productDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -246,9 +239,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     if (other.isSetParentProductUri()) {
       this.parentProductUri = other.parentProductUri;
     }
-    if (other.isSetLogicalPath()) {
-      this.logicalPath = other.logicalPath;
-    }
     if (other.isSetProductName()) {
       this.productName = other.productName;
     }
@@ -286,7 +276,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     this.productUri = null;
     this.gatewayId = null;
     this.parentProductUri = null;
-    this.logicalPath = null;
     this.productName = null;
     this.productDescription = null;
     this.ownerName = null;
@@ -370,29 +359,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     }
   }
 
-  public String getLogicalPath() {
-    return this.logicalPath;
-  }
-
-  public void setLogicalPath(String logicalPath) {
-    this.logicalPath = logicalPath;
-  }
-
-  public void unsetLogicalPath() {
-    this.logicalPath = null;
-  }
-
-  /** Returns true if field logicalPath is set (has been assigned a value) and false otherwise */
-  public boolean isSetLogicalPath() {
-    return this.logicalPath != null;
-  }
-
-  public void setLogicalPathIsSet(boolean value) {
-    if (!value) {
-      this.logicalPath = null;
-    }
-  }
-
   public String getProductName() {
     return this.productName;
   }
@@ -657,14 +623,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       break;
 
-    case LOGICAL_PATH:
-      if (value == null) {
-        unsetLogicalPath();
-      } else {
-        setLogicalPath((String)value);
-      }
-      break;
-
     case PRODUCT_NAME:
       if (value == null) {
         unsetProductName();
@@ -751,9 +709,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     case PARENT_PRODUCT_URI:
       return getParentProductUri();
 
-    case LOGICAL_PATH:
-      return getLogicalPath();
-
     case PRODUCT_NAME:
       return getProductName();
 
@@ -798,8 +753,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       return isSetGatewayId();
     case PARENT_PRODUCT_URI:
       return isSetParentProductUri();
-    case LOGICAL_PATH:
-      return isSetLogicalPath();
     case PRODUCT_NAME:
       return isSetProductName();
     case PRODUCT_DESCRIPTION:
@@ -862,15 +815,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         return false;
     }
 
-    boolean this_present_logicalPath = true && this.isSetLogicalPath();
-    boolean that_present_logicalPath = true && that.isSetLogicalPath();
-    if (this_present_logicalPath || that_present_logicalPath) {
-      if (!(this_present_logicalPath && that_present_logicalPath))
-        return false;
-      if (!this.logicalPath.equals(that.logicalPath))
-        return false;
-    }
-
     boolean this_present_productName = true && this.isSetProductName();
     boolean that_present_productName = true && that.isSetProductName();
     if (this_present_productName || that_present_productName) {
@@ -974,11 +918,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     if (present_parentProductUri)
       list.add(parentProductUri);
 
-    boolean present_logicalPath = true && (isSetLogicalPath());
-    list.add(present_logicalPath);
-    if (present_logicalPath)
-      list.add(logicalPath);
-
     boolean present_productName = true && (isSetProductName());
     list.add(present_productName);
     if (present_productName)
@@ -1065,16 +1004,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetLogicalPath()).compareTo(other.isSetLogicalPath());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetLogicalPath()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.logicalPath, other.logicalPath);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
     lastComparison = Boolean.valueOf(isSetProductName()).compareTo(other.isSetProductName());
     if (lastComparison != 0) {
       return lastComparison;
@@ -1214,16 +1143,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       first = false;
     }
-    if (isSetLogicalPath()) {
-      if (!first) sb.append(", ");
-      sb.append("logicalPath:");
-      if (this.logicalPath == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.logicalPath);
-      }
-      first = false;
-    }
     if (isSetProductName()) {
       if (!first) sb.append(", ");
       sb.append("productName:");
@@ -1371,15 +1290,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // LOGICAL_PATH
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.logicalPath = iprot.readString();
-              struct.setLogicalPathIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 5: // PRODUCT_NAME
+          case 4: // PRODUCT_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.productName = iprot.readString();
               struct.setProductNameIsSet(true);
@@ -1387,7 +1298,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // PRODUCT_DESCRIPTION
+          case 5: // PRODUCT_DESCRIPTION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.productDescription = iprot.readString();
               struct.setProductDescriptionIsSet(true);
@@ -1395,7 +1306,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 7: // OWNER_NAME
+          case 6: // OWNER_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.ownerName = iprot.readString();
               struct.setOwnerNameIsSet(true);
@@ -1403,7 +1314,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 8: // DATA_PRODUCT_TYPE
+          case 7: // DATA_PRODUCT_TYPE
             if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
               struct.dataProductType = org.apache.airavata.model.data.replica.DataProductType.findByValue(iprot.readI32());
               struct.setDataProductTypeIsSet(true);
@@ -1411,7 +1322,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 9: // PRODUCT_SIZE
+          case 8: // PRODUCT_SIZE
             if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
               struct.productSize = iprot.readI32();
               struct.setProductSizeIsSet(true);
@@ -1419,7 +1330,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 10: // CREATION_TIME
+          case 9: // CREATION_TIME
             if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
               struct.creationTime = iprot.readI64();
               struct.setCreationTimeIsSet(true);
@@ -1427,7 +1338,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 11: // LAST_MODIFIED_TIME
+          case 10: // LAST_MODIFIED_TIME
             if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
               struct.lastModifiedTime = iprot.readI64();
               struct.setLastModifiedTimeIsSet(true);
@@ -1435,7 +1346,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 12: // PRODUCT_METADATA
+          case 11: // PRODUCT_METADATA
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map0 = iprot.readMapBegin();
@@ -1455,7 +1366,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 13: // REPLICA_LOCATIONS
+          case 12: // REPLICA_LOCATIONS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list4 = iprot.readListBegin();
@@ -1508,13 +1419,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
           oprot.writeFieldEnd();
         }
       }
-      if (struct.logicalPath != null) {
-        if (struct.isSetLogicalPath()) {
-          oprot.writeFieldBegin(LOGICAL_PATH_FIELD_DESC);
-          oprot.writeString(struct.logicalPath);
-          oprot.writeFieldEnd();
-        }
-      }
       if (struct.productName != null) {
         if (struct.isSetProductName()) {
           oprot.writeFieldBegin(PRODUCT_NAME_FIELD_DESC);
@@ -1614,37 +1518,34 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       if (struct.isSetParentProductUri()) {
         optionals.set(2);
       }
-      if (struct.isSetLogicalPath()) {
-        optionals.set(3);
-      }
       if (struct.isSetProductName()) {
-        optionals.set(4);
+        optionals.set(3);
       }
       if (struct.isSetProductDescription()) {
-        optionals.set(5);
+        optionals.set(4);
       }
       if (struct.isSetOwnerName()) {
-        optionals.set(6);
+        optionals.set(5);
       }
       if (struct.isSetDataProductType()) {
-        optionals.set(7);
+        optionals.set(6);
       }
       if (struct.isSetProductSize()) {
-        optionals.set(8);
+        optionals.set(7);
       }
       if (struct.isSetCreationTime()) {
-        optionals.set(9);
+        optionals.set(8);
       }
       if (struct.isSetLastModifiedTime()) {
-        optionals.set(10);
+        optionals.set(9);
       }
       if (struct.isSetProductMetadata()) {
-        optionals.set(11);
+        optionals.set(10);
       }
       if (struct.isSetReplicaLocations()) {
-        optionals.set(12);
+        optionals.set(11);
       }
-      oprot.writeBitSet(optionals, 13);
+      oprot.writeBitSet(optionals, 12);
       if (struct.isSetProductUri()) {
         oprot.writeString(struct.productUri);
       }
@@ -1654,9 +1555,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       if (struct.isSetParentProductUri()) {
         oprot.writeString(struct.parentProductUri);
       }
-      if (struct.isSetLogicalPath()) {
-        oprot.writeString(struct.logicalPath);
-      }
       if (struct.isSetProductName()) {
         oprot.writeString(struct.productName);
       }
@@ -1702,7 +1600,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(13);
+      BitSet incoming = iprot.readBitSet(12);
       if (incoming.get(0)) {
         struct.productUri = iprot.readString();
         struct.setProductUriIsSet(true);
@@ -1716,38 +1614,34 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         struct.setParentProductUriIsSet(true);
       }
       if (incoming.get(3)) {
-        struct.logicalPath = iprot.readString();
-        struct.setLogicalPathIsSet(true);
-      }
-      if (incoming.get(4)) {
         struct.productName = iprot.readString();
         struct.setProductNameIsSet(true);
       }
-      if (incoming.get(5)) {
+      if (incoming.get(4)) {
         struct.productDescription = iprot.readString();
         struct.setProductDescriptionIsSet(true);
       }
-      if (incoming.get(6)) {
+      if (incoming.get(5)) {
         struct.ownerName = iprot.readString();
         struct.setOwnerNameIsSet(true);
       }
-      if (incoming.get(7)) {
+      if (incoming.get(6)) {
         struct.dataProductType = org.apache.airavata.model.data.replica.DataProductType.findByValue(iprot.readI32());
         struct.setDataProductTypeIsSet(true);
       }
-      if (incoming.get(8)) {
+      if (incoming.get(7)) {
         struct.productSize = iprot.readI32();
         struct.setProductSizeIsSet(true);
       }
-      if (incoming.get(9)) {
+      if (incoming.get(8)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
       }
-      if (incoming.get(10)) {
+      if (incoming.get(9)) {
         struct.lastModifiedTime = iprot.readI64();
         struct.setLastModifiedTimeIsSet(true);
       }
-      if (incoming.get(11)) {
+      if (incoming.get(10)) {
         {
           org.apache.thrift.protocol.TMap _map11 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
           struct.productMetadata = new HashMap<String,String>(2*_map11.size);
@@ -1762,7 +1656,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         }
         struct.setProductMetadataIsSet(true);
       }
-      if (incoming.get(12)) {
+      if (incoming.get(11)) {
         {
           org.apache.thrift.protocol.TList _list15 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
           struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list15.size);

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
index b953216..db4895d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
@@ -29,9 +29,8 @@ import java.util.HashMap;
 import org.apache.thrift.TEnum;
 
 public enum DataProductType implements org.apache.thrift.TEnum {
-  DIR(0),
-  FILE(1),
-  COLLECTION(2);
+  FILE(0),
+  COLLECTION(1);
 
   private final int value;
 
@@ -53,10 +52,8 @@ public enum DataProductType implements org.apache.thrift.TEnum {
   public static DataProductType findByValue(int value) { 
     switch (value) {
       case 0:
-        return DIR;
-      case 1:
         return FILE;
-      case 2:
+      case 1:
         return COLLECTION;
       default:
         return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/8e4212ea/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
index defc214..b4fbff0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 8175998..2e8b6d8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 12bfb8e..13f9940 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 a114a0b..704933a 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 4c582a4..feb87f8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 d2e63d0..e98b8a9 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 629b6bc..f9549e8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 57c9753..f5547db 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 be1d623..f2d106a 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 386ca43..7f7c87a 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 2e80320..8cfc5f5 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 a93c4e1..ac1cac6 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 9460b15..0051eda 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 dd923c1..37c8b22 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 a342e4e..9ff7932 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 cdf3bd7..7e39f8e 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 651cc33..2875197 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 56f39d6..45345e5 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 33323b8..76be2f0 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 cfc6b1c..6be0f0f 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 4cd6514..e849bf8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 b39a1be..06154d9 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 edc8225..6022700 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 1f7b015..7551cce 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 f7e2b06..a404025 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 a035c86..a822b9e 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 ff7e9e9..34813a8 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 04693b6..38c7a54 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 c03324d..5667c82 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 edca604..e2a649e 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 d8fd822..c7c6250 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 89b6e73..607d5bc 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 7d495af..a77a524 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 3609b85..88b81db 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 7ebe824..cd5d3ad 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 22f5d24..2455dfc 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 49447bf..5742a36 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 0d9e116..0209772 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 fdd62ff..27debda 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 ea860bc..882c8c2 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 22e07bb..b77e182 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 1d02eda..54f6ea9 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 733671d..7a3c76c 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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/8e4212ea/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 7e115b5..ca39c40 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-03-24")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-25")
 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");
 


[15/55] [abbrv] airavata git commit: fixing schema issue

Posted by sh...@apache.org.
fixing schema issue


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

Branch: refs/heads/master
Commit: 8574272bd33550bab9ed210505636c995330f2b9
Parents: 5e9bf91
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 16:07:33 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 16:07:33 2016 -0400

----------------------------------------------------------------------
 .../airavata/registry/core/data/catalog/impl/DataCatalogImpl.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/8574272b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 27e6976..8c23c3b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -57,7 +57,7 @@ public class DataCatalogImpl implements DataCatalog {
             productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
         }
         //Creating parent logical dir if not exist too
-        String parentUri = DataCatalog.schema + productModel.getOwnerName() + "@" + productModel.getGatewayId() + "/" ;
+        String parentUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + "/" ;
         DataProductModel tempDp;
         if(!isExists(parentUri)){
             tempDp = new DataProductModel();


[16/55] [abbrv] airavata git commit: adding colon to product uri

Posted by sh...@apache.org.
adding colon to product uri


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

Branch: refs/heads/master
Commit: 199c3010786164b9f4e617c935ee50fdb5008a90
Parents: 8574272
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 17:20:27 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 17:20:27 2016 -0400

----------------------------------------------------------------------
 .../registry/core/data/catalog/impl/DataCatalogImpl.java         | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/199c3010/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 8c23c3b..2c809d6 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -57,7 +57,7 @@ public class DataCatalogImpl implements DataCatalog {
             productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
         }
         //Creating parent logical dir if not exist too
-        String parentUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + "/" ;
+        String parentUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + ":/" ;
         DataProductModel tempDp;
         if(!isExists(parentUri)){
             tempDp = new DataProductModel();
@@ -88,7 +88,7 @@ public class DataCatalogImpl implements DataCatalog {
         }
 
         String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
-                + productModel.getLogicalPath();
+                + ":" + productModel.getLogicalPath();
         productModel.setProductUri(productUri);
         long currentTime = System.currentTimeMillis();
         productModel.setCreationTime(currentTime);


[54/55] [abbrv] airavata git commit: sending full uri instead of value

Posted by sh...@apache.org.
sending full uri instead of value


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

Branch: refs/heads/master
Commit: 5f484b984fb2454033daefe782d7f5a0b2103faf
Parents: 1eda8c9
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 16:00:47 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 16:00:47 2016 -0400

----------------------------------------------------------------------
 .../org/apache/airavata/gfac/impl/task/SCPDataStageTask.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5f484b98/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 e1f749f..17522e9 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
@@ -266,8 +266,8 @@ public class SCPDataStageTask implements Task {
         taskContext.getParentProcessContext().getDataMovementRemoteCluster().scpThirdParty(sourceURI.getPath(),
                 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());
+        GFacUtils.saveExperimentOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.toString());
+        GFacUtils.saveProcessOutput(taskContext.getParentProcessContext(), taskContext.getProcessOutput().getName(), destinationURI.toString());
 
     }
 


[41/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
adding API methods to get parent and child products


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

Branch: refs/heads/master
Commit: 02cbb8dc0640e64aae3a4a161cbe79255a81cd13
Parents: 18cd83c
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 14:41:15 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 14:41:15 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |    34 +-
 .../java/org/apache/airavata/api/Airavata.java  | 40309 +++++++++--------
 .../main/resources/lib/airavata/Airavata.cpp    |  1614 +-
 .../src/main/resources/lib/airavata/Airavata.h  |   318 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    12 +-
 .../airavata/replica_catalog_models_types.cpp   |   216 +-
 .../lib/airavata/replica_catalog_models_types.h |    10 +-
 .../resources/lib/Airavata/API/Airavata.php     | 11273 ++---
 .../lib/Airavata/Model/Data/Replica/Types.php   |    87 +-
 .../lib/apache/airavata/api/Airavata-remote     |    14 +
 .../lib/apache/airavata/api/Airavata.py         |   582 +-
 .../airavata/model/data/replica/ttypes.py       |    50 +-
 .../model/data/replica/DataProductModel.java    |   218 +-
 .../data/replica/DataReplicaLocationModel.java  |    44 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |    46 +
 .../utils/ThriftDataModelConversion.java        |    10 -
 .../airavata/registry/cpi/ReplicaCatalog.java   |     4 +
 .../airavata-apis/airavata_api.thrift           |    11 +
 .../replica_catalog_models.thrift               |     1 -
 19 files changed, 30154 insertions(+), 24699 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 f1564e5..718243f 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
@@ -4343,7 +4343,39 @@ public class AiravataServerHandler implements Airavata.Iface {
             String replicaId = dataCatalog.registerReplicaLocation(replicaLocationModel);
             return replicaId;
         } catch (Exception e) {
-            String msg = "Error in retreiving the data product "+replicaLocationModel.getReplicaName()+".";
+            String msg = "Error in retreiving the replica "+replicaLocationModel.getReplicaName()+".";
+            logger.error(msg, e);
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg+" More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    @Override
+    public DataProductModel getParentDataProduct(AuthzToken authzToken, String productUri) throws InvalidRequestException,
+            AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        try {
+            dataCatalog = RegistryFactory.getReplicaCatalog();
+            DataProductModel dataProductModel = dataCatalog.getParentDataProduct(productUri;
+            return dataProductModel;
+        } catch (Exception e) {
+            String msg = "Error in retreiving the parent data product for "+ productUri+".";
+            logger.error(msg, e);
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg+" More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    @Override
+    public List<DataProductModel> getChildDataProducts(AuthzToken authzToken, String productUri) throws InvalidRequestException,
+            AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        try {
+            dataCatalog = RegistryFactory.getReplicaCatalog();
+            List<DataProductModel> dataProductModels = dataCatalog.getChildDataProducts(productUri);
+            return dataProductModels;
+        } catch (Exception e) {
+            String msg = "Error in retreiving the child products for "+productUri+".";
             logger.error(msg, e);
             AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage(msg+" More info : " + e.getMessage());


[04/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 b450fa1..e262b7c 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
@@ -2413,7 +2413,7 @@ interface AiravataIf {
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param DMType
@@ -2431,7 +2431,7 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $productId
+   * @param string $productUri
    * @param int $dataMoveType
    * @param int $priorityOrder
    * @param \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement
@@ -2441,7 +2441,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement);
+  public function addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement);
   /**
    * 
    * Update the given Local data movement details
@@ -2499,7 +2499,7 @@ interface AiravataIf {
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param priorityOrder
@@ -2513,7 +2513,7 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $productId
+   * @param string $productUri
    * @param int $dataMoveType
    * @param int $priorityOrder
    * @param \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement
@@ -2523,7 +2523,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement);
+  public function addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement);
   /**
    * 
    * Update the given scp data movement details
@@ -2580,7 +2580,7 @@ interface AiravataIf {
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which data movement protocol to be added
    * 
    * @param priorityOrder
@@ -2594,7 +2594,7 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $productId
+   * @param string $productUri
    * @param int $dataMoveType
    * @param int $priorityOrder
    * @param \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement
@@ -2604,7 +2604,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement);
+  public function addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement);
   /**
    * 
    * Update a selected UNICORE data movement details
@@ -2660,7 +2660,7 @@ interface AiravataIf {
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which dataMovement protocol to be added
    * 
    * @param DMType
@@ -2678,7 +2678,7 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $productId
+   * @param string $productUri
    * @param int $dataMoveType
    * @param int $priorityOrder
    * @param \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement
@@ -2688,7 +2688,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement);
+  public function addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement);
   /**
    * Update the given GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
@@ -2860,7 +2860,7 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $productId
+   * @param string $productUri
    * @param string $dataMovementInterfaceId
    * @param int $dataMoveType
    * @return bool
@@ -2869,7 +2869,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMovementInterfaceId, $dataMoveType);
+  public function deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMovementInterfaceId, $dataMoveType);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager $resourceJobManager
@@ -3421,6 +3421,39 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AuthorizationException
    */
   public function isWorkflowExistWithName(\Airavata\Model\Security\AuthzToken $authzToken, $workflowName);
+  /**
+   * API Methods related to data catalog
+   * 
+   * 
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param \Airavata\Model\Data\Product\DataProductModel $dataProductModel
+   * @return string
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $dataProductUri
+   * @return \Airavata\Model\Data\Product\DataProductModel
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $dataProductUri);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel
+   * @return string
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel);
 }
 
 class AiravataClient implements \Airavata\API\AiravataIf {
@@ -9201,17 +9234,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("updateUnicoreJobSubmissionDetails failed: unknown result");
   }
 
-  public function addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement)
+  public function addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement)
   {
-    $this->send_addLocalDataMovementDetails($authzToken, $productId, $dataMoveType, $priorityOrder, $localDataMovement);
+    $this->send_addLocalDataMovementDetails($authzToken, $productUri, $dataMoveType, $priorityOrder, $localDataMovement);
     return $this->recv_addLocalDataMovementDetails();
   }
 
-  public function send_addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement)
+  public function send_addLocalDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\LOCALDataMovement $localDataMovement)
   {
     $args = new \Airavata\API\Airavata_addLocalDataMovementDetails_args();
     $args->authzToken = $authzToken;
-    $args->productId = $productId;
+    $args->productUri = $productUri;
     $args->dataMoveType = $dataMoveType;
     $args->priorityOrder = $priorityOrder;
     $args->localDataMovement = $localDataMovement;
@@ -9397,17 +9430,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getLocalDataMovement failed: unknown result");
   }
 
-  public function addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement)
+  public function addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement)
   {
-    $this->send_addSCPDataMovementDetails($authzToken, $productId, $dataMoveType, $priorityOrder, $scpDataMovement);
+    $this->send_addSCPDataMovementDetails($authzToken, $productUri, $dataMoveType, $priorityOrder, $scpDataMovement);
     return $this->recv_addSCPDataMovementDetails();
   }
 
-  public function send_addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement)
+  public function send_addSCPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\SCPDataMovement $scpDataMovement)
   {
     $args = new \Airavata\API\Airavata_addSCPDataMovementDetails_args();
     $args->authzToken = $authzToken;
-    $args->productId = $productId;
+    $args->productUri = $productUri;
     $args->dataMoveType = $dataMoveType;
     $args->priorityOrder = $priorityOrder;
     $args->scpDataMovement = $scpDataMovement;
@@ -9593,17 +9626,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getSCPDataMovement failed: unknown result");
   }
 
-  public function addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement)
+  public function addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement)
   {
-    $this->send_addUnicoreDataMovementDetails($authzToken, $productId, $dataMoveType, $priorityOrder, $unicoreDataMovement);
+    $this->send_addUnicoreDataMovementDetails($authzToken, $productUri, $dataMoveType, $priorityOrder, $unicoreDataMovement);
     return $this->recv_addUnicoreDataMovementDetails();
   }
 
-  public function send_addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement)
+  public function send_addUnicoreDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\UnicoreDataMovement $unicoreDataMovement)
   {
     $args = new \Airavata\API\Airavata_addUnicoreDataMovementDetails_args();
     $args->authzToken = $authzToken;
-    $args->productId = $productId;
+    $args->productUri = $productUri;
     $args->dataMoveType = $dataMoveType;
     $args->priorityOrder = $priorityOrder;
     $args->unicoreDataMovement = $unicoreDataMovement;
@@ -9789,17 +9822,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getUnicoreDataMovement failed: unknown result");
   }
 
-  public function addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement)
+  public function addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement)
   {
-    $this->send_addGridFTPDataMovementDetails($authzToken, $productId, $dataMoveType, $priorityOrder, $gridFTPDataMovement);
+    $this->send_addGridFTPDataMovementDetails($authzToken, $productUri, $dataMoveType, $priorityOrder, $gridFTPDataMovement);
     return $this->recv_addGridFTPDataMovementDetails();
   }
 
-  public function send_addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement)
+  public function send_addGridFTPDataMovementDetails(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMoveType, $priorityOrder, \Airavata\Model\Data\Movement\GridFTPDataMovement $gridFTPDataMovement)
   {
     $args = new \Airavata\API\Airavata_addGridFTPDataMovementDetails_args();
     $args->authzToken = $authzToken;
-    $args->productId = $productId;
+    $args->productUri = $productUri;
     $args->dataMoveType = $dataMoveType;
     $args->priorityOrder = $priorityOrder;
     $args->gridFTPDataMovement = $gridFTPDataMovement;
@@ -10308,17 +10341,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("deleteJobSubmissionInterface failed: unknown result");
   }
 
-  public function deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMovementInterfaceId, $dataMoveType)
+  public function deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMovementInterfaceId, $dataMoveType)
   {
-    $this->send_deleteDataMovementInterface($authzToken, $productId, $dataMovementInterfaceId, $dataMoveType);
+    $this->send_deleteDataMovementInterface($authzToken, $productUri, $dataMovementInterfaceId, $dataMoveType);
     return $this->recv_deleteDataMovementInterface();
   }
 
-  public function send_deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productId, $dataMovementInterfaceId, $dataMoveType)
+  public function send_deleteDataMovementInterface(\Airavata\Model\Security\AuthzToken $authzToken, $productUri, $dataMovementInterfaceId, $dataMoveType)
   {
     $args = new \Airavata\API\Airavata_deleteDataMovementInterface_args();
     $args->authzToken = $authzToken;
-    $args->productId = $productId;
+    $args->productUri = $productUri;
     $args->dataMovementInterfaceId = $dataMovementInterfaceId;
     $args->dataMoveType = $dataMoveType;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
@@ -12112,280 +12145,209 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("isWorkflowExistWithName failed: unknown result");
   }
 
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
+  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel)
+  {
+    $this->send_registerDataProduct($authzToken, $dataProductModel);
+    return $this->recv_registerDataProduct();
+  }
 
-class Airavata_getAPIVersion_args {
-  static $_TSPEC;
+  public function send_registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel)
+  {
+    $args = new \Airavata\API\Airavata_registerDataProduct_args();
+    $args->authzToken = $authzToken;
+    $args->dataProductModel = $dataProductModel;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'registerDataProduct', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('registerDataProduct', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
 
-  /**
-   * @var \Airavata\Model\Security\AuthzToken
-   */
-  public $authzToken = null;
+  public function recv_registerDataProduct()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_registerDataProduct_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
 
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'authzToken',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Security\AuthzToken',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['authzToken'])) {
-        $this->authzToken = $vals['authzToken'];
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
       }
+      $result = new \Airavata\API\Airavata_registerDataProduct_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
     }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("registerDataProduct failed: unknown result");
   }
 
-  public function getName() {
-    return 'Airavata_getAPIVersion_args';
+  public function getDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $dataProductUri)
+  {
+    $this->send_getDataProduct($authzToken, $dataProductUri);
+    return $this->recv_getDataProduct();
   }
 
-  public function read($input)
+  public function send_getDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $dataProductUri)
   {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
+    $args = new \Airavata\API\Airavata_getDataProduct_args();
+    $args->authzToken = $authzToken;
+    $args->dataProductUri = $dataProductUri;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
     {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
-            $xfer += $this->authzToken->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
+      thrift_protocol_write_binary($this->output_, 'getDataProduct', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
     }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_args');
-    if ($this->authzToken !== null) {
-      if (!is_object($this->authzToken)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
-      $xfer += $this->authzToken->write($output);
-      $xfer += $output->writeFieldEnd();
+    else
+    {
+      $this->output_->writeMessageBegin('getDataProduct', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
     }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
   }
 
-}
-
-class Airavata_getAPIVersion_result {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $success = null;
-  /**
-   * @var \Airavata\API\Error\InvalidRequestException
-   */
-  public $ire = null;
-  /**
-   * @var \Airavata\API\Error\AiravataClientException
-   */
-  public $ace = null;
-  /**
-   * @var \Airavata\API\Error\AiravataSystemException
-   */
-  public $ase = null;
-  /**
-   * @var \Airavata\API\Error\AuthorizationException
-   */
-  public $ae = null;
+  public function recv_getDataProduct()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getDataProduct_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
 
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRING,
-          ),
-        1 => array(
-          'var' => 'ire',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\InvalidRequestException',
-          ),
-        2 => array(
-          'var' => 'ace',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataClientException',
-          ),
-        3 => array(
-          'var' => 'ase',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataSystemException',
-          ),
-        4 => array(
-          'var' => 'ae',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AuthorizationException',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['ire'])) {
-        $this->ire = $vals['ire'];
-      }
-      if (isset($vals['ace'])) {
-        $this->ace = $vals['ace'];
-      }
-      if (isset($vals['ase'])) {
-        $this->ase = $vals['ase'];
-      }
-      if (isset($vals['ae'])) {
-        $this->ae = $vals['ae'];
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
       }
+      $result = new \Airavata\API\Airavata_getDataProduct_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
     }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getDataProduct failed: unknown result");
   }
 
-  public function getName() {
-    return 'Airavata_getAPIVersion_result';
+  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel)
+  {
+    $this->send_registerReplicaLocation($authzToken, $replicaLocationModel);
+    return $this->recv_registerReplicaLocation();
   }
 
-  public function read($input)
+  public function send_registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel)
   {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
+    $args = new \Airavata\API\Airavata_registerReplicaLocation_args();
+    $args->authzToken = $authzToken;
+    $args->replicaLocationModel = $replicaLocationModel;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
     {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->ire = new \Airavata\API\Error\InvalidRequestException();
-            $xfer += $this->ire->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->ace = new \Airavata\API\Error\AiravataClientException();
-            $xfer += $this->ace->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->ase = new \Airavata\API\Error\AiravataSystemException();
-            $xfer += $this->ase->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->ae = new \Airavata\API\Error\AuthorizationException();
-            $xfer += $this->ae->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
+      thrift_protocol_write_binary($this->output_, 'registerReplicaLocation', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('registerReplicaLocation', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
     }
-    $xfer += $input->readStructEnd();
-    return $xfer;
   }
 
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
-    if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
-      $xfer += $output->writeFieldEnd();
+  public function recv_registerReplicaLocation()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_registerReplicaLocation_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_registerReplicaLocation_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
     }
-    if ($this->ire !== null) {
-      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
-      $xfer += $this->ire->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->success !== null) {
+      return $result->success;
     }
-    if ($this->ace !== null) {
-      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
-      $xfer += $this->ace->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ire !== null) {
+      throw $result->ire;
     }
-    if ($this->ase !== null) {
-      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
-      $xfer += $this->ase->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ace !== null) {
+      throw $result->ace;
     }
-    if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
-      $xfer += $this->ae->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ase !== null) {
+      throw $result->ase;
     }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("registerReplicaLocation failed: unknown result");
   }
 
 }
 
-class Airavata_isUserExists_args {
+// HELPER FUNCTIONS AND STRUCTURES
+
+class Airavata_getAPIVersion_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12395,31 +12357,17 @@ class Airavata_isUserExists_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
-        2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_isUserExists_args';
+    return 'Airavata_getAPIVersion_args';
   }
 
   public function read($input)
@@ -12445,20 +12393,6 @@ class Airavata_isUserExists_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -12471,7 +12405,7 @@ class Airavata_isUserExists_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isUserExists_args');
+    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -12480,16 +12414,6 @@ class Airavata_isUserExists_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -12497,11 +12421,11 @@ class Airavata_isUserExists_args {
 
 }
 
-class Airavata_isUserExists_result {
+class Airavata_getAPIVersion_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var string
    */
   public $success = null;
   /**
@@ -12526,7 +12450,7 @@ class Airavata_isUserExists_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -12570,7 +12494,7 @@ class Airavata_isUserExists_result {
   }
 
   public function getName() {
-    return 'Airavata_isUserExists_result';
+    return 'Airavata_getAPIVersion_result';
   }
 
   public function read($input)
@@ -12589,8 +12513,8 @@ class Airavata_isUserExists_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12639,10 +12563,10 @@ class Airavata_isUserExists_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isUserExists_result');
+    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -12672,7 +12596,7 @@ class Airavata_isUserExists_result {
 
 }
 
-class Airavata_addGateway_args {
+class Airavata_isUserExists_args {
   static $_TSPEC;
 
   /**
@@ -12680,9 +12604,13 @@ class Airavata_addGateway_args {
    */
   public $authzToken = null;
   /**
-   * @var \Airavata\Model\Workspace\Gateway
+   * @var string
    */
-  public $gateway = null;
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12693,9 +12621,12 @@ class Airavata_addGateway_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gateway',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
           ),
         );
     }
@@ -12703,14 +12634,17 @@ class Airavata_addGateway_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gateway'])) {
-        $this->gateway = $vals['gateway'];
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_addGateway_args';
+    return 'Airavata_isUserExists_args';
   }
 
   public function read($input)
@@ -12737,9 +12671,15 @@ class Airavata_addGateway_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->gateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->gateway->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12756,7 +12696,7 @@ class Airavata_addGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_isUserExists_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -12765,12 +12705,14 @@ class Airavata_addGateway_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gateway !== null) {
-      if (!is_object($this->gateway)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 2);
-      $xfer += $this->gateway->write($output);
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -12780,11 +12722,11 @@ class Airavata_addGateway_args {
 
 }
 
-class Airavata_addGateway_result {
+class Airavata_isUserExists_result {
   static $_TSPEC;
 
   /**
-   * @var string
+   * @var bool
    */
   public $success = null;
   /**
@@ -12809,7 +12751,7 @@ class Airavata_addGateway_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -12853,7 +12795,7 @@ class Airavata_addGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_addGateway_result';
+    return 'Airavata_isUserExists_result';
   }
 
   public function read($input)
@@ -12872,8 +12814,8 @@ class Airavata_addGateway_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12922,10 +12864,10 @@ class Airavata_addGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_isUserExists_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -12955,7 +12897,7 @@ class Airavata_addGateway_result {
 
 }
 
-class Airavata_updateGateway_args {
+class Airavata_addGateway_args {
   static $_TSPEC;
 
   /**
@@ -12963,13 +12905,9 @@ class Airavata_updateGateway_args {
    */
   public $authzToken = null;
   /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
    * @var \Airavata\Model\Workspace\Gateway
    */
-  public $updatedGateway = null;
+  public $gateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12980,11 +12918,7 @@ class Airavata_updateGateway_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'updatedGateway',
+          'var' => 'gateway',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Gateway',
           ),
@@ -12994,17 +12928,14 @@ class Airavata_updateGateway_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['updatedGateway'])) {
-        $this->updatedGateway = $vals['updatedGateway'];
+      if (isset($vals['gateway'])) {
+        $this->gateway = $vals['gateway'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_args';
+    return 'Airavata_addGateway_args';
   }
 
   public function read($input)
@@ -13031,16 +12962,9 @@ class Airavata_updateGateway_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
           if ($ftype == TType::STRUCT) {
-            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->updatedGateway->read($input);
+            $this->gateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->gateway->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -13057,7 +12981,7 @@ class Airavata_updateGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13066,17 +12990,12 @@ class Airavata_updateGateway_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedGateway !== null) {
-      if (!is_object($this->updatedGateway)) {
+    if ($this->gateway !== null) {
+      if (!is_object($this->gateway)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 3);
-      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 2);
+      $xfer += $this->gateway->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -13086,10 +13005,14 @@ class Airavata_updateGateway_args {
 
 }
 
-class Airavata_updateGateway_result {
+class Airavata_addGateway_result {
   static $_TSPEC;
 
   /**
+   * @var string
+   */
+  public $success = null;
+  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -13109,6 +13032,10 @@ class Airavata_updateGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -13132,6 +13059,9 @@ class Airavata_updateGateway_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -13148,7 +13078,7 @@ class Airavata_updateGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_result';
+    return 'Airavata_addGateway_result';
   }
 
   public function read($input)
@@ -13166,6 +13096,13 @@ class Airavata_updateGateway_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -13210,7 +13147,12 @@ class Airavata_updateGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -13238,7 +13180,7 @@ class Airavata_updateGateway_result {
 
 }
 
-class Airavata_getGateway_args {
+class Airavata_updateGateway_args {
   static $_TSPEC;
 
   /**
@@ -13249,6 +13191,10 @@ class Airavata_getGateway_args {
    * @var string
    */
   public $gatewayId = null;
+  /**
+   * @var \Airavata\Model\Workspace\Gateway
+   */
+  public $updatedGateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -13262,6 +13208,11 @@ class Airavata_getGateway_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
+        3 => array(
+          'var' => 'updatedGateway',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -13271,11 +13222,14 @@ class Airavata_getGateway_args {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['updatedGateway'])) {
+        $this->updatedGateway = $vals['updatedGateway'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getGateway_args';
+    return 'Airavata_updateGateway_args';
   }
 
   public function read($input)
@@ -13308,6 +13262,14 @@ class Airavata_getGateway_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->updatedGateway->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -13320,7 +13282,7 @@ class Airavata_getGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13334,6 +13296,14 @@ class Airavata_getGateway_args {
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->updatedGateway !== null) {
+      if (!is_object($this->updatedGateway)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 3);
+      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -13341,14 +13311,10 @@ class Airavata_getGateway_args {
 
 }
 
-class Airavata_getGateway_result {
+class Airavata_updateGateway_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Workspace\Gateway
-   */
-  public $success = null;
-  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -13368,11 +13334,6 @@ class Airavata_getGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
-          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -13396,9 +13357,6 @@ class Airavata_getGateway_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -13415,7 +13373,7 @@ class Airavata_getGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_getGateway_result';
+    return 'Airavata_updateGateway_result';
   }
 
   public function read($input)
@@ -13433,14 +13391,6 @@ class Airavata_getGateway_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -13485,15 +13435,7 @@ class Airavata_getGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
-    if ($this->success !== null) {
-      if (!is_object($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
-      $xfer += $this->success->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -13521,7 +13463,7 @@ class Airavata_getGateway_result {
 
 }
 
-class Airavata_deleteGateway_args {
+class Airavata_getGateway_args {
   static $_TSPEC;
 
   /**
@@ -13558,7 +13500,7 @@ class Airavata_deleteGateway_args {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_args';
+    return 'Airavata_getGateway_args';
   }
 
   public function read($input)
@@ -13603,7 +13545,7 @@ class Airavata_deleteGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13624,11 +13566,11 @@ class Airavata_deleteGateway_args {
 
 }
 
-class Airavata_deleteGateway_result {
+class Airavata_getGateway_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var \Airavata\Model\Workspace\Gateway
    */
   public $success = null;
   /**
@@ -13653,7 +13595,8 @@ class Airavata_deleteGateway_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
           ),
         1 => array(
           'var' => 'ire',
@@ -13697,7 +13640,7 @@ class Airavata_deleteGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_result';
+    return 'Airavata_getGateway_result';
   }
 
   public function read($input)
@@ -13716,8 +13659,9 @@ class Airavata_deleteGateway_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -13766,10 +13710,13 @@ class Airavata_deleteGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -13799,13 +13746,17 @@ class Airavata_deleteGateway_result {
 
 }
 
-class Airavata_getAllGateways_args {
+class Airavata_deleteGateway_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -13815,17 +13766,24 @@ class Airavata_getAllGateways_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_args';
+    return 'Airavata_deleteGateway_args';
   }
 
   public function read($input)
@@ -13851,6 +13809,13 @@ class Airavata_getAllGateways_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -13863,7 +13828,7 @@ class Airavata_getAllGateways_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13872,6 +13837,11 @@ class Airavata_getAllGateways_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -13879,11 +13849,11 @@ class Airavata_getAllGateways_args {
 
 }
 
-class Airavata_getAllGateways_result {
+class Airavata_deleteGateway_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Workspace\Gateway[]
+   * @var bool
    */
   public $success = null;
   /**
@@ -13908,12 +13878,7 @@ class Airavata_getAllGateways_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Gateway',
-            ),
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -13957,7 +13922,7 @@ class Airavata_getAllGateways_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_result';
+    return 'Airavata_deleteGateway_result';
   }
 
   public function read($input)
@@ -13976,19 +13941,8 @@ class Airavata_getAllGateways_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
-            $this->success = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
-            {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Workspace\Gateway();
-              $xfer += $elem5->read($input);
-              $this->success []= $elem5;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14037,22 +13991,10 @@ class Airavata_getAllGateways_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->success));
-        {
-          foreach ($this->success as $iter6)
-          {
-            $xfer += $iter6->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14082,17 +14024,13 @@ class Airavata_getAllGateways_result {
 
 }
 
-class Airavata_isGatewayExist_args {
+class Airavata_getAllGateways_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14102,24 +14040,17 @@ class Airavata_isGatewayExist_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
-        2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_args';
+    return 'Airavata_getAllGateways_args';
   }
 
   public function read($input)
@@ -14145,13 +14076,6 @@ class Airavata_isGatewayExist_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14164,7 +14088,7 @@ class Airavata_isGatewayExist_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14173,11 +14097,6 @@ class Airavata_isGatewayExist_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14185,11 +14104,11 @@ class Airavata_isGatewayExist_args {
 
 }
 
-class Airavata_isGatewayExist_result {
+class Airavata_getAllGateways_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var \Airavata\Model\Workspace\Gateway[]
    */
   public $success = null;
   /**
@@ -14214,7 +14133,12 @@ class Airavata_isGatewayExist_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Gateway',
+            ),
           ),
         1 => array(
           'var' => 'ire',
@@ -14258,7 +14182,7 @@ class Airavata_isGatewayExist_result {
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_result';
+    return 'Airavata_getAllGateways_result';
   }
 
   public function read($input)
@@ -14277,8 +14201,19 @@ class Airavata_isGatewayExist_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Workspace\Gateway();
+              $xfer += $elem5->read($input);
+              $this->success []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14327,10 +14262,22 @@ class Airavata_isGatewayExist_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14360,7 +14307,7 @@ class Airavata_isGatewayExist_result {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_args {
+class Airavata_isGatewayExist_args {
   static $_TSPEC;
 
   /**
@@ -14371,10 +14318,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
    * @var string
    */
   public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14388,10 +14331,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
-        3 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
@@ -14401,14 +14340,11 @@ class Airavata_generateAndRegisterSSHKeys_args {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_args';
+    return 'Airavata_isGatewayExist_args';
   }
 
   public function read($input)
@@ -14441,13 +14377,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14460,7 +14389,7 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14474,11 +14403,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14486,11 +14410,11 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_result {
+class Airavata_isGatewayExist_result {
   static $_TSPEC;
 
   /**
-   * @var string
+   * @var bool
    */
   public $success = null;
   /**
@@ -14505,13 +14429,17 @@ class Airavata_generateAndRegisterSSHKeys_result {
    * @var \Airavata\API\Error\AiravataSystemException
    */
   public $ase = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -14528,6 +14456,11 @@ class Airavata_generateAndRegisterSSHKeys_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
+        4 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -14543,11 +14476,14 @@ class Airavata_generateAndRegisterSSHKeys_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_result';
+    return 'Airavata_isGatewayExist_result';
   }
 
   public function read($input)
@@ -14566,8 +14502,8 @@ class Airavata_generateAndRegisterSSHKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14596,6 +14532,14 @@ class Airavata_generateAndRegisterSSHKeys_result {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14608,10 +14552,10 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14629,6 +14573,11 @@ class Airavata_generateAndRegisterSSHKeys_result {
       $xfer += $this->ase->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14636,7 +14585,7 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
 }
 
-class Airavata_getSSHPubKey_args {
+class Airavata_generateAndRegisterSSHKeys_args {
   static $_TSPEC;
 
   /**
@@ -14646,11 +14595,11 @@ class Airavata_getSSHPubKey_args {
   /**
    * @var string
    */
-  public $airavataCredStoreToken = null;
+  public $gatewayId = null;
   /**
    * @var string
    */
-  public $gatewayId = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14661,11 +14610,11 @@ class Airavata_getSSHPubKey_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'airavataCredStoreToken',
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'gatewayId',
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
         );
@@ -14674,17 +14623,17 @@ class Airavata_getSSHPubKey_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['airavataCredStoreToken'])) {
-        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
-      }
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_args';
+    return 'Airavata_generateAndRegisterSSHKeys_args';
   }
 
   public function read($input)
@@ -14712,14 +14661,14 @@ class Airavata_getSSHPubKey_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->airavataCredStoreToken);
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14736,7 +14685,7 @@ class Airavata_getSSHPubKey_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14745,16 +14694,16 @@ class Airavata_getSSHPubKey_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->airavataCredStoreToken !== null) {
-      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
-      $xfer += $output->writeString($this->airavataCredStoreToken);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14762,7 +14711,7 @@ class Airavata_getSSHPubKey_args {
 
 }
 
-class Airavata_getSSHPubKey_result {
+class Airavata_generateAndRegisterSSHKeys_result {
   static $_TSPEC;
 
   /**
@@ -14823,7 +14772,7 @@ class Airavata_getSSHPubKey_result {
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_result';
+    return 'Airavata_generateAndRegisterSSHKeys_result';
   }
 
   public function read($input)
@@ -14884,7 +14833,7 @@ class Airavata_getSSHPubKey_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
     if ($this->success !== null) {
       $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
       $xfer += $output->writeString($this->success);
@@ -14912,7 +14861,7 @@ class Airavata_getSSHPubKey_result {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_args {
+class Airavata_getSSHPubKey_args {
   static $_TSPEC;
 
   /**
@@ -14922,7 +14871,11 @@ class Airavata_getAllUserSSHPubKeys_args {
   /**
    * @var string
    */
-  public $userName = null;
+  public $airavataCredStoreToken = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14933,7 +14886,11 @@ class Airavata_getAllUserSSHPubKeys_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'userName',
+          'var' => 'airavataCredStoreToken',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         );
@@ -14942,14 +14899,17 @@ class Airavata_getAllUserSSHPubKeys_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
+      if (isset($vals['airavataCredStoreToken'])) {
+        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_args';
+    return 'Airavata_getSSHPubKey_args';
   }
 
   public function read($input)
@@ -14977,7 +14937,14 @@ class Airavata_getAllUserSSHPubKeys_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
+            $xfer += $input->readString($this->airavataCredStoreToken);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14994,7 +14961,7 @@ class Airavata_getAllUserSSHPubKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15003,9 +14970,14 @@ class Airavata_getAllUserSSHPubKeys_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
+    if ($this->airavataCredStoreToken !== null) {
+      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
+      $xfer += $output->writeString($this->airavataCredStoreToken);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -15015,11 +14987,11 @@ class Airavata_getAllUserSSHPubKeys_args {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_result {
+class Airavata_getSSHPubKey_result {
   static $_TSPEC;
 
   /**
-   * @var array
+   * @var string
    */
   public $success = null;
   /**
@@ -15040,15 +15012,7 @@ class Airavata_getAllUserSSHPubKeys_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -15084,7 +15048,7 @@ class Airavata_getAllUserSSHPubKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_result';
+    return 'Airavata_getSSHPubKey_result';
   }
 
   public function read($input)
@@ -15103,21 +15067,8 @@ class Airavata_getAllUserSSHPubKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::MAP) {
-            $this->success = array();
-            $_size7 = 0;
-            $_ktype8 = 0;
-            $_vtype9 = 0;
-            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
-            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
-            {
-              $key12 = '';
-              $val13 = '';
-              $xfer += $input->readString($key12);
-              $xfer += $input->readString($val13);
-              $this->success[$key12] = $val13;
-            }
-            $xfer += $input->readMapEnd();
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15158,23 +15109,10 @@ class Airavata_getAllUserSSHPubKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
-        {
-          foreach ($this->success as $kiter14 => $viter15)
-          {
-            $xfer += $output->writeString($kiter14);
-            $xfer += $output->writeString($viter15);
-          }
-        }
-        $output->writeMapEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -15199,7 +15137,7 @@ class Airavata_getAllUserSSHPubKeys_result {
 
 }
 
-class Airavata_getAllGatewaySSHPubKeys_args {
+class Airavata_getAllUserSSHPubKeys_args {
   static $_TSPEC;
 
   /**
@@ -15209,7 +15147,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
   /**
    * @var string
    */
-  public $gatewayId = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -15220,7 +15158,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gatewayId',
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
         );
@@ -15229,14 +15167,14 @@ class Airavata_getAllGatewaySSHPubKeys_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllGatewaySSHPubKeys_args';
+    return 'Airavata_getAllUserSSHPubKeys_args';
   }
 
   public function read($input)
@@ -15264,7 +15202,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15281,7 +15219,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15290,9 +15228,9 @@ class Airavata_getAllGatewaySSHPubKeys_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -15302,7 +15240,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
 
 }
 
-class Airavata_getAllGatewaySSHPubKeys_result {
+class Airavata_getAllUserSSHPubKeys_result {
   static $_TSPEC;
 
   /**
@@ -15371,7 +15309,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllGatewaySSHPubKeys_result';
+    return 'Airavata_getAllUserSSHPubKeys_result';
   }
 
   public function read($input)
@@ -15392,17 +15330,17 @@ class Airavata_getAllGatewaySSHPubKeys_result {
         case 0:
           if ($ftype == TType::MAP) {
             $this->success = array();
-            $_size16 = 0;
-            $_ktype17 = 0;
-            $_vtype18 = 0;
-            $xfer += $input->readMapBegin($_ktype17, $_vtype18, $_size16);
-            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
+            $_size7 = 0;
+            $_ktype8 = 0;
+            $_vtype9 = 0;
+            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
             {
-              $key21 = '';
-              $val22 = '';
-              $xfer += $input->readString($key21);
-              $xfer += $input->readString($val22);
-              $this->success[$key21] = $val22;
+              $key12 = '';
+              $val13 = '';
+              $xfer += $input->readString($key12);
+              $xfer += $input->readString($val13);
+              $this->success[$key12] = $val13;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -15445,7 +15383,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
     if ($this->success !== null) {
       if (!is_array($this->success)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15454,10 +15392,10 @@ class Airavata_getAllGatewaySSHPubKeys_result {
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
         {
-          foreach ($this->success as $kiter23 => $viter24)
+          foreach ($this->success as $kiter14 => $viter15)
           {
-            $xfer += $output->writeString($kiter23);
-            $xfer += $output->writeString($viter24);
+            $xfer += $output->writeString($kiter14);
+            $xfer += $output->writeString($viter15);
           }
         }
         $output->writeMapEnd();
@@ -15486,7 +15424,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
 
 }
 
-class Airavata_deleteSSHPubKey_args {
+class Airavata_getAllGatewaySSHPubKeys_args {
   static $_TSPEC;
 
   /**
@@ -15496,10 +15434,6 @@ class Airavata_deleteSSHPubKey_args {
   /**
    * @var string
    */
-  public $airavataCredStoreToken = null;
-  /**
-   * @var string
-   */
   public $gatewayId = null;
 
   public function __construct($vals=null) {
@@ -15511,10 +15445,6 @@ class Airavata_deleteSSHPubKey_args {
           'class'

<TRUNCATED>

[27/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataReplicaLocationModel.java
deleted file mode 100644
index a17acf0..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataReplicaLocationModel.java
+++ /dev/null
@@ -1,1635 +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.data.product;
-
-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-03-22")
-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");
-
-  private static final org.apache.thrift.protocol.TField REPLICA_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("productUri", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField REPLICA_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaName", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField REPLICA_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaDescription", org.apache.thrift.protocol.TType.STRING, (short)4);
-  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)5);
-  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)6);
-  private static final org.apache.thrift.protocol.TField VALID_UNTIL_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntilTime", org.apache.thrift.protocol.TType.I64, (short)7);
-  private static final org.apache.thrift.protocol.TField REPLICA_LOCATION_CATEGORY_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocationCategory", org.apache.thrift.protocol.TType.I32, (short)8);
-  private static final org.apache.thrift.protocol.TField REPLICA_PERSISTENT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaPersistentType", org.apache.thrift.protocol.TType.I32, (short)9);
-  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)10);
-  private static final org.apache.thrift.protocol.TField FILE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("filePath", org.apache.thrift.protocol.TType.STRING, (short)11);
-  private static final org.apache.thrift.protocol.TField REPLICA_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
-
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new DataReplicaLocationModelStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new DataReplicaLocationModelTupleSchemeFactory());
-  }
-
-  private String replicaId; // optional
-  private String productUri; // optional
-  private String replicaName; // optional
-  private String replicaDescription; // optional
-  private long creationTime; // optional
-  private long lastModifiedTime; // optional
-  private long validUntilTime; // optional
-  private ReplicaLocationCategory replicaLocationCategory; // optional
-  private ReplicaPersistentType replicaPersistentType; // optional
-  private String storageResourceId; // optional
-  private String filePath; // optional
-  private Map<String,String> replicaMetadata; // 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 {
-    REPLICA_ID((short)1, "replicaId"),
-    PRODUCT_URI((short)2, "productUri"),
-    REPLICA_NAME((short)3, "replicaName"),
-    REPLICA_DESCRIPTION((short)4, "replicaDescription"),
-    CREATION_TIME((short)5, "creationTime"),
-    LAST_MODIFIED_TIME((short)6, "lastModifiedTime"),
-    VALID_UNTIL_TIME((short)7, "validUntilTime"),
-    /**
-     * 
-     * @see ReplicaLocationCategory
-     */
-    REPLICA_LOCATION_CATEGORY((short)8, "replicaLocationCategory"),
-    /**
-     * 
-     * @see ReplicaPersistentType
-     */
-    REPLICA_PERSISTENT_TYPE((short)9, "replicaPersistentType"),
-    STORAGE_RESOURCE_ID((short)10, "storageResourceId"),
-    FILE_PATH((short)11, "filePath"),
-    REPLICA_METADATA((short)12, "replicaMetadata");
-
-    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: // REPLICA_ID
-          return REPLICA_ID;
-        case 2: // PRODUCT_URI
-          return PRODUCT_URI;
-        case 3: // REPLICA_NAME
-          return REPLICA_NAME;
-        case 4: // REPLICA_DESCRIPTION
-          return REPLICA_DESCRIPTION;
-        case 5: // CREATION_TIME
-          return CREATION_TIME;
-        case 6: // LAST_MODIFIED_TIME
-          return LAST_MODIFIED_TIME;
-        case 7: // VALID_UNTIL_TIME
-          return VALID_UNTIL_TIME;
-        case 8: // REPLICA_LOCATION_CATEGORY
-          return REPLICA_LOCATION_CATEGORY;
-        case 9: // REPLICA_PERSISTENT_TYPE
-          return REPLICA_PERSISTENT_TYPE;
-        case 10: // STORAGE_RESOURCE_ID
-          return STORAGE_RESOURCE_ID;
-        case 11: // FILE_PATH
-          return FILE_PATH;
-        case 12: // REPLICA_METADATA
-          return REPLICA_METADATA;
-        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 __CREATIONTIME_ISSET_ID = 0;
-  private static final int __LASTMODIFIEDTIME_ISSET_ID = 1;
-  private static final int __VALIDUNTILTIME_ISSET_ID = 2;
-  private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.REPLICA_ID,_Fields.PRODUCT_URI,_Fields.REPLICA_NAME,_Fields.REPLICA_DESCRIPTION,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.VALID_UNTIL_TIME,_Fields.REPLICA_LOCATION_CATEGORY,_Fields.REPLICA_PERSISTENT_TYPE,_Fields.STORAGE_RESOURCE_ID,_Fields.FILE_PATH,_Fields.REPLICA_METADATA};
-  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.REPLICA_ID, new org.apache.thrift.meta_data.FieldMetaData("replicaId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("productUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.REPLICA_NAME, new org.apache.thrift.meta_data.FieldMetaData("replicaName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.REPLICA_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("replicaDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    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)));
-    tmpMap.put(_Fields.LAST_MODIFIED_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastModifiedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.VALID_UNTIL_TIME, new org.apache.thrift.meta_data.FieldMetaData("validUntilTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.REPLICA_LOCATION_CATEGORY, new org.apache.thrift.meta_data.FieldMetaData("replicaLocationCategory", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaLocationCategory.class)));
-    tmpMap.put(_Fields.REPLICA_PERSISTENT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("replicaPersistentType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaPersistentType.class)));
-    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.REPLICA_METADATA, new org.apache.thrift.meta_data.FieldMetaData("replicaMetadata", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataReplicaLocationModel.class, metaDataMap);
-  }
-
-  public DataReplicaLocationModel() {
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public DataReplicaLocationModel(DataReplicaLocationModel other) {
-    __isset_bitfield = other.__isset_bitfield;
-    if (other.isSetReplicaId()) {
-      this.replicaId = other.replicaId;
-    }
-    if (other.isSetProductUri()) {
-      this.productUri = other.productUri;
-    }
-    if (other.isSetReplicaName()) {
-      this.replicaName = other.replicaName;
-    }
-    if (other.isSetReplicaDescription()) {
-      this.replicaDescription = other.replicaDescription;
-    }
-    this.creationTime = other.creationTime;
-    this.lastModifiedTime = other.lastModifiedTime;
-    this.validUntilTime = other.validUntilTime;
-    if (other.isSetReplicaLocationCategory()) {
-      this.replicaLocationCategory = other.replicaLocationCategory;
-    }
-    if (other.isSetReplicaPersistentType()) {
-      this.replicaPersistentType = other.replicaPersistentType;
-    }
-    if (other.isSetStorageResourceId()) {
-      this.storageResourceId = other.storageResourceId;
-    }
-    if (other.isSetFilePath()) {
-      this.filePath = other.filePath;
-    }
-    if (other.isSetReplicaMetadata()) {
-      Map<String,String> __this__replicaMetadata = new HashMap<String,String>(other.replicaMetadata);
-      this.replicaMetadata = __this__replicaMetadata;
-    }
-  }
-
-  public DataReplicaLocationModel deepCopy() {
-    return new DataReplicaLocationModel(this);
-  }
-
-  @Override
-  public void clear() {
-    this.replicaId = null;
-    this.productUri = null;
-    this.replicaName = null;
-    this.replicaDescription = null;
-    setCreationTimeIsSet(false);
-    this.creationTime = 0;
-    setLastModifiedTimeIsSet(false);
-    this.lastModifiedTime = 0;
-    setValidUntilTimeIsSet(false);
-    this.validUntilTime = 0;
-    this.replicaLocationCategory = null;
-    this.replicaPersistentType = null;
-    this.storageResourceId = null;
-    this.filePath = null;
-    this.replicaMetadata = null;
-  }
-
-  public String getReplicaId() {
-    return this.replicaId;
-  }
-
-  public void setReplicaId(String replicaId) {
-    this.replicaId = replicaId;
-  }
-
-  public void unsetReplicaId() {
-    this.replicaId = null;
-  }
-
-  /** Returns true if field replicaId is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaId() {
-    return this.replicaId != null;
-  }
-
-  public void setReplicaIdIsSet(boolean value) {
-    if (!value) {
-      this.replicaId = null;
-    }
-  }
-
-  public String getProductUri() {
-    return this.productUri;
-  }
-
-  public void setProductUri(String productUri) {
-    this.productUri = productUri;
-  }
-
-  public void unsetProductUri() {
-    this.productUri = null;
-  }
-
-  /** Returns true if field productUri is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductUri() {
-    return this.productUri != null;
-  }
-
-  public void setProductUriIsSet(boolean value) {
-    if (!value) {
-      this.productUri = null;
-    }
-  }
-
-  public String getReplicaName() {
-    return this.replicaName;
-  }
-
-  public void setReplicaName(String replicaName) {
-    this.replicaName = replicaName;
-  }
-
-  public void unsetReplicaName() {
-    this.replicaName = null;
-  }
-
-  /** Returns true if field replicaName is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaName() {
-    return this.replicaName != null;
-  }
-
-  public void setReplicaNameIsSet(boolean value) {
-    if (!value) {
-      this.replicaName = null;
-    }
-  }
-
-  public String getReplicaDescription() {
-    return this.replicaDescription;
-  }
-
-  public void setReplicaDescription(String replicaDescription) {
-    this.replicaDescription = replicaDescription;
-  }
-
-  public void unsetReplicaDescription() {
-    this.replicaDescription = null;
-  }
-
-  /** Returns true if field replicaDescription is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaDescription() {
-    return this.replicaDescription != null;
-  }
-
-  public void setReplicaDescriptionIsSet(boolean value) {
-    if (!value) {
-      this.replicaDescription = null;
-    }
-  }
-
-  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 long getLastModifiedTime() {
-    return this.lastModifiedTime;
-  }
-
-  public void setLastModifiedTime(long lastModifiedTime) {
-    this.lastModifiedTime = lastModifiedTime;
-    setLastModifiedTimeIsSet(true);
-  }
-
-  public void unsetLastModifiedTime() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
-  }
-
-  /** Returns true if field lastModifiedTime is set (has been assigned a value) and false otherwise */
-  public boolean isSetLastModifiedTime() {
-    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
-  }
-
-  public void setLastModifiedTimeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID, value);
-  }
-
-  public long getValidUntilTime() {
-    return this.validUntilTime;
-  }
-
-  public void setValidUntilTime(long validUntilTime) {
-    this.validUntilTime = validUntilTime;
-    setValidUntilTimeIsSet(true);
-  }
-
-  public void unsetValidUntilTime() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
-  }
-
-  /** Returns true if field validUntilTime is set (has been assigned a value) and false otherwise */
-  public boolean isSetValidUntilTime() {
-    return EncodingUtils.testBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
-  }
-
-  public void setValidUntilTimeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID, value);
-  }
-
-  /**
-   * 
-   * @see ReplicaLocationCategory
-   */
-  public ReplicaLocationCategory getReplicaLocationCategory() {
-    return this.replicaLocationCategory;
-  }
-
-  /**
-   * 
-   * @see ReplicaLocationCategory
-   */
-  public void setReplicaLocationCategory(ReplicaLocationCategory replicaLocationCategory) {
-    this.replicaLocationCategory = replicaLocationCategory;
-  }
-
-  public void unsetReplicaLocationCategory() {
-    this.replicaLocationCategory = null;
-  }
-
-  /** Returns true if field replicaLocationCategory is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaLocationCategory() {
-    return this.replicaLocationCategory != null;
-  }
-
-  public void setReplicaLocationCategoryIsSet(boolean value) {
-    if (!value) {
-      this.replicaLocationCategory = null;
-    }
-  }
-
-  /**
-   * 
-   * @see ReplicaPersistentType
-   */
-  public ReplicaPersistentType getReplicaPersistentType() {
-    return this.replicaPersistentType;
-  }
-
-  /**
-   * 
-   * @see ReplicaPersistentType
-   */
-  public void setReplicaPersistentType(ReplicaPersistentType replicaPersistentType) {
-    this.replicaPersistentType = replicaPersistentType;
-  }
-
-  public void unsetReplicaPersistentType() {
-    this.replicaPersistentType = null;
-  }
-
-  /** Returns true if field replicaPersistentType is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaPersistentType() {
-    return this.replicaPersistentType != null;
-  }
-
-  public void setReplicaPersistentTypeIsSet(boolean value) {
-    if (!value) {
-      this.replicaPersistentType = null;
-    }
-  }
-
-  public String getStorageResourceId() {
-    return this.storageResourceId;
-  }
-
-  public void setStorageResourceId(String storageResourceId) {
-    this.storageResourceId = storageResourceId;
-  }
-
-  public void unsetStorageResourceId() {
-    this.storageResourceId = null;
-  }
-
-  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
-  public boolean isSetStorageResourceId() {
-    return this.storageResourceId != null;
-  }
-
-  public void setStorageResourceIdIsSet(boolean value) {
-    if (!value) {
-      this.storageResourceId = null;
-    }
-  }
-
-  public String getFilePath() {
-    return this.filePath;
-  }
-
-  public void setFilePath(String filePath) {
-    this.filePath = filePath;
-  }
-
-  public void unsetFilePath() {
-    this.filePath = null;
-  }
-
-  /** Returns true if field filePath is set (has been assigned a value) and false otherwise */
-  public boolean isSetFilePath() {
-    return this.filePath != null;
-  }
-
-  public void setFilePathIsSet(boolean value) {
-    if (!value) {
-      this.filePath = null;
-    }
-  }
-
-  public int getReplicaMetadataSize() {
-    return (this.replicaMetadata == null) ? 0 : this.replicaMetadata.size();
-  }
-
-  public void putToReplicaMetadata(String key, String val) {
-    if (this.replicaMetadata == null) {
-      this.replicaMetadata = new HashMap<String,String>();
-    }
-    this.replicaMetadata.put(key, val);
-  }
-
-  public Map<String,String> getReplicaMetadata() {
-    return this.replicaMetadata;
-  }
-
-  public void setReplicaMetadata(Map<String,String> replicaMetadata) {
-    this.replicaMetadata = replicaMetadata;
-  }
-
-  public void unsetReplicaMetadata() {
-    this.replicaMetadata = null;
-  }
-
-  /** Returns true if field replicaMetadata is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaMetadata() {
-    return this.replicaMetadata != null;
-  }
-
-  public void setReplicaMetadataIsSet(boolean value) {
-    if (!value) {
-      this.replicaMetadata = null;
-    }
-  }
-
-  public void setFieldValue(_Fields field, Object value) {
-    switch (field) {
-    case REPLICA_ID:
-      if (value == null) {
-        unsetReplicaId();
-      } else {
-        setReplicaId((String)value);
-      }
-      break;
-
-    case PRODUCT_URI:
-      if (value == null) {
-        unsetProductUri();
-      } else {
-        setProductUri((String)value);
-      }
-      break;
-
-    case REPLICA_NAME:
-      if (value == null) {
-        unsetReplicaName();
-      } else {
-        setReplicaName((String)value);
-      }
-      break;
-
-    case REPLICA_DESCRIPTION:
-      if (value == null) {
-        unsetReplicaDescription();
-      } else {
-        setReplicaDescription((String)value);
-      }
-      break;
-
-    case CREATION_TIME:
-      if (value == null) {
-        unsetCreationTime();
-      } else {
-        setCreationTime((Long)value);
-      }
-      break;
-
-    case LAST_MODIFIED_TIME:
-      if (value == null) {
-        unsetLastModifiedTime();
-      } else {
-        setLastModifiedTime((Long)value);
-      }
-      break;
-
-    case VALID_UNTIL_TIME:
-      if (value == null) {
-        unsetValidUntilTime();
-      } else {
-        setValidUntilTime((Long)value);
-      }
-      break;
-
-    case REPLICA_LOCATION_CATEGORY:
-      if (value == null) {
-        unsetReplicaLocationCategory();
-      } else {
-        setReplicaLocationCategory((ReplicaLocationCategory)value);
-      }
-      break;
-
-    case REPLICA_PERSISTENT_TYPE:
-      if (value == null) {
-        unsetReplicaPersistentType();
-      } else {
-        setReplicaPersistentType((ReplicaPersistentType)value);
-      }
-      break;
-
-    case STORAGE_RESOURCE_ID:
-      if (value == null) {
-        unsetStorageResourceId();
-      } else {
-        setStorageResourceId((String)value);
-      }
-      break;
-
-    case FILE_PATH:
-      if (value == null) {
-        unsetFilePath();
-      } else {
-        setFilePath((String)value);
-      }
-      break;
-
-    case REPLICA_METADATA:
-      if (value == null) {
-        unsetReplicaMetadata();
-      } else {
-        setReplicaMetadata((Map<String,String>)value);
-      }
-      break;
-
-    }
-  }
-
-  public Object getFieldValue(_Fields field) {
-    switch (field) {
-    case REPLICA_ID:
-      return getReplicaId();
-
-    case PRODUCT_URI:
-      return getProductUri();
-
-    case REPLICA_NAME:
-      return getReplicaName();
-
-    case REPLICA_DESCRIPTION:
-      return getReplicaDescription();
-
-    case CREATION_TIME:
-      return getCreationTime();
-
-    case LAST_MODIFIED_TIME:
-      return getLastModifiedTime();
-
-    case VALID_UNTIL_TIME:
-      return getValidUntilTime();
-
-    case REPLICA_LOCATION_CATEGORY:
-      return getReplicaLocationCategory();
-
-    case REPLICA_PERSISTENT_TYPE:
-      return getReplicaPersistentType();
-
-    case STORAGE_RESOURCE_ID:
-      return getStorageResourceId();
-
-    case FILE_PATH:
-      return getFilePath();
-
-    case REPLICA_METADATA:
-      return getReplicaMetadata();
-
-    }
-    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 REPLICA_ID:
-      return isSetReplicaId();
-    case PRODUCT_URI:
-      return isSetProductUri();
-    case REPLICA_NAME:
-      return isSetReplicaName();
-    case REPLICA_DESCRIPTION:
-      return isSetReplicaDescription();
-    case CREATION_TIME:
-      return isSetCreationTime();
-    case LAST_MODIFIED_TIME:
-      return isSetLastModifiedTime();
-    case VALID_UNTIL_TIME:
-      return isSetValidUntilTime();
-    case REPLICA_LOCATION_CATEGORY:
-      return isSetReplicaLocationCategory();
-    case REPLICA_PERSISTENT_TYPE:
-      return isSetReplicaPersistentType();
-    case STORAGE_RESOURCE_ID:
-      return isSetStorageResourceId();
-    case FILE_PATH:
-      return isSetFilePath();
-    case REPLICA_METADATA:
-      return isSetReplicaMetadata();
-    }
-    throw new IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof DataReplicaLocationModel)
-      return this.equals((DataReplicaLocationModel)that);
-    return false;
-  }
-
-  public boolean equals(DataReplicaLocationModel that) {
-    if (that == null)
-      return false;
-
-    boolean this_present_replicaId = true && this.isSetReplicaId();
-    boolean that_present_replicaId = true && that.isSetReplicaId();
-    if (this_present_replicaId || that_present_replicaId) {
-      if (!(this_present_replicaId && that_present_replicaId))
-        return false;
-      if (!this.replicaId.equals(that.replicaId))
-        return false;
-    }
-
-    boolean this_present_productUri = true && this.isSetProductUri();
-    boolean that_present_productUri = true && that.isSetProductUri();
-    if (this_present_productUri || that_present_productUri) {
-      if (!(this_present_productUri && that_present_productUri))
-        return false;
-      if (!this.productUri.equals(that.productUri))
-        return false;
-    }
-
-    boolean this_present_replicaName = true && this.isSetReplicaName();
-    boolean that_present_replicaName = true && that.isSetReplicaName();
-    if (this_present_replicaName || that_present_replicaName) {
-      if (!(this_present_replicaName && that_present_replicaName))
-        return false;
-      if (!this.replicaName.equals(that.replicaName))
-        return false;
-    }
-
-    boolean this_present_replicaDescription = true && this.isSetReplicaDescription();
-    boolean that_present_replicaDescription = true && that.isSetReplicaDescription();
-    if (this_present_replicaDescription || that_present_replicaDescription) {
-      if (!(this_present_replicaDescription && that_present_replicaDescription))
-        return false;
-      if (!this.replicaDescription.equals(that.replicaDescription))
-        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;
-    }
-
-    boolean this_present_lastModifiedTime = true && this.isSetLastModifiedTime();
-    boolean that_present_lastModifiedTime = true && that.isSetLastModifiedTime();
-    if (this_present_lastModifiedTime || that_present_lastModifiedTime) {
-      if (!(this_present_lastModifiedTime && that_present_lastModifiedTime))
-        return false;
-      if (this.lastModifiedTime != that.lastModifiedTime)
-        return false;
-    }
-
-    boolean this_present_validUntilTime = true && this.isSetValidUntilTime();
-    boolean that_present_validUntilTime = true && that.isSetValidUntilTime();
-    if (this_present_validUntilTime || that_present_validUntilTime) {
-      if (!(this_present_validUntilTime && that_present_validUntilTime))
-        return false;
-      if (this.validUntilTime != that.validUntilTime)
-        return false;
-    }
-
-    boolean this_present_replicaLocationCategory = true && this.isSetReplicaLocationCategory();
-    boolean that_present_replicaLocationCategory = true && that.isSetReplicaLocationCategory();
-    if (this_present_replicaLocationCategory || that_present_replicaLocationCategory) {
-      if (!(this_present_replicaLocationCategory && that_present_replicaLocationCategory))
-        return false;
-      if (!this.replicaLocationCategory.equals(that.replicaLocationCategory))
-        return false;
-    }
-
-    boolean this_present_replicaPersistentType = true && this.isSetReplicaPersistentType();
-    boolean that_present_replicaPersistentType = true && that.isSetReplicaPersistentType();
-    if (this_present_replicaPersistentType || that_present_replicaPersistentType) {
-      if (!(this_present_replicaPersistentType && that_present_replicaPersistentType))
-        return false;
-      if (!this.replicaPersistentType.equals(that.replicaPersistentType))
-        return false;
-    }
-
-    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
-    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
-    if (this_present_storageResourceId || that_present_storageResourceId) {
-      if (!(this_present_storageResourceId && that_present_storageResourceId))
-        return false;
-      if (!this.storageResourceId.equals(that.storageResourceId))
-        return false;
-    }
-
-    boolean this_present_filePath = true && this.isSetFilePath();
-    boolean that_present_filePath = true && that.isSetFilePath();
-    if (this_present_filePath || that_present_filePath) {
-      if (!(this_present_filePath && that_present_filePath))
-        return false;
-      if (!this.filePath.equals(that.filePath))
-        return false;
-    }
-
-    boolean this_present_replicaMetadata = true && this.isSetReplicaMetadata();
-    boolean that_present_replicaMetadata = true && that.isSetReplicaMetadata();
-    if (this_present_replicaMetadata || that_present_replicaMetadata) {
-      if (!(this_present_replicaMetadata && that_present_replicaMetadata))
-        return false;
-      if (!this.replicaMetadata.equals(that.replicaMetadata))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_replicaId = true && (isSetReplicaId());
-    list.add(present_replicaId);
-    if (present_replicaId)
-      list.add(replicaId);
-
-    boolean present_productUri = true && (isSetProductUri());
-    list.add(present_productUri);
-    if (present_productUri)
-      list.add(productUri);
-
-    boolean present_replicaName = true && (isSetReplicaName());
-    list.add(present_replicaName);
-    if (present_replicaName)
-      list.add(replicaName);
-
-    boolean present_replicaDescription = true && (isSetReplicaDescription());
-    list.add(present_replicaDescription);
-    if (present_replicaDescription)
-      list.add(replicaDescription);
-
-    boolean present_creationTime = true && (isSetCreationTime());
-    list.add(present_creationTime);
-    if (present_creationTime)
-      list.add(creationTime);
-
-    boolean present_lastModifiedTime = true && (isSetLastModifiedTime());
-    list.add(present_lastModifiedTime);
-    if (present_lastModifiedTime)
-      list.add(lastModifiedTime);
-
-    boolean present_validUntilTime = true && (isSetValidUntilTime());
-    list.add(present_validUntilTime);
-    if (present_validUntilTime)
-      list.add(validUntilTime);
-
-    boolean present_replicaLocationCategory = true && (isSetReplicaLocationCategory());
-    list.add(present_replicaLocationCategory);
-    if (present_replicaLocationCategory)
-      list.add(replicaLocationCategory.getValue());
-
-    boolean present_replicaPersistentType = true && (isSetReplicaPersistentType());
-    list.add(present_replicaPersistentType);
-    if (present_replicaPersistentType)
-      list.add(replicaPersistentType.getValue());
-
-    boolean present_storageResourceId = true && (isSetStorageResourceId());
-    list.add(present_storageResourceId);
-    if (present_storageResourceId)
-      list.add(storageResourceId);
-
-    boolean present_filePath = true && (isSetFilePath());
-    list.add(present_filePath);
-    if (present_filePath)
-      list.add(filePath);
-
-    boolean present_replicaMetadata = true && (isSetReplicaMetadata());
-    list.add(present_replicaMetadata);
-    if (present_replicaMetadata)
-      list.add(replicaMetadata);
-
-    return list.hashCode();
-  }
-
-  @Override
-  public int compareTo(DataReplicaLocationModel other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = Boolean.valueOf(isSetReplicaId()).compareTo(other.isSetReplicaId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaId, other.replicaId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetProductUri()).compareTo(other.isSetProductUri());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductUri()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productUri, other.productUri);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaName()).compareTo(other.isSetReplicaName());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaName, other.replicaName);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaDescription()).compareTo(other.isSetReplicaDescription());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaDescription()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaDescription, other.replicaDescription);
-      if (lastComparison != 0) {
-        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;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetLastModifiedTime()).compareTo(other.isSetLastModifiedTime());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetLastModifiedTime()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastModifiedTime, other.lastModifiedTime);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetValidUntilTime()).compareTo(other.isSetValidUntilTime());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetValidUntilTime()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validUntilTime, other.validUntilTime);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaLocationCategory()).compareTo(other.isSetReplicaLocationCategory());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaLocationCategory()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaLocationCategory, other.replicaLocationCategory);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaPersistentType()).compareTo(other.isSetReplicaPersistentType());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaPersistentType()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaPersistentType, other.replicaPersistentType);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetStorageResourceId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetFilePath()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaMetadata()).compareTo(other.isSetReplicaMetadata());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaMetadata()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaMetadata, other.replicaMetadata);
-      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("DataReplicaLocationModel(");
-    boolean first = true;
-
-    if (isSetReplicaId()) {
-      sb.append("replicaId:");
-      if (this.replicaId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaId);
-      }
-      first = false;
-    }
-    if (isSetProductUri()) {
-      if (!first) sb.append(", ");
-      sb.append("productUri:");
-      if (this.productUri == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.productUri);
-      }
-      first = false;
-    }
-    if (isSetReplicaName()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaName:");
-      if (this.replicaName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaName);
-      }
-      first = false;
-    }
-    if (isSetReplicaDescription()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaDescription:");
-      if (this.replicaDescription == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaDescription);
-      }
-      first = false;
-    }
-    if (isSetCreationTime()) {
-      if (!first) sb.append(", ");
-      sb.append("creationTime:");
-      sb.append(this.creationTime);
-      first = false;
-    }
-    if (isSetLastModifiedTime()) {
-      if (!first) sb.append(", ");
-      sb.append("lastModifiedTime:");
-      sb.append(this.lastModifiedTime);
-      first = false;
-    }
-    if (isSetValidUntilTime()) {
-      if (!first) sb.append(", ");
-      sb.append("validUntilTime:");
-      sb.append(this.validUntilTime);
-      first = false;
-    }
-    if (isSetReplicaLocationCategory()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaLocationCategory:");
-      if (this.replicaLocationCategory == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaLocationCategory);
-      }
-      first = false;
-    }
-    if (isSetReplicaPersistentType()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaPersistentType:");
-      if (this.replicaPersistentType == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaPersistentType);
-      }
-      first = false;
-    }
-    if (isSetStorageResourceId()) {
-      if (!first) sb.append(", ");
-      sb.append("storageResourceId:");
-      if (this.storageResourceId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.storageResourceId);
-      }
-      first = false;
-    }
-    if (isSetFilePath()) {
-      if (!first) sb.append(", ");
-      sb.append("filePath:");
-      if (this.filePath == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.filePath);
-      }
-      first = false;
-    }
-    if (isSetReplicaMetadata()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaMetadata:");
-      if (this.replicaMetadata == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaMetadata);
-      }
-      first = false;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    // 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 DataReplicaLocationModelStandardSchemeFactory implements SchemeFactory {
-    public DataReplicaLocationModelStandardScheme getScheme() {
-      return new DataReplicaLocationModelStandardScheme();
-    }
-  }
-
-  private static class DataReplicaLocationModelStandardScheme extends StandardScheme<DataReplicaLocationModel> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, DataReplicaLocationModel 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: // REPLICA_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.replicaId = iprot.readString();
-              struct.setReplicaIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 2: // PRODUCT_URI
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.productUri = iprot.readString();
-              struct.setProductUriIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 3: // REPLICA_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.replicaName = iprot.readString();
-              struct.setReplicaNameIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // REPLICA_DESCRIPTION
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.replicaDescription = iprot.readString();
-              struct.setReplicaDescriptionIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 5: // 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;
-          case 6: // LAST_MODIFIED_TIME
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.lastModifiedTime = iprot.readI64();
-              struct.setLastModifiedTimeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 7: // VALID_UNTIL_TIME
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.validUntilTime = iprot.readI64();
-              struct.setValidUntilTimeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 8: // REPLICA_LOCATION_CATEGORY
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.replicaLocationCategory = org.apache.airavata.model.data.product.ReplicaLocationCategory.findByValue(iprot.readI32());
-              struct.setReplicaLocationCategoryIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 9: // REPLICA_PERSISTENT_TYPE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.replicaPersistentType = org.apache.airavata.model.data.product.ReplicaPersistentType.findByValue(iprot.readI32());
-              struct.setReplicaPersistentTypeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 10: // STORAGE_RESOURCE_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.storageResourceId = iprot.readString();
-              struct.setStorageResourceIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 11: // FILE_PATH
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.filePath = iprot.readString();
-              struct.setFilePathIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 12: // REPLICA_METADATA
-            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
-              {
-                org.apache.thrift.protocol.TMap _map26 = iprot.readMapBegin();
-                struct.replicaMetadata = new HashMap<String,String>(2*_map26.size);
-                String _key27;
-                String _val28;
-                for (int _i29 = 0; _i29 < _map26.size; ++_i29)
-                {
-                  _key27 = iprot.readString();
-                  _val28 = iprot.readString();
-                  struct.replicaMetadata.put(_key27, _val28);
-                }
-                iprot.readMapEnd();
-              }
-              struct.setReplicaMetadataIsSet(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, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.replicaId != null) {
-        if (struct.isSetReplicaId()) {
-          oprot.writeFieldBegin(REPLICA_ID_FIELD_DESC);
-          oprot.writeString(struct.replicaId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.productUri != null) {
-        if (struct.isSetProductUri()) {
-          oprot.writeFieldBegin(PRODUCT_URI_FIELD_DESC);
-          oprot.writeString(struct.productUri);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.replicaName != null) {
-        if (struct.isSetReplicaName()) {
-          oprot.writeFieldBegin(REPLICA_NAME_FIELD_DESC);
-          oprot.writeString(struct.replicaName);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.replicaDescription != null) {
-        if (struct.isSetReplicaDescription()) {
-          oprot.writeFieldBegin(REPLICA_DESCRIPTION_FIELD_DESC);
-          oprot.writeString(struct.replicaDescription);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.isSetCreationTime()) {
-        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
-        oprot.writeI64(struct.creationTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetLastModifiedTime()) {
-        oprot.writeFieldBegin(LAST_MODIFIED_TIME_FIELD_DESC);
-        oprot.writeI64(struct.lastModifiedTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetValidUntilTime()) {
-        oprot.writeFieldBegin(VALID_UNTIL_TIME_FIELD_DESC);
-        oprot.writeI64(struct.validUntilTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.replicaLocationCategory != null) {
-        if (struct.isSetReplicaLocationCategory()) {
-          oprot.writeFieldBegin(REPLICA_LOCATION_CATEGORY_FIELD_DESC);
-          oprot.writeI32(struct.replicaLocationCategory.getValue());
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.replicaPersistentType != null) {
-        if (struct.isSetReplicaPersistentType()) {
-          oprot.writeFieldBegin(REPLICA_PERSISTENT_TYPE_FIELD_DESC);
-          oprot.writeI32(struct.replicaPersistentType.getValue());
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.storageResourceId != null) {
-        if (struct.isSetStorageResourceId()) {
-          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
-          oprot.writeString(struct.storageResourceId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.filePath != null) {
-        if (struct.isSetFilePath()) {
-          oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
-          oprot.writeString(struct.filePath);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.replicaMetadata != null) {
-        if (struct.isSetReplicaMetadata()) {
-          oprot.writeFieldBegin(REPLICA_METADATA_FIELD_DESC);
-          {
-            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.replicaMetadata.size()));
-            for (Map.Entry<String, String> _iter30 : struct.replicaMetadata.entrySet())
-            {
-              oprot.writeString(_iter30.getKey());
-              oprot.writeString(_iter30.getValue());
-            }
-            oprot.writeMapEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class DataReplicaLocationModelTupleSchemeFactory implements SchemeFactory {
-    public DataReplicaLocationModelTupleScheme getScheme() {
-      return new DataReplicaLocationModelTupleScheme();
-    }
-  }
-
-  private static class DataReplicaLocationModelTupleScheme extends TupleScheme<DataReplicaLocationModel> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
-      if (struct.isSetReplicaId()) {
-        optionals.set(0);
-      }
-      if (struct.isSetProductUri()) {
-        optionals.set(1);
-      }
-      if (struct.isSetReplicaName()) {
-        optionals.set(2);
-      }
-      if (struct.isSetReplicaDescription()) {
-        optionals.set(3);
-      }
-      if (struct.isSetCreationTime()) {
-        optionals.set(4);
-      }
-      if (struct.isSetLastModifiedTime()) {
-        optionals.set(5);
-      }
-      if (struct.isSetValidUntilTime()) {
-        optionals.set(6);
-      }
-      if (struct.isSetReplicaLocationCategory()) {
-        optionals.set(7);
-      }
-      if (struct.isSetReplicaPersistentType()) {
-        optionals.set(8);
-      }
-      if (struct.isSetStorageResourceId()) {
-        optionals.set(9);
-      }
-      if (struct.isSetFilePath()) {
-        optionals.set(10);
-      }
-      if (struct.isSetReplicaMetadata()) {
-        optionals.set(11);
-      }
-      oprot.writeBitSet(optionals, 12);
-      if (struct.isSetReplicaId()) {
-        oprot.writeString(struct.replicaId);
-      }
-      if (struct.isSetProductUri()) {
-        oprot.writeString(struct.productUri);
-      }
-      if (struct.isSetReplicaName()) {
-        oprot.writeString(struct.replicaName);
-      }
-      if (struct.isSetReplicaDescription()) {
-        oprot.writeString(struct.replicaDescription);
-      }
-      if (struct.isSetCreationTime()) {
-        oprot.writeI64(struct.creationTime);
-      }
-      if (struct.isSetLastModifiedTime()) {
-        oprot.writeI64(struct.lastModifiedTime);
-      }
-      if (struct.isSetValidUntilTime()) {
-        oprot.writeI64(struct.validUntilTime);
-      }
-      if (struct.isSetReplicaLocationCategory()) {
-        oprot.writeI32(struct.replicaLocationCategory.getValue());
-      }
-      if (struct.isSetReplicaPersistentType()) {
-        oprot.writeI32(struct.replicaPersistentType.getValue());
-      }
-      if (struct.isSetStorageResourceId()) {
-        oprot.writeString(struct.storageResourceId);
-      }
-      if (struct.isSetFilePath()) {
-        oprot.writeString(struct.filePath);
-      }
-      if (struct.isSetReplicaMetadata()) {
-        {
-          oprot.writeI32(struct.replicaMetadata.size());
-          for (Map.Entry<String, String> _iter31 : struct.replicaMetadata.entrySet())
-          {
-            oprot.writeString(_iter31.getKey());
-            oprot.writeString(_iter31.getValue());
-          }
-        }
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(12);
-      if (incoming.get(0)) {
-        struct.replicaId = iprot.readString();
-        struct.setReplicaIdIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.productUri = iprot.readString();
-        struct.setProductUriIsSet(true);
-      }
-      if (incoming.get(2)) {
-        struct.replicaName = iprot.readString();
-        struct.setReplicaNameIsSet(true);
-      }
-      if (incoming.get(3)) {
-        struct.replicaDescription = iprot.readString();
-        struct.setReplicaDescriptionIsSet(true);
-      }
-      if (incoming.get(4)) {
-        struct.creationTime = iprot.readI64();
-        struct.setCreationTimeIsSet(true);
-      }
-      if (incoming.get(5)) {
-        struct.lastModifiedTime = iprot.readI64();
-        struct.setLastModifiedTimeIsSet(true);
-      }
-      if (incoming.get(6)) {
-        struct.validUntilTime = iprot.readI64();
-        struct.setValidUntilTimeIsSet(true);
-      }
-      if (incoming.get(7)) {
-        struct.replicaLocationCategory = org.apache.airavata.model.data.product.ReplicaLocationCategory.findByValue(iprot.readI32());
-        struct.setReplicaLocationCategoryIsSet(true);
-      }
-      if (incoming.get(8)) {
-        struct.replicaPersistentType = org.apache.airavata.model.data.product.ReplicaPersistentType.findByValue(iprot.readI32());
-        struct.setReplicaPersistentTypeIsSet(true);
-      }
-      if (incoming.get(9)) {
-        struct.storageResourceId = iprot.readString();
-        struct.setStorageResourceIdIsSet(true);
-      }
-      if (incoming.get(10)) {
-        struct.filePath = iprot.readString();
-        struct.setFilePathIsSet(true);
-      }
-      if (incoming.get(11)) {
-        {
-          org.apache.thrift.protocol.TMap _map32 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.replicaMetadata = new HashMap<String,String>(2*_map32.size);
-          String _key33;
-          String _val34;
-          for (int _i35 = 0; _i35 < _map32.size; ++_i35)
-          {
-            _key33 = iprot.readString();
-            _val34 = iprot.readString();
-            struct.replicaMetadata.put(_key33, _val34);
-          }
-        }
-        struct.setReplicaMetadataIsSet(true);
-      }
-    }
-  }
-
-}
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaLocationCategory.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaLocationCategory.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaLocationCategory.java
deleted file mode 100644
index 9985c80..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaLocationCategory.java
+++ /dev/null
@@ -1,68 +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.data.product;
-
-
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
-public enum ReplicaLocationCategory implements org.apache.thrift.TEnum {
-  GATEWAY_DATA_STORE(0),
-  COMPUTE_RESOURCE(1),
-  LONG_TERM_STORAGE_RESOURCE(2),
-  OTHER(3);
-
-  private final int value;
-
-  private ReplicaLocationCategory(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 ReplicaLocationCategory findByValue(int value) { 
-    switch (value) {
-      case 0:
-        return GATEWAY_DATA_STORE;
-      case 1:
-        return COMPUTE_RESOURCE;
-      case 2:
-        return LONG_TERM_STORAGE_RESOURCE;
-      case 3:
-        return OTHER;
-      default:
-        return null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaPersistentType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaPersistentType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaPersistentType.java
deleted file mode 100644
index 22df336..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/ReplicaPersistentType.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.
- */
-
-/**
- * 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.data.product;
-
-
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
-public enum ReplicaPersistentType implements org.apache.thrift.TEnum {
-  TRANSIENT(0),
-  PERSISTENT(1);
-
-  private final int value;
-
-  private ReplicaPersistentType(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 ReplicaPersistentType findByValue(int value) { 
-    switch (value) {
-      case 0:
-        return TRANSIENT;
-      case 1:
-        return PERSISTENT;
-      default:
-        return null;
-    }
-  }
-}


[47/55] [abbrv] airavata git commit: fixing build issue

Posted by sh...@apache.org.
fixing build issue


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

Branch: refs/heads/master
Commit: fd9b64feb2d745430ce1cca3df4069c1c6802e2b
Parents: 8e4212e
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 13:10:51 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 13:10:51 2016 -0400

----------------------------------------------------------------------
 .../org/apache/airavata/client/samples/ReplicaCatalogSample.java    | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fd9b64fe/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
index 1af3bc6..a22ebfc 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
@@ -47,7 +47,6 @@ public class ReplicaCatalogSample {
             dataProductModel.setGatewayId(DEFAULT_GATEWAY);
             dataProductModel.setOwnerName(USER_NAME);
             dataProductModel.setProductName("test-1");
-            dataProductModel.setLogicalPath("/test/test/test/" + System.currentTimeMillis());
             dataProductModel.setDataProductType(DataProductType.FILE);
 
             DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();


[30/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
index 5f634dc..ed2e025 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.cpp
@@ -28,7 +28,7 @@
 
 #include <thrift/TToString.h>
 
-namespace apache { namespace airavata { namespace model { namespace data { namespace resource {
+namespace apache { namespace airavata { namespace model { namespace data { namespace replica {
 
 int _kReplicaLocationCategoryValues[] = {
   ReplicaLocationCategory::GATEWAY_DATA_STORE,
@@ -54,87 +54,94 @@ const char* _kReplicaPersistentTypeNames[] = {
 };
 const std::map<int, const char*> _ReplicaPersistentType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kReplicaPersistentTypeValues, _kReplicaPersistentTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
-int _kDataResourceTypeValues[] = {
-  DataResourceType::COLLECTION,
-  DataResourceType::FILE
+int _kDataProductTypeValues[] = {
+  DataProductType::DIR,
+  DataProductType::FILE,
+  DataProductType::COLLECTION
 };
-const char* _kDataResourceTypeNames[] = {
-  "COLLECTION",
-  "FILE"
+const char* _kDataProductTypeNames[] = {
+  "DIR",
+  "FILE",
+  "COLLECTION"
 };
-const std::map<int, const char*> _DataResourceType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kDataResourceTypeValues, _kDataResourceTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _DataProductType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(3, _kDataProductTypeValues, _kDataProductTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 
-DataResourceModel::~DataResourceModel() throw() {
+DataProductModel::~DataProductModel() throw() {
 }
 
 
-void DataResourceModel::__set_resourceId(const std::string& val) {
-  this->resourceId = val;
-__isset.resourceId = true;
+void DataProductModel::__set_productUri(const std::string& val) {
+  this->productUri = val;
+__isset.productUri = true;
 }
 
-void DataResourceModel::__set_gatewayId(const std::string& val) {
+void DataProductModel::__set_gatewayId(const std::string& val) {
   this->gatewayId = val;
 __isset.gatewayId = true;
 }
 
-void DataResourceModel::__set_parentResourceId(const std::string& val) {
-  this->parentResourceId = val;
-__isset.parentResourceId = true;
+void DataProductModel::__set_parentProductUri(const std::string& val) {
+  this->parentProductUri = val;
+__isset.parentProductUri = true;
 }
 
-void DataResourceModel::__set_resourceName(const std::string& val) {
-  this->resourceName = val;
-__isset.resourceName = true;
+void DataProductModel::__set_logicalPath(const std::string& val) {
+  this->logicalPath = val;
+__isset.logicalPath = true;
 }
 
-void DataResourceModel::__set_resourceDescription(const std::string& val) {
-  this->resourceDescription = val;
-__isset.resourceDescription = true;
+void DataProductModel::__set_productName(const std::string& val) {
+  this->productName = val;
+__isset.productName = true;
 }
 
-void DataResourceModel::__set_ownerName(const std::string& val) {
+void DataProductModel::__set_productDescription(const std::string& val) {
+  this->productDescription = val;
+__isset.productDescription = true;
+}
+
+void DataProductModel::__set_ownerName(const std::string& val) {
   this->ownerName = val;
 __isset.ownerName = true;
 }
 
-void DataResourceModel::__set_dataResourceType(const DataResourceType::type val) {
-  this->dataResourceType = val;
-__isset.dataResourceType = true;
+void DataProductModel::__set_dataProductType(const DataProductType::type val) {
+  this->dataProductType = val;
+__isset.dataProductType = true;
 }
 
-void DataResourceModel::__set_resourceSize(const int32_t val) {
-  this->resourceSize = val;
-__isset.resourceSize = true;
+void DataProductModel::__set_productSize(const int32_t val) {
+  this->productSize = val;
+__isset.productSize = true;
 }
 
-void DataResourceModel::__set_creationTime(const int64_t val) {
+void DataProductModel::__set_creationTime(const int64_t val) {
   this->creationTime = val;
 __isset.creationTime = true;
 }
 
-void DataResourceModel::__set_lastModifiedTime(const int64_t val) {
+void DataProductModel::__set_lastModifiedTime(const int64_t val) {
   this->lastModifiedTime = val;
 __isset.lastModifiedTime = true;
 }
 
-void DataResourceModel::__set_resourceMetadata(const std::map<std::string, std::string> & val) {
-  this->resourceMetadata = val;
-__isset.resourceMetadata = true;
+void DataProductModel::__set_productMetadata(const std::map<std::string, std::string> & val) {
+  this->productMetadata = val;
+__isset.productMetadata = true;
 }
 
-void DataResourceModel::__set_replicaLocations(const std::vector<DataReplicaLocationModel> & val) {
+void DataProductModel::__set_replicaLocations(const std::vector<DataReplicaLocationModel> & val) {
   this->replicaLocations = val;
 __isset.replicaLocations = true;
 }
 
-void DataResourceModel::__set_childResources(const std::vector<DataResourceModel> & val) {
-  this->childResources = val;
-__isset.childResources = true;
+void DataProductModel::__set_childProducts(const std::vector<DataProductModel> & val) {
+  this->childProducts = val;
+__isset.childProducts = true;
 }
 
-uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t DataProductModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
@@ -157,8 +164,8 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
     {
       case 1:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->resourceId);
-          this->__isset.resourceId = true;
+          xfer += iprot->readString(this->productUri);
+          this->__isset.productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -173,55 +180,63 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->parentResourceId);
-          this->__isset.parentResourceId = true;
+          xfer += iprot->readString(this->parentProductUri);
+          this->__isset.parentProductUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->resourceName);
-          this->__isset.resourceName = true;
+          xfer += iprot->readString(this->logicalPath);
+          this->__isset.logicalPath = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 5:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->resourceDescription);
-          this->__isset.resourceDescription = true;
+          xfer += iprot->readString(this->productName);
+          this->__isset.productName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 6:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->productDescription);
+          this->__isset.productDescription = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->ownerName);
           this->__isset.ownerName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 7:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           int32_t ecast0;
           xfer += iprot->readI32(ecast0);
-          this->dataResourceType = (DataResourceType::type)ecast0;
-          this->__isset.dataResourceType = true;
+          this->dataProductType = (DataProductType::type)ecast0;
+          this->__isset.dataProductType = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 8:
+      case 9:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          xfer += iprot->readI32(this->resourceSize);
-          this->__isset.resourceSize = true;
+          xfer += iprot->readI32(this->productSize);
+          this->__isset.productSize = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 9:
+      case 10:
         if (ftype == ::apache::thrift::protocol::T_I64) {
           xfer += iprot->readI64(this->creationTime);
           this->__isset.creationTime = true;
@@ -229,7 +244,7 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 10:
+      case 11:
         if (ftype == ::apache::thrift::protocol::T_I64) {
           xfer += iprot->readI64(this->lastModifiedTime);
           this->__isset.lastModifiedTime = true;
@@ -237,10 +252,10 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 11:
+      case 12:
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
-            this->resourceMetadata.clear();
+            this->productMetadata.clear();
             uint32_t _size1;
             ::apache::thrift::protocol::TType _ktype2;
             ::apache::thrift::protocol::TType _vtype3;
@@ -250,17 +265,17 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
             {
               std::string _key6;
               xfer += iprot->readString(_key6);
-              std::string& _val7 = this->resourceMetadata[_key6];
+              std::string& _val7 = this->productMetadata[_key6];
               xfer += iprot->readString(_val7);
             }
             xfer += iprot->readMapEnd();
           }
-          this->__isset.resourceMetadata = true;
+          this->__isset.productMetadata = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 12:
+      case 13:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->replicaLocations.clear();
@@ -280,22 +295,22 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 13:
+      case 14:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->childResources.clear();
+            this->childProducts.clear();
             uint32_t _size13;
             ::apache::thrift::protocol::TType _etype16;
             xfer += iprot->readListBegin(_etype16, _size13);
-            this->childResources.resize(_size13);
+            this->childProducts.resize(_size13);
             uint32_t _i17;
             for (_i17 = 0; _i17 < _size13; ++_i17)
             {
-              xfer += this->childResources[_i17].read(iprot);
+              xfer += this->childProducts[_i17].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.childResources = true;
+          this->__isset.childProducts = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -312,14 +327,14 @@ uint32_t DataResourceModel::read(::apache::thrift::protocol::TProtocol* iprot) {
   return xfer;
 }
 
-uint32_t DataResourceModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t DataProductModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
   apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("DataResourceModel");
+  xfer += oprot->writeStructBegin("DataProductModel");
 
-  if (this->__isset.resourceId) {
-    xfer += oprot->writeFieldBegin("resourceId", ::apache::thrift::protocol::T_STRING, 1);
-    xfer += oprot->writeString(this->resourceId);
+  if (this->__isset.productUri) {
+    xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 1);
+    xfer += oprot->writeString(this->productUri);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.gatewayId) {
@@ -327,52 +342,57 @@ uint32_t DataResourceModel::write(::apache::thrift::protocol::TProtocol* oprot)
     xfer += oprot->writeString(this->gatewayId);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.parentResourceId) {
-    xfer += oprot->writeFieldBegin("parentResourceId", ::apache::thrift::protocol::T_STRING, 3);
-    xfer += oprot->writeString(this->parentResourceId);
+  if (this->__isset.parentProductUri) {
+    xfer += oprot->writeFieldBegin("parentProductUri", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->parentProductUri);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.logicalPath) {
+    xfer += oprot->writeFieldBegin("logicalPath", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->logicalPath);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceName) {
-    xfer += oprot->writeFieldBegin("resourceName", ::apache::thrift::protocol::T_STRING, 4);
-    xfer += oprot->writeString(this->resourceName);
+  if (this->__isset.productName) {
+    xfer += oprot->writeFieldBegin("productName", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->productName);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceDescription) {
-    xfer += oprot->writeFieldBegin("resourceDescription", ::apache::thrift::protocol::T_STRING, 5);
-    xfer += oprot->writeString(this->resourceDescription);
+  if (this->__isset.productDescription) {
+    xfer += oprot->writeFieldBegin("productDescription", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->productDescription);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.ownerName) {
-    xfer += oprot->writeFieldBegin("ownerName", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeFieldBegin("ownerName", ::apache::thrift::protocol::T_STRING, 7);
     xfer += oprot->writeString(this->ownerName);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.dataResourceType) {
-    xfer += oprot->writeFieldBegin("dataResourceType", ::apache::thrift::protocol::T_I32, 7);
-    xfer += oprot->writeI32((int32_t)this->dataResourceType);
+  if (this->__isset.dataProductType) {
+    xfer += oprot->writeFieldBegin("dataProductType", ::apache::thrift::protocol::T_I32, 8);
+    xfer += oprot->writeI32((int32_t)this->dataProductType);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceSize) {
-    xfer += oprot->writeFieldBegin("resourceSize", ::apache::thrift::protocol::T_I32, 8);
-    xfer += oprot->writeI32(this->resourceSize);
+  if (this->__isset.productSize) {
+    xfer += oprot->writeFieldBegin("productSize", ::apache::thrift::protocol::T_I32, 9);
+    xfer += oprot->writeI32(this->productSize);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.creationTime) {
-    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 9);
+    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 10);
     xfer += oprot->writeI64(this->creationTime);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.lastModifiedTime) {
-    xfer += oprot->writeFieldBegin("lastModifiedTime", ::apache::thrift::protocol::T_I64, 10);
+    xfer += oprot->writeFieldBegin("lastModifiedTime", ::apache::thrift::protocol::T_I64, 11);
     xfer += oprot->writeI64(this->lastModifiedTime);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceMetadata) {
-    xfer += oprot->writeFieldBegin("resourceMetadata", ::apache::thrift::protocol::T_MAP, 11);
+  if (this->__isset.productMetadata) {
+    xfer += oprot->writeFieldBegin("productMetadata", ::apache::thrift::protocol::T_MAP, 12);
     {
-      xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->resourceMetadata.size()));
+      xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->productMetadata.size()));
       std::map<std::string, std::string> ::const_iterator _iter18;
-      for (_iter18 = this->resourceMetadata.begin(); _iter18 != this->resourceMetadata.end(); ++_iter18)
+      for (_iter18 = this->productMetadata.begin(); _iter18 != this->productMetadata.end(); ++_iter18)
       {
         xfer += oprot->writeString(_iter18->first);
         xfer += oprot->writeString(_iter18->second);
@@ -382,7 +402,7 @@ uint32_t DataResourceModel::write(::apache::thrift::protocol::TProtocol* oprot)
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.replicaLocations) {
-    xfer += oprot->writeFieldBegin("replicaLocations", ::apache::thrift::protocol::T_LIST, 12);
+    xfer += oprot->writeFieldBegin("replicaLocations", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->replicaLocations.size()));
       std::vector<DataReplicaLocationModel> ::const_iterator _iter19;
@@ -394,12 +414,12 @@ uint32_t DataResourceModel::write(::apache::thrift::protocol::TProtocol* oprot)
     }
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.childResources) {
-    xfer += oprot->writeFieldBegin("childResources", ::apache::thrift::protocol::T_LIST, 13);
+  if (this->__isset.childProducts) {
+    xfer += oprot->writeFieldBegin("childProducts", ::apache::thrift::protocol::T_LIST, 14);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->childResources.size()));
-      std::vector<DataResourceModel> ::const_iterator _iter20;
-      for (_iter20 = this->childResources.begin(); _iter20 != this->childResources.end(); ++_iter20)
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->childProducts.size()));
+      std::vector<DataProductModel> ::const_iterator _iter20;
+      for (_iter20 = this->childProducts.begin(); _iter20 != this->childProducts.end(); ++_iter20)
       {
         xfer += (*_iter20).write(oprot);
       }
@@ -412,73 +432,77 @@ uint32_t DataResourceModel::write(::apache::thrift::protocol::TProtocol* oprot)
   return xfer;
 }
 
-void swap(DataResourceModel &a, DataResourceModel &b) {
+void swap(DataProductModel &a, DataProductModel &b) {
   using ::std::swap;
-  swap(a.resourceId, b.resourceId);
+  swap(a.productUri, b.productUri);
   swap(a.gatewayId, b.gatewayId);
-  swap(a.parentResourceId, b.parentResourceId);
-  swap(a.resourceName, b.resourceName);
-  swap(a.resourceDescription, b.resourceDescription);
+  swap(a.parentProductUri, b.parentProductUri);
+  swap(a.logicalPath, b.logicalPath);
+  swap(a.productName, b.productName);
+  swap(a.productDescription, b.productDescription);
   swap(a.ownerName, b.ownerName);
-  swap(a.dataResourceType, b.dataResourceType);
-  swap(a.resourceSize, b.resourceSize);
+  swap(a.dataProductType, b.dataProductType);
+  swap(a.productSize, b.productSize);
   swap(a.creationTime, b.creationTime);
   swap(a.lastModifiedTime, b.lastModifiedTime);
-  swap(a.resourceMetadata, b.resourceMetadata);
+  swap(a.productMetadata, b.productMetadata);
   swap(a.replicaLocations, b.replicaLocations);
-  swap(a.childResources, b.childResources);
+  swap(a.childProducts, b.childProducts);
   swap(a.__isset, b.__isset);
 }
 
-DataResourceModel::DataResourceModel(const DataResourceModel& other21) {
-  resourceId = other21.resourceId;
+DataProductModel::DataProductModel(const DataProductModel& other21) {
+  productUri = other21.productUri;
   gatewayId = other21.gatewayId;
-  parentResourceId = other21.parentResourceId;
-  resourceName = other21.resourceName;
-  resourceDescription = other21.resourceDescription;
+  parentProductUri = other21.parentProductUri;
+  logicalPath = other21.logicalPath;
+  productName = other21.productName;
+  productDescription = other21.productDescription;
   ownerName = other21.ownerName;
-  dataResourceType = other21.dataResourceType;
-  resourceSize = other21.resourceSize;
+  dataProductType = other21.dataProductType;
+  productSize = other21.productSize;
   creationTime = other21.creationTime;
   lastModifiedTime = other21.lastModifiedTime;
-  resourceMetadata = other21.resourceMetadata;
+  productMetadata = other21.productMetadata;
   replicaLocations = other21.replicaLocations;
-  childResources = other21.childResources;
+  childProducts = other21.childProducts;
   __isset = other21.__isset;
 }
-DataResourceModel& DataResourceModel::operator=(const DataResourceModel& other22) {
-  resourceId = other22.resourceId;
+DataProductModel& DataProductModel::operator=(const DataProductModel& other22) {
+  productUri = other22.productUri;
   gatewayId = other22.gatewayId;
-  parentResourceId = other22.parentResourceId;
-  resourceName = other22.resourceName;
-  resourceDescription = other22.resourceDescription;
+  parentProductUri = other22.parentProductUri;
+  logicalPath = other22.logicalPath;
+  productName = other22.productName;
+  productDescription = other22.productDescription;
   ownerName = other22.ownerName;
-  dataResourceType = other22.dataResourceType;
-  resourceSize = other22.resourceSize;
+  dataProductType = other22.dataProductType;
+  productSize = other22.productSize;
   creationTime = other22.creationTime;
   lastModifiedTime = other22.lastModifiedTime;
-  resourceMetadata = other22.resourceMetadata;
+  productMetadata = other22.productMetadata;
   replicaLocations = other22.replicaLocations;
-  childResources = other22.childResources;
+  childProducts = other22.childProducts;
   __isset = other22.__isset;
   return *this;
 }
-void DataResourceModel::printTo(std::ostream& out) const {
+void DataProductModel::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
-  out << "DataResourceModel(";
-  out << "resourceId="; (__isset.resourceId ? (out << to_string(resourceId)) : (out << "<null>"));
+  out << "DataProductModel(";
+  out << "productUri="; (__isset.productUri ? (out << to_string(productUri)) : (out << "<null>"));
   out << ", " << "gatewayId="; (__isset.gatewayId ? (out << to_string(gatewayId)) : (out << "<null>"));
-  out << ", " << "parentResourceId="; (__isset.parentResourceId ? (out << to_string(parentResourceId)) : (out << "<null>"));
-  out << ", " << "resourceName="; (__isset.resourceName ? (out << to_string(resourceName)) : (out << "<null>"));
-  out << ", " << "resourceDescription="; (__isset.resourceDescription ? (out << to_string(resourceDescription)) : (out << "<null>"));
+  out << ", " << "parentProductUri="; (__isset.parentProductUri ? (out << to_string(parentProductUri)) : (out << "<null>"));
+  out << ", " << "logicalPath="; (__isset.logicalPath ? (out << to_string(logicalPath)) : (out << "<null>"));
+  out << ", " << "productName="; (__isset.productName ? (out << to_string(productName)) : (out << "<null>"));
+  out << ", " << "productDescription="; (__isset.productDescription ? (out << to_string(productDescription)) : (out << "<null>"));
   out << ", " << "ownerName="; (__isset.ownerName ? (out << to_string(ownerName)) : (out << "<null>"));
-  out << ", " << "dataResourceType="; (__isset.dataResourceType ? (out << to_string(dataResourceType)) : (out << "<null>"));
-  out << ", " << "resourceSize="; (__isset.resourceSize ? (out << to_string(resourceSize)) : (out << "<null>"));
+  out << ", " << "dataProductType="; (__isset.dataProductType ? (out << to_string(dataProductType)) : (out << "<null>"));
+  out << ", " << "productSize="; (__isset.productSize ? (out << to_string(productSize)) : (out << "<null>"));
   out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
   out << ", " << "lastModifiedTime="; (__isset.lastModifiedTime ? (out << to_string(lastModifiedTime)) : (out << "<null>"));
-  out << ", " << "resourceMetadata="; (__isset.resourceMetadata ? (out << to_string(resourceMetadata)) : (out << "<null>"));
+  out << ", " << "productMetadata="; (__isset.productMetadata ? (out << to_string(productMetadata)) : (out << "<null>"));
   out << ", " << "replicaLocations="; (__isset.replicaLocations ? (out << to_string(replicaLocations)) : (out << "<null>"));
-  out << ", " << "childResources="; (__isset.childResources ? (out << to_string(childResources)) : (out << "<null>"));
+  out << ", " << "childProducts="; (__isset.childProducts ? (out << to_string(childProducts)) : (out << "<null>"));
   out << ")";
 }
 
@@ -492,9 +516,9 @@ void DataReplicaLocationModel::__set_replicaId(const std::string& val) {
 __isset.replicaId = true;
 }
 
-void DataReplicaLocationModel::__set_resourceId(const std::string& val) {
-  this->resourceId = val;
-__isset.resourceId = true;
+void DataReplicaLocationModel::__set_productUri(const std::string& val) {
+  this->productUri = val;
+__isset.productUri = true;
 }
 
 void DataReplicaLocationModel::__set_replicaName(const std::string& val) {
@@ -537,9 +561,9 @@ void DataReplicaLocationModel::__set_storageResourceId(const std::string& val) {
 __isset.storageResourceId = true;
 }
 
-void DataReplicaLocationModel::__set_fileAbsolutePath(const std::string& val) {
-  this->fileAbsolutePath = val;
-__isset.fileAbsolutePath = true;
+void DataReplicaLocationModel::__set_filePath(const std::string& val) {
+  this->filePath = val;
+__isset.filePath = true;
 }
 
 void DataReplicaLocationModel::__set_replicaMetadata(const std::map<std::string, std::string> & val) {
@@ -578,8 +602,8 @@ uint32_t DataReplicaLocationModel::read(::apache::thrift::protocol::TProtocol* i
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->resourceId);
-          this->__isset.resourceId = true;
+          xfer += iprot->readString(this->productUri);
+          this->__isset.productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -654,8 +678,8 @@ uint32_t DataReplicaLocationModel::read(::apache::thrift::protocol::TProtocol* i
         break;
       case 11:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->fileAbsolutePath);
-          this->__isset.fileAbsolutePath = true;
+          xfer += iprot->readString(this->filePath);
+          this->__isset.filePath = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -705,9 +729,9 @@ uint32_t DataReplicaLocationModel::write(::apache::thrift::protocol::TProtocol*
     xfer += oprot->writeString(this->replicaId);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceId) {
-    xfer += oprot->writeFieldBegin("resourceId", ::apache::thrift::protocol::T_STRING, 2);
-    xfer += oprot->writeString(this->resourceId);
+  if (this->__isset.productUri) {
+    xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->productUri);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.replicaName) {
@@ -750,9 +774,9 @@ uint32_t DataReplicaLocationModel::write(::apache::thrift::protocol::TProtocol*
     xfer += oprot->writeString(this->storageResourceId);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.fileAbsolutePath) {
-    xfer += oprot->writeFieldBegin("fileAbsolutePath", ::apache::thrift::protocol::T_STRING, 11);
-    xfer += oprot->writeString(this->fileAbsolutePath);
+  if (this->__isset.filePath) {
+    xfer += oprot->writeFieldBegin("filePath", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeString(this->filePath);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.replicaMetadata) {
@@ -777,7 +801,7 @@ uint32_t DataReplicaLocationModel::write(::apache::thrift::protocol::TProtocol*
 void swap(DataReplicaLocationModel &a, DataReplicaLocationModel &b) {
   using ::std::swap;
   swap(a.replicaId, b.replicaId);
-  swap(a.resourceId, b.resourceId);
+  swap(a.productUri, b.productUri);
   swap(a.replicaName, b.replicaName);
   swap(a.replicaDescription, b.replicaDescription);
   swap(a.creationTime, b.creationTime);
@@ -786,14 +810,14 @@ void swap(DataReplicaLocationModel &a, DataReplicaLocationModel &b) {
   swap(a.replicaLocationCategory, b.replicaLocationCategory);
   swap(a.replicaPersistentType, b.replicaPersistentType);
   swap(a.storageResourceId, b.storageResourceId);
-  swap(a.fileAbsolutePath, b.fileAbsolutePath);
+  swap(a.filePath, b.filePath);
   swap(a.replicaMetadata, b.replicaMetadata);
   swap(a.__isset, b.__isset);
 }
 
 DataReplicaLocationModel::DataReplicaLocationModel(const DataReplicaLocationModel& other33) {
   replicaId = other33.replicaId;
-  resourceId = other33.resourceId;
+  productUri = other33.productUri;
   replicaName = other33.replicaName;
   replicaDescription = other33.replicaDescription;
   creationTime = other33.creationTime;
@@ -802,13 +826,13 @@ DataReplicaLocationModel::DataReplicaLocationModel(const DataReplicaLocationMode
   replicaLocationCategory = other33.replicaLocationCategory;
   replicaPersistentType = other33.replicaPersistentType;
   storageResourceId = other33.storageResourceId;
-  fileAbsolutePath = other33.fileAbsolutePath;
+  filePath = other33.filePath;
   replicaMetadata = other33.replicaMetadata;
   __isset = other33.__isset;
 }
 DataReplicaLocationModel& DataReplicaLocationModel::operator=(const DataReplicaLocationModel& other34) {
   replicaId = other34.replicaId;
-  resourceId = other34.resourceId;
+  productUri = other34.productUri;
   replicaName = other34.replicaName;
   replicaDescription = other34.replicaDescription;
   creationTime = other34.creationTime;
@@ -817,7 +841,7 @@ DataReplicaLocationModel& DataReplicaLocationModel::operator=(const DataReplicaL
   replicaLocationCategory = other34.replicaLocationCategory;
   replicaPersistentType = other34.replicaPersistentType;
   storageResourceId = other34.storageResourceId;
-  fileAbsolutePath = other34.fileAbsolutePath;
+  filePath = other34.filePath;
   replicaMetadata = other34.replicaMetadata;
   __isset = other34.__isset;
   return *this;
@@ -826,7 +850,7 @@ void DataReplicaLocationModel::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
   out << "DataReplicaLocationModel(";
   out << "replicaId="; (__isset.replicaId ? (out << to_string(replicaId)) : (out << "<null>"));
-  out << ", " << "resourceId="; (__isset.resourceId ? (out << to_string(resourceId)) : (out << "<null>"));
+  out << ", " << "productUri="; (__isset.productUri ? (out << to_string(productUri)) : (out << "<null>"));
   out << ", " << "replicaName="; (__isset.replicaName ? (out << to_string(replicaName)) : (out << "<null>"));
   out << ", " << "replicaDescription="; (__isset.replicaDescription ? (out << to_string(replicaDescription)) : (out << "<null>"));
   out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
@@ -835,7 +859,7 @@ void DataReplicaLocationModel::printTo(std::ostream& out) const {
   out << ", " << "replicaLocationCategory="; (__isset.replicaLocationCategory ? (out << to_string(replicaLocationCategory)) : (out << "<null>"));
   out << ", " << "replicaPersistentType="; (__isset.replicaPersistentType ? (out << to_string(replicaPersistentType)) : (out << "<null>"));
   out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
-  out << ", " << "fileAbsolutePath="; (__isset.fileAbsolutePath ? (out << to_string(fileAbsolutePath)) : (out << "<null>"));
+  out << ", " << "filePath="; (__isset.filePath ? (out << to_string(filePath)) : (out << "<null>"));
   out << ", " << "replicaMetadata="; (__isset.replicaMetadata ? (out << to_string(replicaMetadata)) : (out << "<null>"));
   out << ")";
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
index 7816d82..d9072c7 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_types.h
@@ -32,10 +32,9 @@
 #include <thrift/transport/TTransport.h>
 
 #include <thrift/cxxfunctional.h>
-#include "data_movement_models_types.h"
 
 
-namespace apache { namespace airavata { namespace model { namespace data { namespace resource {
+namespace apache { namespace airavata { namespace model { namespace data { namespace replica {
 
 struct ReplicaLocationCategory {
   enum type {
@@ -57,120 +56,129 @@ struct ReplicaPersistentType {
 
 extern const std::map<int, const char*> _ReplicaPersistentType_VALUES_TO_NAMES;
 
-struct DataResourceType {
+struct DataProductType {
   enum type {
-    COLLECTION = 0,
-    FILE = 1
+    DIR = 0,
+    FILE = 1,
+    COLLECTION = 2
   };
 };
 
-extern const std::map<int, const char*> _DataResourceType_VALUES_TO_NAMES;
+extern const std::map<int, const char*> _DataProductType_VALUES_TO_NAMES;
 
-class DataResourceModel;
+class DataProductModel;
 
 class DataReplicaLocationModel;
 
-typedef struct _DataResourceModel__isset {
-  _DataResourceModel__isset() : resourceId(false), gatewayId(false), parentResourceId(false), resourceName(false), resourceDescription(false), ownerName(false), dataResourceType(false), resourceSize(false), creationTime(false), lastModifiedTime(false), resourceMetadata(false), replicaLocations(false), childResources(false) {}
-  bool resourceId :1;
+typedef struct _DataProductModel__isset {
+  _DataProductModel__isset() : productUri(false), gatewayId(false), parentProductUri(false), logicalPath(false), productName(false), productDescription(false), ownerName(false), dataProductType(false), productSize(false), creationTime(false), lastModifiedTime(false), productMetadata(false), replicaLocations(false), childProducts(false) {}
+  bool productUri :1;
   bool gatewayId :1;
-  bool parentResourceId :1;
-  bool resourceName :1;
-  bool resourceDescription :1;
+  bool parentProductUri :1;
+  bool logicalPath :1;
+  bool productName :1;
+  bool productDescription :1;
   bool ownerName :1;
-  bool dataResourceType :1;
-  bool resourceSize :1;
+  bool dataProductType :1;
+  bool productSize :1;
   bool creationTime :1;
   bool lastModifiedTime :1;
-  bool resourceMetadata :1;
+  bool productMetadata :1;
   bool replicaLocations :1;
-  bool childResources :1;
-} _DataResourceModel__isset;
+  bool childProducts :1;
+} _DataProductModel__isset;
 
-class DataResourceModel {
+class DataProductModel {
  public:
 
-  DataResourceModel(const DataResourceModel&);
-  DataResourceModel& operator=(const DataResourceModel&);
-  DataResourceModel() : resourceId(), gatewayId(), parentResourceId(), resourceName(), resourceDescription(), ownerName(), dataResourceType((DataResourceType::type)0), resourceSize(0), creationTime(0), lastModifiedTime(0) {
+  DataProductModel(const DataProductModel&);
+  DataProductModel& operator=(const DataProductModel&);
+  DataProductModel() : productUri(), gatewayId(), parentProductUri(), logicalPath(), productName(), productDescription(), ownerName(), dataProductType((DataProductType::type)0), productSize(0), creationTime(0), lastModifiedTime(0) {
   }
 
-  virtual ~DataResourceModel() throw();
-  std::string resourceId;
+  virtual ~DataProductModel() throw();
+  std::string productUri;
   std::string gatewayId;
-  std::string parentResourceId;
-  std::string resourceName;
-  std::string resourceDescription;
+  std::string parentProductUri;
+  std::string logicalPath;
+  std::string productName;
+  std::string productDescription;
   std::string ownerName;
-  DataResourceType::type dataResourceType;
-  int32_t resourceSize;
+  DataProductType::type dataProductType;
+  int32_t productSize;
   int64_t creationTime;
   int64_t lastModifiedTime;
-  std::map<std::string, std::string>  resourceMetadata;
+  std::map<std::string, std::string>  productMetadata;
   std::vector<DataReplicaLocationModel>  replicaLocations;
-  std::vector<DataResourceModel>  childResources;
+  std::vector<DataProductModel>  childProducts;
 
-  _DataResourceModel__isset __isset;
+  _DataProductModel__isset __isset;
 
-  void __set_resourceId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_gatewayId(const std::string& val);
 
-  void __set_parentResourceId(const std::string& val);
+  void __set_parentProductUri(const std::string& val);
 
-  void __set_resourceName(const std::string& val);
+  void __set_logicalPath(const std::string& val);
 
-  void __set_resourceDescription(const std::string& val);
+  void __set_productName(const std::string& val);
+
+  void __set_productDescription(const std::string& val);
 
   void __set_ownerName(const std::string& val);
 
-  void __set_dataResourceType(const DataResourceType::type val);
+  void __set_dataProductType(const DataProductType::type val);
 
-  void __set_resourceSize(const int32_t val);
+  void __set_productSize(const int32_t val);
 
   void __set_creationTime(const int64_t val);
 
   void __set_lastModifiedTime(const int64_t val);
 
-  void __set_resourceMetadata(const std::map<std::string, std::string> & val);
+  void __set_productMetadata(const std::map<std::string, std::string> & val);
 
   void __set_replicaLocations(const std::vector<DataReplicaLocationModel> & val);
 
-  void __set_childResources(const std::vector<DataResourceModel> & val);
+  void __set_childProducts(const std::vector<DataProductModel> & val);
 
-  bool operator == (const DataResourceModel & rhs) const
+  bool operator == (const DataProductModel & rhs) const
   {
-    if (__isset.resourceId != rhs.__isset.resourceId)
+    if (__isset.productUri != rhs.__isset.productUri)
       return false;
-    else if (__isset.resourceId && !(resourceId == rhs.resourceId))
+    else if (__isset.productUri && !(productUri == rhs.productUri))
       return false;
     if (__isset.gatewayId != rhs.__isset.gatewayId)
       return false;
     else if (__isset.gatewayId && !(gatewayId == rhs.gatewayId))
       return false;
-    if (__isset.parentResourceId != rhs.__isset.parentResourceId)
+    if (__isset.parentProductUri != rhs.__isset.parentProductUri)
+      return false;
+    else if (__isset.parentProductUri && !(parentProductUri == rhs.parentProductUri))
+      return false;
+    if (__isset.logicalPath != rhs.__isset.logicalPath)
       return false;
-    else if (__isset.parentResourceId && !(parentResourceId == rhs.parentResourceId))
+    else if (__isset.logicalPath && !(logicalPath == rhs.logicalPath))
       return false;
-    if (__isset.resourceName != rhs.__isset.resourceName)
+    if (__isset.productName != rhs.__isset.productName)
       return false;
-    else if (__isset.resourceName && !(resourceName == rhs.resourceName))
+    else if (__isset.productName && !(productName == rhs.productName))
       return false;
-    if (__isset.resourceDescription != rhs.__isset.resourceDescription)
+    if (__isset.productDescription != rhs.__isset.productDescription)
       return false;
-    else if (__isset.resourceDescription && !(resourceDescription == rhs.resourceDescription))
+    else if (__isset.productDescription && !(productDescription == rhs.productDescription))
       return false;
     if (__isset.ownerName != rhs.__isset.ownerName)
       return false;
     else if (__isset.ownerName && !(ownerName == rhs.ownerName))
       return false;
-    if (__isset.dataResourceType != rhs.__isset.dataResourceType)
+    if (__isset.dataProductType != rhs.__isset.dataProductType)
       return false;
-    else if (__isset.dataResourceType && !(dataResourceType == rhs.dataResourceType))
+    else if (__isset.dataProductType && !(dataProductType == rhs.dataProductType))
       return false;
-    if (__isset.resourceSize != rhs.__isset.resourceSize)
+    if (__isset.productSize != rhs.__isset.productSize)
       return false;
-    else if (__isset.resourceSize && !(resourceSize == rhs.resourceSize))
+    else if (__isset.productSize && !(productSize == rhs.productSize))
       return false;
     if (__isset.creationTime != rhs.__isset.creationTime)
       return false;
@@ -180,25 +188,25 @@ class DataResourceModel {
       return false;
     else if (__isset.lastModifiedTime && !(lastModifiedTime == rhs.lastModifiedTime))
       return false;
-    if (__isset.resourceMetadata != rhs.__isset.resourceMetadata)
+    if (__isset.productMetadata != rhs.__isset.productMetadata)
       return false;
-    else if (__isset.resourceMetadata && !(resourceMetadata == rhs.resourceMetadata))
+    else if (__isset.productMetadata && !(productMetadata == rhs.productMetadata))
       return false;
     if (__isset.replicaLocations != rhs.__isset.replicaLocations)
       return false;
     else if (__isset.replicaLocations && !(replicaLocations == rhs.replicaLocations))
       return false;
-    if (__isset.childResources != rhs.__isset.childResources)
+    if (__isset.childProducts != rhs.__isset.childProducts)
       return false;
-    else if (__isset.childResources && !(childResources == rhs.childResources))
+    else if (__isset.childProducts && !(childProducts == rhs.childProducts))
       return false;
     return true;
   }
-  bool operator != (const DataResourceModel &rhs) const {
+  bool operator != (const DataProductModel &rhs) const {
     return !(*this == rhs);
   }
 
-  bool operator < (const DataResourceModel & ) const;
+  bool operator < (const DataProductModel & ) const;
 
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
@@ -206,18 +214,18 @@ class DataResourceModel {
   virtual void printTo(std::ostream& out) const;
 };
 
-void swap(DataResourceModel &a, DataResourceModel &b);
+void swap(DataProductModel &a, DataProductModel &b);
 
-inline std::ostream& operator<<(std::ostream& out, const DataResourceModel& obj)
+inline std::ostream& operator<<(std::ostream& out, const DataProductModel& obj)
 {
   obj.printTo(out);
   return out;
 }
 
 typedef struct _DataReplicaLocationModel__isset {
-  _DataReplicaLocationModel__isset() : replicaId(false), resourceId(false), replicaName(false), replicaDescription(false), creationTime(false), lastModifiedTime(false), validUntilTime(false), replicaLocationCategory(false), replicaPersistentType(false), storageResourceId(false), fileAbsolutePath(false), replicaMetadata(false) {}
+  _DataReplicaLocationModel__isset() : replicaId(false), productUri(false), replicaName(false), replicaDescription(false), creationTime(false), lastModifiedTime(false), validUntilTime(false), replicaLocationCategory(false), replicaPersistentType(false), storageResourceId(false), filePath(false), replicaMetadata(false) {}
   bool replicaId :1;
-  bool resourceId :1;
+  bool productUri :1;
   bool replicaName :1;
   bool replicaDescription :1;
   bool creationTime :1;
@@ -226,7 +234,7 @@ typedef struct _DataReplicaLocationModel__isset {
   bool replicaLocationCategory :1;
   bool replicaPersistentType :1;
   bool storageResourceId :1;
-  bool fileAbsolutePath :1;
+  bool filePath :1;
   bool replicaMetadata :1;
 } _DataReplicaLocationModel__isset;
 
@@ -235,12 +243,12 @@ class DataReplicaLocationModel {
 
   DataReplicaLocationModel(const DataReplicaLocationModel&);
   DataReplicaLocationModel& operator=(const DataReplicaLocationModel&);
-  DataReplicaLocationModel() : replicaId(), resourceId(), replicaName(), replicaDescription(), creationTime(0), lastModifiedTime(0), validUntilTime(0), replicaLocationCategory((ReplicaLocationCategory::type)0), replicaPersistentType((ReplicaPersistentType::type)0), storageResourceId(), fileAbsolutePath() {
+  DataReplicaLocationModel() : replicaId(), productUri(), replicaName(), replicaDescription(), creationTime(0), lastModifiedTime(0), validUntilTime(0), replicaLocationCategory((ReplicaLocationCategory::type)0), replicaPersistentType((ReplicaPersistentType::type)0), storageResourceId(), filePath() {
   }
 
   virtual ~DataReplicaLocationModel() throw();
   std::string replicaId;
-  std::string resourceId;
+  std::string productUri;
   std::string replicaName;
   std::string replicaDescription;
   int64_t creationTime;
@@ -249,14 +257,14 @@ class DataReplicaLocationModel {
   ReplicaLocationCategory::type replicaLocationCategory;
   ReplicaPersistentType::type replicaPersistentType;
   std::string storageResourceId;
-  std::string fileAbsolutePath;
+  std::string filePath;
   std::map<std::string, std::string>  replicaMetadata;
 
   _DataReplicaLocationModel__isset __isset;
 
   void __set_replicaId(const std::string& val);
 
-  void __set_resourceId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_replicaName(const std::string& val);
 
@@ -274,7 +282,7 @@ class DataReplicaLocationModel {
 
   void __set_storageResourceId(const std::string& val);
 
-  void __set_fileAbsolutePath(const std::string& val);
+  void __set_filePath(const std::string& val);
 
   void __set_replicaMetadata(const std::map<std::string, std::string> & val);
 
@@ -284,9 +292,9 @@ class DataReplicaLocationModel {
       return false;
     else if (__isset.replicaId && !(replicaId == rhs.replicaId))
       return false;
-    if (__isset.resourceId != rhs.__isset.resourceId)
+    if (__isset.productUri != rhs.__isset.productUri)
       return false;
-    else if (__isset.resourceId && !(resourceId == rhs.resourceId))
+    else if (__isset.productUri && !(productUri == rhs.productUri))
       return false;
     if (__isset.replicaName != rhs.__isset.replicaName)
       return false;
@@ -320,9 +328,9 @@ class DataReplicaLocationModel {
       return false;
     else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
       return false;
-    if (__isset.fileAbsolutePath != rhs.__isset.fileAbsolutePath)
+    if (__isset.filePath != rhs.__isset.filePath)
       return false;
-    else if (__isset.fileAbsolutePath && !(fileAbsolutePath == rhs.fileAbsolutePath))
+    else if (__isset.filePath && !(filePath == rhs.filePath))
       return false;
     if (__isset.replicaMetadata != rhs.__isset.replicaMetadata)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 e262b7c..d397526 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
@@ -3426,18 +3426,18 @@ interface AiravataIf {
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param \Airavata\Model\Data\Product\DataProductModel $dataProductModel
+   * @param \Airavata\Model\Data\Replica\DataProductModel $dataProductModel
    * @return string
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel);
+  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataProductModel $dataProductModel);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $dataProductUri
-   * @return \Airavata\Model\Data\Product\DataProductModel
+   * @return \Airavata\Model\Data\Replica\DataProductModel
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
@@ -3446,14 +3446,14 @@ interface AiravataIf {
   public function getDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $dataProductUri);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel
+   * @param \Airavata\Model\Data\Replica\DataReplicaLocationModel $replicaLocationModel
    * @return string
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel);
+  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataReplicaLocationModel $replicaLocationModel);
 }
 
 class AiravataClient implements \Airavata\API\AiravataIf {
@@ -12145,13 +12145,13 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("isWorkflowExistWithName failed: unknown result");
   }
 
-  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel)
+  public function registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataProductModel $dataProductModel)
   {
     $this->send_registerDataProduct($authzToken, $dataProductModel);
     return $this->recv_registerDataProduct();
   }
 
-  public function send_registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataProductModel $dataProductModel)
+  public function send_registerDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataProductModel $dataProductModel)
   {
     $args = new \Airavata\API\Airavata_registerDataProduct_args();
     $args->authzToken = $authzToken;
@@ -12273,13 +12273,13 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getDataProduct failed: unknown result");
   }
 
-  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel)
+  public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataReplicaLocationModel $replicaLocationModel)
   {
     $this->send_registerReplicaLocation($authzToken, $replicaLocationModel);
     return $this->recv_registerReplicaLocation();
   }
 
-  public function send_registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Product\DataReplicaLocationModel $replicaLocationModel)
+  public function send_registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataReplicaLocationModel $replicaLocationModel)
   {
     $args = new \Airavata\API\Airavata_registerReplicaLocation_args();
     $args->authzToken = $authzToken;
@@ -53524,7 +53524,7 @@ class Airavata_registerDataProduct_args {
    */
   public $authzToken = null;
   /**
-   * @var \Airavata\Model\Data\Product\DataProductModel
+   * @var \Airavata\Model\Data\Replica\DataProductModel
    */
   public $dataProductModel = null;
 
@@ -53539,7 +53539,7 @@ class Airavata_registerDataProduct_args {
         2 => array(
           'var' => 'dataProductModel',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Data\Product\DataProductModel',
+          'class' => '\Airavata\Model\Data\Replica\DataProductModel',
           ),
         );
     }
@@ -53582,7 +53582,7 @@ class Airavata_registerDataProduct_args {
           break;
         case 2:
           if ($ftype == TType::STRUCT) {
-            $this->dataProductModel = new \Airavata\Model\Data\Product\DataProductModel();
+            $this->dataProductModel = new \Airavata\Model\Data\Replica\DataProductModel();
             $xfer += $this->dataProductModel->read($input);
           } else {
             $xfer += $input->skip($ftype);
@@ -53906,7 +53906,7 @@ class Airavata_getDataProduct_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Data\Product\DataProductModel
+   * @var \Airavata\Model\Data\Replica\DataProductModel
    */
   public $success = null;
   /**
@@ -53932,7 +53932,7 @@ class Airavata_getDataProduct_result {
         0 => array(
           'var' => 'success',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Data\Product\DataProductModel',
+          'class' => '\Airavata\Model\Data\Replica\DataProductModel',
           ),
         1 => array(
           'var' => 'ire',
@@ -53996,7 +53996,7 @@ class Airavata_getDataProduct_result {
       {
         case 0:
           if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Data\Product\DataProductModel();
+            $this->success = new \Airavata\Model\Data\Replica\DataProductModel();
             $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
@@ -54090,7 +54090,7 @@ class Airavata_registerReplicaLocation_args {
    */
   public $authzToken = null;
   /**
-   * @var \Airavata\Model\Data\Product\DataReplicaLocationModel
+   * @var \Airavata\Model\Data\Replica\DataReplicaLocationModel
    */
   public $replicaLocationModel = null;
 
@@ -54105,7 +54105,7 @@ class Airavata_registerReplicaLocation_args {
         2 => array(
           'var' => 'replicaLocationModel',
           'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Data\Product\DataReplicaLocationModel',
+          'class' => '\Airavata\Model\Data\Replica\DataReplicaLocationModel',
           ),
         );
     }
@@ -54148,7 +54148,7 @@ class Airavata_registerReplicaLocation_args {
           break;
         case 2:
           if ($ftype == TType::STRUCT) {
-            $this->replicaLocationModel = new \Airavata\Model\Data\Product\DataReplicaLocationModel();
+            $this->replicaLocationModel = new \Airavata\Model\Data\Replica\DataReplicaLocationModel();
             $xfer += $this->replicaLocationModel->read($input);
           } else {
             $xfer += $input->skip($ftype);

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 f8fc506..ea2913c 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
@@ -44188,7 +44188,7 @@ class registerDataProduct_args:
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'dataProductModel', (apache.airavata.model.data.product.ttypes.DataProductModel, apache.airavata.model.data.product.ttypes.DataProductModel.thrift_spec), None, ), # 2
+    (2, TType.STRUCT, 'dataProductModel', (apache.airavata.model.data.replica.ttypes.DataProductModel, apache.airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 2
   )
 
   def __init__(self, authzToken=None, dataProductModel=None,):
@@ -44212,7 +44212,7 @@ class registerDataProduct_args:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRUCT:
-          self.dataProductModel = apache.airavata.model.data.product.ttypes.DataProductModel()
+          self.dataProductModel = apache.airavata.model.data.replica.ttypes.DataProductModel()
           self.dataProductModel.read(iprot)
         else:
           iprot.skip(ftype)
@@ -44476,7 +44476,7 @@ class getDataProduct_result:
   """
 
   thrift_spec = (
-    (0, TType.STRUCT, 'success', (apache.airavata.model.data.product.ttypes.DataProductModel, apache.airavata.model.data.product.ttypes.DataProductModel.thrift_spec), None, ), # 0
+    (0, TType.STRUCT, 'success', (apache.airavata.model.data.replica.ttypes.DataProductModel, apache.airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
@@ -44501,7 +44501,7 @@ class getDataProduct_result:
         break
       if fid == 0:
         if ftype == TType.STRUCT:
-          self.success = apache.airavata.model.data.product.ttypes.DataProductModel()
+          self.success = apache.airavata.model.data.replica.ttypes.DataProductModel()
           self.success.read(iprot)
         else:
           iprot.skip(ftype)
@@ -44596,7 +44596,7 @@ class registerReplicaLocation_args:
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'replicaLocationModel', (apache.airavata.model.data.product.ttypes.DataReplicaLocationModel, apache.airavata.model.data.product.ttypes.DataReplicaLocationModel.thrift_spec), None, ), # 2
+    (2, TType.STRUCT, 'replicaLocationModel', (apache.airavata.model.data.replica.ttypes.DataReplicaLocationModel, apache.airavata.model.data.replica.ttypes.DataReplicaLocationModel.thrift_spec), None, ), # 2
   )
 
   def __init__(self, authzToken=None, replicaLocationModel=None,):
@@ -44620,7 +44620,7 @@ class registerReplicaLocation_args:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRUCT:
-          self.replicaLocationModel = apache.airavata.model.data.product.ttypes.DataReplicaLocationModel()
+          self.replicaLocationModel = apache.airavata.model.data.replica.ttypes.DataReplicaLocationModel()
           self.replicaLocationModel.read(iprot)
         else:
           iprot.skip(ftype)

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/ttypes.py
index bd6011e..dc5f0e6 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/ttypes.py
@@ -23,7 +23,7 @@ import apache.airavata.model.appcatalog.storageresource.ttypes
 import apache.airavata.model.appcatalog.gatewayprofile.ttypes
 import apache.airavata.model.data.movement.ttypes
 import apache.airavata.model.workflow.ttypes
-import apache.airavata.model.data.product.ttypes
+import apache.airavata.model.data.replica.ttypes
 
 
 from thrift.transport import TTransport

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/ttypes.py
index b350211..28c903a 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/ttypes.py
@@ -19,7 +19,7 @@ import apache.airavata.model.process.ttypes
 import apache.airavata.model.scheduling.ttypes
 import apache.airavata.model.status.ttypes
 import apache.airavata.model.data.movement.ttypes
-import apache.airavata.model.data.product.ttypes
+import apache.airavata.model.data.replica.ttypes
 
 
 from thrift.transport import TTransport

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
deleted file mode 100644
index ed9f8a9..0000000
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
+++ /dev/null
@@ -1,73 +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.client.samples;
-
-import org.apache.airavata.api.Airavata;
-import org.apache.airavata.api.client.AiravataClientFactory;
-import org.apache.airavata.model.data.product.*;
-import org.apache.airavata.model.security.AuthzToken;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DataCatalogSample {
-    private final static Logger logger = LoggerFactory.getLogger(DataCatalogSample.class);
-
-    public static final String THRIFT_SERVER_HOST = "gw56.iu.xsede.org";
-    public static final int THRIFT_SERVER_PORT = 8930;
-    private static final String USER_NAME = "master";
-    private static final String DEFAULT_GATEWAY = "default";
-    private static final String STORAGE_RESOURCE_ID = "gw75.iu.xsede.org_3e40e62b-be11-4590-bf24-b1b6796c3572";
-    private static final AuthzToken authzToken = new AuthzToken("empty-token");
-    private static Airavata.Client client;
-
-    public static void main(String[] args) {
-        try {
-            client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
-            System.out.println(client.getAPIVersion(authzToken));
-
-            DataProductModel dataProductModel = new DataProductModel();
-            dataProductModel.setGatewayId(DEFAULT_GATEWAY);
-            dataProductModel.setOwnerName(USER_NAME);
-            dataProductModel.setProductName("test-1");
-            dataProductModel.setLogicalPath("/test/test/test/" + System.currentTimeMillis());
-            dataProductModel.setDataProductType(DataProductType.FILE);
-
-            DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
-            replicaLocationModel.setStorageResourceId(STORAGE_RESOURCE_ID);
-            replicaLocationModel.setReplicaName("test-1-replica-1");
-            replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE);
-            replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
-            replicaLocationModel.setFilePath("/var/www/portals/gateway-user-data/testdrive/test.txt");
-
-            dataProductModel.addToReplicaLocations(replicaLocationModel);
-
-            String productUri = client.registerDataProduct(authzToken, dataProductModel);
-            System.out.println(productUri);
-
-
-            dataProductModel = client.getDataProduct(authzToken, "airavata-dp://Eroma2016@seagrid/");
-            System.out.println(dataProductModel.getReplicaLocations().size());
-        } catch (Exception e) {
-            logger.error("Error while connecting with server", e.getMessage());
-            e.printStackTrace();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
new file mode 100644
index 0000000..1af3bc6
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/ReplicaCatalogSample.java
@@ -0,0 +1,73 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.model.data.replica.*;
+import org.apache.airavata.model.security.AuthzToken;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ReplicaCatalogSample {
+    private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogSample.class);
+
+    public static final String THRIFT_SERVER_HOST = "gw56.iu.xsede.org";
+    public static final int THRIFT_SERVER_PORT = 8930;
+    private static final String USER_NAME = "master";
+    private static final String DEFAULT_GATEWAY = "default";
+    private static final String STORAGE_RESOURCE_ID = "gw75.iu.xsede.org_3e40e62b-be11-4590-bf24-b1b6796c3572";
+    private static final AuthzToken authzToken = new AuthzToken("empty-token");
+    private static Airavata.Client client;
+
+    public static void main(String[] args) {
+        try {
+            client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+            System.out.println(client.getAPIVersion(authzToken));
+
+            DataProductModel dataProductModel = new DataProductModel();
+            dataProductModel.setGatewayId(DEFAULT_GATEWAY);
+            dataProductModel.setOwnerName(USER_NAME);
+            dataProductModel.setProductName("test-1");
+            dataProductModel.setLogicalPath("/test/test/test/" + System.currentTimeMillis());
+            dataProductModel.setDataProductType(DataProductType.FILE);
+
+            DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
+            replicaLocationModel.setStorageResourceId(STORAGE_RESOURCE_ID);
+            replicaLocationModel.setReplicaName("test-1-replica-1");
+            replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE);
+            replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
+            replicaLocationModel.setFilePath("/var/www/portals/gateway-user-data/testdrive/test.txt");
+
+            dataProductModel.addToReplicaLocations(replicaLocationModel);
+
+            String productUri = client.registerDataProduct(authzToken, dataProductModel);
+            System.out.println(productUri);
+
+
+            dataProductModel = client.getDataProduct(authzToken, "airavata-dp://Eroma2016@seagrid:/");
+            System.out.println(dataProductModel.getReplicaLocations().size());
+        } catch (Exception e) {
+            logger.error("Error while connecting with server", e.getMessage());
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 4d0b74f..5d4e331 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1feb84c..ed759d4 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 c6729d6..29beaba 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1c26cb3..ce4d7e4 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 59fed52..38bb50e 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,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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 21e3f67..8fa23cf 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 6f16ffb..eb74aaf 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 b4077ab..eb2bbef 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 bfb2501..6303047 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 ba120af..5cd0076 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 df28165..0c0eb10 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1916e31..f96036a 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 2771790..9d3cd9f 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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");
 


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

Posted by sh...@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/844a9abb
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/844a9abb
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/844a9abb

Branch: refs/heads/master
Commit: 844a9abb53334943c0500219f3b4e586e814789e
Parents: 464c5b4 6c483bc
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 18:08:28 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 18:08:28 2016 -0400

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      | 12 ++++++++---
 .../gfac/impl/task/BESJobSubmissionTask.java    | 22 +++++++++++++-------
 .../impl/task/utils/bes/DataTransferrer.java    | 13 +++++++-----
 .../task/utils/bes/UNICORESecurityContext.java  |  7 ++++---
 .../cpi/impl/SimpleOrchestratorImpl.java        |  9 ++++----
 5 files changed, 39 insertions(+), 24 deletions(-)
----------------------------------------------------------------------



[12/55] [abbrv] airavata git commit: resolving replicas at the orchestrator

Posted by sh...@apache.org.
resolving replicas at the orchestrator


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

Branch: refs/heads/master
Commit: 37487421cf150718b810e2aed2b42c72f1293526
Parents: faabd97
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 14:37:44 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 14:37:44 2016 -0400

----------------------------------------------------------------------
 .../server/OrchestratorServerHandler.java       | 37 +++++++++++++-------
 .../airavata/registry/cpi/DataCatalog.java      | 10 +++---
 2 files changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/37487421/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 7c192f5..25b3404 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
@@ -29,17 +29,16 @@ import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.common.utils.ZkConstants;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.scheduler.HostScheduler;
-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.Publisher;
-import org.apache.airavata.messaging.core.PublisherFactory;
+import org.apache.airavata.messaging.core.*;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.application.io.DataType;
+import org.apache.airavata.model.data.product.DataProductModel;
+import org.apache.airavata.model.data.product.ReplicaLocationCategory;
 import org.apache.airavata.model.error.LaunchValidationException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentType;
@@ -71,11 +70,7 @@ import org.apache.zookeeper.data.Stat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class OrchestratorServerHandler implements OrchestratorService.Iface {
 	private static Logger log = LoggerFactory.getLogger(OrchestratorServerHandler.class);
@@ -156,7 +151,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             }
             // 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.");
+                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();
@@ -165,9 +161,26 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
                 List<ProcessModel> processes = orchestrator.createProcesses(experimentId, gatewayId);
 
 				for (ProcessModel processModel : processes){
+					//FIXME Resolving replica if available. This is a very crude way of resolving input replicas. A full featured
+					//FIXME replica resolving logic should come here
+					DataCatalog dataCatalog = RegistryFactory.getDataCatalog();
+					processModel.getProcessInputs().stream().forEach(pi -> {
+						if (pi.getType().equals(DataType.URI) && pi.getValue().startsWith("airavata-dp://")) {
+							try {
+								DataProductModel dataProductModel = dataCatalog.getDataProduct(pi.getValue());
+								dataProductModel.getReplicaLocations().stream().filter(rpModel -> rpModel.getReplicaLocationCategory()
+										.equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).forEach(rpModel -> {
+									//TODO Should set storage resource id specific to each of these inputs
+									pi.setValue(rpModel.getFilePath());
+								});
+							} catch (DataCatalogException e) {
+								log.error(e.getMessage(), e);
+							}
+						}
+					});
 					String taskDag = orchestrator.createAndSaveTasks(gatewayId, processModel, experiment.getUserConfigurationData().isAiravataAutoSchedule());
 					processModel.setTaskDag(taskDag);
-					experimentCatalog.update(ExperimentCatalogModelType.PROCESS,processModel, processModel.getProcessId());
+					experimentCatalog.update(ExperimentCatalogModelType.PROCESS, processModel, processModel.getProcessId());
 				}
 
 				if (!validateProcess(experimentId, processes)) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/37487421/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
index 89b0cc8..2ddda7c 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
@@ -28,13 +28,13 @@ import java.util.List;
 public interface DataCatalog {
     String schema = "airavata-dp";
 
-    String registerDataProduct(DataProductModel resource) throws DataCatalogException;
+    String registerDataProduct(DataProductModel product) throws DataCatalogException;
 
-    boolean removeDataProduct(String resourceId) throws DataCatalogException;
+    boolean removeDataProduct(String productUri) throws DataCatalogException;
 
-    boolean updateDataProduct(DataProductModel resource) throws DataCatalogException;
+    boolean updateDataProduct(DataProductModel product) throws DataCatalogException;
 
-    DataProductModel getDataProduct(String resourceId) throws DataCatalogException;
+    DataProductModel getDataProduct(String productUri) throws DataCatalogException;
 
     String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException;
 
@@ -44,5 +44,5 @@ public interface DataCatalog {
 
     DataReplicaLocationModel getReplicaLocation(String replicaId) throws DataCatalogException;
 
-    List<DataReplicaLocationModel> getAllReplicaLocations(String resourceId) throws DataCatalogException;
+    List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws DataCatalogException;
 }


[55/55] [abbrv] airavata git commit: Merge branch 'develop'

Posted by sh...@apache.org.
Merge branch 'develop'


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

Branch: refs/heads/master
Commit: ab262c7061ab395df3c61ecf2e455e041b64b689
Parents: 7e7e3a9 5f484b9
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Mar 25 17:21:56 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Mar 25 17:21:56 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   119 +-
 .../api/server/handler/utils/DataCatInit.java   |   315 -
 .../server/handler/utils/ReplicaCatInit.java    |   315 +
 .../java/org/apache/airavata/api/Airavata.java  | 39596 ++++++++---------
 .../main/resources/lib/airavata/Airavata.cpp    |  2060 +-
 .../src/main/resources/lib/airavata/Airavata.h  |   820 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    61 +-
 .../airavata/application_io_models_types.cpp    |    44 +
 .../lib/airavata/application_io_models_types.h  |    24 +-
 .../airavata/compute_resource_model_types.cpp   |    50 +-
 .../lib/airavata/compute_resource_model_types.h |    18 +-
 .../airavata/data_catalog_models_constants.cpp  |    34 +
 .../airavata/data_catalog_models_constants.h    |    41 +
 .../lib/airavata/data_catalog_models_types.cpp  |   867 +
 .../lib/airavata/data_catalog_models_types.h    |   363 +
 .../lib/airavata/process_model_types.cpp        |    22 +
 .../lib/airavata/process_model_types.h          |    12 +-
 .../replica_catalog_models_constants.cpp        |     2 +-
 .../airavata/replica_catalog_models_constants.h |     2 +-
 .../airavata/replica_catalog_models_types.cpp   |   434 +-
 .../lib/airavata/replica_catalog_models_types.h |   143 +-
 .../resources/lib/Airavata/API/Airavata.php     |  1014 +-
 .../Model/AppCatalog/ComputeResource/Types.php  |    44 +-
 .../lib/Airavata/Model/Application/Io/Types.php |    46 +
 .../lib/Airavata/Model/Data/Product/Types.php   |   879 +
 .../lib/Airavata/Model/Data/Replica/Types.php   |   803 +
 .../lib/Airavata/Model/Process/Types.php        |    23 +
 .../lib/apache/airavata/api/Airavata-remote     |    59 +-
 .../lib/apache/airavata/api/Airavata.py         |   980 +-
 .../resources/lib/apache/airavata/api/ttypes.py |     2 +-
 .../model/appcatalog/computeresource/ttypes.py  |    34 +-
 .../airavata/model/application/io/ttypes.py     |    30 +-
 .../airavata/model/data/product/__init__.py     |     1 +
 .../airavata/model/data/product/constants.py    |    11 +
 .../airavata/model/data/product/ttypes.py       |   549 +
 .../airavata/model/data/replica/__init__.py     |     1 +
 .../airavata/model/data/replica/constants.py    |    11 +
 .../airavata/model/data/replica/ttypes.py       |   511 +
 .../lib/apache/airavata/model/process/ttypes.py |    15 +-
 .../lib/apache/airavata/model/ttypes.py         |     2 +-
 .../client/samples/DataManagerSample.java       |    79 -
 .../client/samples/ReplicaCatalogSample.java    |    72 +
 .../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 +-
 .../apache/airavata/model/WorkflowModel.java    |     2 +-
 .../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        |   209 +-
 .../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     |   116 +-
 .../application/io/OutputDataObjectType.java    |   116 +-
 .../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 +-
 .../model/data/replica/DataProductModel.java    |  1677 +
 .../model/data/replica/DataProductType.java     |    62 +
 .../data/replica/DataReplicaLocationModel.java  |  1635 +
 .../data/replica/ReplicaLocationCategory.java   |    68 +
 .../data/replica/ReplicaPersistentType.java     |    62 +
 .../data/resource/DataReplicaLocationModel.java |  1635 -
 .../model/data/resource/DataResourceModel.java  |  1837 -
 .../model/data/resource/DataResourceType.java   |    62 -
 .../data/resource/ReplicaLocationCategory.java  |    68 -
 .../data/resource/ReplicaPersistentType.java    |    62 -
 .../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    |   116 +-
 .../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 +-
 .../model/util/ExperimentModelUtil.java         |     1 +
 .../main/resources/airavata-server.properties   |    14 +-
 .../server/src/main/resources/gfac-config.yaml  |     2 +-
 .../test/resources/airavata-server.properties   |    29 +-
 modules/data-manager/data-manager-core/pom.xml  |    61 -
 .../data/manager/core/DataManagerFactory.java   |    34 -
 .../data/manager/core/DataManagerImpl.java      |   444 -
 .../data/manager/core/ssh/CommandOutput.java    |    34 -
 .../data/manager/core/ssh/SSHApiException.java  |    33 -
 .../data/manager/core/ssh/SSHUtils.java         |   506 -
 .../manager/core/ssh/StandardOutReader.java     |    86 -
 .../manager/core/DataManagerFactoryTest.java    |    45 -
 .../data/manager/core/DataManagerImplTest.java  |   208 -
 .../data/manager/core/utils/AppCatInit.java     |   320 -
 .../data/manager/core/utils/DataCatInit.java    |   315 -
 modules/data-manager/data-manager-cpi/pom.xml   |    30 -
 .../airavata/data/manager/cpi/DataManager.java  |   121 -
 .../data/manager/cpi/DataManagerConstants.java  |    28 -
 .../data/manager/cpi/DataManagerException.java  |    35 -
 modules/data-manager/pom.xml                    |    54 -
 .../apache/airavata/gfac/core/GFacUtils.java    |    19 +-
 .../airavata/gfac/impl/GFacEngineImpl.java      |    12 +-
 .../gfac/impl/task/BESJobSubmissionTask.java    |    70 +-
 .../gfac/impl/task/SCPDataStageTask.java        |     4 +-
 .../impl/task/utils/bes/DataTransferrer.java    |    83 +-
 .../task/utils/bes/UNICORESecurityContext.java  |     7 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |     9 +-
 .../server/OrchestratorServerHandler.java       |    37 +-
 .../core/data/catalog/impl/DataCatalogImpl.java |   286 -
 .../core/data/catalog/model/Configuration.java  |    55 -
 .../data/catalog/model/DataReplicaLocation.java |   169 -
 .../data/catalog/model/DataReplicaMetaData.java |    77 -
 .../catalog/model/DataReplicaMetaData_PK.java   |    59 -
 .../core/data/catalog/model/DataResource.java   |   177 -
 .../catalog/model/DataResourceMetaData.java     |    77 -
 .../catalog/model/DataResourceMetaData_PK.java  |    59 -
 .../catalog/utils/DataCatalogConstants.java     |    49 -
 .../data/catalog/utils/DataCatalogJPAUtils.java |    82 -
 .../utils/DataCatalogQueryGenerator.java        |   111 -
 .../utils/ThriftDataModelConversion.java        |   213 -
 .../catalog/impl/ExperimentRegistry.java        |    11 +-
 .../catalog/impl/RegistryFactory.java           |    10 +-
 .../catalog/model/ExperimentInput.java          |    10 +
 .../catalog/model/ExperimentOutput.java         |    11 +
 .../core/experiment/catalog/model/Process.java  |    10 +
 .../experiment/catalog/model/ProcessInput.java  |    11 +
 .../experiment/catalog/model/ProcessOutput.java |    11 +
 .../resources/ExperimentInputResource.java      |    10 +
 .../resources/ExperimentOutputResource.java     |    10 +
 .../catalog/resources/ProcessInputResource.java |    10 +
 .../resources/ProcessOutputResource.java        |    10 +
 .../catalog/resources/ProcessResource.java      |    10 +
 .../experiment/catalog/resources/Utils.java     |     1 +
 .../utils/ThriftDataModelConversion.java        |     5 +
 .../registry/core/impl/RegistryImpl.java        |     6 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |   366 +
 .../replica/catalog/model/Configuration.java    |    55 +
 .../core/replica/catalog/model/DataProduct.java |   177 +
 .../catalog/model/DataProductMetaData.java      |    77 +
 .../catalog/model/DataProductMetaData_PK.java   |    59 +
 .../catalog/model/DataReplicaLocation.java      |   169 +
 .../catalog/model/DataReplicaMetaData.java      |    77 +
 .../catalog/model/DataReplicaMetaData_PK.java   |    59 +
 .../catalog/utils/ReplicaCatalogConstants.java  |    49 +
 .../catalog/utils/ReplicaCatalogJPAUtils.java   |    82 +
 .../utils/ReplicaCatalogQueryGenerator.java     |   111 +
 .../utils/ThriftDataModelConversion.java        |   203 +
 .../src/main/resources/META-INF/persistence.xml |    12 +-
 .../src/main/resources/datacatalog-derby.sql    |    77 -
 .../src/main/resources/datacatalog-mysql.sql    |    76 -
 .../src/main/resources/expcatalog-derby.sql     |     5 +
 .../src/main/resources/expcatalog-mysql.sql     |     5 +
 .../src/main/resources/replicacatalog-derby.sql |    77 +
 .../src/main/resources/replicacatalog-mysql.sql |    76 +
 .../airavata/data/catalog/DataCatalogTest.java  |   219 -
 .../airavata/data/catalog/util/Initialize.java  |   315 -
 .../replica/catalog/ReplicaCatalogTest.java     |    99 +
 .../replica/catalog/util/Initialize.java        |   315 +
 .../src/test/resources/datacatalog-derby.sql    |    52 -
 .../airavata/registry/cpi/DataCatalog.java      |    45 -
 .../registry/cpi/DataCatalogException.java      |    36 -
 .../apache/airavata/registry/cpi/Registry.java  |     2 +-
 .../airavata/registry/cpi/ReplicaCatalog.java   |    54 +
 .../registry/cpi/ReplicaCatalogException.java   |    35 +
 pom.xml                                         |     1 -
 .../airavata-apis/airavata_api.thrift           |    91 +-
 .../data-models/airavata_data_models.thrift     |     2 +-
 .../application_io_models.thrift                |     6 +-
 .../replica_catalog_models.thrift               |    74 -
 .../process_model.thrift                        |     3 +-
 .../replica_catalog_models.thrift               |    70 +
 .../compute_resource_model.thrift               |     4 +-
 224 files changed, 32384 insertions(+), 33427 deletions(-)
----------------------------------------------------------------------



[43/55] [abbrv] airavata git commit: adding storage resource id to input and outputs

Posted by sh...@apache.org.
adding storage resource id to input and outputs


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

Branch: refs/heads/master
Commit: 24531956710134f2fa65b4fe0d661f1489b5158e
Parents: 3357169
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 15:35:24 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 15:35:24 2016 -0400

----------------------------------------------------------------------
 .../airavata/application_io_models_types.cpp    |  44 +++++++
 .../lib/airavata/application_io_models_types.h  |  24 +++-
 .../lib/Airavata/Model/Application/Io/Types.php |  46 ++++++++
 .../airavata/model/application/io/ttypes.py     |  30 ++++-
 .../application/io/InputDataObjectType.java     | 114 ++++++++++++++++++-
 .../application/io/OutputDataObjectType.java    | 114 ++++++++++++++++++-
 .../server/OrchestratorServerHandler.java       |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   9 +-
 .../catalog/model/ExperimentInput.java          |  10 ++
 .../catalog/model/ExperimentOutput.java         |  11 ++
 .../experiment/catalog/model/ProcessInput.java  |  11 ++
 .../experiment/catalog/model/ProcessOutput.java |  11 ++
 .../resources/ExperimentInputResource.java      |  10 ++
 .../resources/ExperimentOutputResource.java     |  10 ++
 .../catalog/resources/ProcessInputResource.java |  10 ++
 .../resources/ProcessOutputResource.java        |  10 ++
 .../utils/ThriftDataModelConversion.java        |   4 +
 .../src/main/resources/expcatalog-derby.sql     |   4 +
 .../src/main/resources/expcatalog-mysql.sql     |   4 +
 .../application_io_models.thrift                |   6 +-
 20 files changed, 466 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
index 0604770..15baf31 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
@@ -107,6 +107,11 @@ void InputDataObjectType::__set_dataStaged(const bool val) {
 __isset.dataStaged = true;
 }
 
+void InputDataObjectType::__set_storageResourceId(const std::string& val) {
+  this->storageResourceId = val;
+__isset.storageResourceId = true;
+}
+
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -219,6 +224,14 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 12:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->storageResourceId);
+          this->__isset.storageResourceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -292,6 +305,11 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeBool(this->dataStaged);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.storageResourceId) {
+    xfer += oprot->writeFieldBegin("storageResourceId", ::apache::thrift::protocol::T_STRING, 12);
+    xfer += oprot->writeString(this->storageResourceId);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -310,6 +328,7 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.isRequired, b.isRequired);
   swap(a.requiredToAddedToCommandLine, b.requiredToAddedToCommandLine);
   swap(a.dataStaged, b.dataStaged);
+  swap(a.storageResourceId, b.storageResourceId);
   swap(a.__isset, b.__isset);
 }
 
@@ -325,6 +344,7 @@ InputDataObjectType::InputDataObjectType(const InputDataObjectType& other1) {
   isRequired = other1.isRequired;
   requiredToAddedToCommandLine = other1.requiredToAddedToCommandLine;
   dataStaged = other1.dataStaged;
+  storageResourceId = other1.storageResourceId;
   __isset = other1.__isset;
 }
 InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& other2) {
@@ -339,6 +359,7 @@ InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& o
   isRequired = other2.isRequired;
   requiredToAddedToCommandLine = other2.requiredToAddedToCommandLine;
   dataStaged = other2.dataStaged;
+  storageResourceId = other2.storageResourceId;
   __isset = other2.__isset;
   return *this;
 }
@@ -356,6 +377,7 @@ void InputDataObjectType::printTo(std::ostream& out) const {
   out << ", " << "isRequired="; (__isset.isRequired ? (out << to_string(isRequired)) : (out << "<null>"));
   out << ", " << "requiredToAddedToCommandLine="; (__isset.requiredToAddedToCommandLine ? (out << to_string(requiredToAddedToCommandLine)) : (out << "<null>"));
   out << ", " << "dataStaged="; (__isset.dataStaged ? (out << to_string(dataStaged)) : (out << "<null>"));
+  out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ")";
 }
 
@@ -413,6 +435,11 @@ void OutputDataObjectType::__set_outputStreaming(const bool val) {
 __isset.outputStreaming = true;
 }
 
+void OutputDataObjectType::__set_storageResourceId(const std::string& val) {
+  this->storageResourceId = val;
+__isset.storageResourceId = true;
+}
+
 uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -517,6 +544,14 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
           xfer += iprot->skip(ftype);
         }
         break;
+      case 11:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->storageResourceId);
+          this->__isset.storageResourceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -585,6 +620,11 @@ uint32_t OutputDataObjectType::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeBool(this->outputStreaming);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.storageResourceId) {
+    xfer += oprot->writeFieldBegin("storageResourceId", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeString(this->storageResourceId);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -602,6 +642,7 @@ void swap(OutputDataObjectType &a, OutputDataObjectType &b) {
   swap(a.location, b.location);
   swap(a.searchQuery, b.searchQuery);
   swap(a.outputStreaming, b.outputStreaming);
+  swap(a.storageResourceId, b.storageResourceId);
   swap(a.__isset, b.__isset);
 }
 
@@ -616,6 +657,7 @@ OutputDataObjectType::OutputDataObjectType(const OutputDataObjectType& other4) {
   location = other4.location;
   searchQuery = other4.searchQuery;
   outputStreaming = other4.outputStreaming;
+  storageResourceId = other4.storageResourceId;
   __isset = other4.__isset;
 }
 OutputDataObjectType& OutputDataObjectType::operator=(const OutputDataObjectType& other5) {
@@ -629,6 +671,7 @@ OutputDataObjectType& OutputDataObjectType::operator=(const OutputDataObjectType
   location = other5.location;
   searchQuery = other5.searchQuery;
   outputStreaming = other5.outputStreaming;
+  storageResourceId = other5.storageResourceId;
   __isset = other5.__isset;
   return *this;
 }
@@ -645,6 +688,7 @@ void OutputDataObjectType::printTo(std::ostream& out) const {
   out << ", " << "location="; (__isset.location ? (out << to_string(location)) : (out << "<null>"));
   out << ", " << "searchQuery="; (__isset.searchQuery ? (out << to_string(searchQuery)) : (out << "<null>"));
   out << ", " << "outputStreaming="; (__isset.outputStreaming ? (out << to_string(outputStreaming)) : (out << "<null>"));
+  out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
index 6180c2c..5a52589 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
@@ -55,7 +55,7 @@ class InputDataObjectType;
 class OutputDataObjectType;
 
 typedef struct _InputDataObjectType__isset {
-  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false) {}
+  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false), storageResourceId(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -66,6 +66,7 @@ typedef struct _InputDataObjectType__isset {
   bool isRequired :1;
   bool requiredToAddedToCommandLine :1;
   bool dataStaged :1;
+  bool storageResourceId :1;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType {
@@ -73,7 +74,7 @@ class InputDataObjectType {
 
   InputDataObjectType(const InputDataObjectType&);
   InputDataObjectType& operator=(const InputDataObjectType&);
-  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0) {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0), storageResourceId() {
   }
 
   virtual ~InputDataObjectType() throw();
@@ -88,6 +89,7 @@ class InputDataObjectType {
   bool isRequired;
   bool requiredToAddedToCommandLine;
   bool dataStaged;
+  std::string storageResourceId;
 
   _InputDataObjectType__isset __isset;
 
@@ -113,6 +115,8 @@ class InputDataObjectType {
 
   void __set_dataStaged(const bool val);
 
+  void __set_storageResourceId(const std::string& val);
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -157,6 +161,10 @@ class InputDataObjectType {
       return false;
     else if (__isset.dataStaged && !(dataStaged == rhs.dataStaged))
       return false;
+    if (__isset.storageResourceId != rhs.__isset.storageResourceId)
+      return false;
+    else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {
@@ -180,7 +188,7 @@ inline std::ostream& operator<<(std::ostream& out, const InputDataObjectType& ob
 }
 
 typedef struct _OutputDataObjectType__isset {
-  _OutputDataObjectType__isset() : value(false), type(false), applicationArgument(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), location(false), searchQuery(false), outputStreaming(false) {}
+  _OutputDataObjectType__isset() : value(false), type(false), applicationArgument(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), location(false), searchQuery(false), outputStreaming(false), storageResourceId(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -190,6 +198,7 @@ typedef struct _OutputDataObjectType__isset {
   bool location :1;
   bool searchQuery :1;
   bool outputStreaming :1;
+  bool storageResourceId :1;
 } _OutputDataObjectType__isset;
 
 class OutputDataObjectType {
@@ -197,7 +206,7 @@ class OutputDataObjectType {
 
   OutputDataObjectType(const OutputDataObjectType&);
   OutputDataObjectType& operator=(const OutputDataObjectType&);
-  OutputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), location(), searchQuery(), outputStreaming(0) {
+  OutputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), location(), searchQuery(), outputStreaming(0), storageResourceId() {
   }
 
   virtual ~OutputDataObjectType() throw();
@@ -211,6 +220,7 @@ class OutputDataObjectType {
   std::string location;
   std::string searchQuery;
   bool outputStreaming;
+  std::string storageResourceId;
 
   _OutputDataObjectType__isset __isset;
 
@@ -234,6 +244,8 @@ class OutputDataObjectType {
 
   void __set_outputStreaming(const bool val);
 
+  void __set_storageResourceId(const std::string& val);
+
   bool operator == (const OutputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -274,6 +286,10 @@ class OutputDataObjectType {
       return false;
     else if (__isset.outputStreaming && !(outputStreaming == rhs.outputStreaming))
       return false;
+    if (__isset.storageResourceId != rhs.__isset.storageResourceId)
+      return false;
+    else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
+      return false;
     return true;
   }
   bool operator != (const OutputDataObjectType &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
index cc208a6..b2890c1 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
@@ -111,6 +111,10 @@ class InputDataObjectType {
    * @var bool
    */
   public $dataStaged = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -159,6 +163,10 @@ class InputDataObjectType {
           'var' => 'dataStaged',
           'type' => TType::BOOL,
           ),
+        12 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -195,6 +203,9 @@ class InputDataObjectType {
       if (isset($vals['dataStaged'])) {
         $this->dataStaged = $vals['dataStaged'];
       }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
     }
   }
 
@@ -294,6 +305,13 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -362,6 +380,11 @@ class InputDataObjectType {
       $xfer += $output->writeBool($this->dataStaged);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 12);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -438,6 +461,10 @@ class OutputDataObjectType {
    * @var bool
    */
   public $outputStreaming = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -482,6 +509,10 @@ class OutputDataObjectType {
           'var' => 'outputStreaming',
           'type' => TType::BOOL,
           ),
+        11 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -515,6 +546,9 @@ class OutputDataObjectType {
       if (isset($vals['outputStreaming'])) {
         $this->outputStreaming = $vals['outputStreaming'];
       }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
     }
   }
 
@@ -607,6 +641,13 @@ class OutputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -670,6 +711,11 @@ class OutputDataObjectType {
       $xfer += $output->writeBool($this->outputStreaming);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 11);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
index 1ce06c8..9a2cedf 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
@@ -88,6 +88,7 @@ class InputDataObjectType:
    - isRequired
    - requiredToAddedToCommandLine
    - dataStaged
+   - storageResourceId
   """
 
   thrift_spec = (
@@ -103,9 +104,10 @@ class InputDataObjectType:
     (9, TType.BOOL, 'isRequired', None, None, ), # 9
     (10, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 10
     (11, TType.BOOL, 'dataStaged', None, None, ), # 11
+    (12, TType.STRING, 'storageResourceId', None, None, ), # 12
   )
 
-  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None,):
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None, storageResourceId=None,):
     self.name = name
     self.value = value
     self.type = type
@@ -117,6 +119,7 @@ class InputDataObjectType:
     self.isRequired = isRequired
     self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
     self.dataStaged = dataStaged
+    self.storageResourceId = storageResourceId
 
   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:
@@ -182,6 +185,11 @@ class InputDataObjectType:
           self.dataStaged = iprot.readBool()
         else:
           iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -236,6 +244,10 @@ class InputDataObjectType:
       oprot.writeFieldBegin('dataStaged', TType.BOOL, 11)
       oprot.writeBool(self.dataStaged)
       oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 12)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -258,6 +270,7 @@ class InputDataObjectType:
     value = (value * 31) ^ hash(self.isRequired)
     value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
     value = (value * 31) ^ hash(self.dataStaged)
+    value = (value * 31) ^ hash(self.storageResourceId)
     return value
 
   def __repr__(self):
@@ -309,6 +322,7 @@ class OutputDataObjectType:
    - location
    - searchQuery
    - outputStreaming
+   - storageResourceId
   """
 
   thrift_spec = (
@@ -323,9 +337,10 @@ class OutputDataObjectType:
     (8, TType.STRING, 'location', None, None, ), # 8
     (9, TType.STRING, 'searchQuery', None, None, ), # 9
     (10, TType.BOOL, 'outputStreaming', None, None, ), # 10
+    (11, TType.STRING, 'storageResourceId', None, None, ), # 11
   )
 
-  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None,):
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None, storageResourceId=None,):
     self.name = name
     self.value = value
     self.type = type
@@ -336,6 +351,7 @@ class OutputDataObjectType:
     self.location = location
     self.searchQuery = searchQuery
     self.outputStreaming = outputStreaming
+    self.storageResourceId = storageResourceId
 
   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:
@@ -396,6 +412,11 @@ class OutputDataObjectType:
           self.outputStreaming = iprot.readBool()
         else:
           iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -446,6 +467,10 @@ class OutputDataObjectType:
       oprot.writeFieldBegin('outputStreaming', TType.BOOL, 10)
       oprot.writeBool(self.outputStreaming)
       oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 11)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -467,6 +492,7 @@ class OutputDataObjectType:
     value = (value * 31) ^ hash(self.location)
     value = (value * 31) ^ hash(self.searchQuery)
     value = (value * 31) ^ hash(self.outputStreaming)
+    value = (value * 31) ^ hash(self.storageResourceId)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 e464551..3cf7d8a 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
@@ -92,6 +92,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private static final org.apache.thrift.protocol.TField IS_REQUIRED_FIELD_DESC = new org.apache.thrift.protocol.TField("isRequired", org.apache.thrift.protocol.TType.BOOL, (short)9);
   private static final org.apache.thrift.protocol.TField REQUIRED_TO_ADDED_TO_COMMAND_LINE_FIELD_DESC = new org.apache.thrift.protocol.TField("requiredToAddedToCommandLine", org.apache.thrift.protocol.TType.BOOL, (short)10);
   private static final org.apache.thrift.protocol.TField DATA_STAGED_FIELD_DESC = new org.apache.thrift.protocol.TField("dataStaged", org.apache.thrift.protocol.TType.BOOL, (short)11);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)12);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -110,6 +111,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private boolean isRequired; // optional
   private boolean requiredToAddedToCommandLine; // optional
   private boolean dataStaged; // optional
+  private String storageResourceId; // 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 {
@@ -127,7 +129,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     INPUT_ORDER((short)8, "inputOrder"),
     IS_REQUIRED((short)9, "isRequired"),
     REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)10, "requiredToAddedToCommandLine"),
-    DATA_STAGED((short)11, "dataStaged");
+    DATA_STAGED((short)11, "dataStaged"),
+    STORAGE_RESOURCE_ID((short)12, "storageResourceId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -164,6 +167,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
           return REQUIRED_TO_ADDED_TO_COMMAND_LINE;
         case 11: // DATA_STAGED
           return DATA_STAGED;
+        case 12: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
         default:
           return null;
       }
@@ -210,7 +215,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private static final int __REQUIREDTOADDEDTOCOMMANDLINE_ISSET_ID = 3;
   private static final int __DATASTAGED_ISSET_ID = 4;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED};
+  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED,_Fields.STORAGE_RESOURCE_ID};
   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);
@@ -236,6 +241,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.DATA_STAGED, new org.apache.thrift.meta_data.FieldMetaData("dataStaged", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", 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(InputDataObjectType.class, metaDataMap);
   }
@@ -278,6 +285,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     this.isRequired = other.isRequired;
     this.requiredToAddedToCommandLine = other.requiredToAddedToCommandLine;
     this.dataStaged = other.dataStaged;
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
   }
 
   public InputDataObjectType deepCopy() {
@@ -302,6 +312,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     this.requiredToAddedToCommandLine = false;
     setDataStagedIsSet(false);
     this.dataStaged = false;
+    this.storageResourceId = null;
   }
 
   public String getName() {
@@ -560,6 +571,29 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATASTAGED_ISSET_ID, value);
   }
 
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -650,6 +684,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       }
       break;
 
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -688,6 +730,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     case DATA_STAGED:
       return isDataStaged();
 
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
     }
     throw new IllegalStateException();
   }
@@ -721,6 +766,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       return isSetRequiredToAddedToCommandLine();
     case DATA_STAGED:
       return isSetDataStaged();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
     }
     throw new IllegalStateException();
   }
@@ -837,6 +884,15 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return false;
     }
 
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
     return true;
   }
 
@@ -899,6 +955,11 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     if (present_dataStaged)
       list.add(dataStaged);
 
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
     return list.hashCode();
   }
 
@@ -1020,6 +1081,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1127,6 +1198,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       sb.append(this.dataStaged);
       first = false;
     }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1264,6 +1345,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 12: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1342,6 +1431,13 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         oprot.writeBool(struct.dataStaged);
         oprot.writeFieldEnd();
       }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1391,7 +1487,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetDataStaged()) {
         optionals.set(9);
       }
-      oprot.writeBitSet(optionals, 10);
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(10);
+      }
+      oprot.writeBitSet(optionals, 11);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1422,6 +1521,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetDataStaged()) {
         oprot.writeBool(struct.dataStaged);
       }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
     }
 
     @Override
@@ -1429,7 +1531,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(10);
+      BitSet incoming = iprot.readBitSet(11);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1470,6 +1572,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         struct.dataStaged = iprot.readBool();
         struct.setDataStagedIsSet(true);
       }
+      if (incoming.get(10)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 8128001..7cd3ed7 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
@@ -91,6 +91,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private static final org.apache.thrift.protocol.TField LOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("location", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField SEARCH_QUERY_FIELD_DESC = new org.apache.thrift.protocol.TField("searchQuery", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField OUTPUT_STREAMING_FIELD_DESC = new org.apache.thrift.protocol.TField("outputStreaming", org.apache.thrift.protocol.TType.BOOL, (short)10);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)11);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -108,6 +109,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private String location; // optional
   private String searchQuery; // optional
   private boolean outputStreaming; // optional
+  private String storageResourceId; // 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 {
@@ -124,7 +126,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     DATA_MOVEMENT((short)7, "dataMovement"),
     LOCATION((short)8, "location"),
     SEARCH_QUERY((short)9, "searchQuery"),
-    OUTPUT_STREAMING((short)10, "outputStreaming");
+    OUTPUT_STREAMING((short)10, "outputStreaming"),
+    STORAGE_RESOURCE_ID((short)11, "storageResourceId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -159,6 +162,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
           return SEARCH_QUERY;
         case 10: // OUTPUT_STREAMING
           return OUTPUT_STREAMING;
+        case 11: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
         default:
           return null;
       }
@@ -204,7 +209,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private static final int __DATAMOVEMENT_ISSET_ID = 2;
   private static final int __OUTPUTSTREAMING_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_MOVEMENT,_Fields.LOCATION,_Fields.SEARCH_QUERY,_Fields.OUTPUT_STREAMING};
+  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_MOVEMENT,_Fields.LOCATION,_Fields.SEARCH_QUERY,_Fields.OUTPUT_STREAMING,_Fields.STORAGE_RESOURCE_ID};
   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);
@@ -228,6 +233,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.OUTPUT_STREAMING, new org.apache.thrift.meta_data.FieldMetaData("outputStreaming", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", 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(OutputDataObjectType.class, metaDataMap);
   }
@@ -269,6 +276,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       this.searchQuery = other.searchQuery;
     }
     this.outputStreaming = other.outputStreaming;
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
   }
 
   public OutputDataObjectType deepCopy() {
@@ -291,6 +301,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     this.searchQuery = null;
     setOutputStreamingIsSet(false);
     this.outputStreaming = false;
+    this.storageResourceId = null;
   }
 
   public String getName() {
@@ -527,6 +538,29 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __OUTPUTSTREAMING_ISSET_ID, value);
   }
 
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -609,6 +643,14 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       }
       break;
 
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -644,6 +686,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     case OUTPUT_STREAMING:
       return isOutputStreaming();
 
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
     }
     throw new IllegalStateException();
   }
@@ -675,6 +720,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       return isSetSearchQuery();
     case OUTPUT_STREAMING:
       return isSetOutputStreaming();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
     }
     throw new IllegalStateException();
   }
@@ -782,6 +829,15 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         return false;
     }
 
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
     return true;
   }
 
@@ -839,6 +895,11 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     if (present_outputStreaming)
       list.add(outputStreaming);
 
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
     return list.hashCode();
   }
 
@@ -950,6 +1011,16 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1051,6 +1122,16 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       sb.append(this.outputStreaming);
       first = false;
     }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1180,6 +1261,14 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 11: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1253,6 +1342,13 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         oprot.writeBool(struct.outputStreaming);
         oprot.writeFieldEnd();
       }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1299,7 +1395,10 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       if (struct.isSetOutputStreaming()) {
         optionals.set(8);
       }
-      oprot.writeBitSet(optionals, 9);
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(9);
+      }
+      oprot.writeBitSet(optionals, 10);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1327,6 +1426,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       if (struct.isSetOutputStreaming()) {
         oprot.writeBool(struct.outputStreaming);
       }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
     }
 
     @Override
@@ -1334,7 +1436,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(9);
+      BitSet incoming = iprot.readBitSet(10);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1371,6 +1473,10 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         struct.outputStreaming = iprot.readBool();
         struct.setOutputStreamingIsSet(true);
       }
+      if (incoming.get(9)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 c2574f4..1367e44 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
@@ -170,8 +170,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 								DataProductModel dataProductModel = replicaCatalog.getDataProduct(pi.getValue());
 								dataProductModel.getReplicaLocations().stream().filter(rpModel -> rpModel.getReplicaLocationCategory()
 										.equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).forEach(rpModel -> {
-									//TODO Should set storage resource id specific to each of these inputs
 									pi.setValue(rpModel.getFilePath());
+									pi.setStorageResourceId(rpModel.getStorageResourceId());
 								});
 							} catch (ReplicaCatalogException e) {
 								log.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 98dfe91..e890905 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -35,7 +35,6 @@ import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel
 import org.apache.airavata.model.status.*;
 import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
-import org.apache.airavata.registry.core.experiment.catalog.ExperimentCatResource;
 import org.apache.airavata.registry.core.experiment.catalog.ResourceType;
 import org.apache.airavata.registry.core.experiment.catalog.resources.*;
 import org.apache.airavata.registry.core.experiment.catalog.utils.ThriftDataModelConversion;
@@ -171,6 +170,7 @@ public class ExperimentRegistry {
                 resource.setInputOrder(input.getInputOrder());
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                resource.setStorageResourceId(input.getStorageResourceId());
                 resource.save();
             }
         } catch (Exception e) {
@@ -197,6 +197,7 @@ public class ExperimentRegistry {
                 resource.setLocation(output.getLocation());
                 resource.setSearchQuery(output.getSearchQuery());
                 resource.setOutputStreaming(output.isOutputStreaming());
+                resource.setStorageResourceId(output.getStorageResourceId());
                 resource.save();
             }
         } catch (Exception e) {
@@ -350,6 +351,7 @@ public class ExperimentRegistry {
                 resource.setInputOrder(input.getInputOrder());
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                resource.setStorageResourceId(input.getStorageResourceId());
                 resource.save();
             }
             return processID;
@@ -376,6 +378,7 @@ public class ExperimentRegistry {
                 resource.setLocation(output.getLocation());
                 resource.setSearchQuery(output.getSearchQuery());
                 resource.setOutputStreaming(output.isOutputStreaming());
+                resource.setStorageResourceId(output.getStorageResourceId());
                 resource.save();
             }
             return processID;
@@ -638,6 +641,7 @@ public class ExperimentRegistry {
                         exinput.setInputOrder(input.getInputOrder());
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.setStorageResourceId(input.getStorageResourceId());
                         exinput.save();
                     }
                 }
@@ -668,6 +672,7 @@ public class ExperimentRegistry {
                         resource.setApplicationArgument(output.getApplicationArgument());
                         resource.setSearchQuery(output.getSearchQuery());
                         resource.setOutputStreaming(output.isOutputStreaming());
+                        resource.setStorageResourceId(output.getStorageResourceId());
                         resource.save();
                     }
                 }
@@ -810,6 +815,7 @@ public class ExperimentRegistry {
                         exinput.setInputOrder(input.getInputOrder());
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.setStorageResourceId(input.getStorageResourceId());
                         exinput.save();
                     }
                 }
@@ -841,6 +847,7 @@ public class ExperimentRegistry {
                         resource.setApplicationArgument(output.getApplicationArgument());
                         resource.setSearchQuery(output.getSearchQuery());
                         resource.setOutputStreaming(output.isOutputStreaming());
+                        resource.setStorageResourceId(output.getStorageResourceId());
                         resource.save();
                     }
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
index defb89d..dc49741 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
@@ -42,6 +42,7 @@ public class ExperimentInput {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
+    private String storageResourceId;
     private Experiment experiment;
 
     @Id
@@ -146,6 +147,15 @@ public class ExperimentInput {
         this.requiredToAddedToCmd = requiredToAddedToCmd;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     @Column(name = "DATA_STAGED")
     public boolean getDataStaged() {
         return dataStaged;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
index ead2148..18de2dc 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
@@ -41,6 +41,7 @@ public class ExperimentOutput {
     private boolean dataMovement;
     private String location;
     private String searchQuery;
+    private String storageResourceId;
     private Experiment experiment;
 
 
@@ -146,6 +147,16 @@ public class ExperimentOutput {
         this.searchQuery = searchQuery;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
index 69631d3..0e30164 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
@@ -43,6 +43,7 @@ public class ProcessInput {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
+    private String storageResourceId;
     private Process process;
 
     @Id
@@ -156,6 +157,16 @@ public class ProcessInput {
         this.dataStaged = dataStaged;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
index ddf53b3..06971c2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
@@ -43,6 +43,7 @@ public class ProcessOutput {
     private String searchQuery;
     private Process process;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     @Id
     @Column(name = "PROCESS_ID")
@@ -146,6 +147,16 @@ public class ProcessOutput {
         this.outputStreaming = outputStreaming;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
     //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
index eea0a8d..e20aa25 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
@@ -47,6 +47,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged = false;
+    private String storageResourceId;
 
     public String getExperimentId() {
         return experimentId;
@@ -136,6 +137,14 @@ public class ExperimentInputResource extends AbstractExpCatResource {
         this.requiredToAddedToCmd = requiredToAddedToCmd;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public boolean getDataStaged() {
         return dataStaged;
     }
@@ -206,6 +215,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
             experimentInput.setIsRequired(isRequired);
             experimentInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             experimentInput.setDataStaged(dataStaged);
+            experimentInput.setStorageResourceId(storageResourceId);
             if (existingExpInput == null){
                 em.persist(experimentInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
index 7a60366..47e492b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
@@ -46,6 +46,7 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
     private String location;
     private String searchQuery;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     public String getExperimentId() {
         return experimentId;
@@ -135,6 +136,14 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
         return outputStreaming;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process output data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -196,6 +205,7 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
             experimentOutput.setLocation(location);
             experimentOutput.setSearchQuery(searchQuery);
             experimentOutput.setOutputStreaming(outputStreaming);
+            experimentOutput.setStorageResourceId(storageResourceId);
             if (existingExpOutput == null){
                 em.persist(experimentOutput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
index a73b6e3..fa09e88 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
@@ -47,6 +47,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
     private boolean isRequired = false;
     private boolean requiredToAddedToCmd = false;
     private boolean dataStaged = false;
+    private String storageResourceId;
 
     public String getProcessId() {
         return processId;
@@ -144,6 +145,14 @@ public class ProcessInputResource extends AbstractExpCatResource {
         this.dataStaged = dataStaged;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process input data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -206,6 +215,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
             processInput.setIsRequired(isRequired);
             processInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             processInput.setDataStaged(dataStaged);
+            processInput.setStorageResourceId(storageResourceId);
             if (existingProInput == null){
                 em.persist(processInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
index 290ee9a..ff10343 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
@@ -46,6 +46,7 @@ public class ProcessOutputResource extends AbstractExpCatResource {
     private String location;
     private String searchQuery;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     public String getProcessId() {
         return processId;
@@ -135,6 +136,14 @@ public class ProcessOutputResource extends AbstractExpCatResource {
         this.outputStreaming = outputStreaming;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process output data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -197,6 +206,7 @@ public class ProcessOutputResource extends AbstractExpCatResource {
             processOutput.setLocation(location);
             processOutput.setSearchQuery(searchQuery);
             processOutput.setOutputStreaming(outputStreaming);
+            processOutput.setStorageResourceId(storageResourceId);
             if (existingProcessOutput == null){
                 em.persist(processOutput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 1eea10d..1e6dda1 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -166,6 +166,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(inputResource.getIsRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
+                dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
                 return dataObjectType;
             }else if (object instanceof ProcessInputResource){
                 ProcessInputResource inputResource = (ProcessInputResource)object;
@@ -180,6 +181,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(inputResource.getIsRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
+                dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
                 return dataObjectType;
             }else {
                 return null;
@@ -203,6 +205,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setLocation(outputResource.getLocation());
                 dataObjectType.setSearchQuery(outputResource.getSearchQuery());
                 dataObjectType.setOutputStreaming(outputResource.isOutputStreaming());
+                dataObjectType.setStorageResourceId(outputResource.getStorageResourceId());
                 return dataObjectType;
             }else if (object instanceof ProcessOutputResource) {
                 ProcessOutputResource outputResource = (ProcessOutputResource) object;
@@ -216,6 +219,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setLocation(outputResource.getLocation());
                 dataObjectType.setSearchQuery(outputResource.getSearchQuery());
                 dataObjectType.setOutputStreaming(outputResource.isOutputStreaming());
+                dataObjectType.setStorageResourceId(outputResource.getStorageResourceId());
                 return dataObjectType;
             } else {
                 return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 904d37a..dd2c9ee 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -97,6 +97,7 @@ CREATE TABLE EXPERIMENT_INPUT
     IS_REQUIRED SMALLINT,
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -114,6 +115,7 @@ CREATE TABLE EXPERIMENT_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -212,6 +214,7 @@ CREATE TABLE PROCESS_INPUT
     IS_REQUIRED SMALLINT,
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
@@ -229,6 +232,7 @@ CREATE TABLE PROCESS_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index 2a2ba01..aef0b89 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -98,6 +98,7 @@ CREATE TABLE EXPERIMENT_INPUT
     IS_REQUIRED tinyint(1),
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -115,6 +116,7 @@ CREATE TABLE EXPERIMENT_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -216,6 +218,7 @@ CREATE TABLE PROCESS_INPUT
     IS_REQUIRED tinyint(1),
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
@@ -233,6 +236,7 @@ CREATE TABLE PROCESS_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
index 667a3e7..5098735 100644
--- a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
+++ b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
@@ -75,7 +75,8 @@ struct InputDataObjectType {
     8: optional i32 inputOrder,
     9: optional bool isRequired,
     10: optional bool requiredToAddedToCommandLine,
-    11: optional bool dataStaged
+    11: optional bool dataStaged,
+    12: optional string storageResourceId
 }
 
 /**
@@ -114,5 +115,6 @@ struct OutputDataObjectType {
     7: optional bool dataMovement,
     8: optional string location,
     9: optional string searchQuery,
-    10: optional bool outputStreaming
+    10: optional bool outputStreaming,
+    11: optional string storageResourceId,
 }
\ No newline at end of file


[02/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 97146d3..f8fc506 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
@@ -2075,13 +2075,13 @@ class Iface:
     """
     pass
 
-  def addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def addLocalDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param DMType
@@ -2100,7 +2100,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - localDataMovement
@@ -2148,13 +2148,13 @@ class Iface:
     """
     pass
 
-  def addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def addSCPDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param priorityOrder
@@ -2169,7 +2169,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - scpDataMovement
@@ -2216,13 +2216,13 @@ class Iface:
     """
     pass
 
-  def addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def addUnicoreDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which data movement protocol to be added
 
     @param priorityOrder
@@ -2237,7 +2237,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - unicoreDataMovement
@@ -2286,13 +2286,13 @@ class Iface:
     """
     pass
 
-  def addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def addGridFTPDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which dataMovement protocol to be added
 
     @param DMType
@@ -2311,7 +2311,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - gridFTPDataMovement
@@ -2456,7 +2456,7 @@ class Iface:
     """
     pass
 
-  def deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     """
     Delete a given data movement interface
 
@@ -2470,7 +2470,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMovementInterfaceId
      - dataMoveType
     """
@@ -2917,6 +2917,33 @@ class Iface:
     """
     pass
 
+  def registerDataProduct(self, authzToken, dataProductModel):
+    """
+    API Methods related to data catalog
+
+
+    Parameters:
+     - authzToken
+     - dataProductModel
+    """
+    pass
+
+  def getDataProduct(self, authzToken, dataProductUri):
+    """
+    Parameters:
+     - authzToken
+     - dataProductUri
+    """
+    pass
+
+  def registerReplicaLocation(self, authzToken, replicaLocationModel):
+    """
+    Parameters:
+     - authzToken
+     - replicaLocationModel
+    """
+    pass
+
 
 class Client(Iface):
   def __init__(self, iprot, oprot=None):
@@ -7991,13 +8018,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "updateUnicoreJobSubmissionDetails failed: unknown result")
 
-  def addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def addLocalDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param DMType
@@ -8016,19 +8043,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - localDataMovement
     """
-    self.send_addLocalDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, localDataMovement)
+    self.send_addLocalDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, localDataMovement)
     return self.recv_addLocalDataMovementDetails()
 
-  def send_addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def send_addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
     self._oprot.writeMessageBegin('addLocalDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addLocalDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.localDataMovement = localDataMovement
@@ -8167,13 +8194,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getLocalDataMovement failed: unknown result")
 
-  def addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def addSCPDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param priorityOrder
@@ -8188,19 +8215,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - scpDataMovement
     """
-    self.send_addSCPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, scpDataMovement)
+    self.send_addSCPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement)
     return self.recv_addSCPDataMovementDetails()
 
-  def send_addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def send_addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
     self._oprot.writeMessageBegin('addSCPDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addSCPDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.scpDataMovement = scpDataMovement
@@ -8338,13 +8365,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getSCPDataMovement failed: unknown result")
 
-  def addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def addUnicoreDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which data movement protocol to be added
 
     @param priorityOrder
@@ -8359,19 +8386,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - unicoreDataMovement
     """
-    self.send_addUnicoreDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement)
+    self.send_addUnicoreDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement)
     return self.recv_addUnicoreDataMovementDetails()
 
-  def send_addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def send_addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
     self._oprot.writeMessageBegin('addUnicoreDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addUnicoreDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.unicoreDataMovement = unicoreDataMovement
@@ -8511,13 +8538,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getUnicoreDataMovement failed: unknown result")
 
-  def addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def addGridFTPDataMovementDetails(self, authzToken, productUri, 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.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which dataMovement protocol to be added
 
     @param DMType
@@ -8536,19 +8563,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - gridFTPDataMovement
     """
-    self.send_addGridFTPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement)
+    self.send_addGridFTPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement)
     return self.recv_addGridFTPDataMovementDetails()
 
-  def send_addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def send_addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
     self._oprot.writeMessageBegin('addGridFTPDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addGridFTPDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.gridFTPDataMovement = gridFTPDataMovement
@@ -8952,7 +8979,7 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteJobSubmissionInterface failed: unknown result")
 
-  def deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     """
     Delete a given data movement interface
 
@@ -8966,18 +8993,18 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMovementInterfaceId
      - dataMoveType
     """
-    self.send_deleteDataMovementInterface(authzToken, productId, dataMovementInterfaceId, dataMoveType)
+    self.send_deleteDataMovementInterface(authzToken, productUri, dataMovementInterfaceId, dataMoveType)
     return self.recv_deleteDataMovementInterface()
 
-  def send_deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def send_deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     self._oprot.writeMessageBegin('deleteDataMovementInterface', TMessageType.CALL, self._seqid)
     args = deleteDataMovementInterface_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMovementInterfaceId = dataMovementInterfaceId
     args.dataMoveType = dataMoveType
     args.write(self._oprot)
@@ -10351,6 +10378,132 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "isWorkflowExistWithName failed: unknown result")
 
+  def registerDataProduct(self, authzToken, dataProductModel):
+    """
+    API Methods related to data catalog
+
+
+    Parameters:
+     - authzToken
+     - dataProductModel
+    """
+    self.send_registerDataProduct(authzToken, dataProductModel)
+    return self.recv_registerDataProduct()
+
+  def send_registerDataProduct(self, authzToken, dataProductModel):
+    self._oprot.writeMessageBegin('registerDataProduct', TMessageType.CALL, self._seqid)
+    args = registerDataProduct_args()
+    args.authzToken = authzToken
+    args.dataProductModel = dataProductModel
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_registerDataProduct(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = registerDataProduct_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerDataProduct failed: unknown result")
+
+  def getDataProduct(self, authzToken, dataProductUri):
+    """
+    Parameters:
+     - authzToken
+     - dataProductUri
+    """
+    self.send_getDataProduct(authzToken, dataProductUri)
+    return self.recv_getDataProduct()
+
+  def send_getDataProduct(self, authzToken, dataProductUri):
+    self._oprot.writeMessageBegin('getDataProduct', TMessageType.CALL, self._seqid)
+    args = getDataProduct_args()
+    args.authzToken = authzToken
+    args.dataProductUri = dataProductUri
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getDataProduct(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getDataProduct_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDataProduct failed: unknown result")
+
+  def registerReplicaLocation(self, authzToken, replicaLocationModel):
+    """
+    Parameters:
+     - authzToken
+     - replicaLocationModel
+    """
+    self.send_registerReplicaLocation(authzToken, replicaLocationModel)
+    return self.recv_registerReplicaLocation()
+
+  def send_registerReplicaLocation(self, authzToken, replicaLocationModel):
+    self._oprot.writeMessageBegin('registerReplicaLocation', TMessageType.CALL, self._seqid)
+    args = registerReplicaLocation_args()
+    args.authzToken = authzToken
+    args.replicaLocationModel = replicaLocationModel
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_registerReplicaLocation(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = registerReplicaLocation_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerReplicaLocation failed: unknown result")
+
 
 class Processor(Iface, TProcessor):
   def __init__(self, handler):
@@ -10490,6 +10643,9 @@ class Processor(Iface, TProcessor):
     self._processMap["updateWorkflow"] = Processor.process_updateWorkflow
     self._processMap["getWorkflowTemplateId"] = Processor.process_getWorkflowTemplateId
     self._processMap["isWorkflowExistWithName"] = Processor.process_isWorkflowExistWithName
+    self._processMap["registerDataProduct"] = Processor.process_registerDataProduct
+    self._processMap["getDataProduct"] = Processor.process_getDataProduct
+    self._processMap["registerReplicaLocation"] = Processor.process_registerReplicaLocation
 
   def process(self, iprot, oprot):
     (name, type, seqid) = iprot.readMessageBegin()
@@ -13286,7 +13442,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addLocalDataMovementDetails_result()
     try:
-      result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.localDataMovement)
+      result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13379,7 +13535,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addSCPDataMovementDetails_result()
     try:
-      result.success = self._handler.addSCPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.scpDataMovement)
+      result.success = self._handler.addSCPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.scpDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13472,7 +13628,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addUnicoreDataMovementDetails_result()
     try:
-      result.success = self._handler.addUnicoreDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement)
+      result.success = self._handler.addUnicoreDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13565,7 +13721,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addGridFTPDataMovementDetails_result()
     try:
-      result.success = self._handler.addGridFTPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement)
+      result.success = self._handler.addGridFTPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13813,7 +13969,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = deleteDataMovementInterface_result()
     try:
-      result.success = self._handler.deleteDataMovementInterface(args.authzToken, args.productId, args.dataMovementInterfaceId, args.dataMoveType)
+      result.success = self._handler.deleteDataMovementInterface(args.authzToken, args.productUri, args.dataMovementInterfaceId, args.dataMoveType)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -14675,6 +14831,99 @@ class Processor(Iface, TProcessor):
     oprot.writeMessageEnd()
     oprot.trans.flush()
 
+  def process_registerDataProduct(self, seqid, iprot, oprot):
+    args = registerDataProduct_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = registerDataProduct_result()
+    try:
+      result.success = self._handler.registerDataProduct(args.authzToken, args.dataProductModel)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("registerDataProduct", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getDataProduct(self, seqid, iprot, oprot):
+    args = getDataProduct_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getDataProduct_result()
+    try:
+      result.success = self._handler.getDataProduct(args.authzToken, args.dataProductUri)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getDataProduct", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_registerReplicaLocation(self, seqid, iprot, oprot):
+    args = registerReplicaLocation_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = registerReplicaLocation_result()
+    try:
+      result.success = self._handler.registerReplicaLocation(args.authzToken, args.replicaLocationModel)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("registerReplicaLocation", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
 
 # HELPER FUNCTIONS AND STRUCTURES
 
@@ -22290,8 +22539,394 @@ class updateExperiment_args:
           iprot.skip(ftype)
       elif fid == 3:
         if ftype == TType.STRUCT:
-          self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel()
-          self.experiment.read(iprot)
+          self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel()
+          self.experiment.read(iprot)
+        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('updateExperiment_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.airavataExperimentId is not None:
+      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+      oprot.writeString(self.airavataExperimentId)
+      oprot.writeFieldEnd()
+    if self.experiment is not None:
+      oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
+      self.experiment.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.airavataExperimentId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
+    if self.experiment is None:
+      raise TProtocol.TProtocolException(message='Required field experiment is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.experiment)
+    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 updateExperiment_result:
+  """
+  Attributes:
+   - ire
+   - enf
+   - ace
+   - ase
+   - ae
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
+  )
+
+  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
+    self.ae = ae
+
+  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.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        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('updateExperiment_result')
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
+    value = (value * 31) ^ hash(self.ae)
+    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 updateExperimentConfiguration_args:
+  """
+  Attributes:
+   - authzToken
+   - airavataExperimentId
+   - userConfiguration
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
+    self.authzToken = authzToken
+    self.airavataExperimentId = airavataExperimentId
+    self.userConfiguration = userConfiguration
+
+  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.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.airavataExperimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel()
+          self.userConfiguration.read(iprot)
+        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('updateExperimentConfiguration_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.airavataExperimentId is not None:
+      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+      oprot.writeString(self.airavataExperimentId)
+      oprot.writeFieldEnd()
+    if self.userConfiguration is not None:
+      oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3)
+      self.userConfiguration.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.airavataExperimentId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
+    if self.userConfiguration is None:
+      raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.userConfiguration)
+    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 updateExperimentConfiguration_result:
+  """
+  Attributes:
+   - ae
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+  )
+
+  def __init__(self, ae=None,):
+    self.ae = ae
+
+  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.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        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('updateExperimentConfiguration_result')
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.ae)
+    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 updateResourceScheduleing_args:
+  """
+  Attributes:
+   - authzToken
+   - airavataExperimentId
+   - resourceScheduling
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,):
+    self.authzToken = authzToken
+    self.airavataExperimentId = airavataExperimentId
+    self.resourceScheduling = resourceScheduling
+
+  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.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.airavataExperimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.resourceScheduling.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -22303,7 +22938,7 @@ class updateExperiment_args:
     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('updateExperiment_args')
+    oprot.writeStructBegin('updateResourceScheduleing_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22312,9 +22947,9 @@ class updateExperiment_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.experiment is not None:
-      oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
-      self.experiment.write(oprot)
+    if self.resourceScheduling is not None:
+      oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
+      self.resourceScheduling.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -22324,8 +22959,8 @@ class updateExperiment_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.experiment is None:
-      raise TProtocol.TProtocolException(message='Required field experiment is unset!')
+    if self.resourceScheduling is None:
+      raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!')
     return
 
 
@@ -22333,7 +22968,7 @@ class updateExperiment_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.experiment)
+    value = (value * 31) ^ hash(self.resourceScheduling)
     return value
 
   def __repr__(self):
@@ -22347,30 +22982,18 @@ class updateExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperiment_result:
+class updateResourceScheduleing_result:
   """
   Attributes:
-   - ire
-   - enf
-   - ace
-   - ase
    - ae
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
-    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
-    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
-    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
+    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
   )
 
-  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
-    self.ire = ire
-    self.enf = enf
-    self.ace = ace
-    self.ase = ase
+  def __init__(self, ae=None,):
     self.ae = ae
 
   def read(self, iprot):
@@ -22384,30 +23007,6 @@ class updateExperiment_result:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
-          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
-          self.ire.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
-          self.enf.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
-          self.ace.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRUCT:
-          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
-          self.ase.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
         else:
@@ -22421,25 +23020,9 @@ class updateExperiment_result:
     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('updateExperiment_result')
-    if self.ire is not None:
-      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
-      self.ire.write(oprot)
-      oprot.writeFieldEnd()
-    if self.enf is not None:
-      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
-      self.enf.write(oprot)
-      oprot.writeFieldEnd()
-    if self.ace is not None:
-      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
-      self.ace.write(oprot)
-      oprot.writeFieldEnd()
-    if self.ase is not None:
-      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
-      self.ase.write(oprot)
-      oprot.writeFieldEnd()
+    oprot.writeStructBegin('updateResourceScheduleing_result')
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22451,10 +23034,6 @@ class updateExperiment_result:
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.ire)
-    value = (value * 31) ^ hash(self.enf)
-    value = (value * 31) ^ hash(self.ace)
-    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22469,25 +23048,22 @@ class updateExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperimentConfiguration_args:
+class validateExperiment_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - userConfiguration
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.userConfiguration = userConfiguration
 
   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:
@@ -22509,12 +23085,6 @@ class updateExperimentConfiguration_args:
           self.airavataExperimentId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel()
-          self.userConfiguration.read(iprot)
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -22524,7 +23094,7 @@ class updateExperimentConfiguration_args:
     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('updateExperimentConfiguration_args')
+    oprot.writeStructBegin('validateExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22533,10 +23103,6 @@ class updateExperimentConfiguration_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.userConfiguration is not None:
-      oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3)
-      self.userConfiguration.write(oprot)
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -22545,8 +23111,6 @@ class updateExperimentConfiguration_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.userConfiguration is None:
-      raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!')
     return
 
 
@@ -22554,7 +23118,6 @@ class updateExperimentConfiguration_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.userConfiguration)
     return value
 
   def __repr__(self):
@@ -22568,18 +23131,32 @@ class updateExperimentConfiguration_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperimentConfiguration_result:
+class validateExperiment_result:
   """
   Attributes:
+   - success
+   - ire
+   - enf
+   - ace
+   - ase
    - ae
   """
 
   thrift_spec = (
-    None, # 0
-    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+    (0, TType.BOOL, 'success', None, None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ae=None,):
+  def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.success = success
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
     self.ae = ae
 
   def read(self, iprot):
@@ -22591,7 +23168,36 @@ class updateExperimentConfiguration_result:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 1:
+      if fid == 0:
+        if ftype == TType.BOOL:
+          self.success = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
@@ -22606,9 +23212,29 @@ class updateExperimentConfiguration_result:
     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('updateExperimentConfiguration_result')
+    oprot.writeStructBegin('validateExperiment_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.BOOL, 0)
+      oprot.writeBool(self.success)
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22620,6 +23246,11 @@ class updateExperimentConfiguration_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22634,25 +23265,25 @@ class updateExperimentConfiguration_result:
   def __ne__(self, other):
     return not (self == other)
 
-class updateResourceScheduleing_args:
+class launchExperiment_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - resourceScheduling
+   - gatewayId
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.resourceScheduling = resourceScheduling
+    self.gatewayId = gatewayId
 
   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:
@@ -22675,9 +23306,8 @@ class updateResourceScheduleing_args:
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
-          self.resourceScheduling.read(iprot)
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -22689,7 +23319,7 @@ class updateResourceScheduleing_args:
     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('updateResourceScheduleing_args')
+    oprot.writeStructBegin('launchExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22698,9 +23328,9 @@ class updateResourceScheduleing_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.resourceScheduling is not None:
-      oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
-      self.resourceScheduling.write(oprot)
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -22710,8 +23340,8 @@ class updateResourceScheduleing_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.resourceScheduling is None:
-      raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
     return
 
 
@@ -22719,7 +23349,7 @@ class updateResourceScheduleing_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.resourceScheduling)
+    value = (value * 31) ^ hash(self.gatewayId)
     return value
 
   def __repr__(self):
@@ -22733,18 +23363,30 @@ class updateResourceScheduleing_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateResourceScheduleing_result:
+class launchExperiment_result:
   """
   Attributes:
+   - ire
+   - enf
+   - ace
+   - ase
    - ae
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ae=None,):
+  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
     self.ae = ae
 
   def read(self, iprot):
@@ -22758,6 +23400,30 @@ class updateResourceScheduleing_result:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
         else:
@@ -22771,9 +23437,25 @@ class updateResourceScheduleing_result:
     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('updateResourceScheduleing_result')
+    oprot.writeStructBegin('launchExperiment_result')
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22785,6 +23467,10 @@ class updateResourceScheduleing_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22799,7 +23485,7 @@ class updateResourceScheduleing_result:
   def __ne__(self, other):
     return not (self == other)
 
-class validateExperiment_args:
+class getExperimentStatus_args:
   """
   Attributes:
    - authzToken
@@ -22845,7 +23531,7 @@ class validateExperiment_args:
     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('validateExperiment_args')
+    oprot.writeStructBegin('getExperimentStatus_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22882,7 +23568,7 @@ class validateExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class validateExperiment_result:
+class getExperimentStatus_result:
   """
   Attributes:
    - success
@@ -22894,7 +23580,7 @@ class validateExperiment_result:
   """
 
   thrift_spec = (
-    (0, TType.BOOL, 'success', None, None, ), # 0
+    (0, TType.STRUCT, 'success', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -22920,8 +23606,9 @@ class validateExperiment_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.BOOL:
-          self.success = iprot.readBool()
+        if ftype == TType.STRUCT:
+          self.success = apache.airavata.model.status.ttypes.ExperimentStatus()
+          self.success.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -22963,10 +23650,10 @@ class validateExperiment_result:
     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('validateExperiment_result')
+    oprot.writeStructBegin('getExperimentStatus_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.BOOL, 0)
-      oprot.writeBool(self.success)
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23016,25 +23703,22 @@ class validateExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class launchExperiment_args:
+class getExperimentOutputs_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - gatewayId
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRING, 'gatewayId', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.gatewayId = gatewayId
 
   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:
@@ -23056,11 +23740,6 @@ class launchExperiment_args:
           self.airavataExperimentId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.gatewayId = iprot.readString()
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -23070,7 +23749,7 @@ class launchExperiment_args:
     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('launchExperiment_args')
+    oprot.writeStructBegin('getExperimentOutputs_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23079,10 +23758,6 @@ class launchExperiment_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.gatewayId is not None:
-      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
-      oprot.writeString(self.gatewayId)
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -23091,8 +23766,6 @@ class launchExperiment_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.gatewayId is None:
-      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
     return
 
 
@@ -23100,7 +23773,6 @@ class launchExperiment_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.gatewayId)
     return value
 
   def __repr__(self):
@@ -23114,9 +23786,10 @@ class launchExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class launchExperiment_result:
+class getExperimentOutputs_result:
   """
   Attributes:
+   - success
    - ire
    - enf
    - ace
@@ -23125,7 +23798,7 @@ class launchExperiment_result:
   """
 
   thrift_spec = (
-    None, # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23133,7 +23806,8 @@ class launchExperiment_result:
     (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+  def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.success = success
     self.ire = ire
     self.enf = enf
     self.ace = ace
@@ -23149,7 +23823,18 @@ class launchExperiment_result:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 1:
+      if fid == 0:
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype114, _size111) = iprot.readListBegin()
+          for _i115 in xrange(_size111):
+            _elem116 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem116.read(iprot)
+            self.success.append(_elem116)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
         if ftype == TType.STRUCT:
           self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
           self.ire.read(iprot)
@@ -23188,7 +23873,14 @@ class launchExperiment_result:
     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('launchExperiment_result')
+    oprot.writeStructBegin('getExperimentOutputs_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter117 in self.success:
+        iter117.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
       self.ire.write(oprot)
@@ -23218,6 +23910,7 @@ class launchExperiment_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.success)
     value = (value * 31) ^ hash(self.ire)
     value = (value * 31) ^ hash(self.enf)
     value = (value * 31) ^ hash(self.ace)
@@ -23236,7 +23929,7 @@ class launchExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentStatus_args:
+class getIntermediateOutputs_args:
   """
   Attributes:
    - authzToken
@@ -23282,7 +23975,7 @@ class getExperimentStatus_args:
     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('getExperimentStatus_args')
+    oprot.writeStructBegin('getIntermediateOutputs_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23319,7 +24012,7 @@ class getExperimentStatus_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentStatus_result:
+class getIntermediateOutputs_result:
   """
   Attributes:
    - success
@@ -23331,7 +24024,7 @@ class getExperimentStatus_result:
   """
 
   thrift_spec = (
-    (0, TType.STRUCT, 'success', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23357,9 +24050,14 @@ class getExperimentStatus_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.STRUCT:
-          self.success = apache.airavata.model.status.ttypes.ExperimentStatus()
-          self.success.read(iprot)
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype121, _size118) = iprot.readListBegin()
+          for _i122 in xrange(_size118):
+            _elem123 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem123.read(iprot)
+            self.success.append(_elem123)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -23401,10 +24099,13 @@ class getExperimentStatus_result:
     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('getExperimentStatus_result')
+    oprot.writeStructBegin('getIntermediateOutputs_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.STRUCT, 0)
-      self.success.write(oprot)
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter124 in self.success:
+        iter124.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23454,7 +24155,7 @@ class getExperimentStatus_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentOutputs_args:
+class getJobStatuses_args:
   """
   Attributes:
    - authzToken
@@ -23500,7 +24201,7 @@ class getExperimentOutputs_args:
     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('getExperimentOutputs_args')
+    oprot.writeStructBegin('getJobStatuses_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23537,7 +24238,7 @@ class getExperimentOutputs_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentOutputs_result:
+class getJobStatuses_result:
   """
   Attributes:
    - success
@@ -23549,7 +24250,7 @@ class getExperimentOutputs_result:
   """
 
   thrift_spec = (
-    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
+    (0, TType.MAP, 'success', (TType.STRING,None,TType.STRUCT,(apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23575,14 +24276,15 @@ class getExperimentOutputs_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.LIST:
-          self.success = []
-          (_etype114, _size111) = iprot.readListBegin()
-          for _i115 in xrange(_size111):
-            _elem116 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem116.read(iprot)
-            self.success.append(_elem116)
-          iprot.readListEnd()
+        if ftype == TType.MAP:
+          self.success = {}
+          (_ktype126, _vtype127, _size125 ) = iprot.readMapBegin()
+          for _i129 in xrange(_size125):
+            _key130 = iprot.readString()
+            _val131 = apache.airavata.model.status.ttypes.JobStatus()
+            _val131.read(iprot)
+            self.success[_key130] = _val131
+          iprot.readMapEnd()
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -23624,13 +24326,14 @@ class getExperimentOutputs_result:
     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('getExperimentOutputs_result')
+    oprot.writeStructBegin('getJobStatuses_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.LIST, 0)
-      oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter117 in self.success:
-        iter117.write(oprot)
-      oprot.writeListEnd()
+      oprot.writeFieldBegin('success', TType.MAP, 0)
+      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
+      for kiter132,viter133 in self.success.items():
+        oprot.writeString(kiter132)
+        viter133.write(oprot)
+      oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23680,7 +24383,7 @@ class getExperimentOutputs_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getIntermediateOutputs_args:
+class getJobDetails_args:
   """
   Attributes:
    - authzToken
@@ -23726,7 +24429,7 @@ class getIntermediateOutputs_args:
     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('getIntermediateOutputs_args')
+    oprot.writeStructBegin('getJobDetails_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23763,7 +24466,7 @@ class getIntermediateOutputs_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getIntermediateOutputs_result:
+class getJobDetails_result:
   """
   Attributes:
    - success
@@ -23775,7 +24478,7 @@ class getIntermediateOutputs_result:
   """
 
   thrift_spec = (
-    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.job.ttypes.JobModel, apache.airavata.model.job.ttypes.JobModel.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23803,11 +24506,11 @@ class getIntermediateOutputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype121, _size118) = iprot.readListBegin()
-          for _i122 in xrange(_size118):
-            _elem123 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem123.read(iprot)
-            self.success.append(_elem123)
+          (_etype137, _size134) = iprot.readListBegin()
+          for _i138 in xrange(_size134):
+            _elem139 = apache.airavata.model.job.ttypes.JobModel()
+            _elem139.read(iprot)
+            self.success.append(_elem139)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -23850,12 +24553,12 @@ class getIntermediateOutputs_result:
     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('getIntermediateOutputs_result')
+    oprot.writeStructBegin('getJobDetails_result')
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter124 in self.success:
-        iter124.write(oprot)
+      for iter140 in self.success:
+        iter140.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -23906,22 +24609,25 @@ class getIntermediateOutputs_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getJobStatuses_args:
+class cloneExperiment_args:
   """
   Attributes:
    - authzToken
-   - airavataExperimentId
+   - existingExperimentID
+   - newExperimentName
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
-    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (2, TType.STRING, 'existingExperimentID', None, None, ), # 2
+    (3, TType.STRING, 'newExperimentName', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None,):
+  def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None,):
     self.authzToken = authzToken
-    self.airavataExperimentId = airavataExperimentId
+    self.existingExperimentID = existingExperimentID
+    self.newExperimentName = newExperimentName
 
   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:
@@ -23940,7 +24646,12 @@ class getJobStatuses_args:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRING:
-          self.airavataExperimentId = iprot.readString()
+          self.existingExperimentID = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.newExperimentName = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -23952,14 +24663,18 @@ class getJobStatuses_args:
     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('getJobStatuses_args')
+    oprot.writeStructBegin('cloneExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
       oprot.writeFieldEnd()
-    if self.airavataExperimentId is not None:
-      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
-      oprot.writeString(self.airavataExperimentId)
+    if self.existingExperimentID is not None:
+      oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
+      oprot.writeString(self.existingExperimentID)
+      oprot.writeFieldEnd()
+    if self.newExperimentName is not None:
+      oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
+      oprot.writeString(self.newExperimentName)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -23967,15 +24682,14 @@ class getJobStatuses_args:
   def validate(self):
     if self.authzToken is None:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
-    if self.airavataExperimentId is None:
-      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
     return
 
 
   def __hash__(self):
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
-    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.existingExperimentID)
+    value = (value * 31) ^ hash(self.newExperimentName)
     return value
 
   def __repr__(self):
@@ -23989,7 +24703,7 @@ class getJobStatuses_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getJobStatuses_result:
+class cloneExperiment_result:
   """
   Attributes:
    - success
@@ -24001,7 +24715,7 @@ class getJobStatuses_result:
   """
 
   thrift_spec = (
-    (0, TType.MAP, 'success', (TType.STRING,None,TType.STRUCT,(apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec)), None, ), # 0
+    (0, TType.STRING, 'success', None, None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -24027,15 +24741,8 @@ class getJobStatuses_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.MAP:
-          self.success = {}
-          (_ktype126, _vtype127, _size125 ) = iprot

<TRUNCATED>

[21/55] [abbrv] airavata git commit: fixing typo

Posted by sh...@apache.org.
fixing typo


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

Branch: refs/heads/master
Commit: a2ff4325377c71125f21aef8e044b7baead1d856
Parents: 844a9ab
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 18:14:15 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 18:14:15 2016 -0400

----------------------------------------------------------------------
 .../airavata/registry/core/data/catalog/impl/DataCatalogImpl.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a2ff4325/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 66b780d..cc6dbdf 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -87,7 +87,7 @@ public class DataCatalogImpl implements DataCatalog {
             }
         }
 
-        productModel.setProductUri(parentUri);
+        productModel.setParentProductUri(parentUri);
         String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
                 + ":" + productModel.getLogicalPath();
         productModel.setProductUri(productUri);


[10/55] [abbrv] airavata git commit: Fixed experiment lauch error with unicore

Posted by sh...@apache.org.
Fixed experiment lauch error with unicore


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

Branch: refs/heads/master
Commit: 244215968409100ebccef0425c505ac7f6e52fc1
Parents: 6c5645d
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Mar 23 11:26:28 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Mar 23 11:26:28 2016 -0400

----------------------------------------------------------------------
 .../orchestrator/cpi/impl/SimpleOrchestratorImpl.java       | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/24421596/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 427be5b..15c8556 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
@@ -284,14 +284,15 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
             }
             ComputeResourceDescription computeResource = appCatalog.getComputeResource().getComputeResource(resourceHostId);
             JobSubmissionInterface preferredJobSubmissionInterface = OrchestratorUtils.getPreferredJobSubmissionInterface(orchestratorContext, processModel, gatewayId);
-            List<String> taskIdList = createAndSaveEnvSetupTask(gatewayId, processModel, experimentCatalog);
-
             ComputeResourcePreference resourcePreference = OrchestratorUtils.getComputeResourcePreference(orchestratorContext, processModel, gatewayId);
+            List<String> taskIdList = new ArrayList<>();
+
             if (resourcePreference.getPreferredJobSubmissionProtocol() == JobSubmissionProtocol.UNICORE) {
+                // TODO - breakdown unicore all in one task to multiple tasks, then we don't need to handle UNICORE here.
                 taskIdList.addAll(createAndSaveSubmissionTasks(gatewayId, preferredJobSubmissionInterface, processModel, userGivenWallTime));
             } else {
+                taskIdList.addAll(createAndSaveEnvSetupTask(gatewayId, processModel, experimentCatalog));
                 taskIdList.addAll(createAndSaveInputDataStagingTasks(processModel, gatewayId));
-
                 if (autoSchedule) {
                     List<BatchQueue> definedBatchQueues = computeResource.getBatchQueues();
                     for (BatchQueue batchQueue : definedBatchQueues) {
@@ -316,10 +317,8 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
                 } else {
                     taskIdList.addAll(createAndSaveSubmissionTasks(gatewayId,preferredJobSubmissionInterface, processModel, userGivenWallTime));
                 }
-
                 taskIdList.addAll(createAndSaveOutputDataStagingTasks(processModel, gatewayId));
             }
-
             // update process scheduling
             experimentCatalog.update(ExperimentCatalogModelType.PROCESS, processModel, processModel.getProcessId());
             return getTaskDag(taskIdList);


[24/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 2c71d75..33323b8 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 c6de06f..cfc6b1c 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 672a614..4cd6514 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 13a0fb2..b39a1be 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 5e954b7..edc8225 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 b16174e..1f7b015 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 63ed2cd..f7e2b06 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 240d175..a035c86 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 b13c6bf..ff7e9e9 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 56ef18d..04693b6 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1f313a5..c03324d 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 7dac603..edca604 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 8f3e72a..d8fd822 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1b541a9..89b6e73 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 709e4e3..7d495af 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 8ce1e00..3609b85 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 7cd21a8..7ebe824 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 debd17c..22f5d24 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1405a0d..49447bf 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 219eafc..0d9e116 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 251ce08..fdd62ff 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 58e95c3..ea860bc 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 75d643c..22e07bb 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1b8a81e..1d02eda 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 607df58..733671d 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 93ebeca..7e115b5 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1fbd50b..7bc9899 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 543ca98..8dd871b 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 f54fdc5..d21c7ec 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
index e74016f..b783542 100644
--- a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
+++ b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
@@ -66,11 +66,11 @@ appcatalog.jdbc.password=airavata
 appcatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ##########################################################################
-#  Data Catalog DB Configuration
+#  Replica 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
+datacatalog.jdbc.url=jdbc:derby://localhost:1527/replica_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

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 25b3404..c2574f4 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
@@ -37,8 +37,8 @@ import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescr
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.data.product.DataProductModel;
-import org.apache.airavata.model.data.product.ReplicaLocationCategory;
+import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.ReplicaLocationCategory;
 import org.apache.airavata.model.error.LaunchValidationException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentType;
@@ -163,17 +163,17 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 				for (ProcessModel processModel : processes){
 					//FIXME Resolving replica if available. This is a very crude way of resolving input replicas. A full featured
 					//FIXME replica resolving logic should come here
-					DataCatalog dataCatalog = RegistryFactory.getDataCatalog();
+					ReplicaCatalog replicaCatalog = RegistryFactory.getReplicaCatalog();
 					processModel.getProcessInputs().stream().forEach(pi -> {
 						if (pi.getType().equals(DataType.URI) && pi.getValue().startsWith("airavata-dp://")) {
 							try {
-								DataProductModel dataProductModel = dataCatalog.getDataProduct(pi.getValue());
+								DataProductModel dataProductModel = replicaCatalog.getDataProduct(pi.getValue());
 								dataProductModel.getReplicaLocations().stream().filter(rpModel -> rpModel.getReplicaLocationCategory()
 										.equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).forEach(rpModel -> {
 									//TODO Should set storage resource id specific to each of these inputs
 									pi.setValue(rpModel.getFilePath());
 								});
-							} catch (DataCatalogException e) {
+							} catch (ReplicaCatalogException e) {
 								log.error(e.getMessage(), e);
 							}
 						}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
deleted file mode 100644
index cc6dbdf..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ /dev/null
@@ -1,356 +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.data.catalog.impl;
-
-import org.apache.airavata.model.data.product.DataProductModel;
-import org.apache.airavata.model.data.product.DataProductType;
-import org.apache.airavata.model.data.product.DataReplicaLocationModel;
-import org.apache.airavata.registry.core.data.catalog.model.DataProduct;
-import org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation;
-import org.apache.airavata.registry.core.data.catalog.utils.DataCatalogJPAUtils;
-import org.apache.airavata.registry.core.data.catalog.utils.ThriftDataModelConversion;
-import org.apache.airavata.registry.cpi.DataCatalog;
-import org.apache.airavata.registry.cpi.DataCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-public class DataCatalogImpl implements DataCatalog {
-
-    private final static Logger logger = LoggerFactory.getLogger(DataCatalogImpl.class);
-
-    @Override
-    public String registerDataProduct(DataProductModel productModel) throws DataCatalogException {
-        if(productModel.getOwnerName() == null || productModel.getGatewayId() == null || productModel
-                .getLogicalPath() == null || !productModel.getLogicalPath().startsWith("/")){
-            throw new DataCatalogException("owner name, gateway id and logical path should be non empty and logical path" +
-                    " should start with /");
-        }
-        if(productModel.getDataProductType().equals(DataProductType.FILE) && !productModel.getLogicalPath().endsWith(productModel.getProductName())){
-            if(!productModel.getLogicalPath().endsWith("/"))
-                productModel.setLogicalPath(productModel.getLogicalPath()+"/");
-            productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
-        }
-        //Creating parent logical dir if not exist too
-        String parentUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + ":/" ;
-        DataProductModel tempDp;
-        if(!isExists(parentUri)){
-            tempDp = new DataProductModel();
-            tempDp.setProductUri(parentUri);
-            tempDp.setLogicalPath("/");
-            tempDp.setOwnerName(productModel.getOwnerName());
-            tempDp.setGatewayId(productModel.getGatewayId());
-            tempDp.setDataProductType(DataProductType.DIR);
-            createDataProduct(tempDp);
-        }
-        String[] bits = productModel.getLogicalPath().split("/");
-        for(int i=0; i<bits.length-1;i++){
-            String dir = bits[i];
-            if(!isExists(parentUri + dir)){
-                tempDp = new DataProductModel();
-                try {
-                    tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
-                } catch (URISyntaxException e) {
-                    throw new DataCatalogException(e);
-                }
-                tempDp.setProductUri(parentUri + dir);
-                tempDp.setOwnerName(productModel.getOwnerName());
-                tempDp.setGatewayId(productModel.getGatewayId());
-                tempDp.setDataProductType(DataProductType.DIR);
-                tempDp.setParentProductUri(parentUri);
-                parentUri = createDataProduct(tempDp);
-            }
-        }
-
-        productModel.setParentProductUri(parentUri);
-        String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
-                + ":" + productModel.getLogicalPath();
-        productModel.setProductUri(productUri);
-        long currentTime = System.currentTimeMillis();
-        productModel.setCreationTime(currentTime);
-        productModel.setLastModifiedTime(currentTime);
-        if(productModel.getReplicaLocations() != null){
-            productModel.getReplicaLocations().stream().forEach(r-> {
-                r.setProductUri(productUri);
-                r.setReplicaId(UUID.randomUUID().toString());
-                r.setCreationTime(currentTime);
-                r.setLastModifiedTime(currentTime);
-            });
-        }
-        productModel.setCreationTime(System.currentTimeMillis());
-        productModel.setLastModifiedTime(System.currentTimeMillis());
-        return createDataProduct(productModel);
-    }
-
-    private String createDataProduct(DataProductModel productModel) throws DataCatalogException {
-        DataProduct dataProduct = ThriftDataModelConversion.getDataProduct(productModel);
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            em.persist(dataProduct);
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return dataProduct.getProductUri();
-    }
-
-    @Override
-    public boolean removeDataProduct(String productUri) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataProduct dataProduct = em.find(DataProduct.class, productUri);
-            if(dataProduct == null)
-                return false;
-            em.getTransaction().begin();
-            em.remove(dataProduct);
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateDataProduct(DataProductModel productModel) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataProduct dataProduct = em.find(DataProduct.class, productModel.getProductUri());
-            if(dataProduct == null)
-                return false;
-            em.getTransaction().begin();
-            productModel.setCreationTime(dataProduct.getCreationTime().getTime());
-            productModel.setLastModifiedTime(System.currentTimeMillis());
-            em.merge(ThriftDataModelConversion.getUpdatedDataProduct(productModel, dataProduct));
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public DataProductModel getDataProduct(String productUri) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataProduct dataProduct = em.find(DataProduct.class, productUri);
-            return ThriftDataModelConversion.getDataProductModel(dataProduct);
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public boolean isExists(String productUri) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataProduct dataProduct = em.find(DataProduct.class, productUri);
-            return dataProduct != null;
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException {
-        String replicaId = UUID.randomUUID().toString();
-        dataReplicaLocationModel.setReplicaId(replicaId);
-        long currentTime = System.currentTimeMillis();
-        dataReplicaLocationModel.setCreationTime(currentTime);
-        dataReplicaLocationModel.setLastModifiedTime(currentTime);
-        dataReplicaLocationModel.setCreationTime(System.currentTimeMillis());
-        dataReplicaLocationModel.setLastModifiedTime(System.currentTimeMillis());
-        DataReplicaLocation replicaLocation = ThriftDataModelConversion.getDataReplicaLocation(dataReplicaLocationModel);
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            em.persist(replicaLocation);
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return replicaId;
-    }
-
-    @Override
-    public boolean removeReplicaLocation(String replicaId) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId);
-            if(replicaLocation == null)
-                return false;
-            em.getTransaction().begin();
-            em.remove(replicaLocation);
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataReplicaLocation dataReplicaLocation = em.find(DataReplicaLocation.class, dataReplicaLocationModel.getReplicaId());
-            if(dataReplicaLocation == null)
-                return false;
-            em.getTransaction().begin();
-            dataReplicaLocationModel.setCreationTime(dataReplicaLocation.getCreationTime().getTime());
-            dataReplicaLocationModel.setLastModifiedTime(System.currentTimeMillis());
-            em.merge(ThriftDataModelConversion.getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation));
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public DataReplicaLocationModel getReplicaLocation(String replicaId) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId);
-            return ThriftDataModelConversion.getDataReplicaLocationModel(replicaLocation);
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws DataCatalogException {
-        EntityManager em = null;
-        try {
-            em = DataCatalogJPAUtils.getEntityManager();
-            DataProduct dataProduct = em.find(DataProduct.class, productUri);
-            if(dataProduct == null)
-                return null;
-            ArrayList<DataReplicaLocationModel> dataReplicaLocationModels = new ArrayList<>();
-            dataProduct.getDataReplicaLocations().stream().forEach(rl->dataReplicaLocationModels
-                    .add(ThriftDataModelConversion.getDataReplicaLocationModel(rl)));
-            return dataReplicaLocationModels;
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new DataCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/Configuration.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/Configuration.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/Configuration.java
deleted file mode 100644
index e4ad0ec..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/Configuration.java
+++ /dev/null
@@ -1,55 +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.data.catalog.model;
-
-import org.apache.airavata.registry.core.app.catalog.model.Configuration_PK;
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-@Table(name ="CONFIGURATION")
-@IdClass(Configuration_PK.class)
-public class Configuration implements Serializable {
-    @Id
-    @Column(name = "CONFIG_KEY")
-    private String config_key;
-
-    @Id
-    @Column(name = "CONFIG_VAL")
-    private String config_val;
-
-    public String getConfig_key() {
-        return config_key;
-    }
-
-    public String getConfig_val() {
-        return config_val;
-    }
-
-    public void setConfig_key(String config_key) {
-        this.config_key = config_key;
-    }
-
-    public void setConfig_val(String config_val) {
-        this.config_val = config_val;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProduct.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProduct.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProduct.java
deleted file mode 100644
index 4774bf3..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProduct.java
+++ /dev/null
@@ -1,187 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-import java.sql.Timestamp;
-import java.util.Collection;
-
-@Entity
-@Table(name = "DATA_PRODUCT")
-public class DataProduct {
-    private final static Logger logger = LoggerFactory.getLogger(DataProduct.class);
-    private String productUri;
-    private String gatewayId;
-    private String productName;
-    private String logicalPath;
-    private String productDescription;
-    private String dataProductType;
-    private String ownerName;
-    private String parentProductUri;
-    private int productSize;
-    private Timestamp creationTime;
-    private Timestamp lastModifiedTime;
-
-    private DataProduct parentDataProduct;
-    private Collection<DataReplicaLocation> dataReplicaLocations;
-    private Collection<DataProductMetaData> dataProductMetaData;
-    private Collection<DataProduct> childDataProducts;
-
-    @Id
-    @Column(name = "PRODUCT_URI")
-    public String getProductUri() {
-        return productUri;
-    }
-
-    public void setProductUri(String productUri) {
-        this.productUri = productUri;
-    }
-
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Column(name = "PRODUCT_NAME")
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    @Column(name = "PRODUCT_DESCRIPTION")
-    public String getProductDescription() {
-        return productDescription;
-    }
-
-    public void setProductDescription(String productDescription) {
-        this.productDescription = productDescription;
-    }
-
-    @Column(name = "LOGICAL_PATH")
-    public String getLogicalPath() {
-        return logicalPath;
-    }
-
-    public void setLogicalPath(String logicalPath) {
-        this.logicalPath = logicalPath;
-    }
-
-    @Column(name = "OWNER_NAME")
-    public String getOwnerName() {
-        return ownerName;
-    }
-
-    public void setOwnerName(String ownerName) {
-        this.ownerName = ownerName;
-    }
-
-    @Column(name = "PARENT_PRODUCT_URI")
-    public String getParentProductUri() {
-        return parentProductUri;
-    }
-
-    public void setParentProductUri(String parentProductUri) {
-        this.parentProductUri = parentProductUri;
-    }
-
-    @Column(name = "PRODUCT_TYPE")
-    public String getDataProductType() {
-        return dataProductType;
-    }
-
-    public void setDataProductType(String dataProductType) {
-        this.dataProductType = dataProductType;
-    }
-
-    @Column(name = "PRODUCT_SIZE")
-    public int getProductSize() {
-        return productSize;
-    }
-
-    public void setProductSize(int productSize) {
-        this.productSize = productSize;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public Timestamp getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(Timestamp creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "LAST_MODIFIED_TIME")
-    public Timestamp getLastModifiedTime() {
-        return lastModifiedTime;
-    }
-
-    public void setLastModifiedTime(Timestamp lastModifiedTime) {
-        this.lastModifiedTime = lastModifiedTime;
-    }
-
-    @OneToMany(mappedBy = "dataProduct", cascade = {CascadeType.ALL})
-    public Collection<DataReplicaLocation> getDataReplicaLocations() {
-        return dataReplicaLocations;
-    }
-
-    public void setDataReplicaLocations(Collection<DataReplicaLocation> dataReplicaLocations) {
-        this.dataReplicaLocations = dataReplicaLocations;
-    }
-
-    @OneToMany(mappedBy = "dataProduct", cascade = {CascadeType.ALL})
-    public Collection<DataProductMetaData> getDataProductMetaData() {
-        return dataProductMetaData;
-    }
-
-    public void setDataProductMetaData(Collection<DataProductMetaData> dataProductMetaData) {
-        this.dataProductMetaData = dataProductMetaData;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "PARENT_PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
-    public DataProduct getParentDataProduct() {
-        return parentDataProduct;
-    }
-
-    public void setParentDataProduct(DataProduct parentDataProduct) {
-        this.parentDataProduct = parentDataProduct;
-    }
-
-    @OneToMany(mappedBy = "parentDataProduct", cascade = {CascadeType.ALL})
-    public Collection<DataProduct> getChildDataProducts() {
-        return childDataProducts;
-    }
-
-    public void setChildDataProducts(Collection<DataProduct> childDataProducts) {
-        this.childDataProducts = childDataProducts;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData.java
deleted file mode 100644
index f3b696f..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData.java
+++ /dev/null
@@ -1,77 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "DATA_PRODUCT_METADATA")
-@IdClass(DataProductMetaData_PK.class)
-public class DataProductMetaData {
-    private final static Logger logger = LoggerFactory.getLogger(DataProductMetaData.class);
-    private String productUri;
-    private String key;
-    private String value;
-
-    private DataProduct dataProduct;
-
-    @Id
-    @Column(name = "PRODUCT_URI")
-    public String getProductUri() {
-        return productUri;
-    }
-
-    public void setProductUri(String productUri) {
-        this.productUri = productUri;
-    }
-
-    @Id
-    @Column(name = "METADATA_KEY")
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    @Column(name = "METADATA_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
-    public DataProduct getDataProduct() {
-        return dataProduct;
-    }
-
-    public void setDataProduct(DataProduct dataProduct) {
-        this.dataProduct = dataProduct;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData_PK.java
deleted file mode 100644
index a5313d8..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataProductMetaData_PK.java
+++ /dev/null
@@ -1,59 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-
-public class DataProductMetaData_PK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(DataProductMetaData_PK.class);
-
-    private String productUri;
-    private String key;
-
-    public String getProductUri() {
-        return productUri;
-    }
-
-    public void setProductUri(String productUri) {
-        this.productUri = productUri;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java
deleted file mode 100644
index bdfb9a7..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java
+++ /dev/null
@@ -1,169 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-import java.sql.Timestamp;
-import java.util.Collection;
-
-@Entity
-@Table(name = "DATA_REPLICA_LOCATION")
-public class DataReplicaLocation {
-    private final static Logger logger = LoggerFactory.getLogger(DataReplicaLocation.class);
-    private String replicaId;
-    private String productUri;
-    private String replicaName;
-    private String replicaDescription;
-    private String storageResourceId;
-    private String filePath;
-    private String replicaLocationCategory;
-    private String replicaPersistentType;
-    private Timestamp creationTime;
-    private Timestamp lastModifiedTime;
-    private Timestamp validUntilTime;
-
-    private DataProduct dataProduct;
-    private Collection<DataReplicaMetaData> dataReplicaMetaData;
-
-    @Id
-    @Column(name = "REPLICA_ID")
-    public String getReplicaId() {
-        return replicaId;
-    }
-
-    public void setReplicaId(String replicaId) {
-        this.replicaId = replicaId;
-    }
-
-    @Column(name = "PRODUCT_URI")
-    public String getProductUri() {
-        return productUri;
-    }
-
-    public void setProductUri(String productUri) {
-        this.productUri = productUri;
-    }
-
-
-    @Column(name = "REPLICA_NAME")
-    public String getReplicaName() {
-        return replicaName;
-    }
-
-    public void setReplicaName(String replicaName) {
-        this.replicaName = replicaName;
-    }
-
-    @Column(name = "REPLICA_DESCRIPTION")
-    public String getReplicaDescription() {
-        return replicaDescription;
-    }
-
-    public void setReplicaDescription(String replicaDescription) {
-        this.replicaDescription = replicaDescription;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @Column(name = "FILE_PATH")
-    public String getFilePath() {
-        return filePath;
-    }
-
-    public void setFilePath(String filePath) {
-        this.filePath = filePath;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public Timestamp getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(Timestamp creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "LAST_MODIFIED_TIME")
-    public Timestamp getLastModifiedTime() {
-        return lastModifiedTime;
-    }
-
-    public void setLastModifiedTime(Timestamp lastModifiedTime) {
-        this.lastModifiedTime = lastModifiedTime;
-    }
-
-    @Column(name = "VALID_UNTIL_TIME")
-    public Timestamp getValidUntilTime() {
-        return validUntilTime;
-    }
-
-    public void setValidUntilTime(Timestamp validUntilTime) {
-        this.validUntilTime = validUntilTime;
-    }
-
-
-    @Column(name = "REPLICA_LOCATION_CATEGORY")
-    public String getReplicaLocationCategory() {
-        return replicaLocationCategory;
-    }
-
-    public void setReplicaLocationCategory(String replicaLocationCategory) {
-        this.replicaLocationCategory = replicaLocationCategory;
-    }
-
-    @Column(name = "REPLICA_PERSISTENT_TYPE")
-    public String getReplicaPersistentType() {
-        return replicaPersistentType;
-    }
-
-    public void setReplicaPersistentType(String replicaPersistentType) {
-        this.replicaPersistentType = replicaPersistentType;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
-    public DataProduct getDataProduct() {
-        return dataProduct;
-    }
-
-    public void setDataProduct(DataProduct dataProduct) {
-        this.dataProduct = dataProduct;
-    }
-
-    @OneToMany(mappedBy = "dataReplicaLocation", cascade = {CascadeType.ALL})
-    public Collection<DataReplicaMetaData> getDataReplicaMetaData() {
-        return dataReplicaMetaData;
-    }
-
-    public void setDataReplicaMetaData(Collection<DataReplicaMetaData> dataReplicaMetaData) {
-        this.dataReplicaMetaData = dataReplicaMetaData;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData.java
deleted file mode 100644
index e9a2203..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData.java
+++ /dev/null
@@ -1,77 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "DATA_REPLICA_METADATA")
-@IdClass(DataReplicaMetaData_PK.class)
-public class DataReplicaMetaData {
-    private final static Logger logger = LoggerFactory.getLogger(DataReplicaMetaData.class);
-    private String replicaId;
-    private String key;
-    private String value;
-
-    private DataReplicaLocation dataReplicaLocation;
-
-    @Id
-    @Column(name = "REPLICA_ID")
-    public String getReplicaId() {
-        return replicaId;
-    }
-
-    public void setReplicaId(String replicaId) {
-        this.replicaId = replicaId;
-    }
-
-    @Id
-    @Column(name = "METADATA_KEY")
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    @Column(name = "METADATA_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @ManyToOne
-    @JoinColumn(name = "REPLICA_ID", referencedColumnName = "REPLICA_ID")
-    public DataReplicaLocation getDataReplicaLocation() {
-        return dataReplicaLocation;
-    }
-
-    public void setDataReplicaLocation(DataReplicaLocation dataReplicaLocation) {
-        this.dataReplicaLocation = dataReplicaLocation;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData_PK.java
deleted file mode 100644
index 617cc41..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaMetaData_PK.java
+++ /dev/null
@@ -1,59 +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.data.catalog.model;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-
-public class DataReplicaMetaData_PK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(DataReplicaMetaData_PK.class);
-
-    private String replicaId;
-    private String key;
-
-    public String getReplicaId() {
-        return replicaId;
-    }
-
-    public void setReplicaId(String replicaId) {
-        this.replicaId = replicaId;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogConstants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogConstants.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogConstants.java
deleted file mode 100644
index f0956e3..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogConstants.java
+++ /dev/null
@@ -1,49 +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.data.catalog.utils;
-
-public class DataCatalogConstants {
-	// table names
-	public static final String DATA_RESOURCE = "DataProduct";
-	public static final String DATA_REPLICA_LOCATION = "DataReplicaLocation";
-	public static final String CONFIGURATION = "Configuration";
-
-	// DataProduct Table
-	public final class DataResourceConstants {
-		public static final String RESOURCE_ID = "resourceId";
-		public static final String RESOURCE_NAME = "resourceName";
-		public static final String RESOURCE_DESCRIPTION = "resourceDescription";
-		public static final String RESOURCE_SIZE = "resourceSize";
-        public static final String CREATION_TIME = "creationTime";
-        public static final String LAST_MODIFIED_TIME = "lastModifiedTime";
-	}
-
-	// Users table
-	public final class DataReplicaLocationConstants {
-        public static final String REPLICA_ID = "replicaId";
-        public static final String RESOURCE_ID = "resourceId";
-        public static final String DATA_LOCATIONS = "dataLocations";
-        public static final String REPLICA_NAME = "replicaName";
-        public static final String REPLICA_DESCRIPTION = "replicaDescription";
-        public static final String CREATION_TIME = "creationTime";
-        public static final String LAST_MODIFIED_TIME = "lastModifiedTime";
-	}
-}


[17/55] [abbrv] airavata git commit: Fixed issues with BES security context

Posted by sh...@apache.org.
Fixed issues with BES security context


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

Branch: refs/heads/master
Commit: f30e73fd10668d2ae4735702eda0021f0490abf0
Parents: 2442159
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Mar 23 18:05:46 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Mar 23 18:05:46 2016 -0400

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      | 12 ++++++++---
 .../gfac/impl/task/BESJobSubmissionTask.java    | 22 +++++++++++++-------
 .../impl/task/utils/bes/DataTransferrer.java    | 13 +++++++-----
 .../task/utils/bes/UNICORESecurityContext.java  |  7 ++++---
 4 files changed, 35 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index 0622e58..a4f101e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -178,9 +178,15 @@ public class GFacEngineImpl implements GFacEngine {
             processModel.setProcessOutputs(applicationOutputs);
 
             processContext.setSshKeyAuthentication(Factory.getComputerResourceSSHKeyAuthentication(processContext));
-            processContext.setResourceJobManager(getResourceJobManager(processContext));
-            processContext.setJobSubmissionRemoteCluster(Factory.getJobSubmissionRemoteCluster(processContext));
-            processContext.setDataMovementRemoteCluster(Factory.getDataMovementRemoteCluster(processContext));
+            if (processContext.getJobSubmissionProtocol() == JobSubmissionProtocol.UNICORE) {
+                // process monitor mode set in getResourceJobManager method, but unicore doesn't have resource job manager.
+                // hence we set process monitor mode here.
+                processContext.setMonitorMode(MonitorMode.FORK);
+            } else {
+                processContext.setResourceJobManager(getResourceJobManager(processContext));
+                processContext.setJobSubmissionRemoteCluster(Factory.getJobSubmissionRemoteCluster(processContext));
+                processContext.setDataMovementRemoteCluster(Factory.getDataMovementRemoteCluster(processContext));
+            }
 
             String inputPath = ServerSettings.getLocalDataLocation();
             if (inputPath != null) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
index cf8e4a0..145cde9 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
@@ -35,8 +35,10 @@ import org.apache.airavata.gfac.core.context.TaskContext;
 import org.apache.airavata.gfac.core.task.JobSubmissionTask;
 import org.apache.airavata.gfac.core.task.TaskException;
 import org.apache.airavata.gfac.impl.task.utils.bes.*;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
 import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.status.JobState;
 import org.apache.airavata.model.status.JobStatus;
@@ -92,10 +94,11 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
         try {
             ProcessContext processContext = taskContext.getParentProcessContext();
             JobSubmissionProtocol protocol = processContext.getJobSubmissionProtocol();
-            String interfaceId = processContext.getApplicationInterfaceDescription().getApplicationInterfaceId();
+            JobSubmissionInterface jobSubmissionInterface = GFacUtils.getPreferredJobSubmissionInterface(processContext);
             String factoryUrl = null;
             if (protocol.equals(JobSubmissionProtocol.UNICORE)) {
-                UnicoreJobSubmission unicoreJobSubmission = GFacUtils.getUnicoreJobSubmission(interfaceId);
+                UnicoreJobSubmission unicoreJobSubmission = GFacUtils.getUnicoreJobSubmission(
+                        jobSubmissionInterface.getJobSubmissionInterfaceId());
                 factoryUrl = unicoreJobSubmission.getUnicoreEndPointURL();
             }
             EndpointReferenceType eprt = EndpointReferenceType.Factory.newInstance();
@@ -200,7 +203,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             log.error("Error while retrieving UNICORE job submission..");
             taskStatus.setState(TaskState.FAILED);
         } catch (Exception e) {
-            log.error("Cannot create storage..");
+            log.error("Cannot create storage..", e);
             taskStatus.setState(TaskState.FAILED);
         }
 
@@ -211,10 +214,13 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
         DefaultClientConfiguration clientConfig = null;
         try {
             UNICORESecurityContext unicoreSecurityContext = SecurityUtils.getSecurityContext(pc);
-            UserConfigurationData userConfigData = (UserConfigurationData) pc.getExperimentCatalog().
+            UserConfigurationDataModel userConfigDataModel = (UserConfigurationDataModel) pc.getExperimentCatalog().
                     get(ExperimentCatalogModelType.USER_CONFIGURATION_DATA, pc.getExperimentId());
-            if (userConfigData.getGenerateCert()) {
-                clientConfig = unicoreSecurityContext.getDefaultConfiguration(false, userConfigData);
+            // FIXME - remove following setter lines, and use original value comes with user configuration data model.
+            userConfigDataModel.setGenerateCert(true);
+            userConfigDataModel.setUserDN("CN=swus3, O=Ultrascan Gateway, C=DE");
+            if (userConfigDataModel.isGenerateCert()) {
+                clientConfig = unicoreSecurityContext.getDefaultConfiguration(false, userConfigDataModel);
             } else {
                 clientConfig = unicoreSecurityContext.getDefaultConfiguration(false);
             }
@@ -266,12 +272,12 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
 
     @Override
     public TaskStatus recover(TaskContext taskContext) {
-        return null;
+        return execute(taskContext);
     }
 
     @Override
     public TaskTypes getType() {
-        return null;
+        return TaskTypes.JOB_SUBMISSION;
     }
 
     protected ActivityStatusType getStatus(FactoryClient fc, EndpointReferenceType activityEpr)

http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
index e480f92..4a0cbbf 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
@@ -57,8 +57,8 @@ public class DataTransferrer {
 	
 	protected String gatewayDownloadLocation, stdoutLocation, stderrLocation;
 	
-	public DataTransferrer(ProcessContext jobContext, StorageClient storageClient) {
-		this.processContext = jobContext;
+	public DataTransferrer(ProcessContext processContext, StorageClient storageClient) {
+		this.processContext = processContext;
 		this.storageClient = storageClient;
 		resultantOutputsLst = new ArrayList<OutputDataObjectType>();
 		initStdoutsLocation();
@@ -103,13 +103,16 @@ public class DataTransferrer {
 	}
 
     public void uploadLocalFiles() throws GFacException {
-        List<String> inFilePrms = extractInFileParams();
+        List<String> inFilePrms = new ArrayList<>();
+        // FIXME - remove hard coded file path.
+//        inFilePrms.addAll(extractInFileParams());
+        inFilePrms.add("file://home/airavata/test/hpcinput-localhost-uslims3_cauma3d-00950.tar");
         for (String uri : inFilePrms) {
             String fileName = new File(uri).getName();
             if (uri.startsWith("file")) {
                 try {
-                    String uriWithoutProtocol = uri.substring(uri.lastIndexOf("://") + 1, uri.length());
-                    FileUploader fileUploader = new FileUploader(uriWithoutProtocol,fileName,Mode.overwrite);
+                    String uriWithoutProtocol = uri.substring(uri.lastIndexOf("://") + 2, uri.length());
+                    FileUploader fileUploader = new FileUploader(uriWithoutProtocol, fileName, Mode.overwrite, false);
                     fileUploader.perform(storageClient);
                 } catch (FileNotFoundException e3) {
                     throw new GFacException(

http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java
index a383b40..609e1fa 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java
@@ -31,6 +31,7 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.credential.store.store.CredentialReader;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.RequestData;
+import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.registry.core.experiment.catalog.model.UserConfigurationData;
 import org.bouncycastle.asn1.x500.style.BCStyle;
 import org.slf4j.Logger;
@@ -68,13 +69,13 @@ public class UNICORESecurityContext extends X509SecurityContext {
 		return secProperties;
 	}
 
-	public DefaultClientConfiguration getDefaultConfiguration(Boolean enableMessageLogging, UserConfigurationData userData) throws GFacException, ApplicationSettingsException {
+	public DefaultClientConfiguration getDefaultConfiguration(Boolean enableMessageLogging, UserConfigurationDataModel userDataModel) throws GFacException, ApplicationSettingsException {
 		X509Credential cred = null;
 		
 		try{
-			boolean genCert = userData.getGenerateCert();
+			boolean genCert = userDataModel.isGenerateCert();
 				if(genCert) {
-					String userDN = userData.getUserDn();
+					String userDN = userDataModel.getUserDN();
 					if (userDN == null || "".equals(userDN)){
 						log.warn("Cannot generate cert, falling back to GFAC configured MyProxy credentials");
 						return getDefaultConfiguration(enableMessageLogging);


[34/55] [abbrv] airavata git commit: fixing child data products JPA issue

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/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 2d8eb7d..f38cdc6 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
@@ -93,7 +93,7 @@
         <class>org.apache.airavata.registry.core.experiment.catalog.model.JobStatus</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
-    <persistence-unit name="datacatalog_data">
+    <persistence-unit name="replicacatalog_data">
         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
         <class>org.apache.airavata.registry.core.replica.catalog.model.DataProduct</class>
         <class>org.apache.airavata.registry.core.replica.catalog.model.DataReplicaLocation</class>

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
index ff30d43..1bfa014 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
@@ -37,7 +37,7 @@ import java.util.HashMap;
 public class ReplicaCatalogTest {
     private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogTest.class);
     private static Initialize initialize;
-    private static ReplicaCatalog datacatalog;
+    private static ReplicaCatalog replicacatalog;
     private static DataProductModel dataProductModel;
     private static DataReplicaLocationModel replicaLocationModel;
 
@@ -47,7 +47,7 @@ public class ReplicaCatalogTest {
             System.out.println("********** SET UP ************");
             initialize = new Initialize("replicacatalog-derby.sql");
             initialize.initializeDB();
-            datacatalog = RegistryFactory.getReplicaCatalog();
+            replicacatalog = RegistryFactory.getReplicaCatalog();
             dataProductModel = new DataProductModel();
             dataProductModel.setProductName("test-file.txt");
             dataProductModel.setOwnerName("scnakandala");
@@ -80,17 +80,17 @@ public class ReplicaCatalogTest {
     @Test
     public void testReplicaCatalog(){
         try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
+            String productUri = replicacatalog.registerDataProduct(dataProductModel);
             org.junit.Assert.assertNotNull(productUri);
-            dataProductModel = datacatalog.getDataProduct(productUri);
+            dataProductModel = replicacatalog.getDataProduct(productUri);
             Assert.assertNotNull(dataProductModel);
-            boolean result = datacatalog.removeDataProduct(productUri);
+            boolean result = replicacatalog.removeDataProduct(productUri);
             Assert.assertTrue(result);
-            productUri = datacatalog.registerDataProduct(dataProductModel);
+            productUri = replicacatalog.registerDataProduct(dataProductModel);
             Assert.assertNotNull(productUri);
-            result = datacatalog.removeDataProduct(productUri);
+            result = replicacatalog.removeDataProduct(productUri);
             Assert.assertTrue(result);
-            result = datacatalog.removeDataProduct(productUri);
+            result = replicacatalog.removeDataProduct(productUri);
             Assert.assertFalse(result);
         } catch (ReplicaCatalogException e) {
             e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
index c05003b..a47eaaf 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
@@ -94,10 +94,10 @@ public class Initialize {
 
     public void initializeDB() {
         try{
-            jdbcDriver = ServerSettings.getSetting("datacatalog.jdbc.driver");
-            jdbcUrl = ServerSettings.getSetting("datacatalog.jdbc.url");
-            jdbcUser = ServerSettings.getSetting("datacatalog.jdbc.user");
-            jdbcPassword = ServerSettings.getSetting("datacatalog.jdbc.password");
+            jdbcDriver = ServerSettings.getSetting("replicacatalog.jdbc.driver");
+            jdbcUrl = ServerSettings.getSetting("replicacatalog.jdbc.url");
+            jdbcUser = ServerSettings.getSetting("replicacatalog.jdbc.user");
+            jdbcPassword = ServerSettings.getSetting("replicacatalog.jdbc.password");
             jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
         } catch (ApplicationSettingsException e) {
             logger.error("Unable to read properties", e);


[39/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 262de5e..54a0771 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
@@ -42866,6 +42866,616 @@ uint32_t Airavata_registerReplicaLocation_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
+
+Airavata_getParentDataProduct_args::~Airavata_getParentDataProduct_args() throw() {
+}
+
+
+uint32_t Airavata_getParentDataProduct_args::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_authzToken = false;
+  bool isset_productUri = 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_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_productUri)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_getParentDataProduct_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_pargs::~Airavata_getParentDataProduct_pargs() throw() {
+}
+
+
+uint32_t Airavata_getParentDataProduct_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_result::~Airavata_getParentDataProduct_result() throw() {
+}
+
+
+uint32_t Airavata_getParentDataProduct_result::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->success.read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getParentDataProduct_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
+    xfer += this->success.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_presult::~Airavata_getParentDataProduct_presult() throw() {
+}
+
+
+uint32_t Airavata_getParentDataProduct_presult::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += (*(this->success)).read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_args::~Airavata_getChildDataProducts_args() throw() {
+}
+
+
+uint32_t Airavata_getChildDataProducts_args::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_authzToken = false;
+  bool isset_productUri = 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_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_productUri)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_getChildDataProducts_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_pargs::~Airavata_getChildDataProducts_pargs() throw() {
+}
+
+
+uint32_t Airavata_getChildDataProducts_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_result::~Airavata_getChildDataProducts_result() throw() {
+}
+
+
+uint32_t Airavata_getChildDataProducts_result::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size414;
+            ::apache::thrift::protocol::TType _etype417;
+            xfer += iprot->readListBegin(_etype417, _size414);
+            this->success.resize(_size414);
+            uint32_t _i418;
+            for (_i418 = 0; _i418 < _size414; ++_i418)
+            {
+              xfer += this->success[_i418].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getChildDataProducts_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::data::replica::DataProductModel> ::const_iterator _iter419;
+      for (_iter419 = this->success.begin(); _iter419 != this->success.end(); ++_iter419)
+      {
+        xfer += (*_iter419).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_presult::~Airavata_getChildDataProducts_presult() throw() {
+}
+
+
+uint32_t Airavata_getChildDataProducts_presult::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            (*(this->success)).clear();
+            uint32_t _size420;
+            ::apache::thrift::protocol::TType _etype423;
+            xfer += iprot->readListBegin(_etype423, _size420);
+            (*(this->success)).resize(_size420);
+            uint32_t _i424;
+            for (_i424 = 0; _i424 < _size420; ++_i424)
+            {
+              xfer += (*(this->success))[_i424].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
 void AiravataClient::getAPIVersion(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
 {
   send_getAPIVersion(authzToken);
@@ -52390,23 +53000,165 @@ void AiravataClient::recv_getWorkflowTemplateId(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getWorkflowTemplateId failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getWorkflowTemplateId failed: unknown result");
+}
+
+bool AiravataClient::isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName)
+{
+  send_isWorkflowExistWithName(authzToken, workflowName);
+  return recv_isWorkflowExistWithName();
+}
+
+void AiravataClient::send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("isWorkflowExistWithName", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_isWorkflowExistWithName_pargs args;
+  args.authzToken = &authzToken;
+  args.workflowName = &workflowName;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+bool AiravataClient::recv_isWorkflowExistWithName()
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("isWorkflowExistWithName") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  bool _return;
+  Airavata_isWorkflowExistWithName_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    return _return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "isWorkflowExistWithName failed: unknown result");
+}
+
+void AiravataClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+{
+  send_registerDataProduct(authzToken, dataProductModel);
+  recv_registerDataProduct(_return);
+}
+
+void AiravataClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("registerDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_registerDataProduct_pargs args;
+  args.authzToken = &authzToken;
+  args.dataProductModel = &dataProductModel;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+void AiravataClient::recv_registerDataProduct(std::string& _return)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("registerDataProduct") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  Airavata_registerDataProduct_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    // _return pointer has now been filled
+    return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerDataProduct failed: unknown result");
 }
 
-bool AiravataClient::isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName)
+void AiravataClient::getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
 {
-  send_isWorkflowExistWithName(authzToken, workflowName);
-  return recv_isWorkflowExistWithName();
+  send_getDataProduct(authzToken, dataProductUri);
+  recv_getDataProduct(_return);
 }
 
-void AiravataClient::send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName)
+void AiravataClient::send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("isWorkflowExistWithName", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_isWorkflowExistWithName_pargs args;
+  Airavata_getDataProduct_pargs args;
   args.authzToken = &authzToken;
-  args.workflowName = &workflowName;
+  args.dataProductUri = &dataProductUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52414,7 +53166,7 @@ void AiravataClient::send_isWorkflowExistWithName(const  ::apache::airavata::mod
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_isWorkflowExistWithName()
+void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52434,20 +53186,20 @@ bool AiravataClient::recv_isWorkflowExistWithName()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("isWorkflowExistWithName") != 0) {
+  if (fname.compare("getDataProduct") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  bool _return;
-  Airavata_isWorkflowExistWithName_presult result;
+  Airavata_getDataProduct_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    return _return;
+    // _return pointer has now been filled
+    return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -52461,23 +53213,23 @@ bool AiravataClient::recv_isWorkflowExistWithName()
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "isWorkflowExistWithName failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getDataProduct failed: unknown result");
 }
 
-void AiravataClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+void AiravataClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
-  send_registerDataProduct(authzToken, dataProductModel);
-  recv_registerDataProduct(_return);
+  send_registerReplicaLocation(authzToken, replicaLocationModel);
+  recv_registerReplicaLocation(_return);
 }
 
-void AiravataClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+void AiravataClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("registerDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("registerReplicaLocation", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_registerDataProduct_pargs args;
+  Airavata_registerReplicaLocation_pargs args;
   args.authzToken = &authzToken;
-  args.dataProductModel = &dataProductModel;
+  args.replicaLocationModel = &replicaLocationModel;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52485,7 +53237,7 @@ void AiravataClient::send_registerDataProduct(const  ::apache::airavata::model::
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_registerDataProduct(std::string& _return)
+void AiravataClient::recv_registerReplicaLocation(std::string& _return)
 {
 
   int32_t rseqid = 0;
@@ -52505,12 +53257,12 @@ void AiravataClient::recv_registerDataProduct(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("registerDataProduct") != 0) {
+  if (fname.compare("registerReplicaLocation") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_registerDataProduct_presult result;
+  Airavata_registerReplicaLocation_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52532,23 +53284,23 @@ void AiravataClient::recv_registerDataProduct(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerDataProduct failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerReplicaLocation failed: unknown result");
 }
 
-void AiravataClient::getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
+void AiravataClient::getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri)
 {
-  send_getDataProduct(authzToken, dataProductUri);
-  recv_getDataProduct(_return);
+  send_getParentDataProduct(authzToken, productUri);
+  recv_getParentDataProduct(_return);
 }
 
-void AiravataClient::send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
+void AiravataClient::send_getParentDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getParentDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getDataProduct_pargs args;
+  Airavata_getParentDataProduct_pargs args;
   args.authzToken = &authzToken;
-  args.dataProductUri = &dataProductUri;
+  args.productUri = &productUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52556,7 +53308,7 @@ void AiravataClient::send_getDataProduct(const  ::apache::airavata::model::secur
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return)
+void AiravataClient::recv_getParentDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52576,12 +53328,12 @@ void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::repli
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getDataProduct") != 0) {
+  if (fname.compare("getParentDataProduct") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getDataProduct_presult result;
+  Airavata_getParentDataProduct_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52603,23 +53355,23 @@ void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::repli
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getDataProduct failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getParentDataProduct failed: unknown result");
 }
 
-void AiravataClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
+void AiravataClient::getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri)
 {
-  send_registerReplicaLocation(authzToken, replicaLocationModel);
-  recv_registerReplicaLocation(_return);
+  send_getChildDataProducts(authzToken, productUri);
+  recv_getChildDataProducts(_return);
 }
 
-void AiravataClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
+void AiravataClient::send_getChildDataProducts(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("registerReplicaLocation", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getChildDataProducts", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_registerReplicaLocation_pargs args;
+  Airavata_getChildDataProducts_pargs args;
   args.authzToken = &authzToken;
-  args.replicaLocationModel = &replicaLocationModel;
+  args.productUri = &productUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52627,7 +53379,7 @@ void AiravataClient::send_registerReplicaLocation(const  ::apache::airavata::mod
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_registerReplicaLocation(std::string& _return)
+void AiravataClient::recv_getChildDataProducts(std::vector< ::apache::airavata::model::data::replica::DataProductModel> & _return)
 {
 
   int32_t rseqid = 0;
@@ -52647,12 +53399,12 @@ void AiravataClient::recv_registerReplicaLocation(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("registerReplicaLocation") != 0) {
+  if (fname.compare("getChildDataProducts") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_registerReplicaLocation_presult result;
+  Airavata_getChildDataProducts_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52674,7 +53426,7 @@ void AiravataClient::recv_registerReplicaLocation(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerReplicaLocation failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getChildDataProducts failed: unknown result");
 }
 
 bool AiravataProcessor::dispatchCall(::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, const std::string& fname, int32_t seqid, void* callContext) {
@@ -61744,6 +62496,138 @@ void AiravataProcessor::process_registerReplicaLocation(int32_t seqid, ::apache:
   }
 }
 
+void AiravataProcessor::process_getParentDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext)
+{
+  void* ctx = NULL;
+  if (this->eventHandler_.get() != NULL) {
+    ctx = this->eventHandler_->getContext("Airavata.getParentDataProduct", callContext);
+  }
+  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), ctx, "Airavata.getParentDataProduct");
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preRead(ctx, "Airavata.getParentDataProduct");
+  }
+
+  Airavata_getParentDataProduct_args args;
+  args.read(iprot);
+  iprot->readMessageEnd();
+  uint32_t bytes = iprot->getTransport()->readEnd();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postRead(ctx, "Airavata.getParentDataProduct", bytes);
+  }
+
+  Airavata_getParentDataProduct_result result;
+  try {
+    iface_->getParentDataProduct(result.success, args.authzToken, args.productUri);
+    result.__isset.success = true;
+  } catch ( ::apache::airavata::api::error::InvalidRequestException &ire) {
+    result.ire = ire;
+    result.__isset.ire = true;
+  } catch ( ::apache::airavata::api::error::AiravataClientException &ace) {
+    result.ace = ace;
+    result.__isset.ace = true;
+  } catch ( ::apache::airavata::api::error::AiravataSystemException &ase) {
+    result.ase = ase;
+    result.__isset.ase = true;
+  } catch ( ::apache::airavata::api::error::AuthorizationException &ae) {
+    result.ae = ae;
+    result.__isset.ae = true;
+  } catch (const std::exception& e) {
+    if (this->eventHandler_.get() != NULL) {
+      this->eventHandler_->handlerError(ctx, "Airavata.getParentDataProduct");
+    }
+
+    ::apache::thrift::TApplicationException x(e.what());
+    oprot->writeMessageBegin("getParentDataProduct", ::apache::thrift::protocol::T_EXCEPTION, seqid);
+    x.write(oprot);
+    oprot->writeMessageEnd();
+    oprot->getTransport()->writeEnd();
+    oprot->getTransport()->flush();
+    return;
+  }
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preWrite(ctx, "Airavata.getParentDataProduct");
+  }
+
+  oprot->writeMessageBegin("getParentDataProduct", ::apache::thrift::protocol::T_REPLY, seqid);
+  result.write(oprot);
+  oprot->writeMessageEnd();
+  bytes = oprot->getTransport()->writeEnd();
+  oprot->getTransport()->flush();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postWrite(ctx, "Airavata.getParentDataProduct", bytes);
+  }
+}
+
+void AiravataProcessor::process_getChildDataProducts(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext)
+{
+  void* ctx = NULL;
+  if (this->eventHandler_.get() != NULL) {
+    ctx = this->eventHandler_->getContext("Airavata.getChildDataProducts", callContext);
+  }
+  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), ctx, "Airavata.getChildDataProducts");
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preRead(ctx, "Airavata.getChildDataProducts");
+  }
+
+  Airavata_getChildDataProducts_args args;
+  args.read(iprot);
+  iprot->readMessageEnd();
+  uint32_t bytes = iprot->getTransport()->readEnd();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postRead(ctx, "Airavata.getChildDataProducts", bytes);
+  }
+
+  Airavata_getChildDataProducts_result result;
+  try {
+    iface_->getChildDataProducts(result.success, args.authzToken, args.productUri);
+    result.__isset.success = true;
+  } catch ( ::apache::airavata::api::error::InvalidRequestException &ire) {
+    result.ire = ire;
+    result.__isset.ire = true;
+  } catch ( ::apache::airavata::api::error::AiravataClientException &ace) {
+    result.ace = ace;
+    result.__isset.ace = true;
+  } catch ( ::apache::airavata::api::error::AiravataSystemException &ase) {
+    result.ase = ase;
+    result.__isset.ase = true;
+  } catch ( ::apache::airavata::api::error::AuthorizationException &ae) {
+    result.ae = ae;
+    result.__isset.ae = true;
+  } catch (const std::exception& e) {
+    if (this->eventHandler_.get() != NULL) {
+      this->eventHandler_->handlerError(ctx, "Airavata.getChildDataProducts");
+    }
+
+    ::apache::thrift::TApplicationException x(e.what());
+    oprot->writeMessageBegin("getChildDataProducts", ::apache::thrift::protocol::T_EXCEPTION, seqid);
+    x.write(oprot);
+    oprot->writeMessageEnd();
+    oprot->getTransport()->writeEnd();
+    oprot->getTransport()->flush();
+    return;
+  }
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preWrite(ctx, "Airavata.getChildDataProducts");
+  }
+
+  oprot->writeMessageBegin("getChildDataProducts", ::apache::thrift::protocol::T_REPLY, seqid);
+  result.write(oprot);
+  oprot->writeMessageEnd();
+  bytes = oprot->getTransport()->writeEnd();
+  oprot->getTransport()->flush();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postWrite(ctx, "Airavata.getChildDataProducts", bytes);
+  }
+}
+
 ::boost::shared_ptr< ::apache::thrift::TProcessor > AiravataProcessorFactory::getProcessor(const ::apache::thrift::TConnectionInfo& connInfo) {
   ::apache::thrift::ReleaseHandler< AiravataIfFactory > cleanup(handlerFactory_);
   ::boost::shared_ptr< AiravataIf > handler(handlerFactory_->getHandler(connInfo), cleanup);
@@ -73807,7 +74691,109 @@ void AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("getGatewayComputeResourcePreference") != 0) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+
+        // in a bad state, don't commit
+        using ::apache::thrift::protocol::TProtocolException;
+        throw TProtocolException(TProtocolException::INVALID_DATA);
+      }
+      Airavata_getGatewayComputeResourcePreference_presult result;
+      result.success = &_return;
+      result.read(iprot_);
+      iprot_->readMessageEnd();
+      iprot_->getTransport()->readEnd();
+
+      if (result.__isset.success) {
+        // _return pointer has now been filled
+        sentry.commit();
+        return;
+      }
+      if (result.__isset.ire) {
+        sentry.commit();
+        throw result.ire;
+      }
+      if (result.__isset.ace) {
+        sentry.commit();
+        throw result.ace;
+      }
+      if (result.__isset.ase) {
+        sentry.commit();
+        throw result.ase;
+      }
+      if (result.__isset.ae) {
+        sentry.commit();
+        throw result.ae;
+      }
+      // in a bad state, don't commit
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGatewayComputeResourcePreference failed: unknown result");
+    }
+    // seqid != rseqid
+    this->sync_.updatePending(fname, mtype, rseqid);
+
+    // this will temporarily unlock the readMutex, and let other clients get work done
+    this->sync_.waitForWork(seqid);
+  } // end while(true)
+}
+
+void AiravataConcurrentClient::getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId)
+{
+  int32_t seqid = send_getGatewayStoragePreference(authzToken, gatewayID, storageResourceId);
+  recv_getGatewayStoragePreference(_return, seqid);
+}
+
+int32_t AiravataConcurrentClient::send_getGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId)
+{
+  int32_t cseqid = this->sync_.generateSeqId();
+  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
+  oprot_->writeMessageBegin("getGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_getGatewayStoragePreference_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.storageResourceId = &storageResourceId;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+
+  sentry.commit();
+  return cseqid;
+}
+
+void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const int32_t seqid)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  // the read mutex gets dropped and reacquired as part of waitForWork()
+  // The destructor of this sentry wakes up other clients
+  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
+
+  while(true) {
+    if(!this->sync_.getPending(fname, mtype, rseqid)) {
+      iprot_->readMessageBegin(fname, mtype, rseqid);
+    }
+    if(seqid == rseqid) {
+      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+        ::apache::thrift::TApplicationException x;
+        x.read(iprot_);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+        sentry.commit();
+        throw x;
+      }
+      if (mtype != ::apache::thrift::protocol::T_REPLY) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+      }
+      if (fname.compare("getGatewayStoragePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -73816,7 +74802,7 @@ void AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getGatewayComputeResourcePreference_presult result;
+      Airavata_getGatewayStoragePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -73844,7 +74830,7 @@ void AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGatewayComputeResourcePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGatewayStoragePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -73854,22 +74840,21 @@ void AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId)
+void AiravataConcurrentClient::getAllGatewayComputeResourcePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
 {
-  int32_t seqid = send_getGatewayStoragePreference(authzToken, gatewayID, storageResourceId);
-  recv_getGatewayStoragePreference(_return, seqid);
+  int32_t seqid = send_getAllGatewayComputeResourcePreferences(authzToken, gatewayID);
+  recv_getAllGatewayComputeResourcePreferences(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId)
+int32_t AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayComputeResourcePreferences", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getGatewayStoragePreference_pargs args;
+  Airavata_getAllGatewayComputeResourcePreferences_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
-  args.storageResourceId = &storageResourceId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -73880,7 +74865,7 @@ int32_t AiravataConcurrentClient::send_getGatewayStoragePreference(const  ::apac
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference> & _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -73909,7 +74894,7 @@ void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getGatewayStoragePreference") != 0) {
+      if (fname.compare("getAllGatewayComputeResourcePreferences") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -73918,7 +74903,7 @@ void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getGatewayStoragePreference_presult result;
+      Airavata_getAllGatewayComputeResourcePreferences_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -73946,7 +74931,7 @@ void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGatewayStoragePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayComputeResourcePreferences failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -73956,19 +74941,19 @@ void AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllGatewayComputeResourcePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
+void AiravataConcurrentClient::getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
 {
-  int32_t seqid = send_getAllGatewayComputeResourcePreferences(authzToken, gatewayID);
-  recv_getAllGatewayComputeResourcePreferences(_return, seqid);
+  int32_t seqid = send_getAllGatewayStoragePreferences(authzToken, gatewayID);
+  recv_getAllGatewayStoragePreferences(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
+int32_t AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayComputeResourcePreferences", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayStoragePreferences", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayComputeResourcePreferences_pargs args;
+  Airavata_getAllGatewayStoragePreferences_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.write(oprot_);
@@ -73981,7 +74966,7 @@ int32_t AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(c
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference> & _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74010,7 +74995,7 @@ void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayComputeResourcePreferences") != 0) {
+      if (fname.compare("getAllGatewayStoragePreferences") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74019,7 +75004,7 @@ void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayComputeResourcePreferences_presult result;
+      Airavata_getAllGatewayStoragePreferences_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74047,7 +75032,7 @@ void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayComputeResourcePreferences failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayStoragePreferences failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74057,21 +75042,20 @@ void AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
+void AiravataConcurrentClient::getAllGatewayResourceProfiles(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
 {
-  int32_t seqid = send_getAllGatewayStoragePreferences(authzToken, gatewayID);
-  recv_getAllGatewayStoragePreferences(_return, seqid);
+  int32_t seqid = send_getAllGatewayResourceProfiles(authzToken);
+  recv_getAllGatewayResourceProfiles(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID)
+int32_t AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  ::apache::airavata::model::security::AuthzToken& authzToken)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayStoragePreferences", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayResourceProfiles", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayStoragePreferences_pargs args;
+  Airavata_getAllGatewayResourceProfiles_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74082,7 +75066,7 @@ int32_t AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  ::
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> & _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74111,7 +75095,7 @@ void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayStoragePreferences") != 0) {
+      if (fname.compare("getAllGatewayResourceProfiles") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74120,7 +75104,7 @@ void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayStoragePreferences_presult result;
+      Airavata_getAllGatewayResourceProfiles_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74148,7 +75132,7 @@ void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayStoragePreferences failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayResourceProfiles failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74158,20 +75142,23 @@ void AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllGatewayResourceProfiles(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
+bool AiravataConcurrentClient::updateGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference)
 {
-  int32_t seqid = send_getAllGatewayResourceProfiles(authzToken);
-  recv_getAllGatewayResourceProfiles(_return, seqid);
+  int32_t seqid = send_updateGatewayComputeResourcePreference(authzToken, gatewayID, computeResourceId, computeResourcePreference);
+  return recv_updateGatewayComputeResourcePreference(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  ::apache::airavata::model::security::AuthzToken& authzToken)
+int32_t AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayResourceProfiles", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("updateGatewayComputeResourcePreference", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayResourceProfiles_pargs args;
+  Airavata_updateGatewayComputeResourcePreference_pargs args;
   args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.computeResourceId = &computeResourceId;
+  args.computeResourcePreference = &computeResourcePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74182,7 +75169,7 @@ int32_t AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  ::ap
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> & _return, const int32_t seqid)
+bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74211,7 +75198,7 @@ void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayResourceProfiles") != 0) {
+      if (fname.compare("updateGatewayComputeResourcePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74220,16 +75207,16 @@ void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayResourceProfiles_presult result;
+      bool _return;
+      Airavata_updateGatewayComputeResourcePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
-        // _return pointer has now been filled
         sentry.commit();
-        return;
+        return _return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74248,7 +75235,7 @@ void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewayResourceProfiles failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "updateGatewayComputeResourcePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74258,23 +75245,125 @@ void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::updateGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference)
+bool AiravataConcurrentClient::updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference)
 {
-  int32_t seqid = send_updateGatewayComputeResourcePreference(authzToken, gatewayID, computeResourceId, computeResourcePreference);
-  return recv_updateGatewayComputeResourcePreference(seqid);
+  int32_t seqid = send_updateGatewayStoragePreference(authzToken, gatewayID, storageId, storagePreference);
+  return recv_updateGatewayStoragePreference(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference& computeResourcePreference)
+int32_t AiravataConcurrentClient::send_updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("updateGatewayComputeResourcePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("updateGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateGatewayComputeResourcePreference_pargs args;
+  Airavata_updateGatewayStoragePreference_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.storageId = &storageId;
+  args.storagePreference = &storagePreference;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+
+  sentry.commit();
+  return cseqid;
+}
+
+bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t seqid)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  // the read mutex gets dropped and reacquired as part of waitForWork()
+  // The destructor of this sentry wakes up other clients
+  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
+
+  while(true) {
+    if(!this->sync_.getPending(fname, mtype, rseqid)) {
+      iprot_->readMessageBegin(fname, mtype, rseqid);
+    }
+    if(seqid == rseqid) {
+      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+        ::apache::thrift::TApplicationException x;
+        x.read(iprot_);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+        sentry.commit();
+        throw x;
+      }
+      if (mtype != ::apache::thrift::protocol::T_REPLY) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+      }
+      if (fname.compare("updateGatewayStoragePreference") != 0) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+
+        // in a bad state, don't commit
+        using ::apache::thrift::protocol::TProtocolException;
+        throw TProtocolException(TProtocolException::INVALID_DATA);
+      }
+      bool _return;
+      Airavata_updateGatewayStoragePreference_presult result;
+      result.success = &_return;
+      result.read(iprot_);
+      iprot_->readMessageEnd();
+      iprot_->getTransport()->readEnd();
+
+      if (result.__isset.success) {
+        sentry.commit();
+        return _return;
+      }
+      if (result.__isset.ire) {
+        sentry.commit();
+        throw result.ire;
+      }
+      if (result.__isset.ace) {
+        sentry.commit();
+        throw result.ace;
+      }
+      if (result.__isset.ase) {
+        sentry.commit();
+        throw result.ase;
+      }
+      if (result.__isset.ae) {
+        sentry.commit();
+        throw result.ae;
+      }
+      // in a bad state, don't commit
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "updateGatewayStoragePreference failed: unknown result");
+    }
+    // seqid != rseqid
+    this->sync_.updatePending(fname, mtype, rseqid);
+
+    // this will temporarily unlock the readMutex, and let other clients get work done
+    this->sync_.waitForWork(seqid);
+  } // end while(true)
+}
+
+bool AiravataConcurrentClient::deleteGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId)
+{
+  int32_t seqid = send_deleteGatewayComputeResourcePreference(authzToken, gatewayID, computeResourceId);
+  return recv_deleteGatewayComputeResourcePreference(seqid);
+}
+
+int32_t AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId)
+{
+  int32_t cseqid = this->sync_.generateSeqId();
+  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
+  oprot_->writeMessageBegin("deleteGatewayComputeResourcePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_deleteGatewayComputeResourcePreference_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.computeResourceId = &computeResourceId;
-  args.computeResourcePreference = &computeResourcePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74285,7 +75374,7 @@ int32_t AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(co
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const int32_t seqid)
+bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74314,7 +75403,7 @@ bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("updateGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("deleteGatewayComputeResourcePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74324,7 +75413,7 @@ bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
       bool _return;
-      Airavata_updateGatewayComputeResourcePreference_presult result;
+      Airavata_deleteGatewayComputeResourcePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74351,7 +75440,7 @@ bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "updateGatewayComputeResourcePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGatewayComputeResourcePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74361,23 +75450,22 @@ bool AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference)
+bool AiravataConcurrentClient::deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId)
 {
-  int32_t seqid = send_updateGatewayStoragePreference(authzToken, gatewayID, storageId, storagePreference);
-  return recv_updateGatewayStoragePreference(seqid);
+  int32_t seqid = send_deleteGatewayStoragePreference(authzToken, gatewayID, storageId);
+  return recv_deleteGatewayStoragePreference(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference)
+int32_t AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("updateGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateGatewayStoragePreference_pargs args;
+  Airavata_deleteGatewayStoragePreference_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.storageId = &storageId;
-  args.storagePreference = &storagePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74388,7 +75476,7 @@ int32_t AiravataConcurrentClient::send_updateGatewayStoragePreference(const  ::a
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t seqid)
+bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74417,7 +75505,7 @@ bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("updateGatewayStoragePreference") != 0) {
+      if (fname.compare("deleteGatewayStoragePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74427,7 +75515,7 @@ bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
       bool _return;
-      Airavata_updateGatewayStoragePreference_presult result;
+      Airavata_deleteGatewayStoragePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74454,7 +75542,7 @@ bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "updateGatewayStoragePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGatewayStoragePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74464,22 +75552,21 @@ bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::deleteGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId)
+void AiravataConcurrentClient::getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
-  int32_t seqid = send_deleteGatewayComputeResourcePreference(authzToken, gatewayID, computeResourceId);
-  return recv_deleteGatewayComputeResourcePreference(seqid);
+  int32_t seqid = send_getAllWorkflows(authzToken, gatewayId);
+  recv_getAllWorkflows(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& computeResourceId)
+int32_t AiravataConcurrentClient::send_getAllWorkflows(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("deleteGatewayComputeResourcePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllWorkflows", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteGatewayComputeResourcePreference_pargs args;
+  Airavata_getAllWorkflows_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
-  args.computeResourceId = &computeResourceId;
+  args.gatewayId = &gatewayId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74490,7 +75577,7 @@ int32_t AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(co
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const int32_t seqid)
+void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74519,7 +75606,7 @@ bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("deleteGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("getAllWorkflows") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74528,16 +75615,16 @@ bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      bool _return;
-      Airavata_deleteGatewayComputeResourcePreference_presult result;
+      Airavata_getAllWorkflows_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
+        // _return pointer has now been filled
         sentry.commit();
-        return _return;
+        return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74556,7 +75643,7 @@ bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGatewayComputeResourcePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllWorkflows failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74566,22 +75653,21 @@ bool AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId)
+void AiravataConcurrentClient::getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
-  int32_t seqid = send_deleteGatewayStoragePreference(authzToken, gatewayID, storageId);
-  return recv_deleteGatewayStoragePreference(seqid);
+  int32_t seqid = send_getWorkflow(authzToken, workflowTemplateId);
+  recv_getWorkflow(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId)
+int32_t AiravataConcurrentClient::send_getWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("deleteGatewayStoragePreference", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteGatewayStoragePreference_pargs args;
+  Airavata_getWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
-  args.storageId = &storageId;
+  args.workflowTemplateId = &workflowTemplateId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74592,7 +75678,7 @@ int32_t AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  ::a
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t seqid)
+void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74621,7 +75707,7 @@ bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("deleteGatewayStoragePreference") != 0) {
+      if (fname.compare("getWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74630,16 +75716,16 @@ bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      bool _return;
-      Airavata_deleteGatewayStoragePreference_presult result;
+      Airavata_getWorkflow_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
+        // _return pointer has now been filled
         sentry.commit();
-        return _return;
+        return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74658,7 +75744,7 @@ bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGatewayStoragePreference failed: unknown result");
+      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getWorkflow failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74668,21 +75754,21 @@ bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataConcurrentClient::deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
-  int32_t seqid = send_getAllWorkflows(authzToken, gatewayId);
-  recv_getAllWorkflows(_return, seqid);
+  int32_t seqid = send_deleteWorkflow(authzToken, workflowTemplateId);
+  recv_deleteWorkflow(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllWorkflows(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+int32_t AiravataConcurrentClient::send_deleteWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllWorkflows", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllWorkflows_pargs args;
+  Airavata_deleteWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayId = &gatewayId;
+  args.workflowTemplateId = &workflowTemplateId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74693,7 +75779,7 @@ int32_t AiravataConcurrentClient::send_getAllWorkflows(const  ::apache::airavata
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_deleteWorkflow(const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74722,7 +75808,7 @@ void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllWorkflows") != 0) {
+      if (fname.compare("deleteWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74731,17 +75817,11 @@ void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllWorkflows_presult result;
-      result.success = &_return;
+      Airavata_deleteWorkflow_presult result;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
-      if (result.__isset.success) {
-        // _return pointer has now been filled
-        sentry.commit();
-        return;
-      }
       if (result.__isset.ire) {
         sentry.commit();
         throw result.ire;
@@ -74758,8 +75838,8 @@ void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         sentry.commit();
         throw result.ae;
       }
-      // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllWorkflows failed: unknown result");
+      sentry.commit();
+      return;
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74769,21 +75849,22 @@ void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
+void AiravataConcurrentClient::registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow)
 {
-  int32_t seqid = send_getWorkflow(authzToken, workflowTemplateId);
-  recv_getWorkflow(_return, seqid);
+  int32_t seqid = send_registerWorkflow(authzToken, gatewayId, workflow);
+  recv_registerWorkflow(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId)
+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_);
-  oprot_->writeMessageBegin("getWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("registerWorkflow", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getWorkflow_pargs args;
+  Airavata_registerWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.workflowTemplateId = &workflowTemplateId;
+  args.gatewayId = &gatewayId;
+  args.workflow = &workflow;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74794,7 +75875,7 @@ int32_t AiravataConcurrentClient::send_getWorkflow(const  ::apache::airavata::mo
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_registerWorkflow(std::string& _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74823,7 +75904,7 @@ void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getWorkflow") != 0) {
+      if (fname.compare("registerWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74832,7 +75913,7 @@ void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, const
 

<TRUNCATED>

[28/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductModel.java
deleted file mode 100644
index cca01de..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductModel.java
+++ /dev/null
@@ -1,1943 +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.data.product;
-
-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-03-22")
-public class DataProductModel implements org.apache.thrift.TBase<DataProductModel, DataProductModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataProductModel> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataProductModel");
-
-  private static final org.apache.thrift.protocol.TField PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("productUri", org.apache.thrift.protocol.TType.STRING, (short)1);
-  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)2);
-  private static final org.apache.thrift.protocol.TField PARENT_PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("parentProductUri", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField LOGICAL_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("logicalPath", org.apache.thrift.protocol.TType.STRING, (short)4);
-  private static final org.apache.thrift.protocol.TField PRODUCT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("productName", org.apache.thrift.protocol.TType.STRING, (short)5);
-  private static final org.apache.thrift.protocol.TField PRODUCT_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("productDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
-  private static final org.apache.thrift.protocol.TField OWNER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("ownerName", org.apache.thrift.protocol.TType.STRING, (short)7);
-  private static final org.apache.thrift.protocol.TField DATA_PRODUCT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("dataProductType", org.apache.thrift.protocol.TType.I32, (short)8);
-  private static final org.apache.thrift.protocol.TField PRODUCT_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("productSize", org.apache.thrift.protocol.TType.I32, (short)9);
-  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)10);
-  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)11);
-  private static final org.apache.thrift.protocol.TField PRODUCT_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("productMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
-  private static final org.apache.thrift.protocol.TField REPLICA_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocations", org.apache.thrift.protocol.TType.LIST, (short)13);
-  private static final org.apache.thrift.protocol.TField CHILD_PRODUCTS_FIELD_DESC = new org.apache.thrift.protocol.TField("childProducts", org.apache.thrift.protocol.TType.LIST, (short)14);
-
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new DataProductModelStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new DataProductModelTupleSchemeFactory());
-  }
-
-  private String productUri; // optional
-  private String gatewayId; // optional
-  private String parentProductUri; // optional
-  private String logicalPath; // optional
-  private String productName; // optional
-  private String productDescription; // optional
-  private String ownerName; // optional
-  private DataProductType dataProductType; // optional
-  private int productSize; // optional
-  private long creationTime; // optional
-  private long lastModifiedTime; // optional
-  private Map<String,String> productMetadata; // optional
-  private List<DataReplicaLocationModel> replicaLocations; // optional
-  private List<DataProductModel> childProducts; // 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 {
-    PRODUCT_URI((short)1, "productUri"),
-    GATEWAY_ID((short)2, "gatewayId"),
-    PARENT_PRODUCT_URI((short)3, "parentProductUri"),
-    LOGICAL_PATH((short)4, "logicalPath"),
-    PRODUCT_NAME((short)5, "productName"),
-    PRODUCT_DESCRIPTION((short)6, "productDescription"),
-    OWNER_NAME((short)7, "ownerName"),
-    /**
-     * 
-     * @see DataProductType
-     */
-    DATA_PRODUCT_TYPE((short)8, "dataProductType"),
-    PRODUCT_SIZE((short)9, "productSize"),
-    CREATION_TIME((short)10, "creationTime"),
-    LAST_MODIFIED_TIME((short)11, "lastModifiedTime"),
-    PRODUCT_METADATA((short)12, "productMetadata"),
-    REPLICA_LOCATIONS((short)13, "replicaLocations"),
-    CHILD_PRODUCTS((short)14, "childProducts");
-
-    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: // PRODUCT_URI
-          return PRODUCT_URI;
-        case 2: // GATEWAY_ID
-          return GATEWAY_ID;
-        case 3: // PARENT_PRODUCT_URI
-          return PARENT_PRODUCT_URI;
-        case 4: // LOGICAL_PATH
-          return LOGICAL_PATH;
-        case 5: // PRODUCT_NAME
-          return PRODUCT_NAME;
-        case 6: // PRODUCT_DESCRIPTION
-          return PRODUCT_DESCRIPTION;
-        case 7: // OWNER_NAME
-          return OWNER_NAME;
-        case 8: // DATA_PRODUCT_TYPE
-          return DATA_PRODUCT_TYPE;
-        case 9: // PRODUCT_SIZE
-          return PRODUCT_SIZE;
-        case 10: // CREATION_TIME
-          return CREATION_TIME;
-        case 11: // LAST_MODIFIED_TIME
-          return LAST_MODIFIED_TIME;
-        case 12: // PRODUCT_METADATA
-          return PRODUCT_METADATA;
-        case 13: // REPLICA_LOCATIONS
-          return REPLICA_LOCATIONS;
-        case 14: // CHILD_PRODUCTS
-          return CHILD_PRODUCTS;
-        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 __PRODUCTSIZE_ISSET_ID = 0;
-  private static final int __CREATIONTIME_ISSET_ID = 1;
-  private static final int __LASTMODIFIEDTIME_ISSET_ID = 2;
-  private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.LOGICAL_PATH,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS,_Fields.CHILD_PRODUCTS};
-  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.PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("productUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        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.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.PARENT_PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("parentProductUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.LOGICAL_PATH, new org.apache.thrift.meta_data.FieldMetaData("logicalPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.PRODUCT_NAME, new org.apache.thrift.meta_data.FieldMetaData("productName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.PRODUCT_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("productDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.OWNER_NAME, new org.apache.thrift.meta_data.FieldMetaData("ownerName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.DATA_PRODUCT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("dataProductType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, DataProductType.class)));
-    tmpMap.put(_Fields.PRODUCT_SIZE, new org.apache.thrift.meta_data.FieldMetaData("productSize", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
-    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)));
-    tmpMap.put(_Fields.LAST_MODIFIED_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastModifiedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.PRODUCT_METADATA, new org.apache.thrift.meta_data.FieldMetaData("productMetadata", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
-    tmpMap.put(_Fields.REPLICA_LOCATIONS, new org.apache.thrift.meta_data.FieldMetaData("replicaLocations", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataReplicaLocationModel"))));
-    tmpMap.put(_Fields.CHILD_PRODUCTS, new org.apache.thrift.meta_data.FieldMetaData("childProducts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataProductModel"))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataProductModel.class, metaDataMap);
-  }
-
-  public DataProductModel() {
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public DataProductModel(DataProductModel other) {
-    __isset_bitfield = other.__isset_bitfield;
-    if (other.isSetProductUri()) {
-      this.productUri = other.productUri;
-    }
-    if (other.isSetGatewayId()) {
-      this.gatewayId = other.gatewayId;
-    }
-    if (other.isSetParentProductUri()) {
-      this.parentProductUri = other.parentProductUri;
-    }
-    if (other.isSetLogicalPath()) {
-      this.logicalPath = other.logicalPath;
-    }
-    if (other.isSetProductName()) {
-      this.productName = other.productName;
-    }
-    if (other.isSetProductDescription()) {
-      this.productDescription = other.productDescription;
-    }
-    if (other.isSetOwnerName()) {
-      this.ownerName = other.ownerName;
-    }
-    if (other.isSetDataProductType()) {
-      this.dataProductType = other.dataProductType;
-    }
-    this.productSize = other.productSize;
-    this.creationTime = other.creationTime;
-    this.lastModifiedTime = other.lastModifiedTime;
-    if (other.isSetProductMetadata()) {
-      Map<String,String> __this__productMetadata = new HashMap<String,String>(other.productMetadata);
-      this.productMetadata = __this__productMetadata;
-    }
-    if (other.isSetReplicaLocations()) {
-      List<DataReplicaLocationModel> __this__replicaLocations = new ArrayList<DataReplicaLocationModel>(other.replicaLocations.size());
-      for (DataReplicaLocationModel other_element : other.replicaLocations) {
-        __this__replicaLocations.add(other_element);
-      }
-      this.replicaLocations = __this__replicaLocations;
-    }
-    if (other.isSetChildProducts()) {
-      List<DataProductModel> __this__childProducts = new ArrayList<DataProductModel>(other.childProducts.size());
-      for (DataProductModel other_element : other.childProducts) {
-        __this__childProducts.add(other_element);
-      }
-      this.childProducts = __this__childProducts;
-    }
-  }
-
-  public DataProductModel deepCopy() {
-    return new DataProductModel(this);
-  }
-
-  @Override
-  public void clear() {
-    this.productUri = null;
-    this.gatewayId = null;
-    this.parentProductUri = null;
-    this.logicalPath = null;
-    this.productName = null;
-    this.productDescription = null;
-    this.ownerName = null;
-    this.dataProductType = null;
-    setProductSizeIsSet(false);
-    this.productSize = 0;
-    setCreationTimeIsSet(false);
-    this.creationTime = 0;
-    setLastModifiedTimeIsSet(false);
-    this.lastModifiedTime = 0;
-    this.productMetadata = null;
-    this.replicaLocations = null;
-    this.childProducts = null;
-  }
-
-  public String getProductUri() {
-    return this.productUri;
-  }
-
-  public void setProductUri(String productUri) {
-    this.productUri = productUri;
-  }
-
-  public void unsetProductUri() {
-    this.productUri = null;
-  }
-
-  /** Returns true if field productUri is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductUri() {
-    return this.productUri != null;
-  }
-
-  public void setProductUriIsSet(boolean value) {
-    if (!value) {
-      this.productUri = null;
-    }
-  }
-
-  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 getParentProductUri() {
-    return this.parentProductUri;
-  }
-
-  public void setParentProductUri(String parentProductUri) {
-    this.parentProductUri = parentProductUri;
-  }
-
-  public void unsetParentProductUri() {
-    this.parentProductUri = null;
-  }
-
-  /** Returns true if field parentProductUri is set (has been assigned a value) and false otherwise */
-  public boolean isSetParentProductUri() {
-    return this.parentProductUri != null;
-  }
-
-  public void setParentProductUriIsSet(boolean value) {
-    if (!value) {
-      this.parentProductUri = null;
-    }
-  }
-
-  public String getLogicalPath() {
-    return this.logicalPath;
-  }
-
-  public void setLogicalPath(String logicalPath) {
-    this.logicalPath = logicalPath;
-  }
-
-  public void unsetLogicalPath() {
-    this.logicalPath = null;
-  }
-
-  /** Returns true if field logicalPath is set (has been assigned a value) and false otherwise */
-  public boolean isSetLogicalPath() {
-    return this.logicalPath != null;
-  }
-
-  public void setLogicalPathIsSet(boolean value) {
-    if (!value) {
-      this.logicalPath = null;
-    }
-  }
-
-  public String getProductName() {
-    return this.productName;
-  }
-
-  public void setProductName(String productName) {
-    this.productName = productName;
-  }
-
-  public void unsetProductName() {
-    this.productName = null;
-  }
-
-  /** Returns true if field productName is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductName() {
-    return this.productName != null;
-  }
-
-  public void setProductNameIsSet(boolean value) {
-    if (!value) {
-      this.productName = null;
-    }
-  }
-
-  public String getProductDescription() {
-    return this.productDescription;
-  }
-
-  public void setProductDescription(String productDescription) {
-    this.productDescription = productDescription;
-  }
-
-  public void unsetProductDescription() {
-    this.productDescription = null;
-  }
-
-  /** Returns true if field productDescription is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductDescription() {
-    return this.productDescription != null;
-  }
-
-  public void setProductDescriptionIsSet(boolean value) {
-    if (!value) {
-      this.productDescription = null;
-    }
-  }
-
-  public String getOwnerName() {
-    return this.ownerName;
-  }
-
-  public void setOwnerName(String ownerName) {
-    this.ownerName = ownerName;
-  }
-
-  public void unsetOwnerName() {
-    this.ownerName = null;
-  }
-
-  /** Returns true if field ownerName is set (has been assigned a value) and false otherwise */
-  public boolean isSetOwnerName() {
-    return this.ownerName != null;
-  }
-
-  public void setOwnerNameIsSet(boolean value) {
-    if (!value) {
-      this.ownerName = null;
-    }
-  }
-
-  /**
-   * 
-   * @see DataProductType
-   */
-  public DataProductType getDataProductType() {
-    return this.dataProductType;
-  }
-
-  /**
-   * 
-   * @see DataProductType
-   */
-  public void setDataProductType(DataProductType dataProductType) {
-    this.dataProductType = dataProductType;
-  }
-
-  public void unsetDataProductType() {
-    this.dataProductType = null;
-  }
-
-  /** Returns true if field dataProductType is set (has been assigned a value) and false otherwise */
-  public boolean isSetDataProductType() {
-    return this.dataProductType != null;
-  }
-
-  public void setDataProductTypeIsSet(boolean value) {
-    if (!value) {
-      this.dataProductType = null;
-    }
-  }
-
-  public int getProductSize() {
-    return this.productSize;
-  }
-
-  public void setProductSize(int productSize) {
-    this.productSize = productSize;
-    setProductSizeIsSet(true);
-  }
-
-  public void unsetProductSize() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID);
-  }
-
-  /** Returns true if field productSize is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductSize() {
-    return EncodingUtils.testBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID);
-  }
-
-  public void setProductSizeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID, value);
-  }
-
-  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 long getLastModifiedTime() {
-    return this.lastModifiedTime;
-  }
-
-  public void setLastModifiedTime(long lastModifiedTime) {
-    this.lastModifiedTime = lastModifiedTime;
-    setLastModifiedTimeIsSet(true);
-  }
-
-  public void unsetLastModifiedTime() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
-  }
-
-  /** Returns true if field lastModifiedTime is set (has been assigned a value) and false otherwise */
-  public boolean isSetLastModifiedTime() {
-    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
-  }
-
-  public void setLastModifiedTimeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID, value);
-  }
-
-  public int getProductMetadataSize() {
-    return (this.productMetadata == null) ? 0 : this.productMetadata.size();
-  }
-
-  public void putToProductMetadata(String key, String val) {
-    if (this.productMetadata == null) {
-      this.productMetadata = new HashMap<String,String>();
-    }
-    this.productMetadata.put(key, val);
-  }
-
-  public Map<String,String> getProductMetadata() {
-    return this.productMetadata;
-  }
-
-  public void setProductMetadata(Map<String,String> productMetadata) {
-    this.productMetadata = productMetadata;
-  }
-
-  public void unsetProductMetadata() {
-    this.productMetadata = null;
-  }
-
-  /** Returns true if field productMetadata is set (has been assigned a value) and false otherwise */
-  public boolean isSetProductMetadata() {
-    return this.productMetadata != null;
-  }
-
-  public void setProductMetadataIsSet(boolean value) {
-    if (!value) {
-      this.productMetadata = null;
-    }
-  }
-
-  public int getReplicaLocationsSize() {
-    return (this.replicaLocations == null) ? 0 : this.replicaLocations.size();
-  }
-
-  public java.util.Iterator<DataReplicaLocationModel> getReplicaLocationsIterator() {
-    return (this.replicaLocations == null) ? null : this.replicaLocations.iterator();
-  }
-
-  public void addToReplicaLocations(DataReplicaLocationModel elem) {
-    if (this.replicaLocations == null) {
-      this.replicaLocations = new ArrayList<DataReplicaLocationModel>();
-    }
-    this.replicaLocations.add(elem);
-  }
-
-  public List<DataReplicaLocationModel> getReplicaLocations() {
-    return this.replicaLocations;
-  }
-
-  public void setReplicaLocations(List<DataReplicaLocationModel> replicaLocations) {
-    this.replicaLocations = replicaLocations;
-  }
-
-  public void unsetReplicaLocations() {
-    this.replicaLocations = null;
-  }
-
-  /** Returns true if field replicaLocations is set (has been assigned a value) and false otherwise */
-  public boolean isSetReplicaLocations() {
-    return this.replicaLocations != null;
-  }
-
-  public void setReplicaLocationsIsSet(boolean value) {
-    if (!value) {
-      this.replicaLocations = null;
-    }
-  }
-
-  public int getChildProductsSize() {
-    return (this.childProducts == null) ? 0 : this.childProducts.size();
-  }
-
-  public java.util.Iterator<DataProductModel> getChildProductsIterator() {
-    return (this.childProducts == null) ? null : this.childProducts.iterator();
-  }
-
-  public void addToChildProducts(DataProductModel elem) {
-    if (this.childProducts == null) {
-      this.childProducts = new ArrayList<DataProductModel>();
-    }
-    this.childProducts.add(elem);
-  }
-
-  public List<DataProductModel> getChildProducts() {
-    return this.childProducts;
-  }
-
-  public void setChildProducts(List<DataProductModel> childProducts) {
-    this.childProducts = childProducts;
-  }
-
-  public void unsetChildProducts() {
-    this.childProducts = null;
-  }
-
-  /** Returns true if field childProducts is set (has been assigned a value) and false otherwise */
-  public boolean isSetChildProducts() {
-    return this.childProducts != null;
-  }
-
-  public void setChildProductsIsSet(boolean value) {
-    if (!value) {
-      this.childProducts = null;
-    }
-  }
-
-  public void setFieldValue(_Fields field, Object value) {
-    switch (field) {
-    case PRODUCT_URI:
-      if (value == null) {
-        unsetProductUri();
-      } else {
-        setProductUri((String)value);
-      }
-      break;
-
-    case GATEWAY_ID:
-      if (value == null) {
-        unsetGatewayId();
-      } else {
-        setGatewayId((String)value);
-      }
-      break;
-
-    case PARENT_PRODUCT_URI:
-      if (value == null) {
-        unsetParentProductUri();
-      } else {
-        setParentProductUri((String)value);
-      }
-      break;
-
-    case LOGICAL_PATH:
-      if (value == null) {
-        unsetLogicalPath();
-      } else {
-        setLogicalPath((String)value);
-      }
-      break;
-
-    case PRODUCT_NAME:
-      if (value == null) {
-        unsetProductName();
-      } else {
-        setProductName((String)value);
-      }
-      break;
-
-    case PRODUCT_DESCRIPTION:
-      if (value == null) {
-        unsetProductDescription();
-      } else {
-        setProductDescription((String)value);
-      }
-      break;
-
-    case OWNER_NAME:
-      if (value == null) {
-        unsetOwnerName();
-      } else {
-        setOwnerName((String)value);
-      }
-      break;
-
-    case DATA_PRODUCT_TYPE:
-      if (value == null) {
-        unsetDataProductType();
-      } else {
-        setDataProductType((DataProductType)value);
-      }
-      break;
-
-    case PRODUCT_SIZE:
-      if (value == null) {
-        unsetProductSize();
-      } else {
-        setProductSize((Integer)value);
-      }
-      break;
-
-    case CREATION_TIME:
-      if (value == null) {
-        unsetCreationTime();
-      } else {
-        setCreationTime((Long)value);
-      }
-      break;
-
-    case LAST_MODIFIED_TIME:
-      if (value == null) {
-        unsetLastModifiedTime();
-      } else {
-        setLastModifiedTime((Long)value);
-      }
-      break;
-
-    case PRODUCT_METADATA:
-      if (value == null) {
-        unsetProductMetadata();
-      } else {
-        setProductMetadata((Map<String,String>)value);
-      }
-      break;
-
-    case REPLICA_LOCATIONS:
-      if (value == null) {
-        unsetReplicaLocations();
-      } else {
-        setReplicaLocations((List<DataReplicaLocationModel>)value);
-      }
-      break;
-
-    case CHILD_PRODUCTS:
-      if (value == null) {
-        unsetChildProducts();
-      } else {
-        setChildProducts((List<DataProductModel>)value);
-      }
-      break;
-
-    }
-  }
-
-  public Object getFieldValue(_Fields field) {
-    switch (field) {
-    case PRODUCT_URI:
-      return getProductUri();
-
-    case GATEWAY_ID:
-      return getGatewayId();
-
-    case PARENT_PRODUCT_URI:
-      return getParentProductUri();
-
-    case LOGICAL_PATH:
-      return getLogicalPath();
-
-    case PRODUCT_NAME:
-      return getProductName();
-
-    case PRODUCT_DESCRIPTION:
-      return getProductDescription();
-
-    case OWNER_NAME:
-      return getOwnerName();
-
-    case DATA_PRODUCT_TYPE:
-      return getDataProductType();
-
-    case PRODUCT_SIZE:
-      return getProductSize();
-
-    case CREATION_TIME:
-      return getCreationTime();
-
-    case LAST_MODIFIED_TIME:
-      return getLastModifiedTime();
-
-    case PRODUCT_METADATA:
-      return getProductMetadata();
-
-    case REPLICA_LOCATIONS:
-      return getReplicaLocations();
-
-    case CHILD_PRODUCTS:
-      return getChildProducts();
-
-    }
-    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 PRODUCT_URI:
-      return isSetProductUri();
-    case GATEWAY_ID:
-      return isSetGatewayId();
-    case PARENT_PRODUCT_URI:
-      return isSetParentProductUri();
-    case LOGICAL_PATH:
-      return isSetLogicalPath();
-    case PRODUCT_NAME:
-      return isSetProductName();
-    case PRODUCT_DESCRIPTION:
-      return isSetProductDescription();
-    case OWNER_NAME:
-      return isSetOwnerName();
-    case DATA_PRODUCT_TYPE:
-      return isSetDataProductType();
-    case PRODUCT_SIZE:
-      return isSetProductSize();
-    case CREATION_TIME:
-      return isSetCreationTime();
-    case LAST_MODIFIED_TIME:
-      return isSetLastModifiedTime();
-    case PRODUCT_METADATA:
-      return isSetProductMetadata();
-    case REPLICA_LOCATIONS:
-      return isSetReplicaLocations();
-    case CHILD_PRODUCTS:
-      return isSetChildProducts();
-    }
-    throw new IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof DataProductModel)
-      return this.equals((DataProductModel)that);
-    return false;
-  }
-
-  public boolean equals(DataProductModel that) {
-    if (that == null)
-      return false;
-
-    boolean this_present_productUri = true && this.isSetProductUri();
-    boolean that_present_productUri = true && that.isSetProductUri();
-    if (this_present_productUri || that_present_productUri) {
-      if (!(this_present_productUri && that_present_productUri))
-        return false;
-      if (!this.productUri.equals(that.productUri))
-        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_parentProductUri = true && this.isSetParentProductUri();
-    boolean that_present_parentProductUri = true && that.isSetParentProductUri();
-    if (this_present_parentProductUri || that_present_parentProductUri) {
-      if (!(this_present_parentProductUri && that_present_parentProductUri))
-        return false;
-      if (!this.parentProductUri.equals(that.parentProductUri))
-        return false;
-    }
-
-    boolean this_present_logicalPath = true && this.isSetLogicalPath();
-    boolean that_present_logicalPath = true && that.isSetLogicalPath();
-    if (this_present_logicalPath || that_present_logicalPath) {
-      if (!(this_present_logicalPath && that_present_logicalPath))
-        return false;
-      if (!this.logicalPath.equals(that.logicalPath))
-        return false;
-    }
-
-    boolean this_present_productName = true && this.isSetProductName();
-    boolean that_present_productName = true && that.isSetProductName();
-    if (this_present_productName || that_present_productName) {
-      if (!(this_present_productName && that_present_productName))
-        return false;
-      if (!this.productName.equals(that.productName))
-        return false;
-    }
-
-    boolean this_present_productDescription = true && this.isSetProductDescription();
-    boolean that_present_productDescription = true && that.isSetProductDescription();
-    if (this_present_productDescription || that_present_productDescription) {
-      if (!(this_present_productDescription && that_present_productDescription))
-        return false;
-      if (!this.productDescription.equals(that.productDescription))
-        return false;
-    }
-
-    boolean this_present_ownerName = true && this.isSetOwnerName();
-    boolean that_present_ownerName = true && that.isSetOwnerName();
-    if (this_present_ownerName || that_present_ownerName) {
-      if (!(this_present_ownerName && that_present_ownerName))
-        return false;
-      if (!this.ownerName.equals(that.ownerName))
-        return false;
-    }
-
-    boolean this_present_dataProductType = true && this.isSetDataProductType();
-    boolean that_present_dataProductType = true && that.isSetDataProductType();
-    if (this_present_dataProductType || that_present_dataProductType) {
-      if (!(this_present_dataProductType && that_present_dataProductType))
-        return false;
-      if (!this.dataProductType.equals(that.dataProductType))
-        return false;
-    }
-
-    boolean this_present_productSize = true && this.isSetProductSize();
-    boolean that_present_productSize = true && that.isSetProductSize();
-    if (this_present_productSize || that_present_productSize) {
-      if (!(this_present_productSize && that_present_productSize))
-        return false;
-      if (this.productSize != that.productSize)
-        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;
-    }
-
-    boolean this_present_lastModifiedTime = true && this.isSetLastModifiedTime();
-    boolean that_present_lastModifiedTime = true && that.isSetLastModifiedTime();
-    if (this_present_lastModifiedTime || that_present_lastModifiedTime) {
-      if (!(this_present_lastModifiedTime && that_present_lastModifiedTime))
-        return false;
-      if (this.lastModifiedTime != that.lastModifiedTime)
-        return false;
-    }
-
-    boolean this_present_productMetadata = true && this.isSetProductMetadata();
-    boolean that_present_productMetadata = true && that.isSetProductMetadata();
-    if (this_present_productMetadata || that_present_productMetadata) {
-      if (!(this_present_productMetadata && that_present_productMetadata))
-        return false;
-      if (!this.productMetadata.equals(that.productMetadata))
-        return false;
-    }
-
-    boolean this_present_replicaLocations = true && this.isSetReplicaLocations();
-    boolean that_present_replicaLocations = true && that.isSetReplicaLocations();
-    if (this_present_replicaLocations || that_present_replicaLocations) {
-      if (!(this_present_replicaLocations && that_present_replicaLocations))
-        return false;
-      if (!this.replicaLocations.equals(that.replicaLocations))
-        return false;
-    }
-
-    boolean this_present_childProducts = true && this.isSetChildProducts();
-    boolean that_present_childProducts = true && that.isSetChildProducts();
-    if (this_present_childProducts || that_present_childProducts) {
-      if (!(this_present_childProducts && that_present_childProducts))
-        return false;
-      if (!this.childProducts.equals(that.childProducts))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_productUri = true && (isSetProductUri());
-    list.add(present_productUri);
-    if (present_productUri)
-      list.add(productUri);
-
-    boolean present_gatewayId = true && (isSetGatewayId());
-    list.add(present_gatewayId);
-    if (present_gatewayId)
-      list.add(gatewayId);
-
-    boolean present_parentProductUri = true && (isSetParentProductUri());
-    list.add(present_parentProductUri);
-    if (present_parentProductUri)
-      list.add(parentProductUri);
-
-    boolean present_logicalPath = true && (isSetLogicalPath());
-    list.add(present_logicalPath);
-    if (present_logicalPath)
-      list.add(logicalPath);
-
-    boolean present_productName = true && (isSetProductName());
-    list.add(present_productName);
-    if (present_productName)
-      list.add(productName);
-
-    boolean present_productDescription = true && (isSetProductDescription());
-    list.add(present_productDescription);
-    if (present_productDescription)
-      list.add(productDescription);
-
-    boolean present_ownerName = true && (isSetOwnerName());
-    list.add(present_ownerName);
-    if (present_ownerName)
-      list.add(ownerName);
-
-    boolean present_dataProductType = true && (isSetDataProductType());
-    list.add(present_dataProductType);
-    if (present_dataProductType)
-      list.add(dataProductType.getValue());
-
-    boolean present_productSize = true && (isSetProductSize());
-    list.add(present_productSize);
-    if (present_productSize)
-      list.add(productSize);
-
-    boolean present_creationTime = true && (isSetCreationTime());
-    list.add(present_creationTime);
-    if (present_creationTime)
-      list.add(creationTime);
-
-    boolean present_lastModifiedTime = true && (isSetLastModifiedTime());
-    list.add(present_lastModifiedTime);
-    if (present_lastModifiedTime)
-      list.add(lastModifiedTime);
-
-    boolean present_productMetadata = true && (isSetProductMetadata());
-    list.add(present_productMetadata);
-    if (present_productMetadata)
-      list.add(productMetadata);
-
-    boolean present_replicaLocations = true && (isSetReplicaLocations());
-    list.add(present_replicaLocations);
-    if (present_replicaLocations)
-      list.add(replicaLocations);
-
-    boolean present_childProducts = true && (isSetChildProducts());
-    list.add(present_childProducts);
-    if (present_childProducts)
-      list.add(childProducts);
-
-    return list.hashCode();
-  }
-
-  @Override
-  public int compareTo(DataProductModel other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = Boolean.valueOf(isSetProductUri()).compareTo(other.isSetProductUri());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductUri()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productUri, other.productUri);
-      if (lastComparison != 0) {
-        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(isSetParentProductUri()).compareTo(other.isSetParentProductUri());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetParentProductUri()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parentProductUri, other.parentProductUri);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetLogicalPath()).compareTo(other.isSetLogicalPath());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetLogicalPath()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.logicalPath, other.logicalPath);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetProductName()).compareTo(other.isSetProductName());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productName, other.productName);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetProductDescription()).compareTo(other.isSetProductDescription());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductDescription()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productDescription, other.productDescription);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetOwnerName()).compareTo(other.isSetOwnerName());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetOwnerName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ownerName, other.ownerName);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetDataProductType()).compareTo(other.isSetDataProductType());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetDataProductType()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataProductType, other.dataProductType);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetProductSize()).compareTo(other.isSetProductSize());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductSize()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productSize, other.productSize);
-      if (lastComparison != 0) {
-        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;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetLastModifiedTime()).compareTo(other.isSetLastModifiedTime());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetLastModifiedTime()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastModifiedTime, other.lastModifiedTime);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetProductMetadata()).compareTo(other.isSetProductMetadata());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProductMetadata()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productMetadata, other.productMetadata);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetReplicaLocations()).compareTo(other.isSetReplicaLocations());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReplicaLocations()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaLocations, other.replicaLocations);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetChildProducts()).compareTo(other.isSetChildProducts());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetChildProducts()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.childProducts, other.childProducts);
-      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("DataProductModel(");
-    boolean first = true;
-
-    if (isSetProductUri()) {
-      sb.append("productUri:");
-      if (this.productUri == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.productUri);
-      }
-      first = false;
-    }
-    if (isSetGatewayId()) {
-      if (!first) sb.append(", ");
-      sb.append("gatewayId:");
-      if (this.gatewayId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.gatewayId);
-      }
-      first = false;
-    }
-    if (isSetParentProductUri()) {
-      if (!first) sb.append(", ");
-      sb.append("parentProductUri:");
-      if (this.parentProductUri == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.parentProductUri);
-      }
-      first = false;
-    }
-    if (isSetLogicalPath()) {
-      if (!first) sb.append(", ");
-      sb.append("logicalPath:");
-      if (this.logicalPath == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.logicalPath);
-      }
-      first = false;
-    }
-    if (isSetProductName()) {
-      if (!first) sb.append(", ");
-      sb.append("productName:");
-      if (this.productName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.productName);
-      }
-      first = false;
-    }
-    if (isSetProductDescription()) {
-      if (!first) sb.append(", ");
-      sb.append("productDescription:");
-      if (this.productDescription == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.productDescription);
-      }
-      first = false;
-    }
-    if (isSetOwnerName()) {
-      if (!first) sb.append(", ");
-      sb.append("ownerName:");
-      if (this.ownerName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.ownerName);
-      }
-      first = false;
-    }
-    if (isSetDataProductType()) {
-      if (!first) sb.append(", ");
-      sb.append("dataProductType:");
-      if (this.dataProductType == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.dataProductType);
-      }
-      first = false;
-    }
-    if (isSetProductSize()) {
-      if (!first) sb.append(", ");
-      sb.append("productSize:");
-      sb.append(this.productSize);
-      first = false;
-    }
-    if (isSetCreationTime()) {
-      if (!first) sb.append(", ");
-      sb.append("creationTime:");
-      sb.append(this.creationTime);
-      first = false;
-    }
-    if (isSetLastModifiedTime()) {
-      if (!first) sb.append(", ");
-      sb.append("lastModifiedTime:");
-      sb.append(this.lastModifiedTime);
-      first = false;
-    }
-    if (isSetProductMetadata()) {
-      if (!first) sb.append(", ");
-      sb.append("productMetadata:");
-      if (this.productMetadata == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.productMetadata);
-      }
-      first = false;
-    }
-    if (isSetReplicaLocations()) {
-      if (!first) sb.append(", ");
-      sb.append("replicaLocations:");
-      if (this.replicaLocations == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.replicaLocations);
-      }
-      first = false;
-    }
-    if (isSetChildProducts()) {
-      if (!first) sb.append(", ");
-      sb.append("childProducts:");
-      if (this.childProducts == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.childProducts);
-      }
-      first = false;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    // 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 DataProductModelStandardSchemeFactory implements SchemeFactory {
-    public DataProductModelStandardScheme getScheme() {
-      return new DataProductModelStandardScheme();
-    }
-  }
-
-  private static class DataProductModelStandardScheme extends StandardScheme<DataProductModel> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, DataProductModel 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: // PRODUCT_URI
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.productUri = iprot.readString();
-              struct.setProductUriIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 2: // 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 3: // PARENT_PRODUCT_URI
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.parentProductUri = iprot.readString();
-              struct.setParentProductUriIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // LOGICAL_PATH
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.logicalPath = iprot.readString();
-              struct.setLogicalPathIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 5: // PRODUCT_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.productName = iprot.readString();
-              struct.setProductNameIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 6: // PRODUCT_DESCRIPTION
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.productDescription = iprot.readString();
-              struct.setProductDescriptionIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 7: // OWNER_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.ownerName = iprot.readString();
-              struct.setOwnerNameIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 8: // DATA_PRODUCT_TYPE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.dataProductType = org.apache.airavata.model.data.product.DataProductType.findByValue(iprot.readI32());
-              struct.setDataProductTypeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 9: // PRODUCT_SIZE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.productSize = iprot.readI32();
-              struct.setProductSizeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 10: // 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;
-          case 11: // LAST_MODIFIED_TIME
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.lastModifiedTime = iprot.readI64();
-              struct.setLastModifiedTimeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 12: // PRODUCT_METADATA
-            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
-              {
-                org.apache.thrift.protocol.TMap _map0 = iprot.readMapBegin();
-                struct.productMetadata = new HashMap<String,String>(2*_map0.size);
-                String _key1;
-                String _val2;
-                for (int _i3 = 0; _i3 < _map0.size; ++_i3)
-                {
-                  _key1 = iprot.readString();
-                  _val2 = iprot.readString();
-                  struct.productMetadata.put(_key1, _val2);
-                }
-                iprot.readMapEnd();
-              }
-              struct.setProductMetadataIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 13: // REPLICA_LOCATIONS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list4 = iprot.readListBegin();
-                struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list4.size);
-                DataReplicaLocationModel _elem5;
-                for (int _i6 = 0; _i6 < _list4.size; ++_i6)
-                {
-                  _elem5 = new DataReplicaLocationModel();
-                  _elem5.read(iprot);
-                  struct.replicaLocations.add(_elem5);
-                }
-                iprot.readListEnd();
-              }
-              struct.setReplicaLocationsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 14: // CHILD_PRODUCTS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list7 = iprot.readListBegin();
-                struct.childProducts = new ArrayList<DataProductModel>(_list7.size);
-                DataProductModel _elem8;
-                for (int _i9 = 0; _i9 < _list7.size; ++_i9)
-                {
-                  _elem8 = new DataProductModel();
-                  _elem8.read(iprot);
-                  struct.childProducts.add(_elem8);
-                }
-                iprot.readListEnd();
-              }
-              struct.setChildProductsIsSet(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, DataProductModel struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.productUri != null) {
-        if (struct.isSetProductUri()) {
-          oprot.writeFieldBegin(PRODUCT_URI_FIELD_DESC);
-          oprot.writeString(struct.productUri);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.gatewayId != null) {
-        if (struct.isSetGatewayId()) {
-          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
-          oprot.writeString(struct.gatewayId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.parentProductUri != null) {
-        if (struct.isSetParentProductUri()) {
-          oprot.writeFieldBegin(PARENT_PRODUCT_URI_FIELD_DESC);
-          oprot.writeString(struct.parentProductUri);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.logicalPath != null) {
-        if (struct.isSetLogicalPath()) {
-          oprot.writeFieldBegin(LOGICAL_PATH_FIELD_DESC);
-          oprot.writeString(struct.logicalPath);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.productName != null) {
-        if (struct.isSetProductName()) {
-          oprot.writeFieldBegin(PRODUCT_NAME_FIELD_DESC);
-          oprot.writeString(struct.productName);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.productDescription != null) {
-        if (struct.isSetProductDescription()) {
-          oprot.writeFieldBegin(PRODUCT_DESCRIPTION_FIELD_DESC);
-          oprot.writeString(struct.productDescription);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.ownerName != null) {
-        if (struct.isSetOwnerName()) {
-          oprot.writeFieldBegin(OWNER_NAME_FIELD_DESC);
-          oprot.writeString(struct.ownerName);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.dataProductType != null) {
-        if (struct.isSetDataProductType()) {
-          oprot.writeFieldBegin(DATA_PRODUCT_TYPE_FIELD_DESC);
-          oprot.writeI32(struct.dataProductType.getValue());
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.isSetProductSize()) {
-        oprot.writeFieldBegin(PRODUCT_SIZE_FIELD_DESC);
-        oprot.writeI32(struct.productSize);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetCreationTime()) {
-        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
-        oprot.writeI64(struct.creationTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetLastModifiedTime()) {
-        oprot.writeFieldBegin(LAST_MODIFIED_TIME_FIELD_DESC);
-        oprot.writeI64(struct.lastModifiedTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.productMetadata != null) {
-        if (struct.isSetProductMetadata()) {
-          oprot.writeFieldBegin(PRODUCT_METADATA_FIELD_DESC);
-          {
-            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.productMetadata.size()));
-            for (Map.Entry<String, String> _iter10 : struct.productMetadata.entrySet())
-            {
-              oprot.writeString(_iter10.getKey());
-              oprot.writeString(_iter10.getValue());
-            }
-            oprot.writeMapEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.replicaLocations != null) {
-        if (struct.isSetReplicaLocations()) {
-          oprot.writeFieldBegin(REPLICA_LOCATIONS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.replicaLocations.size()));
-            for (DataReplicaLocationModel _iter11 : struct.replicaLocations)
-            {
-              _iter11.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.childProducts != null) {
-        if (struct.isSetChildProducts()) {
-          oprot.writeFieldBegin(CHILD_PRODUCTS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.childProducts.size()));
-            for (DataProductModel _iter12 : struct.childProducts)
-            {
-              _iter12.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class DataProductModelTupleSchemeFactory implements SchemeFactory {
-    public DataProductModelTupleScheme getScheme() {
-      return new DataProductModelTupleScheme();
-    }
-  }
-
-  private static class DataProductModelTupleScheme extends TupleScheme<DataProductModel> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
-      if (struct.isSetProductUri()) {
-        optionals.set(0);
-      }
-      if (struct.isSetGatewayId()) {
-        optionals.set(1);
-      }
-      if (struct.isSetParentProductUri()) {
-        optionals.set(2);
-      }
-      if (struct.isSetLogicalPath()) {
-        optionals.set(3);
-      }
-      if (struct.isSetProductName()) {
-        optionals.set(4);
-      }
-      if (struct.isSetProductDescription()) {
-        optionals.set(5);
-      }
-      if (struct.isSetOwnerName()) {
-        optionals.set(6);
-      }
-      if (struct.isSetDataProductType()) {
-        optionals.set(7);
-      }
-      if (struct.isSetProductSize()) {
-        optionals.set(8);
-      }
-      if (struct.isSetCreationTime()) {
-        optionals.set(9);
-      }
-      if (struct.isSetLastModifiedTime()) {
-        optionals.set(10);
-      }
-      if (struct.isSetProductMetadata()) {
-        optionals.set(11);
-      }
-      if (struct.isSetReplicaLocations()) {
-        optionals.set(12);
-      }
-      if (struct.isSetChildProducts()) {
-        optionals.set(13);
-      }
-      oprot.writeBitSet(optionals, 14);
-      if (struct.isSetProductUri()) {
-        oprot.writeString(struct.productUri);
-      }
-      if (struct.isSetGatewayId()) {
-        oprot.writeString(struct.gatewayId);
-      }
-      if (struct.isSetParentProductUri()) {
-        oprot.writeString(struct.parentProductUri);
-      }
-      if (struct.isSetLogicalPath()) {
-        oprot.writeString(struct.logicalPath);
-      }
-      if (struct.isSetProductName()) {
-        oprot.writeString(struct.productName);
-      }
-      if (struct.isSetProductDescription()) {
-        oprot.writeString(struct.productDescription);
-      }
-      if (struct.isSetOwnerName()) {
-        oprot.writeString(struct.ownerName);
-      }
-      if (struct.isSetDataProductType()) {
-        oprot.writeI32(struct.dataProductType.getValue());
-      }
-      if (struct.isSetProductSize()) {
-        oprot.writeI32(struct.productSize);
-      }
-      if (struct.isSetCreationTime()) {
-        oprot.writeI64(struct.creationTime);
-      }
-      if (struct.isSetLastModifiedTime()) {
-        oprot.writeI64(struct.lastModifiedTime);
-      }
-      if (struct.isSetProductMetadata()) {
-        {
-          oprot.writeI32(struct.productMetadata.size());
-          for (Map.Entry<String, String> _iter13 : struct.productMetadata.entrySet())
-          {
-            oprot.writeString(_iter13.getKey());
-            oprot.writeString(_iter13.getValue());
-          }
-        }
-      }
-      if (struct.isSetReplicaLocations()) {
-        {
-          oprot.writeI32(struct.replicaLocations.size());
-          for (DataReplicaLocationModel _iter14 : struct.replicaLocations)
-          {
-            _iter14.write(oprot);
-          }
-        }
-      }
-      if (struct.isSetChildProducts()) {
-        {
-          oprot.writeI32(struct.childProducts.size());
-          for (DataProductModel _iter15 : struct.childProducts)
-          {
-            _iter15.write(oprot);
-          }
-        }
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(14);
-      if (incoming.get(0)) {
-        struct.productUri = iprot.readString();
-        struct.setProductUriIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.gatewayId = iprot.readString();
-        struct.setGatewayIdIsSet(true);
-      }
-      if (incoming.get(2)) {
-        struct.parentProductUri = iprot.readString();
-        struct.setParentProductUriIsSet(true);
-      }
-      if (incoming.get(3)) {
-        struct.logicalPath = iprot.readString();
-        struct.setLogicalPathIsSet(true);
-      }
-      if (incoming.get(4)) {
-        struct.productName = iprot.readString();
-        struct.setProductNameIsSet(true);
-      }
-      if (incoming.get(5)) {
-        struct.productDescription = iprot.readString();
-        struct.setProductDescriptionIsSet(true);
-      }
-      if (incoming.get(6)) {
-        struct.ownerName = iprot.readString();
-        struct.setOwnerNameIsSet(true);
-      }
-      if (incoming.get(7)) {
-        struct.dataProductType = org.apache.airavata.model.data.product.DataProductType.findByValue(iprot.readI32());
-        struct.setDataProductTypeIsSet(true);
-      }
-      if (incoming.get(8)) {
-        struct.productSize = iprot.readI32();
-        struct.setProductSizeIsSet(true);
-      }
-      if (incoming.get(9)) {
-        struct.creationTime = iprot.readI64();
-        struct.setCreationTimeIsSet(true);
-      }
-      if (incoming.get(10)) {
-        struct.lastModifiedTime = iprot.readI64();
-        struct.setLastModifiedTimeIsSet(true);
-      }
-      if (incoming.get(11)) {
-        {
-          org.apache.thrift.protocol.TMap _map16 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.productMetadata = new HashMap<String,String>(2*_map16.size);
-          String _key17;
-          String _val18;
-          for (int _i19 = 0; _i19 < _map16.size; ++_i19)
-          {
-            _key17 = iprot.readString();
-            _val18 = iprot.readString();
-            struct.productMetadata.put(_key17, _val18);
-          }
-        }
-        struct.setProductMetadataIsSet(true);
-      }
-      if (incoming.get(12)) {
-        {
-          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list20.size);
-          DataReplicaLocationModel _elem21;
-          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
-          {
-            _elem21 = new DataReplicaLocationModel();
-            _elem21.read(iprot);
-            struct.replicaLocations.add(_elem21);
-          }
-        }
-        struct.setReplicaLocationsIsSet(true);
-      }
-      if (incoming.get(13)) {
-        {
-          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.childProducts = new ArrayList<DataProductModel>(_list23.size);
-          DataProductModel _elem24;
-          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
-          {
-            _elem24 = new DataProductModel();
-            _elem24.read(iprot);
-            struct.childProducts.add(_elem24);
-          }
-        }
-        struct.setChildProductsIsSet(true);
-      }
-    }
-  }
-
-}
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductType.java
deleted file mode 100644
index 88fc186..0000000
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/product/DataProductType.java
+++ /dev/null
@@ -1,65 +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.data.product;
-
-
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
-public enum DataProductType implements org.apache.thrift.TEnum {
-  DIR(0),
-  FILE(1),
-  COLLECTION(2);
-
-  private final int value;
-
-  private DataProductType(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 DataProductType findByValue(int value) { 
-    switch (value) {
-      case 0:
-        return DIR;
-      case 1:
-        return FILE;
-      case 2:
-        return COLLECTION;
-      default:
-        return null;
-    }
-  }
-}


[35/55] [abbrv] airavata git commit: fixing child data products JPA issue

Posted by sh...@apache.org.
fixing child data products JPA issue


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

Branch: refs/heads/master
Commit: 18cd83c37845b8f66ace551eebebfa2fcad0b523
Parents: b2740e7
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 14:02:58 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 14:02:58 2016 -0400

----------------------------------------------------------------------
 .../api/server/handler/utils/DataCatInit.java   | 315 -------
 .../server/handler/utils/ReplicaCatInit.java    | 315 +++++++
 .../lib/Airavata/Model/Data/Replica/Types.php   | 879 +++++++++++++++++++
 .../airavata/model/data/replica/__init__.py     |   1 +
 .../airavata/model/data/replica/constants.py    |  11 +
 .../airavata/model/data/replica/ttypes.py       | 549 ++++++++++++
 .../main/resources/airavata-server.properties   |  14 +-
 .../test/resources/airavata-server.properties   |  14 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |  10 +-
 .../core/replica/catalog/model/DataProduct.java |   2 +-
 .../catalog/utils/ReplicaCatalogJPAUtils.java   |  26 +-
 .../utils/ThriftDataModelConversion.java        |   2 +-
 .../src/main/resources/META-INF/persistence.xml |   2 +-
 .../replica/catalog/ReplicaCatalogTest.java     |  16 +-
 .../replica/catalog/util/Initialize.java        |   8 +-
 15 files changed, 1805 insertions(+), 359 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
deleted file mode 100644
index b63d9c4..0000000
--- a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
+++ /dev/null
@@ -1,315 +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.handler.utils;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.registry.core.replica.catalog.utils.ReplicaCatalogConstants;
-import org.apache.derby.drda.NetworkServerControl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.URI;
-import java.sql.*;
-import java.util.StringTokenizer;
-
-public class DataCatInit {
-    private static final Logger logger = LoggerFactory.getLogger(DataCatInit.class);
-    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
-    public  String scriptName = "replicacatalog-derby.sql";
-    private NetworkServerControl server;
-    private static final String delimiter = ";";
-    private String jdbcUrl = null;
-    private String jdbcDriver = null;
-    private String jdbcUser = null;
-    private String jdbcPassword = null;
-
-    public DataCatInit(String scriptName) {
-        this.scriptName = scriptName;
-    }
-
-    public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) {
-        if (suffix.length() > buffer.length()) {
-            return false;
-        }
-        // this loop is done on purpose to avoid memory allocation performance
-        // problems on various JDKs
-        // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and
-        // implementation is ok though does allocation/copying
-        // StringBuffer.toString().endsWith() does massive memory
-        // allocation/copying on JDK 1.5
-        // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169
-        int endIndex = suffix.length() - 1;
-        int bufferIndex = buffer.length() - 1;
-        while (endIndex >= 0) {
-            if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) {
-                return false;
-            }
-            bufferIndex--;
-            endIndex--;
-        }
-        return true;
-    }
-
-    private static boolean isServerStarted(NetworkServerControl server, int ntries)
-    {
-        for (int i = 1; i <= ntries; i ++)
-        {
-            try {
-                Thread.sleep(500);
-                server.ping();
-                return true;
-            }
-            catch (Exception e) {
-                if (i == ntries)
-                    return false;
-            }
-        }
-        return false;
-    }
-
-    public void initializeDB() {
-        try{
-            jdbcDriver = ServerSettings.getSetting("datacatalog.jdbc.driver");
-            jdbcUrl = ServerSettings.getSetting("datacatalog.jdbc.url");
-            jdbcUser = ServerSettings.getSetting("datacatalog.jdbc.user");
-            jdbcPassword = ServerSettings.getSetting("datacatalog.jdbc.password");
-            jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
-        } catch (ApplicationSettingsException e) {
-            logger.error("Unable to read properties", e);
-        }
-
-        startDerbyInServerMode();
-        if(!isServerStarted(server, 20)){
-           throw new RuntimeException("Derby server could not started within five seconds...");
-        }
-        Connection conn = null;
-        try {
-            Class.forName(jdbcDriver).newInstance();
-            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
-            if (!isDatabaseStructureCreated(ReplicaCatalogConstants.CONFIGURATION, conn)) {
-                executeSQLScript(conn);
-                logger.info("New Database created for Data Catalog !!!");
-            } else {
-                logger.debug("Database already created for Data Catalog!");
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException("Database failure", e);
-        } finally {
-            try {
-                if (conn != null){
-                    if (!conn.getAutoCommit()) {
-                        conn.commit();
-                    }
-                    conn.close();
-                }
-            } catch (SQLException e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-    }
-
-    public static boolean isDatabaseStructureCreated(String tableName, Connection conn) {
-        try {
-            System.out.println("Running a query to test the database tables existence.");
-            // check whether the tables are already created with a query
-            Statement statement = null;
-            try {
-                statement = conn.createStatement();
-                ResultSet rs = statement.executeQuery("select * from " + tableName);
-                if (rs != null) {
-                    rs.close();
-                }
-            } finally {
-                try {
-                    if (statement != null) {
-                        statement.close();
-                    }
-                } catch (SQLException e) {
-                    return false;
-                }
-            }
-        } catch (SQLException e) {
-            return false;
-        }
-
-        return true;
-    }
-
-    private void executeSQLScript(Connection conn) throws Exception {
-        StringBuffer sql = new StringBuffer();
-        BufferedReader reader = null;
-        try{
-
-        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(scriptName);
-        reader = new BufferedReader(new InputStreamReader(inputStream));
-        String line;
-        while ((line = reader.readLine()) != null) {
-            line = line.trim();
-            if (line.startsWith("//")) {
-                continue;
-            }
-            if (line.startsWith("--")) {
-                continue;
-            }
-            StringTokenizer st = new StringTokenizer(line);
-            if (st.hasMoreTokens()) {
-                String token = st.nextToken();
-                if ("REM".equalsIgnoreCase(token)) {
-                    continue;
-                }
-            }
-            sql.append(" ").append(line);
-
-            // SQL defines "--" as a comment to EOL
-            // and in Oracle it may contain a hint
-            // so we cannot just remove it, instead we must end it
-            if (line.indexOf("--") >= 0) {
-                sql.append("\n");
-            }
-            if ((checkStringBufferEndsWith(sql, delimiter))) {
-                executeSQL(sql.substring(0, sql.length() - delimiter.length()), conn);
-                sql.replace(0, sql.length(), "");
-            }
-        }
-        // Catch any statements not followed by ;
-        if (sql.length() > 0) {
-            executeSQL(sql.toString(), conn);
-        }
-        }catch (IOException e){
-            logger.error("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
-            throw new Exception("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
-        }finally {
-            if (reader != null) {
-                reader.close();
-            }
-        }
-    }
-
-    private static void executeSQL(String sql, Connection conn) throws Exception {
-        // Check and ignore empty statements
-        if ("".equals(sql.trim())) {
-            return;
-        }
-
-        Statement statement = null;
-        try {
-            logger.debug("SQL : " + sql);
-
-            boolean ret;
-            int updateCount = 0, updateCountTotal = 0;
-            statement = conn.createStatement();
-            ret = statement.execute(sql);
-            updateCount = statement.getUpdateCount();
-            do {
-                if (!ret) {
-                    if (updateCount != -1) {
-                        updateCountTotal += updateCount;
-                    }
-                }
-                ret = statement.getMoreResults();
-                if (ret) {
-                    updateCount = statement.getUpdateCount();
-                }
-            } while (ret);
-
-            logger.debug(sql + " : " + updateCountTotal + " rows affected");
-
-            SQLWarning warning = conn.getWarnings();
-            while (warning != null) {
-                logger.warn(warning + " sql warning");
-                warning = warning.getNextWarning();
-            }
-            conn.clearWarnings();
-        } catch (SQLException e) {
-            if (e.getSQLState().equals("X0Y32")) {
-                // eliminating the table already exception for the derby
-                // database
-                logger.info("Table Already Exists", e);
-            } else {
-                throw new Exception("Error occurred while executing : " + sql, e);
-            }
-        } finally {
-            if (statement != null) {
-                try {
-                    statement.close();
-                } catch (SQLException e) {
-                    logger.error("Error occurred while closing result set.", e);
-                }
-            }
-        }
-    }
-
-    private void startDerbyInServerMode() {
-        try {
-            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
-            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
-                    20000,
-                    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 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;
-        }
-    }
-
-    private void startDerbyInEmbeddedMode(){
-        try {
-            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
-            DriverManager.getConnection("jdbc:derby:memory:unit-testing-jpa;create=true").close();
-        } catch (ClassNotFoundException e) {
-            logger.error(e.getMessage(), e);
-        } catch (SQLException e) {
-            logger.error(e.getMessage(), e);
-        }
-    }
-
-    public void stopDerbyServer() {
-        try {
-            server.shutdown();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/ReplicaCatInit.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/ReplicaCatInit.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/ReplicaCatInit.java
new file mode 100644
index 0000000..977454a
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/ReplicaCatInit.java
@@ -0,0 +1,315 @@
+/*
+ *
+ * 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.handler.utils;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.core.replica.catalog.utils.ReplicaCatalogConstants;
+import org.apache.derby.drda.NetworkServerControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.URI;
+import java.sql.*;
+import java.util.StringTokenizer;
+
+public class ReplicaCatInit {
+    private static final Logger logger = LoggerFactory.getLogger(ReplicaCatInit.class);
+    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
+    public  String scriptName = "replicacatalog-derby.sql";
+    private NetworkServerControl server;
+    private static final String delimiter = ";";
+    private String jdbcUrl = null;
+    private String jdbcDriver = null;
+    private String jdbcUser = null;
+    private String jdbcPassword = null;
+
+    public ReplicaCatInit(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) {
+        if (suffix.length() > buffer.length()) {
+            return false;
+        }
+        // this loop is done on purpose to avoid memory allocation performance
+        // problems on various JDKs
+        // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and
+        // implementation is ok though does allocation/copying
+        // StringBuffer.toString().endsWith() does massive memory
+        // allocation/copying on JDK 1.5
+        // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169
+        int endIndex = suffix.length() - 1;
+        int bufferIndex = buffer.length() - 1;
+        while (endIndex >= 0) {
+            if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) {
+                return false;
+            }
+            bufferIndex--;
+            endIndex--;
+        }
+        return true;
+    }
+
+    private static boolean isServerStarted(NetworkServerControl server, int ntries)
+    {
+        for (int i = 1; i <= ntries; i ++)
+        {
+            try {
+                Thread.sleep(500);
+                server.ping();
+                return true;
+            }
+            catch (Exception e) {
+                if (i == ntries)
+                    return false;
+            }
+        }
+        return false;
+    }
+
+    public void initializeDB() {
+        try{
+            jdbcDriver = ServerSettings.getSetting("replicacatalog.jdbc.driver");
+            jdbcUrl = ServerSettings.getSetting("replicacatalog.jdbc.url");
+            jdbcUser = ServerSettings.getSetting("replicacatalog.jdbc.user");
+            jdbcPassword = ServerSettings.getSetting("replicacatalog.jdbc.password");
+            jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read properties", e);
+        }
+
+        startDerbyInServerMode();
+        if(!isServerStarted(server, 20)){
+           throw new RuntimeException("Derby server could not started within five seconds...");
+        }
+        Connection conn = null;
+        try {
+            Class.forName(jdbcDriver).newInstance();
+            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
+            if (!isDatabaseStructureCreated(ReplicaCatalogConstants.CONFIGURATION, conn)) {
+                executeSQLScript(conn);
+                logger.info("New Database created for Data Catalog !!!");
+            } else {
+                logger.debug("Database already created for Data Catalog!");
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RuntimeException("Database failure", e);
+        } finally {
+            try {
+                if (conn != null){
+                    if (!conn.getAutoCommit()) {
+                        conn.commit();
+                    }
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    public static boolean isDatabaseStructureCreated(String tableName, Connection conn) {
+        try {
+            System.out.println("Running a query to test the database tables existence.");
+            // check whether the tables are already created with a query
+            Statement statement = null;
+            try {
+                statement = conn.createStatement();
+                ResultSet rs = statement.executeQuery("select * from " + tableName);
+                if (rs != null) {
+                    rs.close();
+                }
+            } finally {
+                try {
+                    if (statement != null) {
+                        statement.close();
+                    }
+                } catch (SQLException e) {
+                    return false;
+                }
+            }
+        } catch (SQLException e) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private void executeSQLScript(Connection conn) throws Exception {
+        StringBuffer sql = new StringBuffer();
+        BufferedReader reader = null;
+        try{
+
+        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(scriptName);
+        reader = new BufferedReader(new InputStreamReader(inputStream));
+        String line;
+        while ((line = reader.readLine()) != null) {
+            line = line.trim();
+            if (line.startsWith("//")) {
+                continue;
+            }
+            if (line.startsWith("--")) {
+                continue;
+            }
+            StringTokenizer st = new StringTokenizer(line);
+            if (st.hasMoreTokens()) {
+                String token = st.nextToken();
+                if ("REM".equalsIgnoreCase(token)) {
+                    continue;
+                }
+            }
+            sql.append(" ").append(line);
+
+            // SQL defines "--" as a comment to EOL
+            // and in Oracle it may contain a hint
+            // so we cannot just remove it, instead we must end it
+            if (line.indexOf("--") >= 0) {
+                sql.append("\n");
+            }
+            if ((checkStringBufferEndsWith(sql, delimiter))) {
+                executeSQL(sql.substring(0, sql.length() - delimiter.length()), conn);
+                sql.replace(0, sql.length(), "");
+            }
+        }
+        // Catch any statements not followed by ;
+        if (sql.length() > 0) {
+            executeSQL(sql.toString(), conn);
+        }
+        }catch (IOException e){
+            logger.error("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
+            throw new Exception("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
+        }finally {
+            if (reader != null) {
+                reader.close();
+            }
+        }
+    }
+
+    private static void executeSQL(String sql, Connection conn) throws Exception {
+        // Check and ignore empty statements
+        if ("".equals(sql.trim())) {
+            return;
+        }
+
+        Statement statement = null;
+        try {
+            logger.debug("SQL : " + sql);
+
+            boolean ret;
+            int updateCount = 0, updateCountTotal = 0;
+            statement = conn.createStatement();
+            ret = statement.execute(sql);
+            updateCount = statement.getUpdateCount();
+            do {
+                if (!ret) {
+                    if (updateCount != -1) {
+                        updateCountTotal += updateCount;
+                    }
+                }
+                ret = statement.getMoreResults();
+                if (ret) {
+                    updateCount = statement.getUpdateCount();
+                }
+            } while (ret);
+
+            logger.debug(sql + " : " + updateCountTotal + " rows affected");
+
+            SQLWarning warning = conn.getWarnings();
+            while (warning != null) {
+                logger.warn(warning + " sql warning");
+                warning = warning.getNextWarning();
+            }
+            conn.clearWarnings();
+        } catch (SQLException e) {
+            if (e.getSQLState().equals("X0Y32")) {
+                // eliminating the table already exception for the derby
+                // database
+                logger.info("Table Already Exists", e);
+            } else {
+                throw new Exception("Error occurred while executing : " + sql, e);
+            }
+        } finally {
+            if (statement != null) {
+                try {
+                    statement.close();
+                } catch (SQLException e) {
+                    logger.error("Error occurred while closing result set.", e);
+                }
+            }
+        }
+    }
+
+    private void startDerbyInServerMode() {
+        try {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+                    20000,
+                    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 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;
+        }
+    }
+
+    private void startDerbyInEmbeddedMode(){
+        try {
+            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+            DriverManager.getConnection("jdbc:derby:memory:unit-testing-jpa;create=true").close();
+        } catch (ClassNotFoundException e) {
+            logger.error(e.getMessage(), e);
+        } catch (SQLException e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+
+    public void stopDerbyServer() {
+        try {
+            server.shutdown();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
new file mode 100644
index 0000000..a2970ee
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
@@ -0,0 +1,879 @@
+<?php
+namespace Airavata\Model\Data\Replica;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class ReplicaLocationCategory {
+  const GATEWAY_DATA_STORE = 0;
+  const COMPUTE_RESOURCE = 1;
+  const LONG_TERM_STORAGE_RESOURCE = 2;
+  const OTHER = 3;
+  static public $__names = array(
+    0 => 'GATEWAY_DATA_STORE',
+    1 => 'COMPUTE_RESOURCE',
+    2 => 'LONG_TERM_STORAGE_RESOURCE',
+    3 => 'OTHER',
+  );
+}
+
+final class ReplicaPersistentType {
+  const TRANSIENT = 0;
+  const PERSISTENT = 1;
+  static public $__names = array(
+    0 => 'TRANSIENT',
+    1 => 'PERSISTENT',
+  );
+}
+
+final class DataProductType {
+  const DIR = 0;
+  const FILE = 1;
+  const COLLECTION = 2;
+  static public $__names = array(
+    0 => 'DIR',
+    1 => 'FILE',
+    2 => 'COLLECTION',
+  );
+}
+
+class DataProductModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $productUri = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $parentProductUri = null;
+  /**
+   * @var string
+   */
+  public $logicalPath = null;
+  /**
+   * @var string
+   */
+  public $productName = null;
+  /**
+   * @var string
+   */
+  public $productDescription = null;
+  /**
+   * @var string
+   */
+  public $ownerName = null;
+  /**
+   * @var int
+   */
+  public $dataProductType = null;
+  /**
+   * @var int
+   */
+  public $productSize = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedTime = null;
+  /**
+   * @var array
+   */
+  public $productMetadata = null;
+  /**
+   * @var \Airavata\Model\Data\Replica\DataReplicaLocationModel[]
+   */
+  public $replicaLocations = null;
+  /**
+   * @var \Airavata\Model\Data\Replica\DataProductModel[]
+   */
+  public $childProducts = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'productUri',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'parentProductUri',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'logicalPath',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'productName',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'productDescription',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'ownerName',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'dataProductType',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'productSize',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        11 => array(
+          'var' => 'lastModifiedTime',
+          'type' => TType::I64,
+          ),
+        12 => array(
+          'var' => 'productMetadata',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        13 => array(
+          'var' => 'replicaLocations',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Data\Replica\DataReplicaLocationModel',
+            ),
+          ),
+        14 => array(
+          'var' => 'childProducts',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Data\Replica\DataProductModel',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['productUri'])) {
+        $this->productUri = $vals['productUri'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['parentProductUri'])) {
+        $this->parentProductUri = $vals['parentProductUri'];
+      }
+      if (isset($vals['logicalPath'])) {
+        $this->logicalPath = $vals['logicalPath'];
+      }
+      if (isset($vals['productName'])) {
+        $this->productName = $vals['productName'];
+      }
+      if (isset($vals['productDescription'])) {
+        $this->productDescription = $vals['productDescription'];
+      }
+      if (isset($vals['ownerName'])) {
+        $this->ownerName = $vals['ownerName'];
+      }
+      if (isset($vals['dataProductType'])) {
+        $this->dataProductType = $vals['dataProductType'];
+      }
+      if (isset($vals['productSize'])) {
+        $this->productSize = $vals['productSize'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['lastModifiedTime'])) {
+        $this->lastModifiedTime = $vals['lastModifiedTime'];
+      }
+      if (isset($vals['productMetadata'])) {
+        $this->productMetadata = $vals['productMetadata'];
+      }
+      if (isset($vals['replicaLocations'])) {
+        $this->replicaLocations = $vals['replicaLocations'];
+      }
+      if (isset($vals['childProducts'])) {
+        $this->childProducts = $vals['childProducts'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataProductModel';
+  }
+
+  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->productUri);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->parentProductUri);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->logicalPath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->productName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->productDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->ownerName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->dataProductType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->productSize);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::MAP) {
+            $this->productMetadata = array();
+            $_size0 = 0;
+            $_ktype1 = 0;
+            $_vtype2 = 0;
+            $xfer += $input->readMapBegin($_ktype1, $_vtype2, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $key5 = '';
+              $val6 = '';
+              $xfer += $input->readString($key5);
+              $xfer += $input->readString($val6);
+              $this->productMetadata[$key5] = $val6;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::LST) {
+            $this->replicaLocations = array();
+            $_size7 = 0;
+            $_etype10 = 0;
+            $xfer += $input->readListBegin($_etype10, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
+            {
+              $elem12 = null;
+              $elem12 = new \Airavata\Model\Data\Replica\DataReplicaLocationModel();
+              $xfer += $elem12->read($input);
+              $this->replicaLocations []= $elem12;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::LST) {
+            $this->childProducts = array();
+            $_size13 = 0;
+            $_etype16 = 0;
+            $xfer += $input->readListBegin($_etype16, $_size13);
+            for ($_i17 = 0; $_i17 < $_size13; ++$_i17)
+            {
+              $elem18 = null;
+              $elem18 = new \Airavata\Model\Data\Replica\DataProductModel();
+              $xfer += $elem18->read($input);
+              $this->childProducts []= $elem18;
+            }
+            $xfer += $input->readListEnd();
+          } 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('DataProductModel');
+    if ($this->productUri !== null) {
+      $xfer += $output->writeFieldBegin('productUri', TType::STRING, 1);
+      $xfer += $output->writeString($this->productUri);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->parentProductUri !== null) {
+      $xfer += $output->writeFieldBegin('parentProductUri', TType::STRING, 3);
+      $xfer += $output->writeString($this->parentProductUri);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->logicalPath !== null) {
+      $xfer += $output->writeFieldBegin('logicalPath', TType::STRING, 4);
+      $xfer += $output->writeString($this->logicalPath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->productName !== null) {
+      $xfer += $output->writeFieldBegin('productName', TType::STRING, 5);
+      $xfer += $output->writeString($this->productName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->productDescription !== null) {
+      $xfer += $output->writeFieldBegin('productDescription', TType::STRING, 6);
+      $xfer += $output->writeString($this->productDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerName !== null) {
+      $xfer += $output->writeFieldBegin('ownerName', TType::STRING, 7);
+      $xfer += $output->writeString($this->ownerName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataProductType !== null) {
+      $xfer += $output->writeFieldBegin('dataProductType', TType::I32, 8);
+      $xfer += $output->writeI32($this->dataProductType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->productSize !== null) {
+      $xfer += $output->writeFieldBegin('productSize', TType::I32, 9);
+      $xfer += $output->writeI32($this->productSize);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 10);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedTime !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 11);
+      $xfer += $output->writeI64($this->lastModifiedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->productMetadata !== null) {
+      if (!is_array($this->productMetadata)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('productMetadata', TType::MAP, 12);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->productMetadata));
+        {
+          foreach ($this->productMetadata as $kiter19 => $viter20)
+          {
+            $xfer += $output->writeString($kiter19);
+            $xfer += $output->writeString($viter20);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaLocations !== null) {
+      if (!is_array($this->replicaLocations)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('replicaLocations', TType::LST, 13);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->replicaLocations));
+        {
+          foreach ($this->replicaLocations as $iter21)
+          {
+            $xfer += $iter21->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->childProducts !== null) {
+      if (!is_array($this->childProducts)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('childProducts', TType::LST, 14);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->childProducts));
+        {
+          foreach ($this->childProducts as $iter22)
+          {
+            $xfer += $iter22->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DataReplicaLocationModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $replicaId = null;
+  /**
+   * @var string
+   */
+  public $productUri = null;
+  /**
+   * @var string
+   */
+  public $replicaName = null;
+  /**
+   * @var string
+   */
+  public $replicaDescription = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedTime = null;
+  /**
+   * @var int
+   */
+  public $validUntilTime = null;
+  /**
+   * @var int
+   */
+  public $replicaLocationCategory = null;
+  /**
+   * @var int
+   */
+  public $replicaPersistentType = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
+  /**
+   * @var string
+   */
+  public $filePath = null;
+  /**
+   * @var array
+   */
+  public $replicaMetadata = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'replicaId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'productUri',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'replicaName',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'replicaDescription',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        6 => array(
+          'var' => 'lastModifiedTime',
+          'type' => TType::I64,
+          ),
+        7 => array(
+          'var' => 'validUntilTime',
+          'type' => TType::I64,
+          ),
+        8 => array(
+          'var' => 'replicaLocationCategory',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'replicaPersistentType',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
+        11 => array(
+          'var' => 'filePath',
+          'type' => TType::STRING,
+          ),
+        12 => array(
+          'var' => 'replicaMetadata',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['replicaId'])) {
+        $this->replicaId = $vals['replicaId'];
+      }
+      if (isset($vals['productUri'])) {
+        $this->productUri = $vals['productUri'];
+      }
+      if (isset($vals['replicaName'])) {
+        $this->replicaName = $vals['replicaName'];
+      }
+      if (isset($vals['replicaDescription'])) {
+        $this->replicaDescription = $vals['replicaDescription'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['lastModifiedTime'])) {
+        $this->lastModifiedTime = $vals['lastModifiedTime'];
+      }
+      if (isset($vals['validUntilTime'])) {
+        $this->validUntilTime = $vals['validUntilTime'];
+      }
+      if (isset($vals['replicaLocationCategory'])) {
+        $this->replicaLocationCategory = $vals['replicaLocationCategory'];
+      }
+      if (isset($vals['replicaPersistentType'])) {
+        $this->replicaPersistentType = $vals['replicaPersistentType'];
+      }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
+      if (isset($vals['filePath'])) {
+        $this->filePath = $vals['filePath'];
+      }
+      if (isset($vals['replicaMetadata'])) {
+        $this->replicaMetadata = $vals['replicaMetadata'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataReplicaLocationModel';
+  }
+
+  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->replicaId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->productUri);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->replicaName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->replicaDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->validUntilTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->replicaLocationCategory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->replicaPersistentType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->filePath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::MAP) {
+            $this->replicaMetadata = array();
+            $_size23 = 0;
+            $_ktype24 = 0;
+            $_vtype25 = 0;
+            $xfer += $input->readMapBegin($_ktype24, $_vtype25, $_size23);
+            for ($_i27 = 0; $_i27 < $_size23; ++$_i27)
+            {
+              $key28 = '';
+              $val29 = '';
+              $xfer += $input->readString($key28);
+              $xfer += $input->readString($val29);
+              $this->replicaMetadata[$key28] = $val29;
+            }
+            $xfer += $input->readMapEnd();
+          } 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('DataReplicaLocationModel');
+    if ($this->replicaId !== null) {
+      $xfer += $output->writeFieldBegin('replicaId', TType::STRING, 1);
+      $xfer += $output->writeString($this->replicaId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->productUri !== null) {
+      $xfer += $output->writeFieldBegin('productUri', TType::STRING, 2);
+      $xfer += $output->writeString($this->productUri);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaName !== null) {
+      $xfer += $output->writeFieldBegin('replicaName', TType::STRING, 3);
+      $xfer += $output->writeString($this->replicaName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaDescription !== null) {
+      $xfer += $output->writeFieldBegin('replicaDescription', TType::STRING, 4);
+      $xfer += $output->writeString($this->replicaDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 5);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedTime !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 6);
+      $xfer += $output->writeI64($this->lastModifiedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->validUntilTime !== null) {
+      $xfer += $output->writeFieldBegin('validUntilTime', TType::I64, 7);
+      $xfer += $output->writeI64($this->validUntilTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaLocationCategory !== null) {
+      $xfer += $output->writeFieldBegin('replicaLocationCategory', TType::I32, 8);
+      $xfer += $output->writeI32($this->replicaLocationCategory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaPersistentType !== null) {
+      $xfer += $output->writeFieldBegin('replicaPersistentType', TType::I32, 9);
+      $xfer += $output->writeI32($this->replicaPersistentType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 10);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->filePath !== null) {
+      $xfer += $output->writeFieldBegin('filePath', TType::STRING, 11);
+      $xfer += $output->writeString($this->filePath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaMetadata !== null) {
+      if (!is_array($this->replicaMetadata)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('replicaMetadata', TType::MAP, 12);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->replicaMetadata));
+        {
+          foreach ($this->replicaMetadata as $kiter30 => $viter31)
+          {
+            $xfer += $output->writeString($kiter30);
+            $xfer += $output->writeString($viter31);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/__init__.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/constants.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/constants.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
new file mode 100644
index 0000000..271b9c0
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
@@ -0,0 +1,549 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ReplicaLocationCategory:
+  GATEWAY_DATA_STORE = 0
+  COMPUTE_RESOURCE = 1
+  LONG_TERM_STORAGE_RESOURCE = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "GATEWAY_DATA_STORE",
+    1: "COMPUTE_RESOURCE",
+    2: "LONG_TERM_STORAGE_RESOURCE",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "GATEWAY_DATA_STORE": 0,
+    "COMPUTE_RESOURCE": 1,
+    "LONG_TERM_STORAGE_RESOURCE": 2,
+    "OTHER": 3,
+  }
+
+class ReplicaPersistentType:
+  TRANSIENT = 0
+  PERSISTENT = 1
+
+  _VALUES_TO_NAMES = {
+    0: "TRANSIENT",
+    1: "PERSISTENT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "TRANSIENT": 0,
+    "PERSISTENT": 1,
+  }
+
+class DataProductType:
+  DIR = 0
+  FILE = 1
+  COLLECTION = 2
+
+  _VALUES_TO_NAMES = {
+    0: "DIR",
+    1: "FILE",
+    2: "COLLECTION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DIR": 0,
+    "FILE": 1,
+    "COLLECTION": 2,
+  }
+
+
+class DataProductModel:
+  """
+  Attributes:
+   - productUri
+   - gatewayId
+   - parentProductUri
+   - logicalPath
+   - productName
+   - productDescription
+   - ownerName
+   - dataProductType
+   - productSize
+   - creationTime
+   - lastModifiedTime
+   - productMetadata
+   - replicaLocations
+   - childProducts
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'productUri', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'parentProductUri', None, None, ), # 3
+    (4, TType.STRING, 'logicalPath', None, None, ), # 4
+    (5, TType.STRING, 'productName', None, None, ), # 5
+    (6, TType.STRING, 'productDescription', None, None, ), # 6
+    (7, TType.STRING, 'ownerName', None, None, ), # 7
+    (8, TType.I32, 'dataProductType', None, None, ), # 8
+    (9, TType.I32, 'productSize', None, None, ), # 9
+    (10, TType.I64, 'creationTime', None, None, ), # 10
+    (11, TType.I64, 'lastModifiedTime', None, None, ), # 11
+    (12, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+    (13, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 13
+    (14, TType.LIST, 'childProducts', (TType.STRUCT,(DataProductModel, DataProductModel.thrift_spec)), None, ), # 14
+  )
+
+  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, logicalPath=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None, childProducts=None,):
+    self.productUri = productUri
+    self.gatewayId = gatewayId
+    self.parentProductUri = parentProductUri
+    self.logicalPath = logicalPath
+    self.productName = productName
+    self.productDescription = productDescription
+    self.ownerName = ownerName
+    self.dataProductType = dataProductType
+    self.productSize = productSize
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.productMetadata = productMetadata
+    self.replicaLocations = replicaLocations
+    self.childProducts = childProducts
+
+  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.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentProductUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.logicalPath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.productName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.productDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.ownerName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.dataProductType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.productSize = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.productMetadata = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString()
+            _val6 = iprot.readString()
+            self.productMetadata[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.replicaLocations = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = DataReplicaLocationModel()
+            _elem12.read(iprot)
+            self.replicaLocations.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.childProducts = []
+          (_etype16, _size13) = iprot.readListBegin()
+          for _i17 in xrange(_size13):
+            _elem18 = DataProductModel()
+            _elem18.read(iprot)
+            self.childProducts.append(_elem18)
+          iprot.readListEnd()
+        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('DataProductModel')
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 1)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.parentProductUri is not None:
+      oprot.writeFieldBegin('parentProductUri', TType.STRING, 3)
+      oprot.writeString(self.parentProductUri)
+      oprot.writeFieldEnd()
+    if self.logicalPath is not None:
+      oprot.writeFieldBegin('logicalPath', TType.STRING, 4)
+      oprot.writeString(self.logicalPath)
+      oprot.writeFieldEnd()
+    if self.productName is not None:
+      oprot.writeFieldBegin('productName', TType.STRING, 5)
+      oprot.writeString(self.productName)
+      oprot.writeFieldEnd()
+    if self.productDescription is not None:
+      oprot.writeFieldBegin('productDescription', TType.STRING, 6)
+      oprot.writeString(self.productDescription)
+      oprot.writeFieldEnd()
+    if self.ownerName is not None:
+      oprot.writeFieldBegin('ownerName', TType.STRING, 7)
+      oprot.writeString(self.ownerName)
+      oprot.writeFieldEnd()
+    if self.dataProductType is not None:
+      oprot.writeFieldBegin('dataProductType', TType.I32, 8)
+      oprot.writeI32(self.dataProductType)
+      oprot.writeFieldEnd()
+    if self.productSize is not None:
+      oprot.writeFieldBegin('productSize', TType.I32, 9)
+      oprot.writeI32(self.productSize)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 10)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 11)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.productMetadata is not None:
+      oprot.writeFieldBegin('productMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.productMetadata))
+      for kiter19,viter20 in self.productMetadata.items():
+        oprot.writeString(kiter19)
+        oprot.writeString(viter20)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.replicaLocations is not None:
+      oprot.writeFieldBegin('replicaLocations', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
+      for iter21 in self.replicaLocations:
+        iter21.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.childProducts is not None:
+      oprot.writeFieldBegin('childProducts', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.childProducts))
+      for iter22 in self.childProducts:
+        iter22.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.parentProductUri)
+    value = (value * 31) ^ hash(self.logicalPath)
+    value = (value * 31) ^ hash(self.productName)
+    value = (value * 31) ^ hash(self.productDescription)
+    value = (value * 31) ^ hash(self.ownerName)
+    value = (value * 31) ^ hash(self.dataProductType)
+    value = (value * 31) ^ hash(self.productSize)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.productMetadata)
+    value = (value * 31) ^ hash(self.replicaLocations)
+    value = (value * 31) ^ hash(self.childProducts)
+    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 DataReplicaLocationModel:
+  """
+  Attributes:
+   - replicaId
+   - productUri
+   - replicaName
+   - replicaDescription
+   - creationTime
+   - lastModifiedTime
+   - validUntilTime
+   - replicaLocationCategory
+   - replicaPersistentType
+   - storageResourceId
+   - filePath
+   - replicaMetadata
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'replicaId', None, None, ), # 1
+    (2, TType.STRING, 'productUri', None, None, ), # 2
+    (3, TType.STRING, 'replicaName', None, None, ), # 3
+    (4, TType.STRING, 'replicaDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.I64, 'lastModifiedTime', None, None, ), # 6
+    (7, TType.I64, 'validUntilTime', None, None, ), # 7
+    (8, TType.I32, 'replicaLocationCategory', None, None, ), # 8
+    (9, TType.I32, 'replicaPersistentType', None, None, ), # 9
+    (10, TType.STRING, 'storageResourceId', None, None, ), # 10
+    (11, TType.STRING, 'filePath', None, None, ), # 11
+    (12, TType.MAP, 'replicaMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+  )
+
+  def __init__(self, replicaId=None, productUri=None, replicaName=None, replicaDescription=None, creationTime=None, lastModifiedTime=None, validUntilTime=None, replicaLocationCategory=None, replicaPersistentType=None, storageResourceId=None, filePath=None, replicaMetadata=None,):
+    self.replicaId = replicaId
+    self.productUri = productUri
+    self.replicaName = replicaName
+    self.replicaDescription = replicaDescription
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.validUntilTime = validUntilTime
+    self.replicaLocationCategory = replicaLocationCategory
+    self.replicaPersistentType = replicaPersistentType
+    self.storageResourceId = storageResourceId
+    self.filePath = filePath
+    self.replicaMetadata = replicaMetadata
+
+  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.replicaId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.replicaName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.replicaDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.validUntilTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.replicaLocationCategory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.replicaPersistentType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.filePath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.replicaMetadata = {}
+          (_ktype24, _vtype25, _size23 ) = iprot.readMapBegin()
+          for _i27 in xrange(_size23):
+            _key28 = iprot.readString()
+            _val29 = iprot.readString()
+            self.replicaMetadata[_key28] = _val29
+          iprot.readMapEnd()
+        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('DataReplicaLocationModel')
+    if self.replicaId is not None:
+      oprot.writeFieldBegin('replicaId', TType.STRING, 1)
+      oprot.writeString(self.replicaId)
+      oprot.writeFieldEnd()
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 2)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.replicaName is not None:
+      oprot.writeFieldBegin('replicaName', TType.STRING, 3)
+      oprot.writeString(self.replicaName)
+      oprot.writeFieldEnd()
+    if self.replicaDescription is not None:
+      oprot.writeFieldBegin('replicaDescription', TType.STRING, 4)
+      oprot.writeString(self.replicaDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 6)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.validUntilTime is not None:
+      oprot.writeFieldBegin('validUntilTime', TType.I64, 7)
+      oprot.writeI64(self.validUntilTime)
+      oprot.writeFieldEnd()
+    if self.replicaLocationCategory is not None:
+      oprot.writeFieldBegin('replicaLocationCategory', TType.I32, 8)
+      oprot.writeI32(self.replicaLocationCategory)
+      oprot.writeFieldEnd()
+    if self.replicaPersistentType is not None:
+      oprot.writeFieldBegin('replicaPersistentType', TType.I32, 9)
+      oprot.writeI32(self.replicaPersistentType)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 10)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.filePath is not None:
+      oprot.writeFieldBegin('filePath', TType.STRING, 11)
+      oprot.writeString(self.filePath)
+      oprot.writeFieldEnd()
+    if self.replicaMetadata is not None:
+      oprot.writeFieldBegin('replicaMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.replicaMetadata))
+      for kiter30,viter31 in self.replicaMetadata.items():
+        oprot.writeString(kiter30)
+        oprot.writeString(viter31)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.replicaId)
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.replicaName)
+    value = (value * 31) ^ hash(self.replicaDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.validUntilTime)
+    value = (value * 31) ^ hash(self.replicaLocationCategory)
+    value = (value * 31) ^ hash(self.replicaPersistentType)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.filePath)
+    value = (value * 31) ^ hash(self.replicaMetadata)
+    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)

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/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 e915c64..22769dc 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -67,14 +67,14 @@ appcatalog.validationQuery=SELECT 1 from CONFIGURATION
 #  Data 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
+replicacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+replicacatalog.jdbc.url=jdbc:derby://localhost:1527/data_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
+#replicacatalog.jdbc.driver=com.mysql.jdbc.Driver
+#replicacatalog.jdbc.url=jdbc:mysql://localhost:3306/data_catalog
+replicacatalog.jdbc.user=airavata
+replicacatalog.jdbc.password=airavata
+replicacatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ###########################################################################
 #  Workflow Catalog DB Configuration

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
index b783542..b9a4ea4 100644
--- a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
+++ b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
@@ -69,14 +69,14 @@ appcatalog.validationQuery=SELECT 1 from CONFIGURATION
 #  Replica Catalog DB Configuration
 ###########################################################################
 #for derby [AiravataJPARegistry]
-datacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
-datacatalog.jdbc.url=jdbc:derby://localhost:1527/replica_catalog;create=true;user=airavata;password=airavata
+replicacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+replicacatalog.jdbc.url=jdbc:derby://localhost:1527/replica_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
+#replicacatalog.jdbc.driver=com.mysql.jdbc.Driver
+#replicacatalog.jdbc.url=jdbc:mysql://localhost:3306/data_catalog
+replicacatalog.jdbc.user=airavata
+replicacatalog.jdbc.password=airavata
+replicacatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ###########################################################################
 #  Server module Configuration

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
index 6a9a4fd..3e4c835 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
@@ -59,12 +59,16 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
         //Creating parent logical dir if not exist too
         String parentUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + ":/" ;
         DataProductModel tempDp;
+        final long currentTime = System.currentTimeMillis();
         if(!isExists(parentUri)){
             tempDp = new DataProductModel();
             tempDp.setProductUri(parentUri);
             tempDp.setLogicalPath("/");
             tempDp.setOwnerName(productModel.getOwnerName());
             tempDp.setGatewayId(productModel.getGatewayId());
+            tempDp.setProductName("/");
+            tempDp.setCreationTime(currentTime);
+            tempDp.setLastModifiedTime(currentTime);
             tempDp.setDataProductType(DataProductType.DIR);
             createDataProduct(tempDp);
         }
@@ -73,8 +77,8 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
             String dir = bits[i];
             if(!isExists(parentUri + dir)){
                 tempDp = new DataProductModel();
-                if(!parentUri.endsWith("/")) parentUri += "/";
                 try {
+                    if(!parentUri.endsWith("/")) dir = "/" + dir;
                     tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
                 } catch (URISyntaxException e) {
                     throw new ReplicaCatalogException(e);
@@ -82,6 +86,9 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
                 tempDp.setProductUri(parentUri + dir);
                 tempDp.setOwnerName(productModel.getOwnerName());
                 tempDp.setGatewayId(productModel.getGatewayId());
+                tempDp.setProductName(dir.substring(1));
+                tempDp.setCreationTime(currentTime);
+                tempDp.setLastModifiedTime(currentTime);
                 tempDp.setDataProductType(DataProductType.DIR);
                 tempDp.setParentProductUri(parentUri);
                 parentUri = createDataProduct(tempDp);
@@ -92,7 +99,6 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
         String productUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
                 + ":" + productModel.getLogicalPath();
         productModel.setProductUri(productUri);
-        long currentTime = System.currentTimeMillis();
         productModel.setCreationTime(currentTime);
         productModel.setLastModifiedTime(currentTime);
         if(productModel.getReplicaLocations() != null){

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
index 7a48f87..8052c2b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
@@ -166,7 +166,7 @@ public class DataProduct {
         this.dataProductMetaData = dataProductMetaData;
     }
 
-    @ManyToOne
+    @ManyToOne(optional = true)
     @JoinColumn(name = "PARENT_PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
     public DataProduct getParentDataProduct() {
         return parentDataProduct;

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
index 21b3e17..d269ccc 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
@@ -33,26 +33,26 @@ import java.util.Map;
 public class ReplicaCatalogJPAUtils {
     private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogJPAUtils.class);
 
-    private static final String PERSISTENCE_UNIT_NAME = "datacatalog_data";
-    private static final String DATACATALOG_JDBC_DRIVER = "datacatalog.jdbc.driver";
-    private static final String DATACATALOG_JDBC_URL = "datacatalog.jdbc.url";
-    private static final String DATACATALOG_JDBC_USER = "datacatalog.jdbc.user";
-    private static final String DATACATALOG_JDBC_PWD = "datacatalog.jdbc.password";
-    private static final String DATACATALOG_VALIDATION_QUERY = "datacatalog.validationQuery";
+    private static final String PERSISTENCE_UNIT_NAME = "replicacatalog_data";
+    private static final String REPLICACATALOG_JDBC_DRIVER = "replicacatalog.jdbc.driver";
+    private static final String REPLICACATALOG_JDBC_URL = "replicacatalog.jdbc.url";
+    private static final String REPLICACATALOG_JDBC_USER = "replicacatalog.jdbc.user";
+    private static final String REPLICACATALOG_JDBC_PWD = "replicacatalog.jdbc.password";
+    private static final String REPLICACATALOG_VALIDATION_QUERY = "replicacatalog.validationQuery";
 
-    @PersistenceUnit(unitName="datacatalog_data")
+    @PersistenceUnit(unitName="replicacatalog_data")
     protected static EntityManagerFactory factory;
 
-    @PersistenceContext(unitName="datacatalog_data")
+    @PersistenceContext(unitName="replicacatalog_data")
     private static EntityManager dataCatEntityManager;
 
     public static EntityManager getEntityManager() throws ApplicationSettingsException {
         if (factory == null) {
-            String connectionProperties = "DriverClassName=" + readServerProperties(DATACATALOG_JDBC_DRIVER) + "," +
-                    "Url=" + readServerProperties(DATACATALOG_JDBC_URL) + "?autoReconnect=true," +
-                    "Username=" + readServerProperties(DATACATALOG_JDBC_USER) + "," +
-                    "Password=" + readServerProperties(DATACATALOG_JDBC_PWD) +
-                    ",validationQuery=" + readServerProperties(DATACATALOG_VALIDATION_QUERY);
+            String connectionProperties = "DriverClassName=" + readServerProperties(REPLICACATALOG_JDBC_DRIVER) + "," +
+                    "Url=" + readServerProperties(REPLICACATALOG_JDBC_URL) + "?autoReconnect=true," +
+                    "Username=" + readServerProperties(REPLICACATALOG_JDBC_USER) + "," +
+                    "Password=" + readServerProperties(REPLICACATALOG_JDBC_PWD) +
+                    ",validationQuery=" + readServerProperties(REPLICACATALOG_VALIDATION_QUERY);
             System.out.println(connectionProperties);
             Map<String, String> properties = new HashMap<String, String>();
             properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");

http://git-wip-us.apache.org/repos/asf/airavata/blob/18cd83c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
index ece579c..676f84b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
@@ -65,7 +65,7 @@ public class ThriftDataModelConversion {
                         .add(getDataReplicaLocationModel(r)));
                 dataProductModel.setReplicaLocations(dataReplicaLocationModels);
             }
-            if(dataProductModel.getDataProductType().equals(DataProductType.COLLECTION) && dataProduct.getChildDataProducts() != null){
+            if(!dataProductModel.getDataProductType().equals(DataProductType.FILE) && dataProduct.getChildDataProducts() != null){
                 ArrayList<DataProductModel> childDataProducts = new ArrayList<>();
                 dataProduct.getChildDataProducts().stream().forEach(r->childDataProducts.add(getDataProductModel(r)));
                 dataProductModel.setChildProducts(childDataProducts);


[11/55] [abbrv] airavata git commit: changes to the data catalog sample

Posted by sh...@apache.org.
changes to the data catalog sample


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

Branch: refs/heads/master
Commit: faabd9713a4d7b9ead35ff44103e9afd71998911
Parents: 6c5645d
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 14:08:53 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 14:08:53 2016 -0400

----------------------------------------------------------------------
 .../airavata/client/samples/DataCatalogSample.java     |  2 +-
 .../src/test/resources/airavata-server.properties      | 13 -------------
 2 files changed, 1 insertion(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/faabd971/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
index c26d371..592eaa1 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
@@ -47,7 +47,7 @@ public class DataCatalogSample {
             dataProductModel.setGatewayId(DEFAULT_GATEWAY);
             dataProductModel.setOwnerName(USER_NAME);
             dataProductModel.setProductName("test-1");
-            dataProductModel.setLogicalPath("/test/test/test");
+            dataProductModel.setLogicalPath("/test/test/test/" + System.currentTimeMillis());
             dataProductModel.setDataProductType(DataProductType.FILE);
 
             DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();

http://git-wip-us.apache.org/repos/asf/airavata/blob/faabd971/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
index 6158da1..e74016f 100644
--- a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
+++ b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
@@ -79,19 +79,6 @@ datacatalog.jdbc.password=airavata
 datacatalog.validationQuery=SELECT 1 from CONFIGURATION
 
 ###########################################################################
-#  Data 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
-# 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
-
-###########################################################################
 #  Server module Configuration
 ###########################################################################
 


[31/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
renaming data-catalog to replica catalog


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

Branch: refs/heads/master
Commit: 04f6f5934607cd2a0925f478fc4121c4adf0b306
Parents: a2ff432
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 11:25:13 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 11:25:15 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   14 +-
 .../api/server/handler/utils/DataCatInit.java   |    4 +-
 .../java/org/apache/airavata/api/Airavata.java  |  102 +-
 .../main/resources/lib/airavata/Airavata.cpp    |   24 +-
 .../src/main/resources/lib/airavata/Airavata.h  |   60 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    6 +-
 .../resources/lib/airavata/airavata_api_types.h |    2 +-
 .../lib/airavata/airavata_data_models_types.h   |    2 +-
 .../replica_catalog_models_constants.cpp        |    2 +-
 .../airavata/replica_catalog_models_constants.h |    2 +-
 .../airavata/replica_catalog_models_types.cpp   |  342 +--
 .../lib/airavata/replica_catalog_models_types.h |  154 +-
 .../resources/lib/Airavata/API/Airavata.php     |   36 +-
 .../lib/apache/airavata/api/Airavata.py         |   12 +-
 .../resources/lib/apache/airavata/api/ttypes.py |    2 +-
 .../lib/apache/airavata/model/ttypes.py         |    2 +-
 .../client/samples/DataCatalogSample.java       |   73 -
 .../client/samples/ReplicaCatalogSample.java    |   73 +
 .../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 +-
 .../apache/airavata/model/WorkflowModel.java    |    2 +-
 .../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 +-
 .../model/data/product/DataProductModel.java    | 1943 ------------------
 .../model/data/product/DataProductType.java     |   65 -
 .../data/product/DataReplicaLocationModel.java  | 1635 ---------------
 .../data/product/ReplicaLocationCategory.java   |   68 -
 .../data/product/ReplicaPersistentType.java     |   62 -
 .../model/data/replica/DataProductModel.java    | 1943 ++++++++++++++++++
 .../model/data/replica/DataProductType.java     |   65 +
 .../data/replica/DataReplicaLocationModel.java  | 1635 +++++++++++++++
 .../data/replica/ReplicaLocationCategory.java   |   68 +
 .../data/replica/ReplicaPersistentType.java     |   62 +
 .../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 +-
 .../test/resources/airavata-server.properties   |    4 +-
 .../server/OrchestratorServerHandler.java       |   10 +-
 .../core/data/catalog/impl/DataCatalogImpl.java |  356 ----
 .../core/data/catalog/model/Configuration.java  |   55 -
 .../core/data/catalog/model/DataProduct.java    |  187 --
 .../data/catalog/model/DataProductMetaData.java |   77 -
 .../catalog/model/DataProductMetaData_PK.java   |   59 -
 .../data/catalog/model/DataReplicaLocation.java |  169 --
 .../data/catalog/model/DataReplicaMetaData.java |   77 -
 .../catalog/model/DataReplicaMetaData_PK.java   |   59 -
 .../catalog/utils/DataCatalogConstants.java     |   49 -
 .../data/catalog/utils/DataCatalogJPAUtils.java |   82 -
 .../utils/DataCatalogQueryGenerator.java        |  111 -
 .../utils/ThriftDataModelConversion.java        |  215 --
 .../catalog/impl/RegistryFactory.java           |   10 +-
 .../registry/core/impl/RegistryImpl.java        |    6 +-
 .../catalog/impl/ReplicaCatalogImpl.java        |  356 ++++
 .../replica/catalog/model/Configuration.java    |   55 +
 .../core/replica/catalog/model/DataProduct.java |  187 ++
 .../catalog/model/DataProductMetaData.java      |   77 +
 .../catalog/model/DataProductMetaData_PK.java   |   59 +
 .../catalog/model/DataReplicaLocation.java      |  169 ++
 .../catalog/model/DataReplicaMetaData.java      |   77 +
 .../catalog/model/DataReplicaMetaData_PK.java   |   59 +
 .../catalog/utils/ReplicaCatalogConstants.java  |   49 +
 .../catalog/utils/ReplicaCatalogJPAUtils.java   |   82 +
 .../utils/ReplicaCatalogQueryGenerator.java     |  111 +
 .../utils/ThriftDataModelConversion.java        |  215 ++
 .../src/main/resources/META-INF/persistence.xml |   10 +-
 .../airavata/data/catalog/DataCatalogTest.java  |  100 -
 .../airavata/data/catalog/util/Initialize.java  |  315 ---
 .../replica/catalog/ReplicaCatalogTest.java     |  100 +
 .../replica/catalog/util/Initialize.java        |  315 +++
 .../airavata/registry/cpi/DataCatalog.java      |   50 -
 .../registry/cpi/DataCatalogException.java      |   35 -
 .../apache/airavata/registry/cpi/Registry.java  |    2 +-
 .../airavata/registry/cpi/ReplicaCatalog.java   |   50 +
 .../registry/cpi/ReplicaCatalogException.java   |   35 +
 .../airavata-apis/airavata_api.thrift           |   10 +-
 .../data-models/airavata_data_models.thrift     |    2 +-
 .../data_catalog_models.thrift                  |   73 -
 .../replica_catalog_models.thrift               |   73 +
 150 files changed, 6421 insertions(+), 6389 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 40877de..f1564e5 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
@@ -49,8 +49,8 @@ import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.airavata_commonsConstants;
 import org.apache.airavata.model.data.movement.DMType;
 import org.apache.airavata.model.data.movement.*;
-import org.apache.airavata.model.data.product.DataProductModel;
-import org.apache.airavata.model.data.product.DataReplicaLocationModel;
+import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
 import org.apache.airavata.model.error.*;
 import org.apache.airavata.model.experiment.*;
 import org.apache.airavata.model.job.JobModel;
@@ -88,7 +88,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     private ExperimentCatalog experimentCatalog;
     private AppCatalog appCatalog;
     private Publisher publisher;
-    private DataCatalog dataCatalog;
+    private ReplicaCatalog dataCatalog;
 	private WorkflowCatalog workflowCatalog;
     private CredentialStoreService.Client csClient;
 
@@ -4295,7 +4295,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 	}
 
     /**
-     * DataCatalog Related Methods
+     * ReplicaCatalog Related Methods
      * @return
      * @throws TException
      * @throws ApplicationSettingsException
@@ -4305,7 +4305,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     public String registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel) throws InvalidRequestException,
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
-            dataCatalog = RegistryFactory.getDataCatalog();
+            dataCatalog = RegistryFactory.getReplicaCatalog();
             String productUrl = dataCatalog.registerDataProduct(dataProductModel);
             return productUrl;
         } catch (Exception e) {
@@ -4322,7 +4322,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     public DataProductModel getDataProduct(AuthzToken authzToken, String productUri) throws InvalidRequestException,
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
-            dataCatalog = RegistryFactory.getDataCatalog();
+            dataCatalog = RegistryFactory.getReplicaCatalog();
             DataProductModel dataProductModel = dataCatalog.getDataProduct(productUri);
             return dataProductModel;
         } catch (Exception e) {
@@ -4339,7 +4339,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     public String registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel) throws InvalidRequestException,
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
-            dataCatalog = RegistryFactory.getDataCatalog();
+            dataCatalog = RegistryFactory.getReplicaCatalog();
             String replicaId = dataCatalog.registerReplicaLocation(replicaLocationModel);
             return replicaId;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
index 2b55692..f99228a 100644
--- a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
@@ -23,7 +23,7 @@ package org.apache.airavata.api.server.handler.utils;
 
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.registry.core.data.catalog.utils.DataCatalogConstants;
+import org.apache.airavata.registry.core.replica.catalog.utils.ReplicaCatalogConstants;
 import org.apache.derby.drda.NetworkServerControl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -111,7 +111,7 @@ public class DataCatInit {
         try {
             Class.forName(jdbcDriver).newInstance();
             conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
-            if (!isDatabaseStructureCreated(DataCatalogConstants.CONFIGURATION, conn)) {
+            if (!isDatabaseStructureCreated(ReplicaCatalogConstants.CONFIGURATION, conn)) {
                 executeSQLScript(conn);
                 logger.info("New Database created for Data Catalog !!!");
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 430333f..29f1056 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 public class Airavata {
 
   public interface Iface {
@@ -2644,11 +2644,11 @@ public class Airavata {
      * @param authzToken
      * @param dataProductModel
      */
-    public String registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) 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 registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel) 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.data.product.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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.data.replica.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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 registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) 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 registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel) 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;
 
   }
 
@@ -2922,11 +2922,11 @@ public class Airavata {
 
     public void isWorkflowExistWithName(org.apache.airavata.model.security.AuthzToken authzToken, String workflowName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
   }
 
@@ -7876,13 +7876,13 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "isWorkflowExistWithName failed: unknown result");
     }
 
-    public String registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) 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 registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel) 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
     {
       send_registerDataProduct(authzToken, dataProductModel);
       return recv_registerDataProduct();
     }
 
-    public void send_registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) throws org.apache.thrift.TException
+    public void send_registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel) throws org.apache.thrift.TException
     {
       registerDataProduct_args args = new registerDataProduct_args();
       args.setAuthzToken(authzToken);
@@ -7912,7 +7912,7 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerDataProduct failed: unknown result");
     }
 
-    public org.apache.airavata.model.data.product.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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.data.replica.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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
     {
       send_getDataProduct(authzToken, dataProductUri);
       return recv_getDataProduct();
@@ -7926,7 +7926,7 @@ public class Airavata {
       sendBase("getDataProduct", args);
     }
 
-    public org.apache.airavata.model.data.product.DataProductModel recv_getDataProduct() 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.data.replica.DataProductModel recv_getDataProduct() 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
     {
       getDataProduct_result result = new getDataProduct_result();
       receiveBase(result, "getDataProduct");
@@ -7948,13 +7948,13 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDataProduct failed: unknown result");
     }
 
-    public String registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) 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 registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel) 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
     {
       send_registerReplicaLocation(authzToken, replicaLocationModel);
       return recv_registerReplicaLocation();
     }
 
-    public void send_registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) throws org.apache.thrift.TException
+    public void send_registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel) throws org.apache.thrift.TException
     {
       registerReplicaLocation_args args = new registerReplicaLocation_args();
       args.setAuthzToken(authzToken);
@@ -13034,7 +13034,7 @@ public class Airavata {
       }
     }
 
-    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       registerDataProduct_call method_call = new registerDataProduct_call(authzToken, dataProductModel, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
@@ -13043,8 +13043,8 @@ public class Airavata {
 
     public static class registerDataProduct_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private org.apache.airavata.model.data.product.DataProductModel dataProductModel;
-      public registerDataProduct_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private org.apache.airavata.model.data.replica.DataProductModel dataProductModel;
+      public registerDataProduct_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
         this.dataProductModel = dataProductModel;
@@ -13094,7 +13094,7 @@ public class Airavata {
         prot.writeMessageEnd();
       }
 
-      public org.apache.airavata.model.data.product.DataProductModel getResult() 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.data.replica.DataProductModel getResult() 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 {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -13104,7 +13104,7 @@ public class Airavata {
       }
     }
 
-    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       registerReplicaLocation_call method_call = new registerReplicaLocation_call(authzToken, replicaLocationModel, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
@@ -13113,8 +13113,8 @@ public class Airavata {
 
     public static class registerReplicaLocation_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel;
-      public registerReplicaLocation_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel;
+      public registerReplicaLocation_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
         this.replicaLocationModel = replicaLocationModel;
@@ -27387,7 +27387,7 @@ public class Airavata {
       }
     }
 
-    public static class getDataProduct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getDataProduct_args, org.apache.airavata.model.data.product.DataProductModel> {
+    public static class getDataProduct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getDataProduct_args, org.apache.airavata.model.data.replica.DataProductModel> {
       public getDataProduct() {
         super("getDataProduct");
       }
@@ -27396,10 +27396,10 @@ public class Airavata {
         return new getDataProduct_args();
       }
 
-      public AsyncMethodCallback<org.apache.airavata.model.data.product.DataProductModel> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+      public AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
         final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new AsyncMethodCallback<org.apache.airavata.model.data.product.DataProductModel>() { 
-          public void onComplete(org.apache.airavata.model.data.product.DataProductModel o) {
+        return new AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel>() { 
+          public void onComplete(org.apache.airavata.model.data.replica.DataProductModel o) {
             getDataProduct_result result = new getDataProduct_result();
             result.success = o;
             try {
@@ -27454,7 +27454,7 @@ public class Airavata {
         return false;
       }
 
-      public void start(I iface, getDataProduct_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.data.product.DataProductModel> resultHandler) throws TException {
+      public void start(I iface, getDataProduct_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.data.replica.DataProductModel> resultHandler) throws TException {
         iface.getDataProduct(args.authzToken, args.dataProductUri,resultHandler);
       }
     }
@@ -208292,7 +208292,7 @@ public class Airavata {
     }
 
     public org.apache.airavata.model.security.AuthzToken authzToken; // required
-    public org.apache.airavata.model.data.product.DataProductModel dataProductModel; // required
+    public org.apache.airavata.model.data.replica.DataProductModel dataProductModel; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -208362,7 +208362,7 @@ public class Airavata {
       tmpMap.put(_Fields.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
       tmpMap.put(_Fields.DATA_PRODUCT_MODEL, new org.apache.thrift.meta_data.FieldMetaData("dataProductModel", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.product.DataProductModel.class)));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.replica.DataProductModel.class)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(registerDataProduct_args.class, metaDataMap);
     }
@@ -208372,7 +208372,7 @@ public class Airavata {
 
     public registerDataProduct_args(
       org.apache.airavata.model.security.AuthzToken authzToken,
-      org.apache.airavata.model.data.product.DataProductModel dataProductModel)
+      org.apache.airavata.model.data.replica.DataProductModel dataProductModel)
     {
       this();
       this.authzToken = authzToken;
@@ -208387,7 +208387,7 @@ public class Airavata {
         this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
       }
       if (other.isSetDataProductModel()) {
-        this.dataProductModel = new org.apache.airavata.model.data.product.DataProductModel(other.dataProductModel);
+        this.dataProductModel = new org.apache.airavata.model.data.replica.DataProductModel(other.dataProductModel);
       }
     }
 
@@ -208425,11 +208425,11 @@ public class Airavata {
       }
     }
 
-    public org.apache.airavata.model.data.product.DataProductModel getDataProductModel() {
+    public org.apache.airavata.model.data.replica.DataProductModel getDataProductModel() {
       return this.dataProductModel;
     }
 
-    public registerDataProduct_args setDataProductModel(org.apache.airavata.model.data.product.DataProductModel dataProductModel) {
+    public registerDataProduct_args setDataProductModel(org.apache.airavata.model.data.replica.DataProductModel dataProductModel) {
       this.dataProductModel = dataProductModel;
       return this;
     }
@@ -208463,7 +208463,7 @@ public class Airavata {
         if (value == null) {
           unsetDataProductModel();
         } else {
-          setDataProductModel((org.apache.airavata.model.data.product.DataProductModel)value);
+          setDataProductModel((org.apache.airavata.model.data.replica.DataProductModel)value);
         }
         break;
 
@@ -208677,7 +208677,7 @@ public class Airavata {
               break;
             case 2: // DATA_PRODUCT_MODEL
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.dataProductModel = new org.apache.airavata.model.data.product.DataProductModel();
+                struct.dataProductModel = new org.apache.airavata.model.data.replica.DataProductModel();
                 struct.dataProductModel.read(iprot);
                 struct.setDataProductModelIsSet(true);
               } else { 
@@ -208736,7 +208736,7 @@ public class Airavata {
         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
         struct.authzToken.read(iprot);
         struct.setAuthzTokenIsSet(true);
-        struct.dataProductModel = new org.apache.airavata.model.data.product.DataProductModel();
+        struct.dataProductModel = new org.apache.airavata.model.data.replica.DataProductModel();
         struct.dataProductModel.read(iprot);
         struct.setDataProductModelIsSet(true);
       }
@@ -210008,7 +210008,7 @@ public class Airavata {
       schemes.put(TupleScheme.class, new getDataProduct_resultTupleSchemeFactory());
     }
 
-    public org.apache.airavata.model.data.product.DataProductModel success; // required
+    public org.apache.airavata.model.data.replica.DataProductModel success; // required
     public org.apache.airavata.model.error.InvalidRequestException ire; // required
     public org.apache.airavata.model.error.AiravataClientException ace; // required
     public org.apache.airavata.model.error.AiravataSystemException ase; // required
@@ -210089,7 +210089,7 @@ public class Airavata {
     static {
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.product.DataProductModel.class)));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.replica.DataProductModel.class)));
       tmpMap.put(_Fields.IRE, new org.apache.thrift.meta_data.FieldMetaData("ire", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       tmpMap.put(_Fields.ACE, new org.apache.thrift.meta_data.FieldMetaData("ace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
@@ -210106,7 +210106,7 @@ public class Airavata {
     }
 
     public getDataProduct_result(
-      org.apache.airavata.model.data.product.DataProductModel success,
+      org.apache.airavata.model.data.replica.DataProductModel success,
       org.apache.airavata.model.error.InvalidRequestException ire,
       org.apache.airavata.model.error.AiravataClientException ace,
       org.apache.airavata.model.error.AiravataSystemException ase,
@@ -210125,7 +210125,7 @@ public class Airavata {
      */
     public getDataProduct_result(getDataProduct_result other) {
       if (other.isSetSuccess()) {
-        this.success = new org.apache.airavata.model.data.product.DataProductModel(other.success);
+        this.success = new org.apache.airavata.model.data.replica.DataProductModel(other.success);
       }
       if (other.isSetIre()) {
         this.ire = new org.apache.airavata.model.error.InvalidRequestException(other.ire);
@@ -210154,11 +210154,11 @@ public class Airavata {
       this.ae = null;
     }
 
-    public org.apache.airavata.model.data.product.DataProductModel getSuccess() {
+    public org.apache.airavata.model.data.replica.DataProductModel getSuccess() {
       return this.success;
     }
 
-    public getDataProduct_result setSuccess(org.apache.airavata.model.data.product.DataProductModel success) {
+    public getDataProduct_result setSuccess(org.apache.airavata.model.data.replica.DataProductModel success) {
       this.success = success;
       return this;
     }
@@ -210280,7 +210280,7 @@ public class Airavata {
         if (value == null) {
           unsetSuccess();
         } else {
-          setSuccess((org.apache.airavata.model.data.product.DataProductModel)value);
+          setSuccess((org.apache.airavata.model.data.replica.DataProductModel)value);
         }
         break;
 
@@ -210619,7 +210619,7 @@ public class Airavata {
           switch (schemeField.id) {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.success = new org.apache.airavata.model.data.product.DataProductModel();
+                struct.success = new org.apache.airavata.model.data.replica.DataProductModel();
                 struct.success.read(iprot);
                 struct.setSuccessIsSet(true);
               } else { 
@@ -210758,7 +210758,7 @@ public class Airavata {
         TTupleProtocol iprot = (TTupleProtocol) prot;
         BitSet incoming = iprot.readBitSet(5);
         if (incoming.get(0)) {
-          struct.success = new org.apache.airavata.model.data.product.DataProductModel();
+          struct.success = new org.apache.airavata.model.data.replica.DataProductModel();
           struct.success.read(iprot);
           struct.setSuccessIsSet(true);
         }
@@ -210800,7 +210800,7 @@ public class Airavata {
     }
 
     public org.apache.airavata.model.security.AuthzToken authzToken; // required
-    public org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel; // required
+    public org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -210870,7 +210870,7 @@ public class Airavata {
       tmpMap.put(_Fields.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
       tmpMap.put(_Fields.REPLICA_LOCATION_MODEL, new org.apache.thrift.meta_data.FieldMetaData("replicaLocationModel", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.product.DataReplicaLocationModel.class)));
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.data.replica.DataReplicaLocationModel.class)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(registerReplicaLocation_args.class, metaDataMap);
     }
@@ -210880,7 +210880,7 @@ public class Airavata {
 
     public registerReplicaLocation_args(
       org.apache.airavata.model.security.AuthzToken authzToken,
-      org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel)
+      org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel)
     {
       this();
       this.authzToken = authzToken;
@@ -210895,7 +210895,7 @@ public class Airavata {
         this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
       }
       if (other.isSetReplicaLocationModel()) {
-        this.replicaLocationModel = new org.apache.airavata.model.data.product.DataReplicaLocationModel(other.replicaLocationModel);
+        this.replicaLocationModel = new org.apache.airavata.model.data.replica.DataReplicaLocationModel(other.replicaLocationModel);
       }
     }
 
@@ -210933,11 +210933,11 @@ public class Airavata {
       }
     }
 
-    public org.apache.airavata.model.data.product.DataReplicaLocationModel getReplicaLocationModel() {
+    public org.apache.airavata.model.data.replica.DataReplicaLocationModel getReplicaLocationModel() {
       return this.replicaLocationModel;
     }
 
-    public registerReplicaLocation_args setReplicaLocationModel(org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) {
+    public registerReplicaLocation_args setReplicaLocationModel(org.apache.airavata.model.data.replica.DataReplicaLocationModel replicaLocationModel) {
       this.replicaLocationModel = replicaLocationModel;
       return this;
     }
@@ -210971,7 +210971,7 @@ public class Airavata {
         if (value == null) {
           unsetReplicaLocationModel();
         } else {
-          setReplicaLocationModel((org.apache.airavata.model.data.product.DataReplicaLocationModel)value);
+          setReplicaLocationModel((org.apache.airavata.model.data.replica.DataReplicaLocationModel)value);
         }
         break;
 
@@ -211185,7 +211185,7 @@ public class Airavata {
               break;
             case 2: // REPLICA_LOCATION_MODEL
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.replicaLocationModel = new org.apache.airavata.model.data.product.DataReplicaLocationModel();
+                struct.replicaLocationModel = new org.apache.airavata.model.data.replica.DataReplicaLocationModel();
                 struct.replicaLocationModel.read(iprot);
                 struct.setReplicaLocationModelIsSet(true);
               } else { 
@@ -211244,7 +211244,7 @@ public class Airavata {
         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
         struct.authzToken.read(iprot);
         struct.setAuthzTokenIsSet(true);
-        struct.replicaLocationModel = new org.apache.airavata.model.data.product.DataReplicaLocationModel();
+        struct.replicaLocationModel = new org.apache.airavata.model.data.replica.DataReplicaLocationModel();
         struct.replicaLocationModel.read(iprot);
         struct.setReplicaLocationModelIsSet(true);
       }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 1d6f60a..262de5e 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
@@ -52464,13 +52464,13 @@ bool AiravataClient::recv_isWorkflowExistWithName()
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "isWorkflowExistWithName failed: unknown result");
 }
 
-void AiravataClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel)
+void AiravataClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
 {
   send_registerDataProduct(authzToken, dataProductModel);
   recv_registerDataProduct(_return);
 }
 
-void AiravataClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel)
+void AiravataClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("registerDataProduct", ::apache::thrift::protocol::T_CALL, cseqid);
@@ -52535,7 +52535,7 @@ void AiravataClient::recv_registerDataProduct(std::string& _return)
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "registerDataProduct failed: unknown result");
 }
 
-void AiravataClient::getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
+void AiravataClient::getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
 {
   send_getDataProduct(authzToken, dataProductUri);
   recv_getDataProduct(_return);
@@ -52556,7 +52556,7 @@ void AiravataClient::send_getDataProduct(const  ::apache::airavata::model::secur
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return)
+void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52606,13 +52606,13 @@ void AiravataClient::recv_getDataProduct( ::apache::airavata::model::data::produ
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getDataProduct failed: unknown result");
 }
 
-void AiravataClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel)
+void AiravataClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
   send_registerReplicaLocation(authzToken, replicaLocationModel);
   recv_registerReplicaLocation(_return);
 }
 
-void AiravataClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel)
+void AiravataClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("registerReplicaLocation", ::apache::thrift::protocol::T_CALL, cseqid);
@@ -75365,13 +75365,13 @@ bool AiravataConcurrentClient::recv_isWorkflowExistWithName(const int32_t seqid)
   } // end while(true)
 }
 
-void AiravataConcurrentClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel)
+void AiravataConcurrentClient::registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
 {
   int32_t seqid = send_registerDataProduct(authzToken, dataProductModel);
   recv_registerDataProduct(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel)
+int32_t AiravataConcurrentClient::send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
@@ -75466,7 +75466,7 @@ void AiravataConcurrentClient::recv_registerDataProduct(std::string& _return, co
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
+void AiravataConcurrentClient::getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri)
 {
   int32_t seqid = send_getDataProduct(authzToken, dataProductUri);
   recv_getDataProduct(_return, seqid);
@@ -75491,7 +75491,7 @@ int32_t AiravataConcurrentClient::send_getDataProduct(const  ::apache::airavata:
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -75567,13 +75567,13 @@ void AiravataConcurrentClient::recv_getDataProduct( ::apache::airavata::model::d
   } // end while(true)
 }
 
-void AiravataConcurrentClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel)
+void AiravataConcurrentClient::registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
   int32_t seqid = send_registerReplicaLocation(authzToken, replicaLocationModel);
   recv_registerReplicaLocation(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel)
+int32_t AiravataConcurrentClient::send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 fd22834..f885e7a 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
@@ -2616,9 +2616,9 @@ class AiravataIf {
    * @param authzToken
    * @param dataProductModel
    */
-  virtual void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) = 0;
-  virtual void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) = 0;
-  virtual void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) = 0;
+  virtual void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel) = 0;
+  virtual void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) = 0;
+  virtual void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel) = 0;
 };
 
 class AiravataIfFactory {
@@ -3093,13 +3093,13 @@ class AiravataNull : virtual public AiravataIf {
     bool _return = false;
     return _return;
   }
-  void registerDataProduct(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::product::DataProductModel& /* dataProductModel */) {
+  void registerDataProduct(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::replica::DataProductModel& /* dataProductModel */) {
     return;
   }
-  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataProductUri */) {
+  void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataProductUri */) {
     return;
   }
-  void registerReplicaLocation(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& /* replicaLocationModel */) {
+  void registerReplicaLocation(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& /* replicaLocationModel */) {
     return;
   }
 };
@@ -22019,11 +22019,11 @@ class Airavata_registerDataProduct_args {
 
   virtual ~Airavata_registerDataProduct_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-   ::apache::airavata::model::data::product::DataProductModel dataProductModel;
+   ::apache::airavata::model::data::replica::DataProductModel dataProductModel;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_dataProductModel(const  ::apache::airavata::model::data::product::DataProductModel& val);
+  void __set_dataProductModel(const  ::apache::airavata::model::data::replica::DataProductModel& val);
 
   bool operator == (const Airavata_registerDataProduct_args & rhs) const
   {
@@ -22051,7 +22051,7 @@ class Airavata_registerDataProduct_pargs {
 
   virtual ~Airavata_registerDataProduct_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const  ::apache::airavata::model::data::product::DataProductModel* dataProductModel;
+  const  ::apache::airavata::model::data::replica::DataProductModel* dataProductModel;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -22211,7 +22211,7 @@ class Airavata_getDataProduct_result {
   }
 
   virtual ~Airavata_getDataProduct_result() throw();
-   ::apache::airavata::model::data::product::DataProductModel success;
+   ::apache::airavata::model::data::replica::DataProductModel success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
@@ -22219,7 +22219,7 @@ class Airavata_getDataProduct_result {
 
   _Airavata_getDataProduct_result__isset __isset;
 
-  void __set_success(const  ::apache::airavata::model::data::product::DataProductModel& val);
+  void __set_success(const  ::apache::airavata::model::data::replica::DataProductModel& val);
 
   void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
 
@@ -22268,7 +22268,7 @@ class Airavata_getDataProduct_presult {
 
 
   virtual ~Airavata_getDataProduct_presult() throw();
-   ::apache::airavata::model::data::product::DataProductModel* success;
+   ::apache::airavata::model::data::replica::DataProductModel* success;
    ::apache::airavata::api::error::InvalidRequestException ire;
    ::apache::airavata::api::error::AiravataClientException ace;
    ::apache::airavata::api::error::AiravataSystemException ase;
@@ -22291,11 +22291,11 @@ class Airavata_registerReplicaLocation_args {
 
   virtual ~Airavata_registerReplicaLocation_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-   ::apache::airavata::model::data::product::DataReplicaLocationModel replicaLocationModel;
+   ::apache::airavata::model::data::replica::DataReplicaLocationModel replicaLocationModel;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_replicaLocationModel(const  ::apache::airavata::model::data::product::DataReplicaLocationModel& val);
+  void __set_replicaLocationModel(const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& val);
 
   bool operator == (const Airavata_registerReplicaLocation_args & rhs) const
   {
@@ -22323,7 +22323,7 @@ class Airavata_registerReplicaLocation_pargs {
 
   virtual ~Airavata_registerReplicaLocation_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const  ::apache::airavata::model::data::product::DataReplicaLocationModel* replicaLocationModel;
+  const  ::apache::airavata::model::data::replica::DataReplicaLocationModel* replicaLocationModel;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -22843,14 +22843,14 @@ class AiravataClient : virtual public AiravataIf {
   bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   void send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   bool recv_isWorkflowExistWithName();
-  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
-  void send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel);
+  void send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel);
   void recv_registerDataProduct(std::string& _return);
-  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
   void send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
-  void recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return);
-  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
-  void send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  void recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return);
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
+  void send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   void recv_registerReplicaLocation(std::string& _return);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
@@ -24460,7 +24460,7 @@ class AiravataMultiface : virtual public AiravataIf {
     return ifaces_[i]->isWorkflowExistWithName(authzToken, workflowName);
   }
 
-  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) {
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24470,7 +24470,7 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
+  void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24480,7 +24480,7 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) {
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
@@ -24922,14 +24922,14 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   int32_t send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   bool recv_isWorkflowExistWithName(const int32_t seqid);
-  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
-  int32_t send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel);
+  int32_t send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel);
   void recv_registerDataProduct(std::string& _return, const int32_t seqid);
-  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
   int32_t send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
-  void recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const int32_t seqid);
-  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
-  int32_t send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  void recv_getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const int32_t seqid);
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
+  int32_t send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel);
   void recv_registerReplicaLocation(std::string& _return, const int32_t seqid);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 28ad7aa..f9d80e4 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
@@ -3029,17 +3029,17 @@ class AiravataHandler : virtual public AiravataIf {
    * @param authzToken
    * @param dataProductModel
    */
-  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) {
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataProductModel& dataProductModel) {
     // Your implementation goes here
     printf("registerDataProduct\n");
   }
 
-  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
+  void getDataProduct( ::apache::airavata::model::data::replica::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
     // Your implementation goes here
     printf("getDataProduct\n");
   }
 
-  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) {
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::replica::DataReplicaLocationModel& replicaLocationModel) {
     // Your implementation goes here
     printf("registerReplicaLocation\n");
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_api_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_api_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_api_types.h
index 3afad01..5d059c5 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_api_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_api_types.h
@@ -48,7 +48,7 @@
 #include "gateway_resource_profile_model_types.h"
 #include "data_movement_models_types.h"
 #include "workflow_data_model_types.h"
-#include "data_catalog_models_types.h"
+#include "replica_catalog_models_types.h"
 
 
 namespace apache { namespace airavata { namespace api {

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
index 03958f1..ca6796a 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/airavata_data_models_types.h
@@ -44,7 +44,7 @@
 #include "scheduling_model_types.h"
 #include "status_models_types.h"
 #include "data_movement_models_types.h"
-#include "data_catalog_models_types.h"
+#include "replica_catalog_models_types.h"
 
 
 namespace apache { namespace airavata { namespace model {

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.cpp
index 3f67e2d..9e2c499 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.cpp
@@ -23,7 +23,7 @@
  */
 #include "replica_catalog_models_constants.h"
 
-namespace apache { namespace airavata { namespace model { namespace data { namespace resource {
+namespace apache { namespace airavata { namespace model { namespace data { namespace replica {
 
 const replica_catalog_modelsConstants g_replica_catalog_models_constants;
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.h
index 711a581..67322de 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/replica_catalog_models_constants.h
@@ -26,7 +26,7 @@
 
 #include "replica_catalog_models_types.h"
 
-namespace apache { namespace airavata { namespace model { namespace data { namespace resource {
+namespace apache { namespace airavata { namespace model { namespace data { namespace replica {
 
 class replica_catalog_modelsConstants {
  public:


[37/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 d397526..c7065a4 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
@@ -3422,7 +3422,7 @@ interface AiravataIf {
    */
   public function isWorkflowExistWithName(\Airavata\Model\Security\AuthzToken $authzToken, $workflowName);
   /**
-   * API Methods related to data catalog
+   * API Methods related to replica catalog
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
@@ -3454,6 +3454,26 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AuthorizationException
    */
   public function registerReplicaLocation(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Data\Replica\DataReplicaLocationModel $replicaLocationModel);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $productUri
+   * @return \Airavata\Model\Data\Replica\DataProductModel
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getParentDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $productUri);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $productUri
+   * @return \Airavata\Model\Data\Replica\DataProductModel[]
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getChildDataProducts(\Airavata\Model\Security\AuthzToken $authzToken, $productUri);
 }
 
 class AiravataClient implements \Airavata\API\AiravataIf {
@@ -12337,280 +12357,145 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("registerReplicaLocation failed: unknown result");
   }
 
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-class Airavata_getAPIVersion_args {
-  static $_TSPEC;
-
-  /**
-   * @var \Airavata\Model\Security\AuthzToken
-   */
-  public $authzToken = null;
+  public function getParentDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $productUri)
+  {
+    $this->send_getParentDataProduct($authzToken, $productUri);
+    return $this->recv_getParentDataProduct();
+  }
 
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'authzToken',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Security\AuthzToken',
-          ),
-        );
+  public function send_getParentDataProduct(\Airavata\Model\Security\AuthzToken $authzToken, $productUri)
+  {
+    $args = new \Airavata\API\Airavata_getParentDataProduct_args();
+    $args->authzToken = $authzToken;
+    $args->productUri = $productUri;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getParentDataProduct', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
     }
-    if (is_array($vals)) {
-      if (isset($vals['authzToken'])) {
-        $this->authzToken = $vals['authzToken'];
-      }
+    else
+    {
+      $this->output_->writeMessageBegin('getParentDataProduct', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
     }
   }
 
-  public function getName() {
-    return 'Airavata_getAPIVersion_args';
-  }
-
-  public function read($input)
+  public function recv_getParentDataProduct()
   {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getParentDataProduct_result', $this->input_->isStrictRead());
+    else
     {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
-            $xfer += $this->authzToken->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
 
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_args');
-    if ($this->authzToken !== null) {
-      if (!is_object($this->authzToken)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
       }
-      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
-      $xfer += $this->authzToken->write($output);
-      $xfer += $output->writeFieldEnd();
+      $result = new \Airavata\API\Airavata_getParentDataProduct_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
     }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class Airavata_getAPIVersion_result {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $success = null;
-  /**
-   * @var \Airavata\API\Error\InvalidRequestException
-   */
-  public $ire = null;
-  /**
-   * @var \Airavata\API\Error\AiravataClientException
-   */
-  public $ace = null;
-  /**
-   * @var \Airavata\API\Error\AiravataSystemException
-   */
-  public $ase = null;
-  /**
-   * @var \Airavata\API\Error\AuthorizationException
-   */
-  public $ae = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRING,
-          ),
-        1 => array(
-          'var' => 'ire',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\InvalidRequestException',
-          ),
-        2 => array(
-          'var' => 'ace',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataClientException',
-          ),
-        3 => array(
-          'var' => 'ase',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataSystemException',
-          ),
-        4 => array(
-          'var' => 'ae',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AuthorizationException',
-          ),
-        );
+    if ($result->success !== null) {
+      return $result->success;
     }
-    if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['ire'])) {
-        $this->ire = $vals['ire'];
-      }
-      if (isset($vals['ace'])) {
-        $this->ace = $vals['ace'];
-      }
-      if (isset($vals['ase'])) {
-        $this->ase = $vals['ase'];
-      }
-      if (isset($vals['ae'])) {
-        $this->ae = $vals['ae'];
-      }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
     }
+    throw new \Exception("getParentDataProduct failed: unknown result");
   }
 
-  public function getName() {
-    return 'Airavata_getAPIVersion_result';
+  public function getChildDataProducts(\Airavata\Model\Security\AuthzToken $authzToken, $productUri)
+  {
+    $this->send_getChildDataProducts($authzToken, $productUri);
+    return $this->recv_getChildDataProducts();
   }
 
-  public function read($input)
+  public function send_getChildDataProducts(\Airavata\Model\Security\AuthzToken $authzToken, $productUri)
   {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
+    $args = new \Airavata\API\Airavata_getChildDataProducts_args();
+    $args->authzToken = $authzToken;
+    $args->productUri = $productUri;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
     {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->ire = new \Airavata\API\Error\InvalidRequestException();
-            $xfer += $this->ire->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->ace = new \Airavata\API\Error\AiravataClientException();
-            $xfer += $this->ace->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->ase = new \Airavata\API\Error\AiravataSystemException();
-            $xfer += $this->ase->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->ae = new \Airavata\API\Error\AuthorizationException();
-            $xfer += $this->ae->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
+      thrift_protocol_write_binary($this->output_, 'getChildDataProducts', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getChildDataProducts', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
     }
-    $xfer += $input->readStructEnd();
-    return $xfer;
   }
 
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
-    if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
-      $xfer += $output->writeFieldEnd();
+  public function recv_getChildDataProducts()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getChildDataProducts_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_getChildDataProducts_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
     }
-    if ($this->ire !== null) {
-      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
-      $xfer += $this->ire->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->success !== null) {
+      return $result->success;
     }
-    if ($this->ace !== null) {
-      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
-      $xfer += $this->ace->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ire !== null) {
+      throw $result->ire;
     }
-    if ($this->ase !== null) {
-      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
-      $xfer += $this->ase->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ace !== null) {
+      throw $result->ace;
     }
-    if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
-      $xfer += $this->ae->write($output);
-      $xfer += $output->writeFieldEnd();
+    if ($result->ase !== null) {
+      throw $result->ase;
     }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getChildDataProducts failed: unknown result");
   }
 
 }
 
-class Airavata_isUserExists_args {
+// HELPER FUNCTIONS AND STRUCTURES
+
+class Airavata_getAPIVersion_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12620,31 +12505,17 @@ class Airavata_isUserExists_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
-        2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_isUserExists_args';
+    return 'Airavata_getAPIVersion_args';
   }
 
   public function read($input)
@@ -12670,20 +12541,6 @@ class Airavata_isUserExists_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -12696,7 +12553,7 @@ class Airavata_isUserExists_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isUserExists_args');
+    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -12705,16 +12562,6 @@ class Airavata_isUserExists_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -12722,11 +12569,11 @@ class Airavata_isUserExists_args {
 
 }
 
-class Airavata_isUserExists_result {
+class Airavata_getAPIVersion_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var string
    */
   public $success = null;
   /**
@@ -12751,7 +12598,7 @@ class Airavata_isUserExists_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -12795,7 +12642,7 @@ class Airavata_isUserExists_result {
   }
 
   public function getName() {
-    return 'Airavata_isUserExists_result';
+    return 'Airavata_getAPIVersion_result';
   }
 
   public function read($input)
@@ -12814,8 +12661,8 @@ class Airavata_isUserExists_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12864,10 +12711,10 @@ class Airavata_isUserExists_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isUserExists_result');
+    $xfer += $output->writeStructBegin('Airavata_getAPIVersion_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -12897,7 +12744,7 @@ class Airavata_isUserExists_result {
 
 }
 
-class Airavata_addGateway_args {
+class Airavata_isUserExists_args {
   static $_TSPEC;
 
   /**
@@ -12905,9 +12752,13 @@ class Airavata_addGateway_args {
    */
   public $authzToken = null;
   /**
-   * @var \Airavata\Model\Workspace\Gateway
+   * @var string
    */
-  public $gateway = null;
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12918,9 +12769,12 @@ class Airavata_addGateway_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gateway',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
           ),
         );
     }
@@ -12928,14 +12782,17 @@ class Airavata_addGateway_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gateway'])) {
-        $this->gateway = $vals['gateway'];
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_addGateway_args';
+    return 'Airavata_isUserExists_args';
   }
 
   public function read($input)
@@ -12962,9 +12819,15 @@ class Airavata_addGateway_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->gateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->gateway->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12981,7 +12844,7 @@ class Airavata_addGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_isUserExists_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -12990,12 +12853,14 @@ class Airavata_addGateway_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gateway !== null) {
-      if (!is_object($this->gateway)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 2);
-      $xfer += $this->gateway->write($output);
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -13005,11 +12870,11 @@ class Airavata_addGateway_args {
 
 }
 
-class Airavata_addGateway_result {
+class Airavata_isUserExists_result {
   static $_TSPEC;
 
   /**
-   * @var string
+   * @var bool
    */
   public $success = null;
   /**
@@ -13034,7 +12899,7 @@ class Airavata_addGateway_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -13078,7 +12943,7 @@ class Airavata_addGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_addGateway_result';
+    return 'Airavata_isUserExists_result';
   }
 
   public function read($input)
@@ -13097,8 +12962,8 @@ class Airavata_addGateway_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -13147,10 +13012,10 @@ class Airavata_addGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_isUserExists_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -13180,7 +13045,7 @@ class Airavata_addGateway_result {
 
 }
 
-class Airavata_updateGateway_args {
+class Airavata_addGateway_args {
   static $_TSPEC;
 
   /**
@@ -13188,13 +13053,9 @@ class Airavata_updateGateway_args {
    */
   public $authzToken = null;
   /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
    * @var \Airavata\Model\Workspace\Gateway
    */
-  public $updatedGateway = null;
+  public $gateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -13205,11 +13066,7 @@ class Airavata_updateGateway_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'updatedGateway',
+          'var' => 'gateway',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Gateway',
           ),
@@ -13219,17 +13076,14 @@ class Airavata_updateGateway_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['updatedGateway'])) {
-        $this->updatedGateway = $vals['updatedGateway'];
+      if (isset($vals['gateway'])) {
+        $this->gateway = $vals['gateway'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_args';
+    return 'Airavata_addGateway_args';
   }
 
   public function read($input)
@@ -13256,16 +13110,9 @@ class Airavata_updateGateway_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
           if ($ftype == TType::STRUCT) {
-            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->updatedGateway->read($input);
+            $this->gateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->gateway->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -13282,7 +13129,7 @@ class Airavata_updateGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_addGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13291,17 +13138,12 @@ class Airavata_updateGateway_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedGateway !== null) {
-      if (!is_object($this->updatedGateway)) {
+    if ($this->gateway !== null) {
+      if (!is_object($this->gateway)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 3);
-      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldBegin('gateway', TType::STRUCT, 2);
+      $xfer += $this->gateway->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -13311,10 +13153,14 @@ class Airavata_updateGateway_args {
 
 }
 
-class Airavata_updateGateway_result {
+class Airavata_addGateway_result {
   static $_TSPEC;
 
   /**
+   * @var string
+   */
+  public $success = null;
+  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -13334,6 +13180,10 @@ class Airavata_updateGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -13357,6 +13207,9 @@ class Airavata_updateGateway_result {
         );
     }
     if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -13373,7 +13226,7 @@ class Airavata_updateGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_updateGateway_result';
+    return 'Airavata_addGateway_result';
   }
 
   public function read($input)
@@ -13391,6 +13244,13 @@ class Airavata_updateGateway_result {
       }
       switch ($fid)
       {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -13435,7 +13295,12 @@ class Airavata_updateGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_addGateway_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -13463,7 +13328,7 @@ class Airavata_updateGateway_result {
 
 }
 
-class Airavata_getGateway_args {
+class Airavata_updateGateway_args {
   static $_TSPEC;
 
   /**
@@ -13474,6 +13339,10 @@ class Airavata_getGateway_args {
    * @var string
    */
   public $gatewayId = null;
+  /**
+   * @var \Airavata\Model\Workspace\Gateway
+   */
+  public $updatedGateway = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -13487,6 +13356,11 @@ class Airavata_getGateway_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
+        3 => array(
+          'var' => 'updatedGateway',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -13496,11 +13370,14 @@ class Airavata_getGateway_args {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['updatedGateway'])) {
+        $this->updatedGateway = $vals['updatedGateway'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getGateway_args';
+    return 'Airavata_updateGateway_args';
   }
 
   public function read($input)
@@ -13533,6 +13410,14 @@ class Airavata_getGateway_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->updatedGateway = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->updatedGateway->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -13545,7 +13430,7 @@ class Airavata_getGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13559,6 +13444,14 @@ class Airavata_getGateway_args {
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->updatedGateway !== null) {
+      if (!is_object($this->updatedGateway)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('updatedGateway', TType::STRUCT, 3);
+      $xfer += $this->updatedGateway->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -13566,14 +13459,10 @@ class Airavata_getGateway_args {
 
 }
 
-class Airavata_getGateway_result {
+class Airavata_updateGateway_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Workspace\Gateway
-   */
-  public $success = null;
-  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -13593,11 +13482,6 @@ class Airavata_getGateway_result {
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Gateway',
-          ),
         1 => array(
           'var' => 'ire',
           'type' => TType::STRUCT,
@@ -13621,9 +13505,6 @@ class Airavata_getGateway_result {
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
       if (isset($vals['ire'])) {
         $this->ire = $vals['ire'];
       }
@@ -13640,7 +13521,7 @@ class Airavata_getGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_getGateway_result';
+    return 'Airavata_updateGateway_result';
   }
 
   public function read($input)
@@ -13658,14 +13539,6 @@ class Airavata_getGateway_result {
       }
       switch ($fid)
       {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\Workspace\Gateway();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         case 1:
           if ($ftype == TType::STRUCT) {
             $this->ire = new \Airavata\API\Error\InvalidRequestException();
@@ -13710,15 +13583,7 @@ class Airavata_getGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
-    if ($this->success !== null) {
-      if (!is_object($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
-      $xfer += $this->success->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
+    $xfer += $output->writeStructBegin('Airavata_updateGateway_result');
     if ($this->ire !== null) {
       $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
       $xfer += $this->ire->write($output);
@@ -13746,7 +13611,7 @@ class Airavata_getGateway_result {
 
 }
 
-class Airavata_deleteGateway_args {
+class Airavata_getGateway_args {
   static $_TSPEC;
 
   /**
@@ -13783,7 +13648,7 @@ class Airavata_deleteGateway_args {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_args';
+    return 'Airavata_getGateway_args';
   }
 
   public function read($input)
@@ -13828,7 +13693,7 @@ class Airavata_deleteGateway_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -13849,11 +13714,11 @@ class Airavata_deleteGateway_args {
 
 }
 
-class Airavata_deleteGateway_result {
+class Airavata_getGateway_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var \Airavata\Model\Workspace\Gateway
    */
   public $success = null;
   /**
@@ -13878,7 +13743,8 @@ class Airavata_deleteGateway_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Workspace\Gateway',
           ),
         1 => array(
           'var' => 'ire',
@@ -13922,7 +13788,7 @@ class Airavata_deleteGateway_result {
   }
 
   public function getName() {
-    return 'Airavata_deleteGateway_result';
+    return 'Airavata_getGateway_result';
   }
 
   public function read($input)
@@ -13941,8 +13807,9 @@ class Airavata_deleteGateway_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Workspace\Gateway();
+            $xfer += $this->success->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -13991,10 +13858,13 @@ class Airavata_deleteGateway_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
+    $xfer += $output->writeStructBegin('Airavata_getGateway_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14024,13 +13894,17 @@ class Airavata_deleteGateway_result {
 
 }
 
-class Airavata_getAllGateways_args {
+class Airavata_deleteGateway_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14040,17 +13914,24 @@ class Airavata_getAllGateways_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_args';
+    return 'Airavata_deleteGateway_args';
   }
 
   public function read($input)
@@ -14076,6 +13957,13 @@ class Airavata_getAllGateways_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14088,7 +13976,7 @@ class Airavata_getAllGateways_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14097,6 +13985,11 @@ class Airavata_getAllGateways_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14104,11 +13997,11 @@ class Airavata_getAllGateways_args {
 
 }
 
-class Airavata_getAllGateways_result {
+class Airavata_deleteGateway_result {
   static $_TSPEC;
 
   /**
-   * @var \Airavata\Model\Workspace\Gateway[]
+   * @var bool
    */
   public $success = null;
   /**
@@ -14133,12 +14026,7 @@ class Airavata_getAllGateways_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Gateway',
-            ),
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -14182,7 +14070,7 @@ class Airavata_getAllGateways_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllGateways_result';
+    return 'Airavata_deleteGateway_result';
   }
 
   public function read($input)
@@ -14201,19 +14089,8 @@ class Airavata_getAllGateways_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::LST) {
-            $this->success = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
-            {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Workspace\Gateway();
-              $xfer += $elem5->read($input);
-              $this->success []= $elem5;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14262,22 +14139,10 @@ class Airavata_getAllGateways_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
+    $xfer += $output->writeStructBegin('Airavata_deleteGateway_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->success));
-        {
-          foreach ($this->success as $iter6)
-          {
-            $xfer += $iter6->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14307,17 +14172,13 @@ class Airavata_getAllGateways_result {
 
 }
 
-class Airavata_isGatewayExist_args {
+class Airavata_getAllGateways_args {
   static $_TSPEC;
 
   /**
    * @var \Airavata\Model\Security\AuthzToken
    */
   public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14327,24 +14188,17 @@ class Airavata_isGatewayExist_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
-        2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_args';
+    return 'Airavata_getAllGateways_args';
   }
 
   public function read($input)
@@ -14370,13 +14224,6 @@ class Airavata_isGatewayExist_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14389,7 +14236,7 @@ class Airavata_isGatewayExist_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14398,11 +14245,6 @@ class Airavata_isGatewayExist_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14410,11 +14252,11 @@ class Airavata_isGatewayExist_args {
 
 }
 
-class Airavata_isGatewayExist_result {
+class Airavata_getAllGateways_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var \Airavata\Model\Workspace\Gateway[]
    */
   public $success = null;
   /**
@@ -14439,7 +14281,12 @@ class Airavata_isGatewayExist_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Workspace\Gateway',
+            ),
           ),
         1 => array(
           'var' => 'ire',
@@ -14483,7 +14330,7 @@ class Airavata_isGatewayExist_result {
   }
 
   public function getName() {
-    return 'Airavata_isGatewayExist_result';
+    return 'Airavata_getAllGateways_result';
   }
 
   public function read($input)
@@ -14502,8 +14349,19 @@ class Airavata_isGatewayExist_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Workspace\Gateway();
+              $xfer += $elem5->read($input);
+              $this->success []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14552,10 +14410,22 @@ class Airavata_isGatewayExist_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllGateways_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14585,7 +14455,7 @@ class Airavata_isGatewayExist_result {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_args {
+class Airavata_isGatewayExist_args {
   static $_TSPEC;
 
   /**
@@ -14596,10 +14466,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
    * @var string
    */
   public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14613,10 +14479,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
-        3 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
@@ -14626,14 +14488,11 @@ class Airavata_generateAndRegisterSSHKeys_args {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_args';
+    return 'Airavata_isGatewayExist_args';
   }
 
   public function read($input)
@@ -14666,13 +14525,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14685,7 +14537,7 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14699,11 +14551,6 @@ class Airavata_generateAndRegisterSSHKeys_args {
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14711,11 +14558,11 @@ class Airavata_generateAndRegisterSSHKeys_args {
 
 }
 
-class Airavata_generateAndRegisterSSHKeys_result {
+class Airavata_isGatewayExist_result {
   static $_TSPEC;
 
   /**
-   * @var string
+   * @var bool
    */
   public $success = null;
   /**
@@ -14730,13 +14577,17 @@ class Airavata_generateAndRegisterSSHKeys_result {
    * @var \Airavata\API\Error\AiravataSystemException
    */
   public $ase = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -14753,6 +14604,11 @@ class Airavata_generateAndRegisterSSHKeys_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
+        4 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
         );
     }
     if (is_array($vals)) {
@@ -14768,11 +14624,14 @@ class Airavata_generateAndRegisterSSHKeys_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_generateAndRegisterSSHKeys_result';
+    return 'Airavata_isGatewayExist_result';
   }
 
   public function read($input)
@@ -14791,8 +14650,8 @@ class Airavata_generateAndRegisterSSHKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14821,6 +14680,14 @@ class Airavata_generateAndRegisterSSHKeys_result {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -14833,10 +14700,10 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_isGatewayExist_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -14854,6 +14721,11 @@ class Airavata_generateAndRegisterSSHKeys_result {
       $xfer += $this->ase->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14861,7 +14733,7 @@ class Airavata_generateAndRegisterSSHKeys_result {
 
 }
 
-class Airavata_getSSHPubKey_args {
+class Airavata_generateAndRegisterSSHKeys_args {
   static $_TSPEC;
 
   /**
@@ -14871,11 +14743,11 @@ class Airavata_getSSHPubKey_args {
   /**
    * @var string
    */
-  public $airavataCredStoreToken = null;
+  public $gatewayId = null;
   /**
    * @var string
    */
-  public $gatewayId = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -14886,11 +14758,11 @@ class Airavata_getSSHPubKey_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'airavataCredStoreToken',
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'gatewayId',
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
         );
@@ -14899,17 +14771,17 @@ class Airavata_getSSHPubKey_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['airavataCredStoreToken'])) {
-        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
-      }
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
     }
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_args';
+    return 'Airavata_generateAndRegisterSSHKeys_args';
   }
 
   public function read($input)
@@ -14937,14 +14809,14 @@ class Airavata_getSSHPubKey_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->airavataCredStoreToken);
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -14961,7 +14833,7 @@ class Airavata_getSSHPubKey_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -14970,16 +14842,16 @@ class Airavata_getSSHPubKey_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->airavataCredStoreToken !== null) {
-      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
-      $xfer += $output->writeString($this->airavataCredStoreToken);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 3);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -14987,7 +14859,7 @@ class Airavata_getSSHPubKey_args {
 
 }
 
-class Airavata_getSSHPubKey_result {
+class Airavata_generateAndRegisterSSHKeys_result {
   static $_TSPEC;
 
   /**
@@ -15048,7 +14920,7 @@ class Airavata_getSSHPubKey_result {
   }
 
   public function getName() {
-    return 'Airavata_getSSHPubKey_result';
+    return 'Airavata_generateAndRegisterSSHKeys_result';
   }
 
   public function read($input)
@@ -15109,7 +14981,7 @@ class Airavata_getSSHPubKey_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
+    $xfer += $output->writeStructBegin('Airavata_generateAndRegisterSSHKeys_result');
     if ($this->success !== null) {
       $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
       $xfer += $output->writeString($this->success);
@@ -15137,7 +15009,7 @@ class Airavata_getSSHPubKey_result {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_args {
+class Airavata_getSSHPubKey_args {
   static $_TSPEC;
 
   /**
@@ -15147,7 +15019,11 @@ class Airavata_getAllUserSSHPubKeys_args {
   /**
    * @var string
    */
-  public $userName = null;
+  public $airavataCredStoreToken = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -15158,7 +15034,11 @@ class Airavata_getAllUserSSHPubKeys_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'userName',
+          'var' => 'airavataCredStoreToken',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         );
@@ -15167,14 +15047,17 @@ class Airavata_getAllUserSSHPubKeys_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
+      if (isset($vals['airavataCredStoreToken'])) {
+        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_args';
+    return 'Airavata_getSSHPubKey_args';
   }
 
   public function read($input)
@@ -15202,7 +15085,14 @@ class Airavata_getAllUserSSHPubKeys_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
+            $xfer += $input->readString($this->airavataCredStoreToken);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15219,7 +15109,7 @@ class Airavata_getAllUserSSHPubKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15228,9 +15118,14 @@ class Airavata_getAllUserSSHPubKeys_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
+    if ($this->airavataCredStoreToken !== null) {
+      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
+      $xfer += $output->writeString($this->airavataCredStoreToken);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -15240,11 +15135,11 @@ class Airavata_getAllUserSSHPubKeys_args {
 
 }
 
-class Airavata_getAllUserSSHPubKeys_result {
+class Airavata_getSSHPubKey_result {
   static $_TSPEC;
 
   /**
-   * @var array
+   * @var string
    */
   public $success = null;
   /**
@@ -15265,15 +15160,7 @@ class Airavata_getAllUserSSHPubKeys_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
+          'type' => TType::STRING,
           ),
         1 => array(
           'var' => 'ire',
@@ -15309,7 +15196,7 @@ class Airavata_getAllUserSSHPubKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllUserSSHPubKeys_result';
+    return 'Airavata_getSSHPubKey_result';
   }
 
   public function read($input)
@@ -15328,21 +15215,8 @@ class Airavata_getAllUserSSHPubKeys_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::MAP) {
-            $this->success = array();
-            $_size7 = 0;
-            $_ktype8 = 0;
-            $_vtype9 = 0;
-            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
-            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
-            {
-              $key12 = '';
-              $val13 = '';
-              $xfer += $input->readString($key12);
-              $xfer += $input->readString($val13);
-              $this->success[$key12] = $val13;
-            }
-            $xfer += $input->readMapEnd();
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15383,23 +15257,10 @@ class Airavata_getAllUserSSHPubKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_getSSHPubKey_result');
     if ($this->success !== null) {
-      if (!is_array($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
-        {
-          foreach ($this->success as $kiter14 => $viter15)
-          {
-            $xfer += $output->writeString($kiter14);
-            $xfer += $output->writeString($viter15);
-          }
-        }
-        $output->writeMapEnd();
-      }
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -15424,7 +15285,7 @@ class Airavata_getAllUserSSHPubKeys_result {
 
 }
 
-class Airavata_getAllGatewaySSHPubKeys_args {
+class Airavata_getAllUserSSHPubKeys_args {
   static $_TSPEC;
 
   /**
@@ -15434,7 +15295,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
   /**
    * @var string
    */
-  public $gatewayId = null;
+  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -15445,7 +15306,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gatewayId',
+          'var' => 'userName',
           'type' => TType::STRING,
           ),
         );
@@ -15454,14 +15315,14 @@ class Airavata_getAllGatewaySSHPubKeys_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_getAllGatewaySSHPubKeys_args';
+    return 'Airavata_getAllUserSSHPubKeys_args';
   }
 
   public function read($input)
@@ -15489,7 +15350,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
+            $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15506,7 +15367,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_args');
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15515,9 +15376,9 @@ class Airavata_getAllGatewaySSHPubKeys_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -15527,7 +15388,7 @@ class Airavata_getAllGatewaySSHPubKeys_args {
 
 }
 
-class Airavata_getAllGatewaySSHPubKeys_result {
+class Airavata_getAllUserSSHPubKeys_result {
   static $_TSPEC;
 
   /**
@@ -15596,7 +15457,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
   }
 
   public function getName() {
-    return 'Airavata_getAllGatewaySSHPubKeys_result';
+    return 'Airavata_getAllUserSSHPubKeys_result';
   }
 
   public function read($input)
@@ -15617,17 +15478,17 @@ class Airavata_getAllGatewaySSHPubKeys_result {
         case 0:
           if ($ftype == TType::MAP) {
             $this->success = array();
-            $_size16 = 0;
-            $_ktype17 = 0;
-            $_vtype18 = 0;
-            $xfer += $input->readMapBegin($_ktype17, $_vtype18, $_size16);
-            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
+            $_size7 = 0;
+            $_ktype8 = 0;
+            $_vtype9 = 0;
+            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
             {
-              $key21 = '';
-              $val22 = '';
-              $xfer += $input->readString($key21);
-              $xfer += $input->readString($val22);
-              $this->success[$key21] = $val22;
+              $key12 = '';
+              $val13 = '';
+              $xfer += $input->readString($key12);
+              $xfer += $input->readString($val13);
+              $this->success[$key12] = $val13;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -15670,7 +15531,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllUserSSHPubKeys_result');
     if ($this->success !== null) {
       if (!is_array($this->success)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15679,10 +15540,10 @@ class Airavata_getAllGatewaySSHPubKeys_result {
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
         {
-          foreach ($this->success as $kiter23 => $viter24)
+          foreach ($this->success as $kiter14 => $viter15)
           {
-            $xfer += $output->writeString($kiter23);
-            $xfer += $output->writeString($viter24);
+            $xfer += $output->writeString($kiter14);
+            $xfer += $output->writeString($viter15);
           }
         }
         $output->writeMapEnd();
@@ -15711,7 +15572,7 @@ class Airavata_getAllGatewaySSHPubKeys_result {
 
 }
 
-class Airavata_deleteSSHPubKey_args {
+class Airavata_getAllGatewaySSHPubKeys_args {
   static $_TSPEC;
 
   /**
@@ -15721,10 +15582,6 @@ class Airavata_deleteSSHPubKey_args {
   /**
    * @var string
    */
-  public $airavataCredStoreToken = null;
-  /**
-   * @var string
-   */
   public $gatewayId = null;
 
   public function __construct($vals=null) {
@@ -15736,10 +15593,6 @@ class Airavata_deleteSSHPubKey_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'airavataCredStoreToken',
-          'type' => TType::STRING,
-          ),
-        3 => array(
           'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
@@ -15749,9 +15602,6 @@ class Airavata_deleteSSHPubKey_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['airavataCredStoreToken'])) {
-        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
-      }
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
@@ -15759,7 +15609,7 @@ class Airavata_deleteSSHPubKey_args {
   }
 
   public function getName() {
-    return 'Airavata_deleteSSHPubKey_args';
+    return 'Airavata_getAllGatewaySSHPubKeys_args';
   }
 
   public function read($input)
@@ -15787,13 +15637,6 @@ class Airavata_deleteSSHPubKey_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->airavataCredStoreToken);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
@@ -15811,7 +15654,7 @@ class Airavata_deleteSSHPubKey_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteSSHPubKey_args');
+    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -15820,13 +15663,8 @@ class Airavata_deleteSSHPubKey_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->airavataCredStoreToken !== null) {
-      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
-      $xfer += $output->writeString($this->airavataCredStoreToken);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
@@ -15837,11 +15675,11 @@ class Airavata_deleteSSHPubKey_args {
 
 }
 
-class Airavata_deleteSSHPubKey_result {
+class Airavata_getAllGatewaySSHPubKeys_result {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var array
    */
   public $success = null;
   /**
@@ -15862,7 +15700,15 @@ class Airavata_deleteSSHPubKey_result {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::BOOL,
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
           ),
         1 => array(
           'var' => 'ire',
@@ -15898,7 +15744,7 @@ class Airavata_deleteSSHPubKey_result {
   }
 
   public function getName() {
-    return 'Airavata_deleteSSHPubKey_result';
+    return 'Airavata_getAllGatewaySSHPubKeys_result';
   }
 
   public function read($input)
@@ -15917,8 +15763,21 @@ class Airavata_deleteSSHPubKey_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
+          if ($ftype == TType::MAP) {
+            $this->success = array();
+            $_size16 = 0;
+            $_ktype17 = 0;
+            $_vtype18 = 0;
+            $xfer += $input->readMapBegin($_ktype17, $_vtype18, $_size16);
+            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
+            {
+              $key21 = '';
+              $val22 = '';
+              $xfer += $input->readString($key21);
+              $xfer += $input->readString($val22);
+              $this->success[$key21] = $val22;
+            }
+            $xfer += $input->readMapEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -15959,10 +15818,23 @@ class Airavata_deleteSSHPubKey_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_deleteSSHPubKey_result');
+    $xfer += $output->writeStructBegin('Airavata_getAllGatewaySSHPubKeys_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::MAP, 0);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
+        {
+          foreach ($this->success as $kiter23 => $viter24)
+          {
+            $xfer += $output->writeString($kiter23);
+            $xfer += $output->writeString($viter24);
+          }
+        }
+        $output->writeMapEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -15987,7 +15859,7 @@ class Airavata_deleteSSHPubKey_result {
 
 }
 
-class Airavata_createProject_args {
+class Airavata_deleteSSHPubKey_args {
   static $_TSPEC;
 
   /**
@@ -15997,11 +15869,11 @@ class Airavata_createProject_args {
   /**
    * @var string
    */
-  public $gatewayId = null;
+  public $airavataCredStoreToken = null;
   /**
-   * @var \Airavata\Model\Workspace\Project
+   * @var string
    */
-  public $project = null;
+  public $gatewayId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -16012,13 +15884,12 @@ class Airavata_createProject_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'gatewayId',
+          'var' => 'airavataCredStoreToken',
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'project',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Project',
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
           ),
         );
     }
@@ -16026,17 +15897,17 @@ class Airavata_createProject_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
+      if (isset($vals['airavataCredStoreToken'])) {
+        $this->airavataCredStoreToken = $vals['airavataCredStoreToken'];
+      }
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['project'])) {
-        $this->project = $vals['project'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_createProject_args';
+    return 'Airavata_deleteSSHPubKey_args';
   }
 
   public function read($input)
@@ -16064,15 +15935,14 @@ class Airavata_createProject_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
+            $xfer += $input->readString($this->airavataCredStoreToken);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->project = new \Airavata\Model\Workspace\Project();
-            $xfer += $this->project->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -16089,7 +15959,7 @@ class Airavata_createProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_createProject_args');
+    $xfer += $output->writeStructBegin('Airavata_deleteSSHPubKey_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -16098,17 +15968,14 @@ class Airavata_createProject_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
+    if ($this->airavataCredStoreToken !== null) {
+      $xfer += $output->writeFieldBegin('airavataCredStoreToken', TType::STRING, 2);
+      $xfer += $output->writeString($this->airavataCredStoreToken);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->project !== null) {
-      if (!is_object($this->project)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('project', TType::STRUCT, 3);
-      $xfer += $this->project->write($output);
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
+      $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -16118,11 +15985,11 @@ class Airavata_createProject_args {
 
 }
 
-class Airavata_createProject_result {
+class Airavata_deleteSSHPubKey_result {
   static $_TSPEC;
 
   /**
-   * @var string
+   * @var bool
    */
   public $success = null;
   /**
@@ -16137,17 +16004,13 @@ class Airavata_createProject_result {
    * @var \Airavata\API\Error\AiravataSystemException
    */
   public $ase = null;
-  /**
-   * @var \Airavata\API\Error\AuthorizationException
-   */
-  public $ae = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         0 => array(
           'var' => 'success',
-          'type' => TType::STRING,
+          'type' => TType::BOOL,
           ),
         1 => array(
           'var' => 'ire',
@@ -16164,11 +16027,6 @@ class Airavata_createProject_result {
           'type' => TType::STRUCT,
           'class' => '\Airavata\API\Error\AiravataSystemException',
           ),
-        4 => array(
-          'var' => 'ae',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AuthorizationException',
-          ),
         );
     }
     if (is_array($vals)) {
@@ -16184,14 +16042,11 @@ class Airavata_createProject_result {
       if (isset($vals['ase'])) {
         $this->ase = $vals['ase'];
       }
-      if (isset($vals['ae'])) {
-        $this->ae = $vals['ae'];
-      }
     }
   }
 
   public function getName() {
-    return 'Airavata_createProject_result';
+    return 'Airavata_deleteSSHPubKey_result';
   }
 
   public function read($input)
@@ -16210,8 +16065,8 @@ class Airavata_createProject_result {
       switch ($fid)
       {
         case 0:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->success);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -16240,14 +16095,6 @@ class Airavata_createProject_result {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->ae = new \Airavata\API\Error\AuthorizationException();
-            $xfer += $this->ae->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -16260,10 +16107,10 @@ class Airavata_createProject_result {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_createProject_result');
+    $xfer += $output->writeStructBegin('Airavata_deleteSSHPubKey_result');
     if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
-      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->ire !== null) {
@@ -16281,11 +16128,6 @@ class Airavata_createProject_result {
       $xfer += $this->ase->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
-      $xfer += $this->ae->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -16293,7 +16135,7 @@ class Airavata_createProject_result {
 
 }
 
-class Airavata_updateProject_args {
+class Airavata_createProject_args {
   static $_TSPEC;
 
   /**
@@ -16303,11 +16145,11 @@ class Airavata_updateProject_args {
   /**
    * @var string
    */
-  public $projectId = null;
+  public $gatewayId = null;
   /**
    * @var \Airavata\Model\Workspace\Project
    */
-  public $updatedProject = null;
+  public $project = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -16318,11 +16160,11 @@ class Airavata_updateProject_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'projectId',
+          'var' => 'gatewayId',
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'updatedProject',
+          'var' => 'project',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Project',
           ),
@@ -16332,17 +16174,17 @@ class Airavata_updateProject_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['projectId'])) {
-        $this->projectId = $vals['projectId'];
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
       }
-      if (isset($vals['updatedProject'])) {
-        $this->updatedProject = $vals['updatedProject'];
+      if (isset($vals['project'])) {
+        $this->project = $vals['project'];
       }
     }
   }
 
   public function getName() {
-    return 'Airavata_updateProject_args';
+    return 'Airavata_createProject_args';
   }
 
   public function read($input)
@@ -16370,15 +16212,15 @@ class Airavata_updateProject_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->projectId);
+            $xfer += $input->readString($this->gatewayId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
           if ($ftype == TType::STRUCT) {
-            $this->updatedProject = new \Airavata\Model\Workspace\Project();
-            $xfer += $this->updatedProject->read($input);
+            $this->project = new \Airavata\Model\Workspace\Project();
+            $xfer += $this->project->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -16395,7 +16237,7 @@ class Airavata_updateProject_args {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_updateProject_args');
+    $xfer += $output->writeStructBegin('Airavata_createProject_args');
     if ($this->authzToken !== null) {
       if (!is_object($this->authzToken)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
@@ -16404,17 +16246,17 @@ class Airavata_updateProject_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->projectId !== null) {
-      $xfer += $output->writeFieldBegin('projectId', TType::STRING, 2);
-      $xfer += $output->writeString($this->projectId);
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->updatedProject !== null) {
-      if (!is_object($this->updatedProject)) {
+    if ($this->project !== null) {
+      if (!is_object($this->project)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('updatedProject', TType::STRUCT, 3);
-      $xfer += $this->updatedProject->write($output);
+      $xfer += $output->writeFieldBegin('project', TType::STRUCT, 3);
+      $xfer += $this->project->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -16424,10 +16266,14 @@ class Airavata_updateProject_args {
 
 }
 
-class Airavata_updateProject_result {
+class Airavata_createProject_result {
   static $_TSPEC;
 
   /**
+   * @var string
+   */
+  public $success = null;
+  /**
    * @var \Airavata\API\Error\InvalidRequestException
    */
   public $ire = null;
@@ -16440,10 +16286,

<TRUNCATED>

[25/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
new file mode 100644
index 0000000..91a3948
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
@@ -0,0 +1,1635 @@
+/**
+ * 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.data.replica;
+
+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-03-24")
+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");
+
+  private static final org.apache.thrift.protocol.TField REPLICA_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("productUri", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField REPLICA_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaName", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField REPLICA_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaDescription", org.apache.thrift.protocol.TType.STRING, (short)4);
+  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)5);
+  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)6);
+  private static final org.apache.thrift.protocol.TField VALID_UNTIL_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntilTime", org.apache.thrift.protocol.TType.I64, (short)7);
+  private static final org.apache.thrift.protocol.TField REPLICA_LOCATION_CATEGORY_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocationCategory", org.apache.thrift.protocol.TType.I32, (short)8);
+  private static final org.apache.thrift.protocol.TField REPLICA_PERSISTENT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaPersistentType", org.apache.thrift.protocol.TType.I32, (short)9);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)10);
+  private static final org.apache.thrift.protocol.TField FILE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("filePath", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField REPLICA_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new DataReplicaLocationModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new DataReplicaLocationModelTupleSchemeFactory());
+  }
+
+  private String replicaId; // optional
+  private String productUri; // optional
+  private String replicaName; // optional
+  private String replicaDescription; // optional
+  private long creationTime; // optional
+  private long lastModifiedTime; // optional
+  private long validUntilTime; // optional
+  private ReplicaLocationCategory replicaLocationCategory; // optional
+  private ReplicaPersistentType replicaPersistentType; // optional
+  private String storageResourceId; // optional
+  private String filePath; // optional
+  private Map<String,String> replicaMetadata; // 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 {
+    REPLICA_ID((short)1, "replicaId"),
+    PRODUCT_URI((short)2, "productUri"),
+    REPLICA_NAME((short)3, "replicaName"),
+    REPLICA_DESCRIPTION((short)4, "replicaDescription"),
+    CREATION_TIME((short)5, "creationTime"),
+    LAST_MODIFIED_TIME((short)6, "lastModifiedTime"),
+    VALID_UNTIL_TIME((short)7, "validUntilTime"),
+    /**
+     * 
+     * @see ReplicaLocationCategory
+     */
+    REPLICA_LOCATION_CATEGORY((short)8, "replicaLocationCategory"),
+    /**
+     * 
+     * @see ReplicaPersistentType
+     */
+    REPLICA_PERSISTENT_TYPE((short)9, "replicaPersistentType"),
+    STORAGE_RESOURCE_ID((short)10, "storageResourceId"),
+    FILE_PATH((short)11, "filePath"),
+    REPLICA_METADATA((short)12, "replicaMetadata");
+
+    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: // REPLICA_ID
+          return REPLICA_ID;
+        case 2: // PRODUCT_URI
+          return PRODUCT_URI;
+        case 3: // REPLICA_NAME
+          return REPLICA_NAME;
+        case 4: // REPLICA_DESCRIPTION
+          return REPLICA_DESCRIPTION;
+        case 5: // CREATION_TIME
+          return CREATION_TIME;
+        case 6: // LAST_MODIFIED_TIME
+          return LAST_MODIFIED_TIME;
+        case 7: // VALID_UNTIL_TIME
+          return VALID_UNTIL_TIME;
+        case 8: // REPLICA_LOCATION_CATEGORY
+          return REPLICA_LOCATION_CATEGORY;
+        case 9: // REPLICA_PERSISTENT_TYPE
+          return REPLICA_PERSISTENT_TYPE;
+        case 10: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
+        case 11: // FILE_PATH
+          return FILE_PATH;
+        case 12: // REPLICA_METADATA
+          return REPLICA_METADATA;
+        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 __CREATIONTIME_ISSET_ID = 0;
+  private static final int __LASTMODIFIEDTIME_ISSET_ID = 1;
+  private static final int __VALIDUNTILTIME_ISSET_ID = 2;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.REPLICA_ID,_Fields.PRODUCT_URI,_Fields.REPLICA_NAME,_Fields.REPLICA_DESCRIPTION,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.VALID_UNTIL_TIME,_Fields.REPLICA_LOCATION_CATEGORY,_Fields.REPLICA_PERSISTENT_TYPE,_Fields.STORAGE_RESOURCE_ID,_Fields.FILE_PATH,_Fields.REPLICA_METADATA};
+  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.REPLICA_ID, new org.apache.thrift.meta_data.FieldMetaData("replicaId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("productUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.REPLICA_NAME, new org.apache.thrift.meta_data.FieldMetaData("replicaName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.REPLICA_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("replicaDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    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)));
+    tmpMap.put(_Fields.LAST_MODIFIED_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastModifiedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.VALID_UNTIL_TIME, new org.apache.thrift.meta_data.FieldMetaData("validUntilTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.REPLICA_LOCATION_CATEGORY, new org.apache.thrift.meta_data.FieldMetaData("replicaLocationCategory", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaLocationCategory.class)));
+    tmpMap.put(_Fields.REPLICA_PERSISTENT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("replicaPersistentType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaPersistentType.class)));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.REPLICA_METADATA, new org.apache.thrift.meta_data.FieldMetaData("replicaMetadata", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataReplicaLocationModel.class, metaDataMap);
+  }
+
+  public DataReplicaLocationModel() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public DataReplicaLocationModel(DataReplicaLocationModel other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetReplicaId()) {
+      this.replicaId = other.replicaId;
+    }
+    if (other.isSetProductUri()) {
+      this.productUri = other.productUri;
+    }
+    if (other.isSetReplicaName()) {
+      this.replicaName = other.replicaName;
+    }
+    if (other.isSetReplicaDescription()) {
+      this.replicaDescription = other.replicaDescription;
+    }
+    this.creationTime = other.creationTime;
+    this.lastModifiedTime = other.lastModifiedTime;
+    this.validUntilTime = other.validUntilTime;
+    if (other.isSetReplicaLocationCategory()) {
+      this.replicaLocationCategory = other.replicaLocationCategory;
+    }
+    if (other.isSetReplicaPersistentType()) {
+      this.replicaPersistentType = other.replicaPersistentType;
+    }
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
+    if (other.isSetFilePath()) {
+      this.filePath = other.filePath;
+    }
+    if (other.isSetReplicaMetadata()) {
+      Map<String,String> __this__replicaMetadata = new HashMap<String,String>(other.replicaMetadata);
+      this.replicaMetadata = __this__replicaMetadata;
+    }
+  }
+
+  public DataReplicaLocationModel deepCopy() {
+    return new DataReplicaLocationModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.replicaId = null;
+    this.productUri = null;
+    this.replicaName = null;
+    this.replicaDescription = null;
+    setCreationTimeIsSet(false);
+    this.creationTime = 0;
+    setLastModifiedTimeIsSet(false);
+    this.lastModifiedTime = 0;
+    setValidUntilTimeIsSet(false);
+    this.validUntilTime = 0;
+    this.replicaLocationCategory = null;
+    this.replicaPersistentType = null;
+    this.storageResourceId = null;
+    this.filePath = null;
+    this.replicaMetadata = null;
+  }
+
+  public String getReplicaId() {
+    return this.replicaId;
+  }
+
+  public void setReplicaId(String replicaId) {
+    this.replicaId = replicaId;
+  }
+
+  public void unsetReplicaId() {
+    this.replicaId = null;
+  }
+
+  /** Returns true if field replicaId is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaId() {
+    return this.replicaId != null;
+  }
+
+  public void setReplicaIdIsSet(boolean value) {
+    if (!value) {
+      this.replicaId = null;
+    }
+  }
+
+  public String getProductUri() {
+    return this.productUri;
+  }
+
+  public void setProductUri(String productUri) {
+    this.productUri = productUri;
+  }
+
+  public void unsetProductUri() {
+    this.productUri = null;
+  }
+
+  /** Returns true if field productUri is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductUri() {
+    return this.productUri != null;
+  }
+
+  public void setProductUriIsSet(boolean value) {
+    if (!value) {
+      this.productUri = null;
+    }
+  }
+
+  public String getReplicaName() {
+    return this.replicaName;
+  }
+
+  public void setReplicaName(String replicaName) {
+    this.replicaName = replicaName;
+  }
+
+  public void unsetReplicaName() {
+    this.replicaName = null;
+  }
+
+  /** Returns true if field replicaName is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaName() {
+    return this.replicaName != null;
+  }
+
+  public void setReplicaNameIsSet(boolean value) {
+    if (!value) {
+      this.replicaName = null;
+    }
+  }
+
+  public String getReplicaDescription() {
+    return this.replicaDescription;
+  }
+
+  public void setReplicaDescription(String replicaDescription) {
+    this.replicaDescription = replicaDescription;
+  }
+
+  public void unsetReplicaDescription() {
+    this.replicaDescription = null;
+  }
+
+  /** Returns true if field replicaDescription is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaDescription() {
+    return this.replicaDescription != null;
+  }
+
+  public void setReplicaDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.replicaDescription = null;
+    }
+  }
+
+  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 long getLastModifiedTime() {
+    return this.lastModifiedTime;
+  }
+
+  public void setLastModifiedTime(long lastModifiedTime) {
+    this.lastModifiedTime = lastModifiedTime;
+    setLastModifiedTimeIsSet(true);
+  }
+
+  public void unsetLastModifiedTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
+  }
+
+  /** Returns true if field lastModifiedTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetLastModifiedTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
+  }
+
+  public void setLastModifiedTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID, value);
+  }
+
+  public long getValidUntilTime() {
+    return this.validUntilTime;
+  }
+
+  public void setValidUntilTime(long validUntilTime) {
+    this.validUntilTime = validUntilTime;
+    setValidUntilTimeIsSet(true);
+  }
+
+  public void unsetValidUntilTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
+  }
+
+  /** Returns true if field validUntilTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetValidUntilTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
+  }
+
+  public void setValidUntilTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID, value);
+  }
+
+  /**
+   * 
+   * @see ReplicaLocationCategory
+   */
+  public ReplicaLocationCategory getReplicaLocationCategory() {
+    return this.replicaLocationCategory;
+  }
+
+  /**
+   * 
+   * @see ReplicaLocationCategory
+   */
+  public void setReplicaLocationCategory(ReplicaLocationCategory replicaLocationCategory) {
+    this.replicaLocationCategory = replicaLocationCategory;
+  }
+
+  public void unsetReplicaLocationCategory() {
+    this.replicaLocationCategory = null;
+  }
+
+  /** Returns true if field replicaLocationCategory is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaLocationCategory() {
+    return this.replicaLocationCategory != null;
+  }
+
+  public void setReplicaLocationCategoryIsSet(boolean value) {
+    if (!value) {
+      this.replicaLocationCategory = null;
+    }
+  }
+
+  /**
+   * 
+   * @see ReplicaPersistentType
+   */
+  public ReplicaPersistentType getReplicaPersistentType() {
+    return this.replicaPersistentType;
+  }
+
+  /**
+   * 
+   * @see ReplicaPersistentType
+   */
+  public void setReplicaPersistentType(ReplicaPersistentType replicaPersistentType) {
+    this.replicaPersistentType = replicaPersistentType;
+  }
+
+  public void unsetReplicaPersistentType() {
+    this.replicaPersistentType = null;
+  }
+
+  /** Returns true if field replicaPersistentType is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaPersistentType() {
+    return this.replicaPersistentType != null;
+  }
+
+  public void setReplicaPersistentTypeIsSet(boolean value) {
+    if (!value) {
+      this.replicaPersistentType = null;
+    }
+  }
+
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
+  public String getFilePath() {
+    return this.filePath;
+  }
+
+  public void setFilePath(String filePath) {
+    this.filePath = filePath;
+  }
+
+  public void unsetFilePath() {
+    this.filePath = null;
+  }
+
+  /** Returns true if field filePath is set (has been assigned a value) and false otherwise */
+  public boolean isSetFilePath() {
+    return this.filePath != null;
+  }
+
+  public void setFilePathIsSet(boolean value) {
+    if (!value) {
+      this.filePath = null;
+    }
+  }
+
+  public int getReplicaMetadataSize() {
+    return (this.replicaMetadata == null) ? 0 : this.replicaMetadata.size();
+  }
+
+  public void putToReplicaMetadata(String key, String val) {
+    if (this.replicaMetadata == null) {
+      this.replicaMetadata = new HashMap<String,String>();
+    }
+    this.replicaMetadata.put(key, val);
+  }
+
+  public Map<String,String> getReplicaMetadata() {
+    return this.replicaMetadata;
+  }
+
+  public void setReplicaMetadata(Map<String,String> replicaMetadata) {
+    this.replicaMetadata = replicaMetadata;
+  }
+
+  public void unsetReplicaMetadata() {
+    this.replicaMetadata = null;
+  }
+
+  /** Returns true if field replicaMetadata is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaMetadata() {
+    return this.replicaMetadata != null;
+  }
+
+  public void setReplicaMetadataIsSet(boolean value) {
+    if (!value) {
+      this.replicaMetadata = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case REPLICA_ID:
+      if (value == null) {
+        unsetReplicaId();
+      } else {
+        setReplicaId((String)value);
+      }
+      break;
+
+    case PRODUCT_URI:
+      if (value == null) {
+        unsetProductUri();
+      } else {
+        setProductUri((String)value);
+      }
+      break;
+
+    case REPLICA_NAME:
+      if (value == null) {
+        unsetReplicaName();
+      } else {
+        setReplicaName((String)value);
+      }
+      break;
+
+    case REPLICA_DESCRIPTION:
+      if (value == null) {
+        unsetReplicaDescription();
+      } else {
+        setReplicaDescription((String)value);
+      }
+      break;
+
+    case CREATION_TIME:
+      if (value == null) {
+        unsetCreationTime();
+      } else {
+        setCreationTime((Long)value);
+      }
+      break;
+
+    case LAST_MODIFIED_TIME:
+      if (value == null) {
+        unsetLastModifiedTime();
+      } else {
+        setLastModifiedTime((Long)value);
+      }
+      break;
+
+    case VALID_UNTIL_TIME:
+      if (value == null) {
+        unsetValidUntilTime();
+      } else {
+        setValidUntilTime((Long)value);
+      }
+      break;
+
+    case REPLICA_LOCATION_CATEGORY:
+      if (value == null) {
+        unsetReplicaLocationCategory();
+      } else {
+        setReplicaLocationCategory((ReplicaLocationCategory)value);
+      }
+      break;
+
+    case REPLICA_PERSISTENT_TYPE:
+      if (value == null) {
+        unsetReplicaPersistentType();
+      } else {
+        setReplicaPersistentType((ReplicaPersistentType)value);
+      }
+      break;
+
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
+    case FILE_PATH:
+      if (value == null) {
+        unsetFilePath();
+      } else {
+        setFilePath((String)value);
+      }
+      break;
+
+    case REPLICA_METADATA:
+      if (value == null) {
+        unsetReplicaMetadata();
+      } else {
+        setReplicaMetadata((Map<String,String>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case REPLICA_ID:
+      return getReplicaId();
+
+    case PRODUCT_URI:
+      return getProductUri();
+
+    case REPLICA_NAME:
+      return getReplicaName();
+
+    case REPLICA_DESCRIPTION:
+      return getReplicaDescription();
+
+    case CREATION_TIME:
+      return getCreationTime();
+
+    case LAST_MODIFIED_TIME:
+      return getLastModifiedTime();
+
+    case VALID_UNTIL_TIME:
+      return getValidUntilTime();
+
+    case REPLICA_LOCATION_CATEGORY:
+      return getReplicaLocationCategory();
+
+    case REPLICA_PERSISTENT_TYPE:
+      return getReplicaPersistentType();
+
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
+    case FILE_PATH:
+      return getFilePath();
+
+    case REPLICA_METADATA:
+      return getReplicaMetadata();
+
+    }
+    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 REPLICA_ID:
+      return isSetReplicaId();
+    case PRODUCT_URI:
+      return isSetProductUri();
+    case REPLICA_NAME:
+      return isSetReplicaName();
+    case REPLICA_DESCRIPTION:
+      return isSetReplicaDescription();
+    case CREATION_TIME:
+      return isSetCreationTime();
+    case LAST_MODIFIED_TIME:
+      return isSetLastModifiedTime();
+    case VALID_UNTIL_TIME:
+      return isSetValidUntilTime();
+    case REPLICA_LOCATION_CATEGORY:
+      return isSetReplicaLocationCategory();
+    case REPLICA_PERSISTENT_TYPE:
+      return isSetReplicaPersistentType();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
+    case FILE_PATH:
+      return isSetFilePath();
+    case REPLICA_METADATA:
+      return isSetReplicaMetadata();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof DataReplicaLocationModel)
+      return this.equals((DataReplicaLocationModel)that);
+    return false;
+  }
+
+  public boolean equals(DataReplicaLocationModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_replicaId = true && this.isSetReplicaId();
+    boolean that_present_replicaId = true && that.isSetReplicaId();
+    if (this_present_replicaId || that_present_replicaId) {
+      if (!(this_present_replicaId && that_present_replicaId))
+        return false;
+      if (!this.replicaId.equals(that.replicaId))
+        return false;
+    }
+
+    boolean this_present_productUri = true && this.isSetProductUri();
+    boolean that_present_productUri = true && that.isSetProductUri();
+    if (this_present_productUri || that_present_productUri) {
+      if (!(this_present_productUri && that_present_productUri))
+        return false;
+      if (!this.productUri.equals(that.productUri))
+        return false;
+    }
+
+    boolean this_present_replicaName = true && this.isSetReplicaName();
+    boolean that_present_replicaName = true && that.isSetReplicaName();
+    if (this_present_replicaName || that_present_replicaName) {
+      if (!(this_present_replicaName && that_present_replicaName))
+        return false;
+      if (!this.replicaName.equals(that.replicaName))
+        return false;
+    }
+
+    boolean this_present_replicaDescription = true && this.isSetReplicaDescription();
+    boolean that_present_replicaDescription = true && that.isSetReplicaDescription();
+    if (this_present_replicaDescription || that_present_replicaDescription) {
+      if (!(this_present_replicaDescription && that_present_replicaDescription))
+        return false;
+      if (!this.replicaDescription.equals(that.replicaDescription))
+        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;
+    }
+
+    boolean this_present_lastModifiedTime = true && this.isSetLastModifiedTime();
+    boolean that_present_lastModifiedTime = true && that.isSetLastModifiedTime();
+    if (this_present_lastModifiedTime || that_present_lastModifiedTime) {
+      if (!(this_present_lastModifiedTime && that_present_lastModifiedTime))
+        return false;
+      if (this.lastModifiedTime != that.lastModifiedTime)
+        return false;
+    }
+
+    boolean this_present_validUntilTime = true && this.isSetValidUntilTime();
+    boolean that_present_validUntilTime = true && that.isSetValidUntilTime();
+    if (this_present_validUntilTime || that_present_validUntilTime) {
+      if (!(this_present_validUntilTime && that_present_validUntilTime))
+        return false;
+      if (this.validUntilTime != that.validUntilTime)
+        return false;
+    }
+
+    boolean this_present_replicaLocationCategory = true && this.isSetReplicaLocationCategory();
+    boolean that_present_replicaLocationCategory = true && that.isSetReplicaLocationCategory();
+    if (this_present_replicaLocationCategory || that_present_replicaLocationCategory) {
+      if (!(this_present_replicaLocationCategory && that_present_replicaLocationCategory))
+        return false;
+      if (!this.replicaLocationCategory.equals(that.replicaLocationCategory))
+        return false;
+    }
+
+    boolean this_present_replicaPersistentType = true && this.isSetReplicaPersistentType();
+    boolean that_present_replicaPersistentType = true && that.isSetReplicaPersistentType();
+    if (this_present_replicaPersistentType || that_present_replicaPersistentType) {
+      if (!(this_present_replicaPersistentType && that_present_replicaPersistentType))
+        return false;
+      if (!this.replicaPersistentType.equals(that.replicaPersistentType))
+        return false;
+    }
+
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
+    boolean this_present_filePath = true && this.isSetFilePath();
+    boolean that_present_filePath = true && that.isSetFilePath();
+    if (this_present_filePath || that_present_filePath) {
+      if (!(this_present_filePath && that_present_filePath))
+        return false;
+      if (!this.filePath.equals(that.filePath))
+        return false;
+    }
+
+    boolean this_present_replicaMetadata = true && this.isSetReplicaMetadata();
+    boolean that_present_replicaMetadata = true && that.isSetReplicaMetadata();
+    if (this_present_replicaMetadata || that_present_replicaMetadata) {
+      if (!(this_present_replicaMetadata && that_present_replicaMetadata))
+        return false;
+      if (!this.replicaMetadata.equals(that.replicaMetadata))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_replicaId = true && (isSetReplicaId());
+    list.add(present_replicaId);
+    if (present_replicaId)
+      list.add(replicaId);
+
+    boolean present_productUri = true && (isSetProductUri());
+    list.add(present_productUri);
+    if (present_productUri)
+      list.add(productUri);
+
+    boolean present_replicaName = true && (isSetReplicaName());
+    list.add(present_replicaName);
+    if (present_replicaName)
+      list.add(replicaName);
+
+    boolean present_replicaDescription = true && (isSetReplicaDescription());
+    list.add(present_replicaDescription);
+    if (present_replicaDescription)
+      list.add(replicaDescription);
+
+    boolean present_creationTime = true && (isSetCreationTime());
+    list.add(present_creationTime);
+    if (present_creationTime)
+      list.add(creationTime);
+
+    boolean present_lastModifiedTime = true && (isSetLastModifiedTime());
+    list.add(present_lastModifiedTime);
+    if (present_lastModifiedTime)
+      list.add(lastModifiedTime);
+
+    boolean present_validUntilTime = true && (isSetValidUntilTime());
+    list.add(present_validUntilTime);
+    if (present_validUntilTime)
+      list.add(validUntilTime);
+
+    boolean present_replicaLocationCategory = true && (isSetReplicaLocationCategory());
+    list.add(present_replicaLocationCategory);
+    if (present_replicaLocationCategory)
+      list.add(replicaLocationCategory.getValue());
+
+    boolean present_replicaPersistentType = true && (isSetReplicaPersistentType());
+    list.add(present_replicaPersistentType);
+    if (present_replicaPersistentType)
+      list.add(replicaPersistentType.getValue());
+
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
+    boolean present_filePath = true && (isSetFilePath());
+    list.add(present_filePath);
+    if (present_filePath)
+      list.add(filePath);
+
+    boolean present_replicaMetadata = true && (isSetReplicaMetadata());
+    list.add(present_replicaMetadata);
+    if (present_replicaMetadata)
+      list.add(replicaMetadata);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(DataReplicaLocationModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetReplicaId()).compareTo(other.isSetReplicaId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaId, other.replicaId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetProductUri()).compareTo(other.isSetProductUri());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductUri()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productUri, other.productUri);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaName()).compareTo(other.isSetReplicaName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaName, other.replicaName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaDescription()).compareTo(other.isSetReplicaDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaDescription, other.replicaDescription);
+      if (lastComparison != 0) {
+        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;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLastModifiedTime()).compareTo(other.isSetLastModifiedTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLastModifiedTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastModifiedTime, other.lastModifiedTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetValidUntilTime()).compareTo(other.isSetValidUntilTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValidUntilTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validUntilTime, other.validUntilTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaLocationCategory()).compareTo(other.isSetReplicaLocationCategory());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaLocationCategory()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaLocationCategory, other.replicaLocationCategory);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaPersistentType()).compareTo(other.isSetReplicaPersistentType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaPersistentType()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaPersistentType, other.replicaPersistentType);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFilePath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaMetadata()).compareTo(other.isSetReplicaMetadata());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaMetadata()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaMetadata, other.replicaMetadata);
+      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("DataReplicaLocationModel(");
+    boolean first = true;
+
+    if (isSetReplicaId()) {
+      sb.append("replicaId:");
+      if (this.replicaId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaId);
+      }
+      first = false;
+    }
+    if (isSetProductUri()) {
+      if (!first) sb.append(", ");
+      sb.append("productUri:");
+      if (this.productUri == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.productUri);
+      }
+      first = false;
+    }
+    if (isSetReplicaName()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaName:");
+      if (this.replicaName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaName);
+      }
+      first = false;
+    }
+    if (isSetReplicaDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaDescription:");
+      if (this.replicaDescription == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaDescription);
+      }
+      first = false;
+    }
+    if (isSetCreationTime()) {
+      if (!first) sb.append(", ");
+      sb.append("creationTime:");
+      sb.append(this.creationTime);
+      first = false;
+    }
+    if (isSetLastModifiedTime()) {
+      if (!first) sb.append(", ");
+      sb.append("lastModifiedTime:");
+      sb.append(this.lastModifiedTime);
+      first = false;
+    }
+    if (isSetValidUntilTime()) {
+      if (!first) sb.append(", ");
+      sb.append("validUntilTime:");
+      sb.append(this.validUntilTime);
+      first = false;
+    }
+    if (isSetReplicaLocationCategory()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaLocationCategory:");
+      if (this.replicaLocationCategory == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaLocationCategory);
+      }
+      first = false;
+    }
+    if (isSetReplicaPersistentType()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaPersistentType:");
+      if (this.replicaPersistentType == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaPersistentType);
+      }
+      first = false;
+    }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
+    if (isSetFilePath()) {
+      if (!first) sb.append(", ");
+      sb.append("filePath:");
+      if (this.filePath == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.filePath);
+      }
+      first = false;
+    }
+    if (isSetReplicaMetadata()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaMetadata:");
+      if (this.replicaMetadata == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaMetadata);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // 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 DataReplicaLocationModelStandardSchemeFactory implements SchemeFactory {
+    public DataReplicaLocationModelStandardScheme getScheme() {
+      return new DataReplicaLocationModelStandardScheme();
+    }
+  }
+
+  private static class DataReplicaLocationModelStandardScheme extends StandardScheme<DataReplicaLocationModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, DataReplicaLocationModel 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: // REPLICA_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.replicaId = iprot.readString();
+              struct.setReplicaIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // PRODUCT_URI
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.productUri = iprot.readString();
+              struct.setProductUriIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // REPLICA_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.replicaName = iprot.readString();
+              struct.setReplicaNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // REPLICA_DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.replicaDescription = iprot.readString();
+              struct.setReplicaDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // 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;
+          case 6: // LAST_MODIFIED_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.lastModifiedTime = iprot.readI64();
+              struct.setLastModifiedTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // VALID_UNTIL_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.validUntilTime = iprot.readI64();
+              struct.setValidUntilTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // REPLICA_LOCATION_CATEGORY
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.replicaLocationCategory = org.apache.airavata.model.data.replica.ReplicaLocationCategory.findByValue(iprot.readI32());
+              struct.setReplicaLocationCategoryIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // REPLICA_PERSISTENT_TYPE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.replicaPersistentType = org.apache.airavata.model.data.replica.ReplicaPersistentType.findByValue(iprot.readI32());
+              struct.setReplicaPersistentTypeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 11: // FILE_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.filePath = iprot.readString();
+              struct.setFilePathIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 12: // REPLICA_METADATA
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map26 = iprot.readMapBegin();
+                struct.replicaMetadata = new HashMap<String,String>(2*_map26.size);
+                String _key27;
+                String _val28;
+                for (int _i29 = 0; _i29 < _map26.size; ++_i29)
+                {
+                  _key27 = iprot.readString();
+                  _val28 = iprot.readString();
+                  struct.replicaMetadata.put(_key27, _val28);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setReplicaMetadataIsSet(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, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.replicaId != null) {
+        if (struct.isSetReplicaId()) {
+          oprot.writeFieldBegin(REPLICA_ID_FIELD_DESC);
+          oprot.writeString(struct.replicaId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.productUri != null) {
+        if (struct.isSetProductUri()) {
+          oprot.writeFieldBegin(PRODUCT_URI_FIELD_DESC);
+          oprot.writeString(struct.productUri);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.replicaName != null) {
+        if (struct.isSetReplicaName()) {
+          oprot.writeFieldBegin(REPLICA_NAME_FIELD_DESC);
+          oprot.writeString(struct.replicaName);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.replicaDescription != null) {
+        if (struct.isSetReplicaDescription()) {
+          oprot.writeFieldBegin(REPLICA_DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.replicaDescription);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetCreationTime()) {
+        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
+        oprot.writeI64(struct.creationTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetLastModifiedTime()) {
+        oprot.writeFieldBegin(LAST_MODIFIED_TIME_FIELD_DESC);
+        oprot.writeI64(struct.lastModifiedTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetValidUntilTime()) {
+        oprot.writeFieldBegin(VALID_UNTIL_TIME_FIELD_DESC);
+        oprot.writeI64(struct.validUntilTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.replicaLocationCategory != null) {
+        if (struct.isSetReplicaLocationCategory()) {
+          oprot.writeFieldBegin(REPLICA_LOCATION_CATEGORY_FIELD_DESC);
+          oprot.writeI32(struct.replicaLocationCategory.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.replicaPersistentType != null) {
+        if (struct.isSetReplicaPersistentType()) {
+          oprot.writeFieldBegin(REPLICA_PERSISTENT_TYPE_FIELD_DESC);
+          oprot.writeI32(struct.replicaPersistentType.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.filePath != null) {
+        if (struct.isSetFilePath()) {
+          oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
+          oprot.writeString(struct.filePath);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.replicaMetadata != null) {
+        if (struct.isSetReplicaMetadata()) {
+          oprot.writeFieldBegin(REPLICA_METADATA_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.replicaMetadata.size()));
+            for (Map.Entry<String, String> _iter30 : struct.replicaMetadata.entrySet())
+            {
+              oprot.writeString(_iter30.getKey());
+              oprot.writeString(_iter30.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class DataReplicaLocationModelTupleSchemeFactory implements SchemeFactory {
+    public DataReplicaLocationModelTupleScheme getScheme() {
+      return new DataReplicaLocationModelTupleScheme();
+    }
+  }
+
+  private static class DataReplicaLocationModelTupleScheme extends TupleScheme<DataReplicaLocationModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetReplicaId()) {
+        optionals.set(0);
+      }
+      if (struct.isSetProductUri()) {
+        optionals.set(1);
+      }
+      if (struct.isSetReplicaName()) {
+        optionals.set(2);
+      }
+      if (struct.isSetReplicaDescription()) {
+        optionals.set(3);
+      }
+      if (struct.isSetCreationTime()) {
+        optionals.set(4);
+      }
+      if (struct.isSetLastModifiedTime()) {
+        optionals.set(5);
+      }
+      if (struct.isSetValidUntilTime()) {
+        optionals.set(6);
+      }
+      if (struct.isSetReplicaLocationCategory()) {
+        optionals.set(7);
+      }
+      if (struct.isSetReplicaPersistentType()) {
+        optionals.set(8);
+      }
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(9);
+      }
+      if (struct.isSetFilePath()) {
+        optionals.set(10);
+      }
+      if (struct.isSetReplicaMetadata()) {
+        optionals.set(11);
+      }
+      oprot.writeBitSet(optionals, 12);
+      if (struct.isSetReplicaId()) {
+        oprot.writeString(struct.replicaId);
+      }
+      if (struct.isSetProductUri()) {
+        oprot.writeString(struct.productUri);
+      }
+      if (struct.isSetReplicaName()) {
+        oprot.writeString(struct.replicaName);
+      }
+      if (struct.isSetReplicaDescription()) {
+        oprot.writeString(struct.replicaDescription);
+      }
+      if (struct.isSetCreationTime()) {
+        oprot.writeI64(struct.creationTime);
+      }
+      if (struct.isSetLastModifiedTime()) {
+        oprot.writeI64(struct.lastModifiedTime);
+      }
+      if (struct.isSetValidUntilTime()) {
+        oprot.writeI64(struct.validUntilTime);
+      }
+      if (struct.isSetReplicaLocationCategory()) {
+        oprot.writeI32(struct.replicaLocationCategory.getValue());
+      }
+      if (struct.isSetReplicaPersistentType()) {
+        oprot.writeI32(struct.replicaPersistentType.getValue());
+      }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
+      if (struct.isSetFilePath()) {
+        oprot.writeString(struct.filePath);
+      }
+      if (struct.isSetReplicaMetadata()) {
+        {
+          oprot.writeI32(struct.replicaMetadata.size());
+          for (Map.Entry<String, String> _iter31 : struct.replicaMetadata.entrySet())
+          {
+            oprot.writeString(_iter31.getKey());
+            oprot.writeString(_iter31.getValue());
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(12);
+      if (incoming.get(0)) {
+        struct.replicaId = iprot.readString();
+        struct.setReplicaIdIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.productUri = iprot.readString();
+        struct.setProductUriIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.replicaName = iprot.readString();
+        struct.setReplicaNameIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.replicaDescription = iprot.readString();
+        struct.setReplicaDescriptionIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.creationTime = iprot.readI64();
+        struct.setCreationTimeIsSet(true);
+      }
+      if (incoming.get(5)) {
+        struct.lastModifiedTime = iprot.readI64();
+        struct.setLastModifiedTimeIsSet(true);
+      }
+      if (incoming.get(6)) {
+        struct.validUntilTime = iprot.readI64();
+        struct.setValidUntilTimeIsSet(true);
+      }
+      if (incoming.get(7)) {
+        struct.replicaLocationCategory = org.apache.airavata.model.data.replica.ReplicaLocationCategory.findByValue(iprot.readI32());
+        struct.setReplicaLocationCategoryIsSet(true);
+      }
+      if (incoming.get(8)) {
+        struct.replicaPersistentType = org.apache.airavata.model.data.replica.ReplicaPersistentType.findByValue(iprot.readI32());
+        struct.setReplicaPersistentTypeIsSet(true);
+      }
+      if (incoming.get(9)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
+      if (incoming.get(10)) {
+        struct.filePath = iprot.readString();
+        struct.setFilePathIsSet(true);
+      }
+      if (incoming.get(11)) {
+        {
+          org.apache.thrift.protocol.TMap _map32 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.replicaMetadata = new HashMap<String,String>(2*_map32.size);
+          String _key33;
+          String _val34;
+          for (int _i35 = 0; _i35 < _map32.size; ++_i35)
+          {
+            _key33 = iprot.readString();
+            _val34 = iprot.readString();
+            struct.replicaMetadata.put(_key33, _val34);
+          }
+        }
+        struct.setReplicaMetadataIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaLocationCategory.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaLocationCategory.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaLocationCategory.java
new file mode 100644
index 0000000..6cf5a8e
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaLocationCategory.java
@@ -0,0 +1,68 @@
+/**
+ * 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.data.replica;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum ReplicaLocationCategory implements org.apache.thrift.TEnum {
+  GATEWAY_DATA_STORE(0),
+  COMPUTE_RESOURCE(1),
+  LONG_TERM_STORAGE_RESOURCE(2),
+  OTHER(3);
+
+  private final int value;
+
+  private ReplicaLocationCategory(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 ReplicaLocationCategory findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return GATEWAY_DATA_STORE;
+      case 1:
+        return COMPUTE_RESOURCE;
+      case 2:
+        return LONG_TERM_STORAGE_RESOURCE;
+      case 3:
+        return OTHER;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaPersistentType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaPersistentType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaPersistentType.java
new file mode 100644
index 0000000..518ca9f
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/ReplicaPersistentType.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * 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.data.replica;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum ReplicaPersistentType implements org.apache.thrift.TEnum {
+  TRANSIENT(0),
+  PERSISTENT(1);
+
+  private final int value;
+
+  private ReplicaPersistentType(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 ReplicaPersistentType findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return TRANSIENT;
+      case 1:
+        return PERSISTENT;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 3a4ecad..8175998 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 6fa524c..12bfb8e 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 5f6ce68..a114a0b 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 316514c..4c582a4 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 ab1da7c..d2e63d0 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 045ab68..629b6bc 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 efb5017..57c9753 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 636b426..be1d623 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 1ee2a18..386ca43 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 7e18066..2e80320 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 0400b6d..a93c4e1 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 377b3fb..9460b15 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 8b38124..dd923c1 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 8194d91..a342e4e 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 43497ca..cdf3bd7 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 eebee5f..651cc33 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 0634587..56f39d6 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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");
 


[03/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
index 64a406c..49fdf5a 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
@@ -717,13 +717,13 @@ class LOCALSubmission {
    */
   public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
   /**
-   * @var int
-   */
-  public $securityProtocol = null;
-  /**
    * @var \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager
    */
   public $resourceJobManager = null;
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -733,26 +733,26 @@ class LOCALSubmission {
           'type' => TType::STRING,
           ),
         2 => array(
-          'var' => 'securityProtocol',
-          'type' => TType::I32,
-          ),
-        3 => array(
           'var' => 'resourceJobManager',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager',
           ),
+        3 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['jobSubmissionInterfaceId'])) {
         $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
       }
-      if (isset($vals['securityProtocol'])) {
-        $this->securityProtocol = $vals['securityProtocol'];
-      }
       if (isset($vals['resourceJobManager'])) {
         $this->resourceJobManager = $vals['resourceJobManager'];
       }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
     }
   }
 
@@ -783,16 +783,16 @@ class LOCALSubmission {
           }
           break;
         case 2:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->securityProtocol);
+          if ($ftype == TType::STRUCT) {
+            $this->resourceJobManager = new \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager();
+            $xfer += $this->resourceJobManager->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->resourceJobManager = new \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager();
-            $xfer += $this->resourceJobManager->read($input);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -815,19 +815,19 @@ class LOCALSubmission {
       $xfer += $output->writeString($this->jobSubmissionInterfaceId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->securityProtocol !== null) {
-      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
-      $xfer += $output->writeI32($this->securityProtocol);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->resourceJobManager !== null) {
       if (!is_object($this->resourceJobManager)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 3);
+      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 2);
       $xfer += $this->resourceJobManager->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 3);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 20d9399..ac42357 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
@@ -158,6 +158,9 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   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 registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel)')
+  print('  DataProductModel getDataProduct(AuthzToken authzToken, string dataProductUri)')
+  print('  string registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel)')
   print('')
   sys.exit(0)
 
@@ -1018,6 +1021,24 @@ elif cmd == 'isWorkflowExistWithName':
     sys.exit(1)
   pp.pprint(client.isWorkflowExistWithName(eval(args[0]),args[1],))
 
+elif cmd == 'registerDataProduct':
+  if len(args) != 2:
+    print('registerDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerDataProduct(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getDataProduct':
+  if len(args) != 2:
+    print('getDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getDataProduct(eval(args[0]),args[1],))
+
+elif cmd == 'registerReplicaLocation':
+  if len(args) != 2:
+    print('registerReplicaLocation requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerReplicaLocation(eval(args[0]),eval(args[1]),))
+
 else:
   print('Unrecognized method %s' % cmd)
   sys.exit(1)


[19/55] [abbrv] airavata git commit: setting parent uri for data products

Posted by sh...@apache.org.
setting parent uri for data products


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

Branch: refs/heads/master
Commit: 464c5b4a70cf01fbb32bf56cbc3678134c560db0
Parents: 199c301
Author: scnakandala <su...@gmail.com>
Authored: Wed Mar 23 18:08:23 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Mar 23 18:08:23 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/airavata/client/samples/DataCatalogSample.java | 2 +-
 .../airavata/registry/core/data/catalog/impl/DataCatalogImpl.java  | 1 +
 .../registry-core/src/main/resources/datacatalog-mysql.sql         | 2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/464c5b4a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
index 592eaa1..ed9f8a9 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/DataCatalogSample.java
@@ -63,7 +63,7 @@ public class DataCatalogSample {
             System.out.println(productUri);
 
 
-            dataProductModel = client.getDataProduct(authzToken, productUri);
+            dataProductModel = client.getDataProduct(authzToken, "airavata-dp://Eroma2016@seagrid/");
             System.out.println(dataProductModel.getReplicaLocations().size());
         } catch (Exception e) {
             logger.error("Error while connecting with server", e.getMessage());

http://git-wip-us.apache.org/repos/asf/airavata/blob/464c5b4a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
index 2c809d6..66b780d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java
@@ -87,6 +87,7 @@ public class DataCatalogImpl implements DataCatalog {
             }
         }
 
+        productModel.setProductUri(parentUri);
         String productUri = DataCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
                 + ":" + productModel.getLogicalPath();
         productModel.setProductUri(productUri);

http://git-wip-us.apache.org/repos/asf/airavata/blob/464c5b4a/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
index e74c4b8..d612194 100644
--- a/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
@@ -27,7 +27,7 @@ CREATE TABLE DATA_PRODUCT
         LOGICAL_PATH VARCHAR (255),
         PRODUCT_DESCRIPTION VARCHAR (255),
         OWNER_NAME VARCHAR (255),
-        PARENT_PRODUCT_ID VARCHAR (255),
+        PARENT_PRODUCT_URI VARCHAR (255),
         PRODUCT_SIZE INT,
         CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
         LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,


[08/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 b794fa6..430333f 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
@@ -1929,7 +1929,7 @@ public class Airavata {
      * Add a Local data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
-     * @param productId
+     * @param productUri
      *   The identifier of the compute resource to which JobSubmission protocol to be added
      * 
      * @param DMType
@@ -1947,12 +1947,12 @@ public class Airavata {
      * 
      * 
      * @param authzToken
-     * @param productId
+     * @param productUri
      * @param dataMoveType
      * @param priorityOrder
      * @param localDataMovement
      */
-    public String addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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;
+    public String addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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;
 
     /**
      * 
@@ -1996,7 +1996,7 @@ public class Airavata {
      * Add a SCP data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
-     * @param productId
+     * @param productUri
      *   The identifier of the compute resource to which JobSubmission protocol to be added
      * 
      * @param priorityOrder
@@ -2010,12 +2010,12 @@ public class Airavata {
      * 
      * 
      * @param authzToken
-     * @param productId
+     * @param productUri
      * @param dataMoveType
      * @param priorityOrder
      * @param scpDataMovement
      */
-    public String addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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;
+    public String addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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;
 
     /**
      * 
@@ -2058,7 +2058,7 @@ public class Airavata {
      * Add a UNICORE data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
-     * @param productId
+     * @param productUri
      *   The identifier of the compute resource to which data movement protocol to be added
      * 
      * @param priorityOrder
@@ -2072,12 +2072,12 @@ public class Airavata {
      * 
      * 
      * @param authzToken
-     * @param productId
+     * @param productUri
      * @param dataMoveType
      * @param priorityOrder
      * @param unicoreDataMovement
      */
-    public String addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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;
+    public String addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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;
 
     /**
      * 
@@ -2122,7 +2122,7 @@ public class Airavata {
      * Add a GridFTP data movement details to a compute resource
      *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      * 
-     * @param productId
+     * @param productUri
      *   The identifier of the compute resource to which dataMovement protocol to be added
      * 
      * @param DMType
@@ -2140,12 +2140,12 @@ public class Airavata {
      * 
      * 
      * @param authzToken
-     * @param productId
+     * @param productUri
      * @param dataMoveType
      * @param priorityOrder
      * @param gridFTPDataMovement
      */
-    public String addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) 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 addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) 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 GridFTP data movement details to a compute resource
@@ -2283,11 +2283,11 @@ public class Airavata {
      * 
      * 
      * @param authzToken
-     * @param productId
+     * @param productUri
      * @param dataMovementInterfaceId
      * @param dataMoveType
      */
-    public boolean deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) 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 deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) 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 registerResourceJobManager(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager resourceJobManager) 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;
 
@@ -2637,6 +2637,19 @@ public class Airavata {
 
     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;
 
+    /**
+     * API Methods related to data catalog
+     * 
+     * 
+     * @param authzToken
+     * @param dataProductModel
+     */
+    public String registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) 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.data.product.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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 registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) 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 interface AsyncIface {
@@ -2819,25 +2832,25 @@ public class Airavata {
 
     public void updateUnicoreJobSubmissionDetails(org.apache.airavata.model.security.AuthzToken authzToken, String jobSubmissionInterfaceId, org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission unicoreJobSubmission, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getLocalDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getSCPDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void getUnicoreDataMovement(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -2853,7 +2866,7 @@ public class Airavata {
 
     public void deleteJobSubmissionInterface(org.apache.airavata.model.security.AuthzToken authzToken, String computeResourceId, String jobSubmissionInterfaceId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void registerResourceJobManager(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager resourceJobManager, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -2909,6 +2922,12 @@ public class Airavata {
 
     public void isWorkflowExistWithName(org.apache.airavata.model.security.AuthzToken authzToken, String workflowName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
   }
 
   public static class Client extends org.apache.thrift.TServiceClient implements Iface {
@@ -6206,17 +6225,17 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateUnicoreJobSubmissionDetails failed: unknown result");
     }
 
-    public String addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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
+    public String addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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
     {
-      send_addLocalDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, localDataMovement);
+      send_addLocalDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, localDataMovement);
       return recv_addLocalDataMovementDetails();
     }
 
-    public void send_addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement) throws org.apache.thrift.TException
+    public void send_addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement) throws org.apache.thrift.TException
     {
       addLocalDataMovementDetails_args args = new addLocalDataMovementDetails_args();
       args.setAuthzToken(authzToken);
-      args.setProductId(productId);
+      args.setProductUri(productUri);
       args.setDataMoveType(dataMoveType);
       args.setPriorityOrder(priorityOrder);
       args.setLocalDataMovement(localDataMovement);
@@ -6318,17 +6337,17 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getLocalDataMovement failed: unknown result");
     }
 
-    public String addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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
+    public String addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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
     {
-      send_addSCPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, scpDataMovement);
+      send_addSCPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement);
       return recv_addSCPDataMovementDetails();
     }
 
-    public void send_addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement) throws org.apache.thrift.TException
+    public void send_addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement) throws org.apache.thrift.TException
     {
       addSCPDataMovementDetails_args args = new addSCPDataMovementDetails_args();
       args.setAuthzToken(authzToken);
-      args.setProductId(productId);
+      args.setProductUri(productUri);
       args.setDataMoveType(dataMoveType);
       args.setPriorityOrder(priorityOrder);
       args.setScpDataMovement(scpDataMovement);
@@ -6430,17 +6449,17 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getSCPDataMovement failed: unknown result");
     }
 
-    public String addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, 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
+    public String addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, 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
     {
-      send_addUnicoreDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement);
+      send_addUnicoreDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement);
       return recv_addUnicoreDataMovementDetails();
     }
 
-    public void send_addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement) throws org.apache.thrift.TException
+    public void send_addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement) throws org.apache.thrift.TException
     {
       addUnicoreDataMovementDetails_args args = new addUnicoreDataMovementDetails_args();
       args.setAuthzToken(authzToken);
-      args.setProductId(productId);
+      args.setProductUri(productUri);
       args.setDataMoveType(dataMoveType);
       args.setPriorityOrder(priorityOrder);
       args.setUnicoreDataMovement(unicoreDataMovement);
@@ -6542,17 +6561,17 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getUnicoreDataMovement failed: unknown result");
     }
 
-    public String addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) 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 addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) 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
     {
-      send_addGridFTPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement);
+      send_addGridFTPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement);
       return recv_addGridFTPDataMovementDetails();
     }
 
-    public void send_addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) throws org.apache.thrift.TException
+    public void send_addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement) throws org.apache.thrift.TException
     {
       addGridFTPDataMovementDetails_args args = new addGridFTPDataMovementDetails_args();
       args.setAuthzToken(authzToken);
-      args.setProductId(productId);
+      args.setProductUri(productUri);
       args.setDataMoveType(dataMoveType);
       args.setPriorityOrder(priorityOrder);
       args.setGridFTPDataMovement(gridFTPDataMovement);
@@ -6837,17 +6856,17 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteJobSubmissionInterface failed: unknown result");
     }
 
-    public boolean deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) 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 deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) 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
     {
-      send_deleteDataMovementInterface(authzToken, productId, dataMovementInterfaceId, dataMoveType);
+      send_deleteDataMovementInterface(authzToken, productUri, dataMovementInterfaceId, dataMoveType);
       return recv_deleteDataMovementInterface();
     }
 
-    public void send_deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) throws org.apache.thrift.TException
+    public void send_deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType) throws org.apache.thrift.TException
     {
       deleteDataMovementInterface_args args = new deleteDataMovementInterface_args();
       args.setAuthzToken(authzToken);
-      args.setProductId(productId);
+      args.setProductUri(productUri);
       args.setDataMovementInterfaceId(dataMovementInterfaceId);
       args.setDataMoveType(dataMoveType);
       sendBase("deleteDataMovementInterface", args);
@@ -7857,6 +7876,114 @@ public class Airavata {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "isWorkflowExistWithName failed: unknown result");
     }
 
+    public String registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) 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
+    {
+      send_registerDataProduct(authzToken, dataProductModel);
+      return recv_registerDataProduct();
+    }
+
+    public void send_registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel) throws org.apache.thrift.TException
+    {
+      registerDataProduct_args args = new registerDataProduct_args();
+      args.setAuthzToken(authzToken);
+      args.setDataProductModel(dataProductModel);
+      sendBase("registerDataProduct", args);
+    }
+
+    public String recv_registerDataProduct() 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
+    {
+      registerDataProduct_result result = new registerDataProduct_result();
+      receiveBase(result, "registerDataProduct");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerDataProduct failed: unknown result");
+    }
+
+    public org.apache.airavata.model.data.product.DataProductModel getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) 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
+    {
+      send_getDataProduct(authzToken, dataProductUri);
+      return recv_getDataProduct();
+    }
+
+    public void send_getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri) throws org.apache.thrift.TException
+    {
+      getDataProduct_args args = new getDataProduct_args();
+      args.setAuthzToken(authzToken);
+      args.setDataProductUri(dataProductUri);
+      sendBase("getDataProduct", args);
+    }
+
+    public org.apache.airavata.model.data.product.DataProductModel recv_getDataProduct() 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
+    {
+      getDataProduct_result result = new getDataProduct_result();
+      receiveBase(result, "getDataProduct");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDataProduct failed: unknown result");
+    }
+
+    public String registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) 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
+    {
+      send_registerReplicaLocation(authzToken, replicaLocationModel);
+      return recv_registerReplicaLocation();
+    }
+
+    public void send_registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel) throws org.apache.thrift.TException
+    {
+      registerReplicaLocation_args args = new registerReplicaLocation_args();
+      args.setAuthzToken(authzToken);
+      args.setReplicaLocationModel(replicaLocationModel);
+      sendBase("registerReplicaLocation", args);
+    }
+
+    public String recv_registerReplicaLocation() 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
+    {
+      registerReplicaLocation_result result = new registerReplicaLocation_result();
+      receiveBase(result, "registerReplicaLocation");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ire != null) {
+        throw result.ire;
+      }
+      if (result.ace != null) {
+        throw result.ace;
+      }
+      if (result.ase != null) {
+        throw result.ase;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "registerReplicaLocation failed: unknown result");
+    }
+
   }
   public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
     public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
@@ -11221,23 +11348,23 @@ public class Airavata {
       }
     }
 
-    public void addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addLocalDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      addLocalDataMovementDetails_call method_call = new addLocalDataMovementDetails_call(authzToken, productId, dataMoveType, priorityOrder, localDataMovement, resultHandler, this, ___protocolFactory, ___transport);
+      addLocalDataMovementDetails_call method_call = new addLocalDataMovementDetails_call(authzToken, productUri, dataMoveType, priorityOrder, localDataMovement, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class addLocalDataMovementDetails_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private String productId;
+      private String productUri;
       private org.apache.airavata.model.data.movement.DMType dataMoveType;
       private int priorityOrder;
       private org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement;
-      public addLocalDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public addLocalDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.LOCALDataMovement localDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
-        this.productId = productId;
+        this.productUri = productUri;
         this.dataMoveType = dataMoveType;
         this.priorityOrder = priorityOrder;
         this.localDataMovement = localDataMovement;
@@ -11247,7 +11374,7 @@ public class Airavata {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addLocalDataMovementDetails", org.apache.thrift.protocol.TMessageType.CALL, 0));
         addLocalDataMovementDetails_args args = new addLocalDataMovementDetails_args();
         args.setAuthzToken(authzToken);
-        args.setProductId(productId);
+        args.setProductUri(productUri);
         args.setDataMoveType(dataMoveType);
         args.setPriorityOrder(priorityOrder);
         args.setLocalDataMovement(localDataMovement);
@@ -11338,23 +11465,23 @@ public class Airavata {
       }
     }
 
-    public void addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addSCPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      addSCPDataMovementDetails_call method_call = new addSCPDataMovementDetails_call(authzToken, productId, dataMoveType, priorityOrder, scpDataMovement, resultHandler, this, ___protocolFactory, ___transport);
+      addSCPDataMovementDetails_call method_call = new addSCPDataMovementDetails_call(authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class addSCPDataMovementDetails_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private String productId;
+      private String productUri;
       private org.apache.airavata.model.data.movement.DMType dataMoveType;
       private int priorityOrder;
       private org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement;
-      public addSCPDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public addSCPDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.SCPDataMovement scpDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
-        this.productId = productId;
+        this.productUri = productUri;
         this.dataMoveType = dataMoveType;
         this.priorityOrder = priorityOrder;
         this.scpDataMovement = scpDataMovement;
@@ -11364,7 +11491,7 @@ public class Airavata {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addSCPDataMovementDetails", org.apache.thrift.protocol.TMessageType.CALL, 0));
         addSCPDataMovementDetails_args args = new addSCPDataMovementDetails_args();
         args.setAuthzToken(authzToken);
-        args.setProductId(productId);
+        args.setProductUri(productUri);
         args.setDataMoveType(dataMoveType);
         args.setPriorityOrder(priorityOrder);
         args.setScpDataMovement(scpDataMovement);
@@ -11455,23 +11582,23 @@ public class Airavata {
       }
     }
 
-    public void addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addUnicoreDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      addUnicoreDataMovementDetails_call method_call = new addUnicoreDataMovementDetails_call(authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement, resultHandler, this, ___protocolFactory, ___transport);
+      addUnicoreDataMovementDetails_call method_call = new addUnicoreDataMovementDetails_call(authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class addUnicoreDataMovementDetails_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private String productId;
+      private String productUri;
       private org.apache.airavata.model.data.movement.DMType dataMoveType;
       private int priorityOrder;
       private org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement;
-      public addUnicoreDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public addUnicoreDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.UnicoreDataMovement unicoreDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
-        this.productId = productId;
+        this.productUri = productUri;
         this.dataMoveType = dataMoveType;
         this.priorityOrder = priorityOrder;
         this.unicoreDataMovement = unicoreDataMovement;
@@ -11481,7 +11608,7 @@ public class Airavata {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addUnicoreDataMovementDetails", org.apache.thrift.protocol.TMessageType.CALL, 0));
         addUnicoreDataMovementDetails_args args = new addUnicoreDataMovementDetails_args();
         args.setAuthzToken(authzToken);
-        args.setProductId(productId);
+        args.setProductUri(productUri);
         args.setDataMoveType(dataMoveType);
         args.setPriorityOrder(priorityOrder);
         args.setUnicoreDataMovement(unicoreDataMovement);
@@ -11572,23 +11699,23 @@ public class Airavata {
       }
     }
 
-    public void addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void addGridFTPDataMovementDetails(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      addGridFTPDataMovementDetails_call method_call = new addGridFTPDataMovementDetails_call(authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement, resultHandler, this, ___protocolFactory, ___transport);
+      addGridFTPDataMovementDetails_call method_call = new addGridFTPDataMovementDetails_call(authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class addGridFTPDataMovementDetails_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private String productId;
+      private String productUri;
       private org.apache.airavata.model.data.movement.DMType dataMoveType;
       private int priorityOrder;
       private org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement;
-      public addGridFTPDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productId, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public addGridFTPDataMovementDetails_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, org.apache.airavata.model.data.movement.DMType dataMoveType, int priorityOrder, org.apache.airavata.model.data.movement.GridFTPDataMovement gridFTPDataMovement, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
-        this.productId = productId;
+        this.productUri = productUri;
         this.dataMoveType = dataMoveType;
         this.priorityOrder = priorityOrder;
         this.gridFTPDataMovement = gridFTPDataMovement;
@@ -11598,7 +11725,7 @@ public class Airavata {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("addGridFTPDataMovementDetails", org.apache.thrift.protocol.TMessageType.CALL, 0));
         addGridFTPDataMovementDetails_args args = new addGridFTPDataMovementDetails_args();
         args.setAuthzToken(authzToken);
-        args.setProductId(productId);
+        args.setProductUri(productUri);
         args.setDataMoveType(dataMoveType);
         args.setPriorityOrder(priorityOrder);
         args.setGridFTPDataMovement(gridFTPDataMovement);
@@ -11873,22 +12000,22 @@ public class Airavata {
       }
     }
 
-    public void deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void deleteDataMovementInterface(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      deleteDataMovementInterface_call method_call = new deleteDataMovementInterface_call(authzToken, productId, dataMovementInterfaceId, dataMoveType, resultHandler, this, ___protocolFactory, ___transport);
+      deleteDataMovementInterface_call method_call = new deleteDataMovementInterface_call(authzToken, productUri, dataMovementInterfaceId, dataMoveType, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class deleteDataMovementInterface_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.security.AuthzToken authzToken;
-      private String productId;
+      private String productUri;
       private String dataMovementInterfaceId;
       private org.apache.airavata.model.data.movement.DMType dataMoveType;
-      public deleteDataMovementInterface_call(org.apache.airavata.model.security.AuthzToken authzToken, String productId, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      public deleteDataMovementInterface_call(org.apache.airavata.model.security.AuthzToken authzToken, String productUri, String dataMovementInterfaceId, org.apache.airavata.model.data.movement.DMType dataMoveType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.authzToken = authzToken;
-        this.productId = productId;
+        this.productUri = productUri;
         this.dataMovementInterfaceId = dataMovementInterfaceId;
         this.dataMoveType = dataMoveType;
       }
@@ -11897,7 +12024,7 @@ public class Airavata {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deleteDataMovementInterface", org.apache.thrift.protocol.TMessageType.CALL, 0));
         deleteDataMovementInterface_args args = new deleteDataMovementInterface_args();
         args.setAuthzToken(authzToken);
-        args.setProductId(productId);
+        args.setProductUri(productUri);
         args.setDataMovementInterfaceId(dataMovementInterfaceId);
         args.setDataMoveType(dataMoveType);
         args.write(prot);
@@ -12907,6 +13034,111 @@ public class Airavata {
       }
     }
 
+    public void registerDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      registerDataProduct_call method_call = new registerDataProduct_call(authzToken, dataProductModel, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class registerDataProduct_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private org.apache.airavata.model.data.product.DataProductModel dataProductModel;
+      public registerDataProduct_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataProductModel dataProductModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.dataProductModel = dataProductModel;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("registerDataProduct", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        registerDataProduct_args args = new registerDataProduct_args();
+        args.setAuthzToken(authzToken);
+        args.setDataProductModel(dataProductModel);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() 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 {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_registerDataProduct();
+      }
+    }
+
+    public void getDataProduct(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getDataProduct_call method_call = new getDataProduct_call(authzToken, dataProductUri, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getDataProduct_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private String dataProductUri;
+      public getDataProduct_call(org.apache.airavata.model.security.AuthzToken authzToken, String dataProductUri, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.dataProductUri = dataProductUri;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getDataProduct", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getDataProduct_args args = new getDataProduct_args();
+        args.setAuthzToken(authzToken);
+        args.setDataProductUri(dataProductUri);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public org.apache.airavata.model.data.product.DataProductModel getResult() 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 {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getDataProduct();
+      }
+    }
+
+    public void registerReplicaLocation(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      registerReplicaLocation_call method_call = new registerReplicaLocation_call(authzToken, replicaLocationModel, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class registerReplicaLocation_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel;
+      public registerReplicaLocation_call(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.data.product.DataReplicaLocationModel replicaLocationModel, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.replicaLocationModel = replicaLocationModel;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("registerReplicaLocation", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        registerReplicaLocation_args args = new registerReplicaLocation_args();
+        args.setAuthzToken(authzToken);
+        args.setReplicaLocationModel(replicaLocationModel);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public String getResult() 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 {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_registerReplicaLocation();
+      }
+    }
+
   }
 
   public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
@@ -13054,6 +13286,9 @@ public class Airavata {
       processMap.put("updateWorkflow", new updateWorkflow());
       processMap.put("getWorkflowTemplateId", new getWorkflowTemplateId());
       processMap.put("isWorkflowExistWithName", new isWorkflowExistWithName());
+      processMap.put("registerDataProduct", new registerDataProduct());
+      processMap.put("getDataProduct", new getDataProduct());
+      processMap.put("registerReplicaLocation", new registerReplicaLocation());
       return processMap;
     }
 
@@ -15774,7 +16009,7 @@ public class Airavata {
       public addLocalDataMovementDetails_result getResult(I iface, addLocalDataMovementDetails_args args) throws org.apache.thrift.TException {
         addLocalDataMovementDetails_result result = new addLocalDataMovementDetails_result();
         try {
-          result.success = iface.addLocalDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.localDataMovement);
+          result.success = iface.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.model.error.AiravataClientException ace) {
@@ -15865,7 +16100,7 @@ public class Airavata {
       public addSCPDataMovementDetails_result getResult(I iface, addSCPDataMovementDetails_args args) throws org.apache.thrift.TException {
         addSCPDataMovementDetails_result result = new addSCPDataMovementDetails_result();
         try {
-          result.success = iface.addSCPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.scpDataMovement);
+          result.success = iface.addSCPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.scpDataMovement);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.model.error.AiravataClientException ace) {
@@ -15956,7 +16191,7 @@ public class Airavata {
       public addUnicoreDataMovementDetails_result getResult(I iface, addUnicoreDataMovementDetails_args args) throws org.apache.thrift.TException {
         addUnicoreDataMovementDetails_result result = new addUnicoreDataMovementDetails_result();
         try {
-          result.success = iface.addUnicoreDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement);
+          result.success = iface.addUnicoreDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.model.error.AiravataClientException ace) {
@@ -16047,7 +16282,7 @@ public class Airavata {
       public addGridFTPDataMovementDetails_result getResult(I iface, addGridFTPDataMovementDetails_args args) throws org.apache.thrift.TException {
         addGridFTPDataMovementDetails_result result = new addGridFTPDataMovementDetails_result();
         try {
-          result.success = iface.addGridFTPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement);
+          result.success = iface.addGridFTPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.model.error.AiravataClientException ace) {
@@ -16293,7 +16528,7 @@ public class Airavata {
       public deleteDataMovementInterface_result getResult(I iface, deleteDataMovementInterface_args args) throws org.apache.thrift.TException {
         deleteDataMovementInterface_result result = new deleteDataMovementInterface_result();
         try {
-          result.success = iface.deleteDataMovementInterface(args.authzToken, args.productId, args.dataMovementInterfaceId, args.dataMoveType);
+          result.success = iface.deleteDataMovementInterface(args.authzToken, args.productUri, args.dataMovementInterfaceId, args.dataMoveType);
           result.setSuccessIsSet(true);
         } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
           result.ire = ire;
@@ -17130,6 +17365,96 @@ public class Airavata {
       }
     }
 
+    public static class registerDataProduct<I extends Iface> extends org.apache.thrift.ProcessFunction<I, registerDataProduct_args> {
+      public registerDataProduct() {
+        super("registerDataProduct");
+      }
+
+      public registerDataProduct_args getEmptyArgsInstance() {
+        return new registerDataProduct_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public registerDataProduct_result getResult(I iface, registerDataProduct_args args) throws org.apache.thrift.TException {
+        registerDataProduct_result result = new registerDataProduct_result();
+        try {
+          result.success = iface.registerDataProduct(args.authzToken, args.dataProductModel);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
+    public static class getDataProduct<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getDataProduct_args> {
+      public getDataProduct() {
+        super("getDataProduct");
+      }
+
+      public getDataProduct_args getEmptyArgsInstance() {
+        return new getDataProduct_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getDataProduct_result getResult(I iface, getDataProduct_args args) throws org.apache.thrift.TException {
+        getDataProduct_result result = new getDataProduct_result();
+        try {
+          result.success = iface.getDataProduct(args.authzToken, args.dataProductUri);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
+    public static class registerReplicaLocation<I extends Iface> extends org.apache.thrift.ProcessFunction<I, registerReplicaLocation_args> {
+      public registerReplicaLocation() {
+        super("registerReplicaLocation");
+      }
+
+      public registerReplicaLocation_args getEmptyArgsInstance() {
+        return new registerReplicaLocation_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public registerReplicaLocation_result getResult(I iface, registerReplicaLocation_args args) throws org.apache.thrift.TException {
+        registerReplicaLocation_result result = new registerReplicaLocation_result();
+        try {
+          result.success = iface.registerReplicaLocation(args.authzToken, args.replicaLocationModel);
+        } catch (org.apache.airavata.model.error.InvalidRequestException ire) {
+          result.ire = ire;
+        } catch (org.apache.airavata.model.error.AiravataClientException ace) {
+          result.ace = ace;
+        } catch (org.apache.airavata.model.error.AiravataSystemException ase) {
+          result.ase = ase;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
@@ -17277,6 +17602,9 @@ public class Airavata {
       processMap.put("updateWorkflow", new updateWorkflow());
       processMap.put("getWorkflowTemplateId", new getWorkflowTemplateId());
       processMap.put("isWorkflowExistWithName", new isWorkflowExistWithName());
+      processMap.put("registerDataProduct", new registerDataProduct());
+      processMap.put("getDataProduct", new getDataProduct());
+      processMap.put("registerReplicaLocation", new registerReplicaLocation());
       return processMap;
     }
 
@@ -23795,7 +24123,7 @@ public class Airavata {
       }
 
       public void start(I iface, addLocalDataMovementDetails_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.addLocalDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.localDataMovement,resultHandler);
+        iface.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement,resultHandler);
       }
     }
 
@@ -24012,7 +24340,7 @@ public class Airavata {
       }
 
       public void start(I iface, addSCPDataMovementDetails_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.addSCPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.scpDataMovement,resultHandler);
+        iface.addSCPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.scpDataMovement,resultHandler);
       }
     }
 
@@ -24229,7 +24557,7 @@ public class Airavata {
       }
 
       public void start(I iface, addUnicoreDataMovementDetails_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.addUnicoreDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement,resultHandler);
+        iface.addUnicoreDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement,resultHandler);
       }
     }
 
@@ -24446,7 +24774,7 @@ public class Airavata {
       }
 
       public void start(I iface, addGridFTPDataMovementDetails_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.addGridFTPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement,resultHandler);
+        iface.addGridFTPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement,resultHandler);
       }
     }
 
@@ -25029,7 +25357,7 @@ public class Airavata {
       }
 
       public void start(I iface, deleteDataMovementInterface_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
-        iface.deleteDataMovementInterface(args.authzToken, args.productId, args.dataMovementInterfaceId, args.dataMoveType,resultHandler);
+        iface.deleteDataMovementInterface(args.authzToken, args.productUri, args.dataMovementInterfaceId, args.dataMoveType,resultHandler);
       }
     }
 
@@ -26987,395 +27315,240 @@ public class Airavata {
       }
     }
 
-  }
-
-  public static class getAPIVersion_args implements org.apache.thrift.TBase<getAPIVersion_args, getAPIVersion_args._Fields>, java.io.Serializable, Cloneable, Comparable<getAPIVersion_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAPIVersion_args");
-
-    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-
-    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-    static {
-      schemes.put(StandardScheme.class, new getAPIVersion_argsStandardSchemeFactory());
-      schemes.put(TupleScheme.class, new getAPIVersion_argsTupleSchemeFactory());
-    }
-
-    public org.apache.airavata.model.security.AuthzToken authzToken; // required
-
-    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
-    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      AUTHZ_TOKEN((short)1, "authzToken");
-
-      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: // AUTHZ_TOKEN
-            return AUTHZ_TOKEN;
-          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 static class registerDataProduct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, registerDataProduct_args, String> {
+      public registerDataProduct() {
+        super("registerDataProduct");
       }
 
-      public short getThriftFieldId() {
-        return _thriftId;
-      }
-
-      public String getFieldName() {
-        return _fieldName;
+      public registerDataProduct_args getEmptyArgsInstance() {
+        return new registerDataProduct_args();
       }
-    }
-
-    // isset id assignments
-    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.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
-      metaDataMap = Collections.unmodifiableMap(tmpMap);
-      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getAPIVersion_args.class, metaDataMap);
-    }
-
-    public getAPIVersion_args() {
-    }
 
-    public getAPIVersion_args(
-      org.apache.airavata.model.security.AuthzToken authzToken)
-    {
-      this();
-      this.authzToken = authzToken;
-    }
-
-    /**
-     * Performs a deep copy on <i>other</i>.
-     */
-    public getAPIVersion_args(getAPIVersion_args other) {
-      if (other.isSetAuthzToken()) {
-        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+      public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<String>() { 
+          public void onComplete(String o) {
+            registerDataProduct_result result = new registerDataProduct_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            registerDataProduct_result result = new registerDataProduct_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
       }
-    }
-
-    public getAPIVersion_args deepCopy() {
-      return new getAPIVersion_args(this);
-    }
-
-    @Override
-    public void clear() {
-      this.authzToken = null;
-    }
-
-    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
-      return this.authzToken;
-    }
-
-    public getAPIVersion_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
-      this.authzToken = authzToken;
-      return this;
-    }
-
-    public void unsetAuthzToken() {
-      this.authzToken = null;
-    }
-
-    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
-    public boolean isSetAuthzToken() {
-      return this.authzToken != null;
-    }
 
-    public void setAuthzTokenIsSet(boolean value) {
-      if (!value) {
-        this.authzToken = null;
+      protected boolean isOneway() {
+        return false;
       }
-    }
-
-    public void setFieldValue(_Fields field, Object value) {
-      switch (field) {
-      case AUTHZ_TOKEN:
-        if (value == null) {
-          unsetAuthzToken();
-        } else {
-          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
-        }
-        break;
 
+      public void start(I iface, registerDataProduct_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
+        iface.registerDataProduct(args.authzToken, args.dataProductModel,resultHandler);
       }
     }
 
-    public Object getFieldValue(_Fields field) {
-      switch (field) {
-      case AUTHZ_TOKEN:
-        return getAuthzToken();
-
+    public static class getDataProduct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getDataProduct_args, org.apache.airavata.model.data.product.DataProductModel> {
+      public getDataProduct() {
+        super("getDataProduct");
       }
-      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();
+      public getDataProduct_args getEmptyArgsInstance() {
+        return new getDataProduct_args();
       }
 
-      switch (field) {
-      case AUTHZ_TOKEN:
-        return isSetAuthzToken();
+      public AsyncMethodCallback<org.apache.airavata.model.data.product.DataProductModel> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<org.apache.airavata.model.data.product.DataProductModel>() { 
+          public void onComplete(org.apache.airavata.model.data.product.DataProductModel o) {
+            getDataProduct_result result = new getDataProduct_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            getDataProduct_result result = new getDataProduct_result();
+            if (e instanceof org.apache.airavata.model.error.InvalidRequestException) {
+                        result.ire = (org.apache.airavata.model.error.InvalidRequestException) e;
+                        result.setIreIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataClientException) {
+                        result.ace = (org.apache.airavata.model.error.AiravataClientException) e;
+                        result.setAceIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AiravataSystemException) {
+                        result.ase = (org.apache.airavata.model.error.AiravataSystemException) e;
+                        result.setAseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
       }
-      throw new IllegalStateException();
-    }
-
-    @Override
-    public boolean equals(Object that) {
-      if (that == null)
-        return false;
-      if (that instanceof getAPIVersion_args)
-        return this.equals((getAPIVersion_args)that);
-      return false;
-    }
 
-    public boolean equals(getAPIVersion_args that) {
-      if (that == null)
+      protected boolean isOneway() {
         return false;
-
-      boolean this_present_authzToken = true && this.isSetAuthzToken();
-      boolean that_present_authzToken 

<TRUNCATED>

[09/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
adding replica catalog related API methods


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

Branch: refs/heads/master
Commit: 6c5645d3aad93e9b5185b950984c9fb5f9c278d2
Parents: d54afbd
Author: scnakandala <su...@gmail.com>
Authored: Tue Mar 22 16:46:12 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Tue Mar 22 16:46:12 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |    60 +
 .../java/org/apache/airavata/api/Airavata.java  | 40530 +++++++++--------
 .../main/resources/lib/airavata/Airavata.cpp    |  7297 +--
 .../src/main/resources/lib/airavata/Airavata.h  |   640 +-
 .../lib/airavata/Airavata_server.skeleton.cpp   |    50 +-
 .../airavata/compute_resource_model_types.cpp   |    50 +-
 .../lib/airavata/compute_resource_model_types.h |    18 +-
 .../resources/lib/Airavata/API/Airavata.php     | 11050 +++--
 .../Model/AppCatalog/ComputeResource/Types.php  |    44 +-
 .../lib/apache/airavata/api/Airavata-remote     |    21 +
 .../lib/apache/airavata/api/Airavata.py         |  6107 +--
 .../model/appcatalog/computeresource/ttypes.py  |    34 +-
 .../client/samples/DataCatalogSample.java       |    73 +
 .../computeresource/LOCALSubmission.java        |   207 +-
 .../core/data/catalog/impl/DataCatalogImpl.java |    16 +-
 .../airavata/data/catalog/DataCatalogTest.java  |   146 +-
 .../airavata/registry/cpi/DataCatalog.java      |     1 +
 .../airavata-apis/airavata_api.thrift           |    23 +
 18 files changed, 37389 insertions(+), 28978 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 ed892c0..40877de 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
@@ -49,6 +49,8 @@ import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.airavata_commonsConstants;
 import org.apache.airavata.model.data.movement.DMType;
 import org.apache.airavata.model.data.movement.*;
+import org.apache.airavata.model.data.product.DataProductModel;
+import org.apache.airavata.model.data.product.DataReplicaLocationModel;
 import org.apache.airavata.model.error.*;
 import org.apache.airavata.model.experiment.*;
 import org.apache.airavata.model.job.JobModel;
@@ -86,6 +88,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     private ExperimentCatalog experimentCatalog;
     private AppCatalog appCatalog;
     private Publisher publisher;
+    private DataCatalog dataCatalog;
 	private WorkflowCatalog workflowCatalog;
     private CredentialStoreService.Client csClient;
 
@@ -4291,6 +4294,63 @@ public class AiravataServerHandler implements Airavata.Iface {
 		return workflowCatalog;
 	}
 
+    /**
+     * DataCatalog Related Methods
+     * @return
+     * @throws TException
+     * @throws ApplicationSettingsException
+     */
+    @Override
+    @SecurityCheck
+    public String registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel) throws InvalidRequestException,
+            AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        try {
+            dataCatalog = RegistryFactory.getDataCatalog();
+            String productUrl = dataCatalog.registerDataProduct(dataProductModel);
+            return productUrl;
+        } catch (Exception e) {
+            String msg = "Error in registering the data resource"+dataProductModel.getProductName()+".";
+            logger.error(msg, e);
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg+" More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    @Override
+    @SecurityCheck
+    public DataProductModel getDataProduct(AuthzToken authzToken, String productUri) throws InvalidRequestException,
+            AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        try {
+            dataCatalog = RegistryFactory.getDataCatalog();
+            DataProductModel dataProductModel = dataCatalog.getDataProduct(productUri);
+            return dataProductModel;
+        } catch (Exception e) {
+            String msg = "Error in retreiving the data product "+productUri+".";
+            logger.error(msg, e);
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg+" More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
+    @Override
+    @SecurityCheck
+    public String registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel) throws InvalidRequestException,
+            AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+        try {
+            dataCatalog = RegistryFactory.getDataCatalog();
+            String replicaId = dataCatalog.registerReplicaLocation(replicaLocationModel);
+            return replicaId;
+        } catch (Exception e) {
+            String msg = "Error in retreiving the data product "+replicaLocationModel.getReplicaName()+".";
+            logger.error(msg, e);
+            AiravataSystemException exception = new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg+" More info : " + e.getMessage());
+            throw exception;
+        }
+    }
+
     private CredentialStoreService.Client getCredentialStoreServiceClient() throws TException, ApplicationSettingsException {
         final int serverPort = Integer.parseInt(ServerSettings.getCredentialStoreServerPort());
         final String serverHost = ServerSettings.getCredentialStoreServerHost();


[26/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
new file mode 100644
index 0000000..16a6aa9
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
@@ -0,0 +1,1943 @@
+/**
+ * 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.data.replica;
+
+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-03-24")
+public class DataProductModel implements org.apache.thrift.TBase<DataProductModel, DataProductModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataProductModel> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataProductModel");
+
+  private static final org.apache.thrift.protocol.TField PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("productUri", org.apache.thrift.protocol.TType.STRING, (short)1);
+  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)2);
+  private static final org.apache.thrift.protocol.TField PARENT_PRODUCT_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("parentProductUri", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField LOGICAL_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("logicalPath", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField PRODUCT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("productName", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField PRODUCT_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("productDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField OWNER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("ownerName", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField DATA_PRODUCT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("dataProductType", org.apache.thrift.protocol.TType.I32, (short)8);
+  private static final org.apache.thrift.protocol.TField PRODUCT_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("productSize", org.apache.thrift.protocol.TType.I32, (short)9);
+  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)10);
+  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)11);
+  private static final org.apache.thrift.protocol.TField PRODUCT_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("productMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
+  private static final org.apache.thrift.protocol.TField REPLICA_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocations", org.apache.thrift.protocol.TType.LIST, (short)13);
+  private static final org.apache.thrift.protocol.TField CHILD_PRODUCTS_FIELD_DESC = new org.apache.thrift.protocol.TField("childProducts", org.apache.thrift.protocol.TType.LIST, (short)14);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new DataProductModelStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new DataProductModelTupleSchemeFactory());
+  }
+
+  private String productUri; // optional
+  private String gatewayId; // optional
+  private String parentProductUri; // optional
+  private String logicalPath; // optional
+  private String productName; // optional
+  private String productDescription; // optional
+  private String ownerName; // optional
+  private DataProductType dataProductType; // optional
+  private int productSize; // optional
+  private long creationTime; // optional
+  private long lastModifiedTime; // optional
+  private Map<String,String> productMetadata; // optional
+  private List<DataReplicaLocationModel> replicaLocations; // optional
+  private List<DataProductModel> childProducts; // 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 {
+    PRODUCT_URI((short)1, "productUri"),
+    GATEWAY_ID((short)2, "gatewayId"),
+    PARENT_PRODUCT_URI((short)3, "parentProductUri"),
+    LOGICAL_PATH((short)4, "logicalPath"),
+    PRODUCT_NAME((short)5, "productName"),
+    PRODUCT_DESCRIPTION((short)6, "productDescription"),
+    OWNER_NAME((short)7, "ownerName"),
+    /**
+     * 
+     * @see DataProductType
+     */
+    DATA_PRODUCT_TYPE((short)8, "dataProductType"),
+    PRODUCT_SIZE((short)9, "productSize"),
+    CREATION_TIME((short)10, "creationTime"),
+    LAST_MODIFIED_TIME((short)11, "lastModifiedTime"),
+    PRODUCT_METADATA((short)12, "productMetadata"),
+    REPLICA_LOCATIONS((short)13, "replicaLocations"),
+    CHILD_PRODUCTS((short)14, "childProducts");
+
+    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: // PRODUCT_URI
+          return PRODUCT_URI;
+        case 2: // GATEWAY_ID
+          return GATEWAY_ID;
+        case 3: // PARENT_PRODUCT_URI
+          return PARENT_PRODUCT_URI;
+        case 4: // LOGICAL_PATH
+          return LOGICAL_PATH;
+        case 5: // PRODUCT_NAME
+          return PRODUCT_NAME;
+        case 6: // PRODUCT_DESCRIPTION
+          return PRODUCT_DESCRIPTION;
+        case 7: // OWNER_NAME
+          return OWNER_NAME;
+        case 8: // DATA_PRODUCT_TYPE
+          return DATA_PRODUCT_TYPE;
+        case 9: // PRODUCT_SIZE
+          return PRODUCT_SIZE;
+        case 10: // CREATION_TIME
+          return CREATION_TIME;
+        case 11: // LAST_MODIFIED_TIME
+          return LAST_MODIFIED_TIME;
+        case 12: // PRODUCT_METADATA
+          return PRODUCT_METADATA;
+        case 13: // REPLICA_LOCATIONS
+          return REPLICA_LOCATIONS;
+        case 14: // CHILD_PRODUCTS
+          return CHILD_PRODUCTS;
+        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 __PRODUCTSIZE_ISSET_ID = 0;
+  private static final int __CREATIONTIME_ISSET_ID = 1;
+  private static final int __LASTMODIFIEDTIME_ISSET_ID = 2;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.LOGICAL_PATH,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS,_Fields.CHILD_PRODUCTS};
+  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.PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("productUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PARENT_PRODUCT_URI, new org.apache.thrift.meta_data.FieldMetaData("parentProductUri", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.LOGICAL_PATH, new org.apache.thrift.meta_data.FieldMetaData("logicalPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PRODUCT_NAME, new org.apache.thrift.meta_data.FieldMetaData("productName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PRODUCT_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("productDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.OWNER_NAME, new org.apache.thrift.meta_data.FieldMetaData("ownerName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.DATA_PRODUCT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("dataProductType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, DataProductType.class)));
+    tmpMap.put(_Fields.PRODUCT_SIZE, new org.apache.thrift.meta_data.FieldMetaData("productSize", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    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)));
+    tmpMap.put(_Fields.LAST_MODIFIED_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastModifiedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.PRODUCT_METADATA, new org.apache.thrift.meta_data.FieldMetaData("productMetadata", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.REPLICA_LOCATIONS, new org.apache.thrift.meta_data.FieldMetaData("replicaLocations", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataReplicaLocationModel"))));
+    tmpMap.put(_Fields.CHILD_PRODUCTS, new org.apache.thrift.meta_data.FieldMetaData("childProducts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataProductModel"))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataProductModel.class, metaDataMap);
+  }
+
+  public DataProductModel() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public DataProductModel(DataProductModel other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetProductUri()) {
+      this.productUri = other.productUri;
+    }
+    if (other.isSetGatewayId()) {
+      this.gatewayId = other.gatewayId;
+    }
+    if (other.isSetParentProductUri()) {
+      this.parentProductUri = other.parentProductUri;
+    }
+    if (other.isSetLogicalPath()) {
+      this.logicalPath = other.logicalPath;
+    }
+    if (other.isSetProductName()) {
+      this.productName = other.productName;
+    }
+    if (other.isSetProductDescription()) {
+      this.productDescription = other.productDescription;
+    }
+    if (other.isSetOwnerName()) {
+      this.ownerName = other.ownerName;
+    }
+    if (other.isSetDataProductType()) {
+      this.dataProductType = other.dataProductType;
+    }
+    this.productSize = other.productSize;
+    this.creationTime = other.creationTime;
+    this.lastModifiedTime = other.lastModifiedTime;
+    if (other.isSetProductMetadata()) {
+      Map<String,String> __this__productMetadata = new HashMap<String,String>(other.productMetadata);
+      this.productMetadata = __this__productMetadata;
+    }
+    if (other.isSetReplicaLocations()) {
+      List<DataReplicaLocationModel> __this__replicaLocations = new ArrayList<DataReplicaLocationModel>(other.replicaLocations.size());
+      for (DataReplicaLocationModel other_element : other.replicaLocations) {
+        __this__replicaLocations.add(other_element);
+      }
+      this.replicaLocations = __this__replicaLocations;
+    }
+    if (other.isSetChildProducts()) {
+      List<DataProductModel> __this__childProducts = new ArrayList<DataProductModel>(other.childProducts.size());
+      for (DataProductModel other_element : other.childProducts) {
+        __this__childProducts.add(other_element);
+      }
+      this.childProducts = __this__childProducts;
+    }
+  }
+
+  public DataProductModel deepCopy() {
+    return new DataProductModel(this);
+  }
+
+  @Override
+  public void clear() {
+    this.productUri = null;
+    this.gatewayId = null;
+    this.parentProductUri = null;
+    this.logicalPath = null;
+    this.productName = null;
+    this.productDescription = null;
+    this.ownerName = null;
+    this.dataProductType = null;
+    setProductSizeIsSet(false);
+    this.productSize = 0;
+    setCreationTimeIsSet(false);
+    this.creationTime = 0;
+    setLastModifiedTimeIsSet(false);
+    this.lastModifiedTime = 0;
+    this.productMetadata = null;
+    this.replicaLocations = null;
+    this.childProducts = null;
+  }
+
+  public String getProductUri() {
+    return this.productUri;
+  }
+
+  public void setProductUri(String productUri) {
+    this.productUri = productUri;
+  }
+
+  public void unsetProductUri() {
+    this.productUri = null;
+  }
+
+  /** Returns true if field productUri is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductUri() {
+    return this.productUri != null;
+  }
+
+  public void setProductUriIsSet(boolean value) {
+    if (!value) {
+      this.productUri = null;
+    }
+  }
+
+  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 getParentProductUri() {
+    return this.parentProductUri;
+  }
+
+  public void setParentProductUri(String parentProductUri) {
+    this.parentProductUri = parentProductUri;
+  }
+
+  public void unsetParentProductUri() {
+    this.parentProductUri = null;
+  }
+
+  /** Returns true if field parentProductUri is set (has been assigned a value) and false otherwise */
+  public boolean isSetParentProductUri() {
+    return this.parentProductUri != null;
+  }
+
+  public void setParentProductUriIsSet(boolean value) {
+    if (!value) {
+      this.parentProductUri = null;
+    }
+  }
+
+  public String getLogicalPath() {
+    return this.logicalPath;
+  }
+
+  public void setLogicalPath(String logicalPath) {
+    this.logicalPath = logicalPath;
+  }
+
+  public void unsetLogicalPath() {
+    this.logicalPath = null;
+  }
+
+  /** Returns true if field logicalPath is set (has been assigned a value) and false otherwise */
+  public boolean isSetLogicalPath() {
+    return this.logicalPath != null;
+  }
+
+  public void setLogicalPathIsSet(boolean value) {
+    if (!value) {
+      this.logicalPath = null;
+    }
+  }
+
+  public String getProductName() {
+    return this.productName;
+  }
+
+  public void setProductName(String productName) {
+    this.productName = productName;
+  }
+
+  public void unsetProductName() {
+    this.productName = null;
+  }
+
+  /** Returns true if field productName is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductName() {
+    return this.productName != null;
+  }
+
+  public void setProductNameIsSet(boolean value) {
+    if (!value) {
+      this.productName = null;
+    }
+  }
+
+  public String getProductDescription() {
+    return this.productDescription;
+  }
+
+  public void setProductDescription(String productDescription) {
+    this.productDescription = productDescription;
+  }
+
+  public void unsetProductDescription() {
+    this.productDescription = null;
+  }
+
+  /** Returns true if field productDescription is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductDescription() {
+    return this.productDescription != null;
+  }
+
+  public void setProductDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.productDescription = null;
+    }
+  }
+
+  public String getOwnerName() {
+    return this.ownerName;
+  }
+
+  public void setOwnerName(String ownerName) {
+    this.ownerName = ownerName;
+  }
+
+  public void unsetOwnerName() {
+    this.ownerName = null;
+  }
+
+  /** Returns true if field ownerName is set (has been assigned a value) and false otherwise */
+  public boolean isSetOwnerName() {
+    return this.ownerName != null;
+  }
+
+  public void setOwnerNameIsSet(boolean value) {
+    if (!value) {
+      this.ownerName = null;
+    }
+  }
+
+  /**
+   * 
+   * @see DataProductType
+   */
+  public DataProductType getDataProductType() {
+    return this.dataProductType;
+  }
+
+  /**
+   * 
+   * @see DataProductType
+   */
+  public void setDataProductType(DataProductType dataProductType) {
+    this.dataProductType = dataProductType;
+  }
+
+  public void unsetDataProductType() {
+    this.dataProductType = null;
+  }
+
+  /** Returns true if field dataProductType is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataProductType() {
+    return this.dataProductType != null;
+  }
+
+  public void setDataProductTypeIsSet(boolean value) {
+    if (!value) {
+      this.dataProductType = null;
+    }
+  }
+
+  public int getProductSize() {
+    return this.productSize;
+  }
+
+  public void setProductSize(int productSize) {
+    this.productSize = productSize;
+    setProductSizeIsSet(true);
+  }
+
+  public void unsetProductSize() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID);
+  }
+
+  /** Returns true if field productSize is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductSize() {
+    return EncodingUtils.testBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID);
+  }
+
+  public void setProductSizeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PRODUCTSIZE_ISSET_ID, value);
+  }
+
+  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 long getLastModifiedTime() {
+    return this.lastModifiedTime;
+  }
+
+  public void setLastModifiedTime(long lastModifiedTime) {
+    this.lastModifiedTime = lastModifiedTime;
+    setLastModifiedTimeIsSet(true);
+  }
+
+  public void unsetLastModifiedTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
+  }
+
+  /** Returns true if field lastModifiedTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetLastModifiedTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
+  }
+
+  public void setLastModifiedTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID, value);
+  }
+
+  public int getProductMetadataSize() {
+    return (this.productMetadata == null) ? 0 : this.productMetadata.size();
+  }
+
+  public void putToProductMetadata(String key, String val) {
+    if (this.productMetadata == null) {
+      this.productMetadata = new HashMap<String,String>();
+    }
+    this.productMetadata.put(key, val);
+  }
+
+  public Map<String,String> getProductMetadata() {
+    return this.productMetadata;
+  }
+
+  public void setProductMetadata(Map<String,String> productMetadata) {
+    this.productMetadata = productMetadata;
+  }
+
+  public void unsetProductMetadata() {
+    this.productMetadata = null;
+  }
+
+  /** Returns true if field productMetadata is set (has been assigned a value) and false otherwise */
+  public boolean isSetProductMetadata() {
+    return this.productMetadata != null;
+  }
+
+  public void setProductMetadataIsSet(boolean value) {
+    if (!value) {
+      this.productMetadata = null;
+    }
+  }
+
+  public int getReplicaLocationsSize() {
+    return (this.replicaLocations == null) ? 0 : this.replicaLocations.size();
+  }
+
+  public java.util.Iterator<DataReplicaLocationModel> getReplicaLocationsIterator() {
+    return (this.replicaLocations == null) ? null : this.replicaLocations.iterator();
+  }
+
+  public void addToReplicaLocations(DataReplicaLocationModel elem) {
+    if (this.replicaLocations == null) {
+      this.replicaLocations = new ArrayList<DataReplicaLocationModel>();
+    }
+    this.replicaLocations.add(elem);
+  }
+
+  public List<DataReplicaLocationModel> getReplicaLocations() {
+    return this.replicaLocations;
+  }
+
+  public void setReplicaLocations(List<DataReplicaLocationModel> replicaLocations) {
+    this.replicaLocations = replicaLocations;
+  }
+
+  public void unsetReplicaLocations() {
+    this.replicaLocations = null;
+  }
+
+  /** Returns true if field replicaLocations is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaLocations() {
+    return this.replicaLocations != null;
+  }
+
+  public void setReplicaLocationsIsSet(boolean value) {
+    if (!value) {
+      this.replicaLocations = null;
+    }
+  }
+
+  public int getChildProductsSize() {
+    return (this.childProducts == null) ? 0 : this.childProducts.size();
+  }
+
+  public java.util.Iterator<DataProductModel> getChildProductsIterator() {
+    return (this.childProducts == null) ? null : this.childProducts.iterator();
+  }
+
+  public void addToChildProducts(DataProductModel elem) {
+    if (this.childProducts == null) {
+      this.childProducts = new ArrayList<DataProductModel>();
+    }
+    this.childProducts.add(elem);
+  }
+
+  public List<DataProductModel> getChildProducts() {
+    return this.childProducts;
+  }
+
+  public void setChildProducts(List<DataProductModel> childProducts) {
+    this.childProducts = childProducts;
+  }
+
+  public void unsetChildProducts() {
+    this.childProducts = null;
+  }
+
+  /** Returns true if field childProducts is set (has been assigned a value) and false otherwise */
+  public boolean isSetChildProducts() {
+    return this.childProducts != null;
+  }
+
+  public void setChildProductsIsSet(boolean value) {
+    if (!value) {
+      this.childProducts = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PRODUCT_URI:
+      if (value == null) {
+        unsetProductUri();
+      } else {
+        setProductUri((String)value);
+      }
+      break;
+
+    case GATEWAY_ID:
+      if (value == null) {
+        unsetGatewayId();
+      } else {
+        setGatewayId((String)value);
+      }
+      break;
+
+    case PARENT_PRODUCT_URI:
+      if (value == null) {
+        unsetParentProductUri();
+      } else {
+        setParentProductUri((String)value);
+      }
+      break;
+
+    case LOGICAL_PATH:
+      if (value == null) {
+        unsetLogicalPath();
+      } else {
+        setLogicalPath((String)value);
+      }
+      break;
+
+    case PRODUCT_NAME:
+      if (value == null) {
+        unsetProductName();
+      } else {
+        setProductName((String)value);
+      }
+      break;
+
+    case PRODUCT_DESCRIPTION:
+      if (value == null) {
+        unsetProductDescription();
+      } else {
+        setProductDescription((String)value);
+      }
+      break;
+
+    case OWNER_NAME:
+      if (value == null) {
+        unsetOwnerName();
+      } else {
+        setOwnerName((String)value);
+      }
+      break;
+
+    case DATA_PRODUCT_TYPE:
+      if (value == null) {
+        unsetDataProductType();
+      } else {
+        setDataProductType((DataProductType)value);
+      }
+      break;
+
+    case PRODUCT_SIZE:
+      if (value == null) {
+        unsetProductSize();
+      } else {
+        setProductSize((Integer)value);
+      }
+      break;
+
+    case CREATION_TIME:
+      if (value == null) {
+        unsetCreationTime();
+      } else {
+        setCreationTime((Long)value);
+      }
+      break;
+
+    case LAST_MODIFIED_TIME:
+      if (value == null) {
+        unsetLastModifiedTime();
+      } else {
+        setLastModifiedTime((Long)value);
+      }
+      break;
+
+    case PRODUCT_METADATA:
+      if (value == null) {
+        unsetProductMetadata();
+      } else {
+        setProductMetadata((Map<String,String>)value);
+      }
+      break;
+
+    case REPLICA_LOCATIONS:
+      if (value == null) {
+        unsetReplicaLocations();
+      } else {
+        setReplicaLocations((List<DataReplicaLocationModel>)value);
+      }
+      break;
+
+    case CHILD_PRODUCTS:
+      if (value == null) {
+        unsetChildProducts();
+      } else {
+        setChildProducts((List<DataProductModel>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PRODUCT_URI:
+      return getProductUri();
+
+    case GATEWAY_ID:
+      return getGatewayId();
+
+    case PARENT_PRODUCT_URI:
+      return getParentProductUri();
+
+    case LOGICAL_PATH:
+      return getLogicalPath();
+
+    case PRODUCT_NAME:
+      return getProductName();
+
+    case PRODUCT_DESCRIPTION:
+      return getProductDescription();
+
+    case OWNER_NAME:
+      return getOwnerName();
+
+    case DATA_PRODUCT_TYPE:
+      return getDataProductType();
+
+    case PRODUCT_SIZE:
+      return getProductSize();
+
+    case CREATION_TIME:
+      return getCreationTime();
+
+    case LAST_MODIFIED_TIME:
+      return getLastModifiedTime();
+
+    case PRODUCT_METADATA:
+      return getProductMetadata();
+
+    case REPLICA_LOCATIONS:
+      return getReplicaLocations();
+
+    case CHILD_PRODUCTS:
+      return getChildProducts();
+
+    }
+    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 PRODUCT_URI:
+      return isSetProductUri();
+    case GATEWAY_ID:
+      return isSetGatewayId();
+    case PARENT_PRODUCT_URI:
+      return isSetParentProductUri();
+    case LOGICAL_PATH:
+      return isSetLogicalPath();
+    case PRODUCT_NAME:
+      return isSetProductName();
+    case PRODUCT_DESCRIPTION:
+      return isSetProductDescription();
+    case OWNER_NAME:
+      return isSetOwnerName();
+    case DATA_PRODUCT_TYPE:
+      return isSetDataProductType();
+    case PRODUCT_SIZE:
+      return isSetProductSize();
+    case CREATION_TIME:
+      return isSetCreationTime();
+    case LAST_MODIFIED_TIME:
+      return isSetLastModifiedTime();
+    case PRODUCT_METADATA:
+      return isSetProductMetadata();
+    case REPLICA_LOCATIONS:
+      return isSetReplicaLocations();
+    case CHILD_PRODUCTS:
+      return isSetChildProducts();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof DataProductModel)
+      return this.equals((DataProductModel)that);
+    return false;
+  }
+
+  public boolean equals(DataProductModel that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_productUri = true && this.isSetProductUri();
+    boolean that_present_productUri = true && that.isSetProductUri();
+    if (this_present_productUri || that_present_productUri) {
+      if (!(this_present_productUri && that_present_productUri))
+        return false;
+      if (!this.productUri.equals(that.productUri))
+        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_parentProductUri = true && this.isSetParentProductUri();
+    boolean that_present_parentProductUri = true && that.isSetParentProductUri();
+    if (this_present_parentProductUri || that_present_parentProductUri) {
+      if (!(this_present_parentProductUri && that_present_parentProductUri))
+        return false;
+      if (!this.parentProductUri.equals(that.parentProductUri))
+        return false;
+    }
+
+    boolean this_present_logicalPath = true && this.isSetLogicalPath();
+    boolean that_present_logicalPath = true && that.isSetLogicalPath();
+    if (this_present_logicalPath || that_present_logicalPath) {
+      if (!(this_present_logicalPath && that_present_logicalPath))
+        return false;
+      if (!this.logicalPath.equals(that.logicalPath))
+        return false;
+    }
+
+    boolean this_present_productName = true && this.isSetProductName();
+    boolean that_present_productName = true && that.isSetProductName();
+    if (this_present_productName || that_present_productName) {
+      if (!(this_present_productName && that_present_productName))
+        return false;
+      if (!this.productName.equals(that.productName))
+        return false;
+    }
+
+    boolean this_present_productDescription = true && this.isSetProductDescription();
+    boolean that_present_productDescription = true && that.isSetProductDescription();
+    if (this_present_productDescription || that_present_productDescription) {
+      if (!(this_present_productDescription && that_present_productDescription))
+        return false;
+      if (!this.productDescription.equals(that.productDescription))
+        return false;
+    }
+
+    boolean this_present_ownerName = true && this.isSetOwnerName();
+    boolean that_present_ownerName = true && that.isSetOwnerName();
+    if (this_present_ownerName || that_present_ownerName) {
+      if (!(this_present_ownerName && that_present_ownerName))
+        return false;
+      if (!this.ownerName.equals(that.ownerName))
+        return false;
+    }
+
+    boolean this_present_dataProductType = true && this.isSetDataProductType();
+    boolean that_present_dataProductType = true && that.isSetDataProductType();
+    if (this_present_dataProductType || that_present_dataProductType) {
+      if (!(this_present_dataProductType && that_present_dataProductType))
+        return false;
+      if (!this.dataProductType.equals(that.dataProductType))
+        return false;
+    }
+
+    boolean this_present_productSize = true && this.isSetProductSize();
+    boolean that_present_productSize = true && that.isSetProductSize();
+    if (this_present_productSize || that_present_productSize) {
+      if (!(this_present_productSize && that_present_productSize))
+        return false;
+      if (this.productSize != that.productSize)
+        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;
+    }
+
+    boolean this_present_lastModifiedTime = true && this.isSetLastModifiedTime();
+    boolean that_present_lastModifiedTime = true && that.isSetLastModifiedTime();
+    if (this_present_lastModifiedTime || that_present_lastModifiedTime) {
+      if (!(this_present_lastModifiedTime && that_present_lastModifiedTime))
+        return false;
+      if (this.lastModifiedTime != that.lastModifiedTime)
+        return false;
+    }
+
+    boolean this_present_productMetadata = true && this.isSetProductMetadata();
+    boolean that_present_productMetadata = true && that.isSetProductMetadata();
+    if (this_present_productMetadata || that_present_productMetadata) {
+      if (!(this_present_productMetadata && that_present_productMetadata))
+        return false;
+      if (!this.productMetadata.equals(that.productMetadata))
+        return false;
+    }
+
+    boolean this_present_replicaLocations = true && this.isSetReplicaLocations();
+    boolean that_present_replicaLocations = true && that.isSetReplicaLocations();
+    if (this_present_replicaLocations || that_present_replicaLocations) {
+      if (!(this_present_replicaLocations && that_present_replicaLocations))
+        return false;
+      if (!this.replicaLocations.equals(that.replicaLocations))
+        return false;
+    }
+
+    boolean this_present_childProducts = true && this.isSetChildProducts();
+    boolean that_present_childProducts = true && that.isSetChildProducts();
+    if (this_present_childProducts || that_present_childProducts) {
+      if (!(this_present_childProducts && that_present_childProducts))
+        return false;
+      if (!this.childProducts.equals(that.childProducts))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_productUri = true && (isSetProductUri());
+    list.add(present_productUri);
+    if (present_productUri)
+      list.add(productUri);
+
+    boolean present_gatewayId = true && (isSetGatewayId());
+    list.add(present_gatewayId);
+    if (present_gatewayId)
+      list.add(gatewayId);
+
+    boolean present_parentProductUri = true && (isSetParentProductUri());
+    list.add(present_parentProductUri);
+    if (present_parentProductUri)
+      list.add(parentProductUri);
+
+    boolean present_logicalPath = true && (isSetLogicalPath());
+    list.add(present_logicalPath);
+    if (present_logicalPath)
+      list.add(logicalPath);
+
+    boolean present_productName = true && (isSetProductName());
+    list.add(present_productName);
+    if (present_productName)
+      list.add(productName);
+
+    boolean present_productDescription = true && (isSetProductDescription());
+    list.add(present_productDescription);
+    if (present_productDescription)
+      list.add(productDescription);
+
+    boolean present_ownerName = true && (isSetOwnerName());
+    list.add(present_ownerName);
+    if (present_ownerName)
+      list.add(ownerName);
+
+    boolean present_dataProductType = true && (isSetDataProductType());
+    list.add(present_dataProductType);
+    if (present_dataProductType)
+      list.add(dataProductType.getValue());
+
+    boolean present_productSize = true && (isSetProductSize());
+    list.add(present_productSize);
+    if (present_productSize)
+      list.add(productSize);
+
+    boolean present_creationTime = true && (isSetCreationTime());
+    list.add(present_creationTime);
+    if (present_creationTime)
+      list.add(creationTime);
+
+    boolean present_lastModifiedTime = true && (isSetLastModifiedTime());
+    list.add(present_lastModifiedTime);
+    if (present_lastModifiedTime)
+      list.add(lastModifiedTime);
+
+    boolean present_productMetadata = true && (isSetProductMetadata());
+    list.add(present_productMetadata);
+    if (present_productMetadata)
+      list.add(productMetadata);
+
+    boolean present_replicaLocations = true && (isSetReplicaLocations());
+    list.add(present_replicaLocations);
+    if (present_replicaLocations)
+      list.add(replicaLocations);
+
+    boolean present_childProducts = true && (isSetChildProducts());
+    list.add(present_childProducts);
+    if (present_childProducts)
+      list.add(childProducts);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(DataProductModel other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetProductUri()).compareTo(other.isSetProductUri());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductUri()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productUri, other.productUri);
+      if (lastComparison != 0) {
+        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(isSetParentProductUri()).compareTo(other.isSetParentProductUri());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetParentProductUri()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.parentProductUri, other.parentProductUri);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLogicalPath()).compareTo(other.isSetLogicalPath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLogicalPath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.logicalPath, other.logicalPath);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetProductName()).compareTo(other.isSetProductName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productName, other.productName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetProductDescription()).compareTo(other.isSetProductDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productDescription, other.productDescription);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetOwnerName()).compareTo(other.isSetOwnerName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetOwnerName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ownerName, other.ownerName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDataProductType()).compareTo(other.isSetDataProductType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataProductType()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataProductType, other.dataProductType);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetProductSize()).compareTo(other.isSetProductSize());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductSize()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productSize, other.productSize);
+      if (lastComparison != 0) {
+        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;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLastModifiedTime()).compareTo(other.isSetLastModifiedTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLastModifiedTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastModifiedTime, other.lastModifiedTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetProductMetadata()).compareTo(other.isSetProductMetadata());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProductMetadata()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.productMetadata, other.productMetadata);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaLocations()).compareTo(other.isSetReplicaLocations());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaLocations()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaLocations, other.replicaLocations);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetChildProducts()).compareTo(other.isSetChildProducts());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetChildProducts()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.childProducts, other.childProducts);
+      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("DataProductModel(");
+    boolean first = true;
+
+    if (isSetProductUri()) {
+      sb.append("productUri:");
+      if (this.productUri == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.productUri);
+      }
+      first = false;
+    }
+    if (isSetGatewayId()) {
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
+      }
+      first = false;
+    }
+    if (isSetParentProductUri()) {
+      if (!first) sb.append(", ");
+      sb.append("parentProductUri:");
+      if (this.parentProductUri == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.parentProductUri);
+      }
+      first = false;
+    }
+    if (isSetLogicalPath()) {
+      if (!first) sb.append(", ");
+      sb.append("logicalPath:");
+      if (this.logicalPath == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.logicalPath);
+      }
+      first = false;
+    }
+    if (isSetProductName()) {
+      if (!first) sb.append(", ");
+      sb.append("productName:");
+      if (this.productName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.productName);
+      }
+      first = false;
+    }
+    if (isSetProductDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("productDescription:");
+      if (this.productDescription == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.productDescription);
+      }
+      first = false;
+    }
+    if (isSetOwnerName()) {
+      if (!first) sb.append(", ");
+      sb.append("ownerName:");
+      if (this.ownerName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ownerName);
+      }
+      first = false;
+    }
+    if (isSetDataProductType()) {
+      if (!first) sb.append(", ");
+      sb.append("dataProductType:");
+      if (this.dataProductType == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.dataProductType);
+      }
+      first = false;
+    }
+    if (isSetProductSize()) {
+      if (!first) sb.append(", ");
+      sb.append("productSize:");
+      sb.append(this.productSize);
+      first = false;
+    }
+    if (isSetCreationTime()) {
+      if (!first) sb.append(", ");
+      sb.append("creationTime:");
+      sb.append(this.creationTime);
+      first = false;
+    }
+    if (isSetLastModifiedTime()) {
+      if (!first) sb.append(", ");
+      sb.append("lastModifiedTime:");
+      sb.append(this.lastModifiedTime);
+      first = false;
+    }
+    if (isSetProductMetadata()) {
+      if (!first) sb.append(", ");
+      sb.append("productMetadata:");
+      if (this.productMetadata == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.productMetadata);
+      }
+      first = false;
+    }
+    if (isSetReplicaLocations()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaLocations:");
+      if (this.replicaLocations == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.replicaLocations);
+      }
+      first = false;
+    }
+    if (isSetChildProducts()) {
+      if (!first) sb.append(", ");
+      sb.append("childProducts:");
+      if (this.childProducts == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.childProducts);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // 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 DataProductModelStandardSchemeFactory implements SchemeFactory {
+    public DataProductModelStandardScheme getScheme() {
+      return new DataProductModelStandardScheme();
+    }
+  }
+
+  private static class DataProductModelStandardScheme extends StandardScheme<DataProductModel> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, DataProductModel 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: // PRODUCT_URI
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.productUri = iprot.readString();
+              struct.setProductUriIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // 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 3: // PARENT_PRODUCT_URI
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.parentProductUri = iprot.readString();
+              struct.setParentProductUriIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // LOGICAL_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.logicalPath = iprot.readString();
+              struct.setLogicalPathIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // PRODUCT_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.productName = iprot.readString();
+              struct.setProductNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // PRODUCT_DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.productDescription = iprot.readString();
+              struct.setProductDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // OWNER_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.ownerName = iprot.readString();
+              struct.setOwnerNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // DATA_PRODUCT_TYPE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.dataProductType = org.apache.airavata.model.data.replica.DataProductType.findByValue(iprot.readI32());
+              struct.setDataProductTypeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // PRODUCT_SIZE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.productSize = iprot.readI32();
+              struct.setProductSizeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // 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;
+          case 11: // LAST_MODIFIED_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.lastModifiedTime = iprot.readI64();
+              struct.setLastModifiedTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 12: // PRODUCT_METADATA
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map0 = iprot.readMapBegin();
+                struct.productMetadata = new HashMap<String,String>(2*_map0.size);
+                String _key1;
+                String _val2;
+                for (int _i3 = 0; _i3 < _map0.size; ++_i3)
+                {
+                  _key1 = iprot.readString();
+                  _val2 = iprot.readString();
+                  struct.productMetadata.put(_key1, _val2);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setProductMetadataIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 13: // REPLICA_LOCATIONS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list4 = iprot.readListBegin();
+                struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list4.size);
+                DataReplicaLocationModel _elem5;
+                for (int _i6 = 0; _i6 < _list4.size; ++_i6)
+                {
+                  _elem5 = new DataReplicaLocationModel();
+                  _elem5.read(iprot);
+                  struct.replicaLocations.add(_elem5);
+                }
+                iprot.readListEnd();
+              }
+              struct.setReplicaLocationsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 14: // CHILD_PRODUCTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list7 = iprot.readListBegin();
+                struct.childProducts = new ArrayList<DataProductModel>(_list7.size);
+                DataProductModel _elem8;
+                for (int _i9 = 0; _i9 < _list7.size; ++_i9)
+                {
+                  _elem8 = new DataProductModel();
+                  _elem8.read(iprot);
+                  struct.childProducts.add(_elem8);
+                }
+                iprot.readListEnd();
+              }
+              struct.setChildProductsIsSet(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, DataProductModel struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.productUri != null) {
+        if (struct.isSetProductUri()) {
+          oprot.writeFieldBegin(PRODUCT_URI_FIELD_DESC);
+          oprot.writeString(struct.productUri);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.gatewayId != null) {
+        if (struct.isSetGatewayId()) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.parentProductUri != null) {
+        if (struct.isSetParentProductUri()) {
+          oprot.writeFieldBegin(PARENT_PRODUCT_URI_FIELD_DESC);
+          oprot.writeString(struct.parentProductUri);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.logicalPath != null) {
+        if (struct.isSetLogicalPath()) {
+          oprot.writeFieldBegin(LOGICAL_PATH_FIELD_DESC);
+          oprot.writeString(struct.logicalPath);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.productName != null) {
+        if (struct.isSetProductName()) {
+          oprot.writeFieldBegin(PRODUCT_NAME_FIELD_DESC);
+          oprot.writeString(struct.productName);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.productDescription != null) {
+        if (struct.isSetProductDescription()) {
+          oprot.writeFieldBegin(PRODUCT_DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.productDescription);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.ownerName != null) {
+        if (struct.isSetOwnerName()) {
+          oprot.writeFieldBegin(OWNER_NAME_FIELD_DESC);
+          oprot.writeString(struct.ownerName);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.dataProductType != null) {
+        if (struct.isSetDataProductType()) {
+          oprot.writeFieldBegin(DATA_PRODUCT_TYPE_FIELD_DESC);
+          oprot.writeI32(struct.dataProductType.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetProductSize()) {
+        oprot.writeFieldBegin(PRODUCT_SIZE_FIELD_DESC);
+        oprot.writeI32(struct.productSize);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetCreationTime()) {
+        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
+        oprot.writeI64(struct.creationTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetLastModifiedTime()) {
+        oprot.writeFieldBegin(LAST_MODIFIED_TIME_FIELD_DESC);
+        oprot.writeI64(struct.lastModifiedTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.productMetadata != null) {
+        if (struct.isSetProductMetadata()) {
+          oprot.writeFieldBegin(PRODUCT_METADATA_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.productMetadata.size()));
+            for (Map.Entry<String, String> _iter10 : struct.productMetadata.entrySet())
+            {
+              oprot.writeString(_iter10.getKey());
+              oprot.writeString(_iter10.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.replicaLocations != null) {
+        if (struct.isSetReplicaLocations()) {
+          oprot.writeFieldBegin(REPLICA_LOCATIONS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.replicaLocations.size()));
+            for (DataReplicaLocationModel _iter11 : struct.replicaLocations)
+            {
+              _iter11.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.childProducts != null) {
+        if (struct.isSetChildProducts()) {
+          oprot.writeFieldBegin(CHILD_PRODUCTS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.childProducts.size()));
+            for (DataProductModel _iter12 : struct.childProducts)
+            {
+              _iter12.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class DataProductModelTupleSchemeFactory implements SchemeFactory {
+    public DataProductModelTupleScheme getScheme() {
+      return new DataProductModelTupleScheme();
+    }
+  }
+
+  private static class DataProductModelTupleScheme extends TupleScheme<DataProductModel> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetProductUri()) {
+        optionals.set(0);
+      }
+      if (struct.isSetGatewayId()) {
+        optionals.set(1);
+      }
+      if (struct.isSetParentProductUri()) {
+        optionals.set(2);
+      }
+      if (struct.isSetLogicalPath()) {
+        optionals.set(3);
+      }
+      if (struct.isSetProductName()) {
+        optionals.set(4);
+      }
+      if (struct.isSetProductDescription()) {
+        optionals.set(5);
+      }
+      if (struct.isSetOwnerName()) {
+        optionals.set(6);
+      }
+      if (struct.isSetDataProductType()) {
+        optionals.set(7);
+      }
+      if (struct.isSetProductSize()) {
+        optionals.set(8);
+      }
+      if (struct.isSetCreationTime()) {
+        optionals.set(9);
+      }
+      if (struct.isSetLastModifiedTime()) {
+        optionals.set(10);
+      }
+      if (struct.isSetProductMetadata()) {
+        optionals.set(11);
+      }
+      if (struct.isSetReplicaLocations()) {
+        optionals.set(12);
+      }
+      if (struct.isSetChildProducts()) {
+        optionals.set(13);
+      }
+      oprot.writeBitSet(optionals, 14);
+      if (struct.isSetProductUri()) {
+        oprot.writeString(struct.productUri);
+      }
+      if (struct.isSetGatewayId()) {
+        oprot.writeString(struct.gatewayId);
+      }
+      if (struct.isSetParentProductUri()) {
+        oprot.writeString(struct.parentProductUri);
+      }
+      if (struct.isSetLogicalPath()) {
+        oprot.writeString(struct.logicalPath);
+      }
+      if (struct.isSetProductName()) {
+        oprot.writeString(struct.productName);
+      }
+      if (struct.isSetProductDescription()) {
+        oprot.writeString(struct.productDescription);
+      }
+      if (struct.isSetOwnerName()) {
+        oprot.writeString(struct.ownerName);
+      }
+      if (struct.isSetDataProductType()) {
+        oprot.writeI32(struct.dataProductType.getValue());
+      }
+      if (struct.isSetProductSize()) {
+        oprot.writeI32(struct.productSize);
+      }
+      if (struct.isSetCreationTime()) {
+        oprot.writeI64(struct.creationTime);
+      }
+      if (struct.isSetLastModifiedTime()) {
+        oprot.writeI64(struct.lastModifiedTime);
+      }
+      if (struct.isSetProductMetadata()) {
+        {
+          oprot.writeI32(struct.productMetadata.size());
+          for (Map.Entry<String, String> _iter13 : struct.productMetadata.entrySet())
+          {
+            oprot.writeString(_iter13.getKey());
+            oprot.writeString(_iter13.getValue());
+          }
+        }
+      }
+      if (struct.isSetReplicaLocations()) {
+        {
+          oprot.writeI32(struct.replicaLocations.size());
+          for (DataReplicaLocationModel _iter14 : struct.replicaLocations)
+          {
+            _iter14.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetChildProducts()) {
+        {
+          oprot.writeI32(struct.childProducts.size());
+          for (DataProductModel _iter15 : struct.childProducts)
+          {
+            _iter15.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(14);
+      if (incoming.get(0)) {
+        struct.productUri = iprot.readString();
+        struct.setProductUriIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.parentProductUri = iprot.readString();
+        struct.setParentProductUriIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.logicalPath = iprot.readString();
+        struct.setLogicalPathIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.productName = iprot.readString();
+        struct.setProductNameIsSet(true);
+      }
+      if (incoming.get(5)) {
+        struct.productDescription = iprot.readString();
+        struct.setProductDescriptionIsSet(true);
+      }
+      if (incoming.get(6)) {
+        struct.ownerName = iprot.readString();
+        struct.setOwnerNameIsSet(true);
+      }
+      if (incoming.get(7)) {
+        struct.dataProductType = org.apache.airavata.model.data.replica.DataProductType.findByValue(iprot.readI32());
+        struct.setDataProductTypeIsSet(true);
+      }
+      if (incoming.get(8)) {
+        struct.productSize = iprot.readI32();
+        struct.setProductSizeIsSet(true);
+      }
+      if (incoming.get(9)) {
+        struct.creationTime = iprot.readI64();
+        struct.setCreationTimeIsSet(true);
+      }
+      if (incoming.get(10)) {
+        struct.lastModifiedTime = iprot.readI64();
+        struct.setLastModifiedTimeIsSet(true);
+      }
+      if (incoming.get(11)) {
+        {
+          org.apache.thrift.protocol.TMap _map16 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.productMetadata = new HashMap<String,String>(2*_map16.size);
+          String _key17;
+          String _val18;
+          for (int _i19 = 0; _i19 < _map16.size; ++_i19)
+          {
+            _key17 = iprot.readString();
+            _val18 = iprot.readString();
+            struct.productMetadata.put(_key17, _val18);
+          }
+        }
+        struct.setProductMetadataIsSet(true);
+      }
+      if (incoming.get(12)) {
+        {
+          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list20.size);
+          DataReplicaLocationModel _elem21;
+          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
+          {
+            _elem21 = new DataReplicaLocationModel();
+            _elem21.read(iprot);
+            struct.replicaLocations.add(_elem21);
+          }
+        }
+        struct.setReplicaLocationsIsSet(true);
+      }
+      if (incoming.get(13)) {
+        {
+          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.childProducts = new ArrayList<DataProductModel>(_list23.size);
+          DataProductModel _elem24;
+          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
+          {
+            _elem24 = new DataProductModel();
+            _elem24.read(iprot);
+            struct.childProducts.add(_elem24);
+          }
+        }
+        struct.setChildProductsIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
new file mode 100644
index 0000000..b953216
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductType.java
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * 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.data.replica;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum DataProductType implements org.apache.thrift.TEnum {
+  DIR(0),
+  FILE(1),
+  COLLECTION(2);
+
+  private final int value;
+
+  private DataProductType(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 DataProductType findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return DIR;
+      case 1:
+        return FILE;
+      case 2:
+        return COLLECTION;
+      default:
+        return null;
+    }
+  }
+}


[36/55] [abbrv] airavata git commit: adding API methods to get parent and child products

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
index a2970ee..03978b0 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Data/Replica/Types.php
@@ -105,10 +105,6 @@ class DataProductModel {
    * @var \Airavata\Model\Data\Replica\DataReplicaLocationModel[]
    */
   public $replicaLocations = null;
-  /**
-   * @var \Airavata\Model\Data\Replica\DataProductModel[]
-   */
-  public $childProducts = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -178,15 +174,6 @@ class DataProductModel {
             'class' => '\Airavata\Model\Data\Replica\DataReplicaLocationModel',
             ),
           ),
-        14 => array(
-          'var' => 'childProducts',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Data\Replica\DataProductModel',
-            ),
-          ),
         );
     }
     if (is_array($vals)) {
@@ -229,9 +216,6 @@ class DataProductModel {
       if (isset($vals['replicaLocations'])) {
         $this->replicaLocations = $vals['replicaLocations'];
       }
-      if (isset($vals['childProducts'])) {
-        $this->childProducts = $vals['childProducts'];
-      }
     }
   }
 
@@ -369,24 +353,6 @@ class DataProductModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 14:
-          if ($ftype == TType::LST) {
-            $this->childProducts = array();
-            $_size13 = 0;
-            $_etype16 = 0;
-            $xfer += $input->readListBegin($_etype16, $_size13);
-            for ($_i17 = 0; $_i17 < $_size13; ++$_i17)
-            {
-              $elem18 = null;
-              $elem18 = new \Airavata\Model\Data\Replica\DataProductModel();
-              $xfer += $elem18->read($input);
-              $this->childProducts []= $elem18;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -463,10 +429,10 @@ class DataProductModel {
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, count($this->productMetadata));
         {
-          foreach ($this->productMetadata as $kiter19 => $viter20)
+          foreach ($this->productMetadata as $kiter13 => $viter14)
           {
-            $xfer += $output->writeString($kiter19);
-            $xfer += $output->writeString($viter20);
+            $xfer += $output->writeString($kiter13);
+            $xfer += $output->writeString($viter14);
           }
         }
         $output->writeMapEnd();
@@ -481,26 +447,9 @@ class DataProductModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->replicaLocations));
         {
-          foreach ($this->replicaLocations as $iter21)
-          {
-            $xfer += $iter21->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->childProducts !== null) {
-      if (!is_array($this->childProducts)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('childProducts', TType::LST, 14);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->childProducts));
-        {
-          foreach ($this->childProducts as $iter22)
+          foreach ($this->replicaLocations as $iter15)
           {
-            $xfer += $iter22->write($output);
+            $xfer += $iter15->write($output);
           }
         }
         $output->writeListEnd();
@@ -766,17 +715,17 @@ class DataReplicaLocationModel {
         case 12:
           if ($ftype == TType::MAP) {
             $this->replicaMetadata = array();
-            $_size23 = 0;
-            $_ktype24 = 0;
-            $_vtype25 = 0;
-            $xfer += $input->readMapBegin($_ktype24, $_vtype25, $_size23);
-            for ($_i27 = 0; $_i27 < $_size23; ++$_i27)
+            $_size16 = 0;
+            $_ktype17 = 0;
+            $_vtype18 = 0;
+            $xfer += $input->readMapBegin($_ktype17, $_vtype18, $_size16);
+            for ($_i20 = 0; $_i20 < $_size16; ++$_i20)
             {
-              $key28 = '';
-              $val29 = '';
-              $xfer += $input->readString($key28);
-              $xfer += $input->readString($val29);
-              $this->replicaMetadata[$key28] = $val29;
+              $key21 = '';
+              $val22 = '';
+              $xfer += $input->readString($key21);
+              $xfer += $input->readString($val22);
+              $this->replicaMetadata[$key21] = $val22;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -859,10 +808,10 @@ class DataReplicaLocationModel {
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, count($this->replicaMetadata));
         {
-          foreach ($this->replicaMetadata as $kiter30 => $viter31)
+          foreach ($this->replicaMetadata as $kiter23 => $viter24)
           {
-            $xfer += $output->writeString($kiter30);
-            $xfer += $output->writeString($viter31);
+            $xfer += $output->writeString($kiter23);
+            $xfer += $output->writeString($viter24);
           }
         }
         $output->writeMapEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 ac42357..67910c4 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
@@ -161,6 +161,8 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('  string registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel)')
   print('  DataProductModel getDataProduct(AuthzToken authzToken, string dataProductUri)')
   print('  string registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel)')
+  print('  DataProductModel getParentDataProduct(AuthzToken authzToken, string productUri)')
+  print('   getChildDataProducts(AuthzToken authzToken, string productUri)')
   print('')
   sys.exit(0)
 
@@ -1039,6 +1041,18 @@ elif cmd == 'registerReplicaLocation':
     sys.exit(1)
   pp.pprint(client.registerReplicaLocation(eval(args[0]),eval(args[1]),))
 
+elif cmd == 'getParentDataProduct':
+  if len(args) != 2:
+    print('getParentDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getParentDataProduct(eval(args[0]),args[1],))
+
+elif cmd == 'getChildDataProducts':
+  if len(args) != 2:
+    print('getChildDataProducts requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getChildDataProducts(eval(args[0]),args[1],))
+
 else:
   print('Unrecognized method %s' % cmd)
   sys.exit(1)

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 ea2913c..bcebcdd 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
@@ -2919,7 +2919,7 @@ class Iface:
 
   def registerDataProduct(self, authzToken, dataProductModel):
     """
-    API Methods related to data catalog
+    API Methods related to replica catalog
 
 
     Parameters:
@@ -2944,6 +2944,22 @@ class Iface:
     """
     pass
 
+  def getParentDataProduct(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    pass
+
+  def getChildDataProducts(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    pass
+
 
 class Client(Iface):
   def __init__(self, iprot, oprot=None):
@@ -10380,7 +10396,7 @@ class Client(Iface):
 
   def registerDataProduct(self, authzToken, dataProductModel):
     """
-    API Methods related to data catalog
+    API Methods related to replica catalog
 
 
     Parameters:
@@ -10504,6 +10520,88 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "registerReplicaLocation failed: unknown result")
 
+  def getParentDataProduct(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    self.send_getParentDataProduct(authzToken, productUri)
+    return self.recv_getParentDataProduct()
+
+  def send_getParentDataProduct(self, authzToken, productUri):
+    self._oprot.writeMessageBegin('getParentDataProduct', TMessageType.CALL, self._seqid)
+    args = getParentDataProduct_args()
+    args.authzToken = authzToken
+    args.productUri = productUri
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getParentDataProduct(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getParentDataProduct_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getParentDataProduct failed: unknown result")
+
+  def getChildDataProducts(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    self.send_getChildDataProducts(authzToken, productUri)
+    return self.recv_getChildDataProducts()
+
+  def send_getChildDataProducts(self, authzToken, productUri):
+    self._oprot.writeMessageBegin('getChildDataProducts', TMessageType.CALL, self._seqid)
+    args = getChildDataProducts_args()
+    args.authzToken = authzToken
+    args.productUri = productUri
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getChildDataProducts(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getChildDataProducts_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getChildDataProducts failed: unknown result")
+
 
 class Processor(Iface, TProcessor):
   def __init__(self, handler):
@@ -10646,6 +10744,8 @@ class Processor(Iface, TProcessor):
     self._processMap["registerDataProduct"] = Processor.process_registerDataProduct
     self._processMap["getDataProduct"] = Processor.process_getDataProduct
     self._processMap["registerReplicaLocation"] = Processor.process_registerReplicaLocation
+    self._processMap["getParentDataProduct"] = Processor.process_getParentDataProduct
+    self._processMap["getChildDataProducts"] = Processor.process_getChildDataProducts
 
   def process(self, iprot, oprot):
     (name, type, seqid) = iprot.readMessageBegin()
@@ -14924,6 +15024,68 @@ class Processor(Iface, TProcessor):
     oprot.writeMessageEnd()
     oprot.trans.flush()
 
+  def process_getParentDataProduct(self, seqid, iprot, oprot):
+    args = getParentDataProduct_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getParentDataProduct_result()
+    try:
+      result.success = self._handler.getParentDataProduct(args.authzToken, args.productUri)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getParentDataProduct", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getChildDataProducts(self, seqid, iprot, oprot):
+    args = getChildDataProducts_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getChildDataProducts_result()
+    try:
+      result.success = self._handler.getChildDataProducts(args.authzToken, args.productUri)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getChildDataProducts", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
 
 # HELPER FUNCTIONS AND STRUCTURES
 
@@ -44789,3 +44951,419 @@ class registerReplicaLocation_result:
 
   def __ne__(self, other):
     return not (self == other)
+
+class getParentDataProduct_args:
+  """
+  Attributes:
+   - authzToken
+   - productUri
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'productUri', None, None, ), # 2
+  )
+
+  def __init__(self, authzToken=None, productUri=None,):
+    self.authzToken = authzToken
+    self.productUri = productUri
+
+  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.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.productUri = 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('getParentDataProduct_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 2)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.productUri is None:
+      raise TProtocol.TProtocolException(message='Required field productUri is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.productUri)
+    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 getParentDataProduct_result:
+  """
+  Attributes:
+   - success
+   - ire
+   - ace
+   - ase
+   - ae
+  """
+
+  thrift_spec = (
+    (0, TType.STRUCT, 'success', (apache.airavata.model.data.replica.ttypes.DataProductModel, apache.airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 4
+  )
+
+  def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+    self.success = success
+    self.ire = ire
+    self.ace = ace
+    self.ase = ase
+    self.ae = ae
+
+  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 == 0:
+        if ftype == TType.STRUCT:
+          self.success = apache.airavata.model.data.replica.ttypes.DataProductModel()
+          self.success.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        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('getParentDataProduct_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
+    value = (value * 31) ^ hash(self.ae)
+    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 getChildDataProducts_args:
+  """
+  Attributes:
+   - authzToken
+   - productUri
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'productUri', None, None, ), # 2
+  )
+
+  def __init__(self, authzToken=None, productUri=None,):
+    self.authzToken = authzToken
+    self.productUri = productUri
+
+  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.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.productUri = 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('getChildDataProducts_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 2)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.productUri is None:
+      raise TProtocol.TProtocolException(message='Required field productUri is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.productUri)
+    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 getChildDataProducts_result:
+  """
+  Attributes:
+   - success
+   - ire
+   - ace
+   - ase
+   - ae
+  """
+
+  thrift_spec = (
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.data.replica.ttypes.DataProductModel, apache.airavata.model.data.replica.ttypes.DataProductModel.thrift_spec)), None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 4
+  )
+
+  def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+    self.success = success
+    self.ire = ire
+    self.ace = ace
+    self.ase = ase
+    self.ae = ae
+
+  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 == 0:
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype268, _size265) = iprot.readListBegin()
+          for _i269 in xrange(_size265):
+            _elem270 = apache.airavata.model.data.replica.ttypes.DataProductModel()
+            _elem270.read(iprot)
+            self.success.append(_elem270)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        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('getChildDataProducts_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter271 in self.success:
+        iter271.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
+    value = (value * 31) ^ hash(self.ae)
+    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)

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
index 271b9c0..38f07f5 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/data/replica/ttypes.py
@@ -84,7 +84,6 @@ class DataProductModel:
    - lastModifiedTime
    - productMetadata
    - replicaLocations
-   - childProducts
   """
 
   thrift_spec = (
@@ -102,10 +101,9 @@ class DataProductModel:
     (11, TType.I64, 'lastModifiedTime', None, None, ), # 11
     (12, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
     (13, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 13
-    (14, TType.LIST, 'childProducts', (TType.STRUCT,(DataProductModel, DataProductModel.thrift_spec)), None, ), # 14
   )
 
-  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, logicalPath=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None, childProducts=None,):
+  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, logicalPath=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None,):
     self.productUri = productUri
     self.gatewayId = gatewayId
     self.parentProductUri = parentProductUri
@@ -119,7 +117,6 @@ class DataProductModel:
     self.lastModifiedTime = lastModifiedTime
     self.productMetadata = productMetadata
     self.replicaLocations = replicaLocations
-    self.childProducts = childProducts
 
   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:
@@ -207,17 +204,6 @@ class DataProductModel:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 14:
-        if ftype == TType.LIST:
-          self.childProducts = []
-          (_etype16, _size13) = iprot.readListBegin()
-          for _i17 in xrange(_size13):
-            _elem18 = DataProductModel()
-            _elem18.read(iprot)
-            self.childProducts.append(_elem18)
-          iprot.readListEnd()
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -275,23 +261,16 @@ class DataProductModel:
     if self.productMetadata is not None:
       oprot.writeFieldBegin('productMetadata', TType.MAP, 12)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.productMetadata))
-      for kiter19,viter20 in self.productMetadata.items():
-        oprot.writeString(kiter19)
-        oprot.writeString(viter20)
+      for kiter13,viter14 in self.productMetadata.items():
+        oprot.writeString(kiter13)
+        oprot.writeString(viter14)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.replicaLocations is not None:
       oprot.writeFieldBegin('replicaLocations', TType.LIST, 13)
       oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
-      for iter21 in self.replicaLocations:
-        iter21.write(oprot)
-      oprot.writeListEnd()
-      oprot.writeFieldEnd()
-    if self.childProducts is not None:
-      oprot.writeFieldBegin('childProducts', TType.LIST, 14)
-      oprot.writeListBegin(TType.STRUCT, len(self.childProducts))
-      for iter22 in self.childProducts:
-        iter22.write(oprot)
+      for iter15 in self.replicaLocations:
+        iter15.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -316,7 +295,6 @@ class DataProductModel:
     value = (value * 31) ^ hash(self.lastModifiedTime)
     value = (value * 31) ^ hash(self.productMetadata)
     value = (value * 31) ^ hash(self.replicaLocations)
-    value = (value * 31) ^ hash(self.childProducts)
     return value
 
   def __repr__(self):
@@ -444,11 +422,11 @@ class DataReplicaLocationModel:
       elif fid == 12:
         if ftype == TType.MAP:
           self.replicaMetadata = {}
-          (_ktype24, _vtype25, _size23 ) = iprot.readMapBegin()
-          for _i27 in xrange(_size23):
-            _key28 = iprot.readString()
-            _val29 = iprot.readString()
-            self.replicaMetadata[_key28] = _val29
+          (_ktype17, _vtype18, _size16 ) = iprot.readMapBegin()
+          for _i20 in xrange(_size16):
+            _key21 = iprot.readString()
+            _val22 = iprot.readString()
+            self.replicaMetadata[_key21] = _val22
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -509,9 +487,9 @@ class DataReplicaLocationModel:
     if self.replicaMetadata is not None:
       oprot.writeFieldBegin('replicaMetadata', TType.MAP, 12)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.replicaMetadata))
-      for kiter30,viter31 in self.replicaMetadata.items():
-        oprot.writeString(kiter30)
-        oprot.writeString(viter31)
+      for kiter23,viter24 in self.replicaMetadata.items():
+        oprot.writeString(kiter23)
+        oprot.writeString(viter24)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
index 16a6aa9..8f44e79 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataProductModel.java
@@ -68,7 +68,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
   private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)11);
   private static final org.apache.thrift.protocol.TField PRODUCT_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("productMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
   private static final org.apache.thrift.protocol.TField REPLICA_LOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocations", org.apache.thrift.protocol.TType.LIST, (short)13);
-  private static final org.apache.thrift.protocol.TField CHILD_PRODUCTS_FIELD_DESC = new org.apache.thrift.protocol.TField("childProducts", org.apache.thrift.protocol.TType.LIST, (short)14);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -89,7 +88,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
   private long lastModifiedTime; // optional
   private Map<String,String> productMetadata; // optional
   private List<DataReplicaLocationModel> replicaLocations; // optional
-  private List<DataProductModel> childProducts; // 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 {
@@ -109,8 +107,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     CREATION_TIME((short)10, "creationTime"),
     LAST_MODIFIED_TIME((short)11, "lastModifiedTime"),
     PRODUCT_METADATA((short)12, "productMetadata"),
-    REPLICA_LOCATIONS((short)13, "replicaLocations"),
-    CHILD_PRODUCTS((short)14, "childProducts");
+    REPLICA_LOCATIONS((short)13, "replicaLocations");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -151,8 +148,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
           return PRODUCT_METADATA;
         case 13: // REPLICA_LOCATIONS
           return REPLICA_LOCATIONS;
-        case 14: // CHILD_PRODUCTS
-          return CHILD_PRODUCTS;
         default:
           return null;
       }
@@ -197,7 +192,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
   private static final int __CREATIONTIME_ISSET_ID = 1;
   private static final int __LASTMODIFIEDTIME_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.LOGICAL_PATH,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS,_Fields.CHILD_PRODUCTS};
+  private static final _Fields optionals[] = {_Fields.PRODUCT_URI,_Fields.GATEWAY_ID,_Fields.PARENT_PRODUCT_URI,_Fields.LOGICAL_PATH,_Fields.PRODUCT_NAME,_Fields.PRODUCT_DESCRIPTION,_Fields.OWNER_NAME,_Fields.DATA_PRODUCT_TYPE,_Fields.PRODUCT_SIZE,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.PRODUCT_METADATA,_Fields.REPLICA_LOCATIONS};
   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);
@@ -230,9 +225,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     tmpMap.put(_Fields.REPLICA_LOCATIONS, new org.apache.thrift.meta_data.FieldMetaData("replicaLocations", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataReplicaLocationModel"))));
-    tmpMap.put(_Fields.CHILD_PRODUCTS, new org.apache.thrift.meta_data.FieldMetaData("childProducts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT            , "DataProductModel"))));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataProductModel.class, metaDataMap);
   }
@@ -283,13 +275,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       this.replicaLocations = __this__replicaLocations;
     }
-    if (other.isSetChildProducts()) {
-      List<DataProductModel> __this__childProducts = new ArrayList<DataProductModel>(other.childProducts.size());
-      for (DataProductModel other_element : other.childProducts) {
-        __this__childProducts.add(other_element);
-      }
-      this.childProducts = __this__childProducts;
-    }
   }
 
   public DataProductModel deepCopy() {
@@ -314,7 +299,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     this.lastModifiedTime = 0;
     this.productMetadata = null;
     this.replicaLocations = null;
-    this.childProducts = null;
   }
 
   public String getProductUri() {
@@ -647,44 +631,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     }
   }
 
-  public int getChildProductsSize() {
-    return (this.childProducts == null) ? 0 : this.childProducts.size();
-  }
-
-  public java.util.Iterator<DataProductModel> getChildProductsIterator() {
-    return (this.childProducts == null) ? null : this.childProducts.iterator();
-  }
-
-  public void addToChildProducts(DataProductModel elem) {
-    if (this.childProducts == null) {
-      this.childProducts = new ArrayList<DataProductModel>();
-    }
-    this.childProducts.add(elem);
-  }
-
-  public List<DataProductModel> getChildProducts() {
-    return this.childProducts;
-  }
-
-  public void setChildProducts(List<DataProductModel> childProducts) {
-    this.childProducts = childProducts;
-  }
-
-  public void unsetChildProducts() {
-    this.childProducts = null;
-  }
-
-  /** Returns true if field childProducts is set (has been assigned a value) and false otherwise */
-  public boolean isSetChildProducts() {
-    return this.childProducts != null;
-  }
-
-  public void setChildProductsIsSet(boolean value) {
-    if (!value) {
-      this.childProducts = null;
-    }
-  }
-
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case PRODUCT_URI:
@@ -791,14 +737,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       break;
 
-    case CHILD_PRODUCTS:
-      if (value == null) {
-        unsetChildProducts();
-      } else {
-        setChildProducts((List<DataProductModel>)value);
-      }
-      break;
-
     }
   }
 
@@ -843,9 +781,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     case REPLICA_LOCATIONS:
       return getReplicaLocations();
 
-    case CHILD_PRODUCTS:
-      return getChildProducts();
-
     }
     throw new IllegalStateException();
   }
@@ -883,8 +818,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       return isSetProductMetadata();
     case REPLICA_LOCATIONS:
       return isSetReplicaLocations();
-    case CHILD_PRODUCTS:
-      return isSetChildProducts();
     }
     throw new IllegalStateException();
   }
@@ -1019,15 +952,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         return false;
     }
 
-    boolean this_present_childProducts = true && this.isSetChildProducts();
-    boolean that_present_childProducts = true && that.isSetChildProducts();
-    if (this_present_childProducts || that_present_childProducts) {
-      if (!(this_present_childProducts && that_present_childProducts))
-        return false;
-      if (!this.childProducts.equals(that.childProducts))
-        return false;
-    }
-
     return true;
   }
 
@@ -1100,11 +1024,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     if (present_replicaLocations)
       list.add(replicaLocations);
 
-    boolean present_childProducts = true && (isSetChildProducts());
-    list.add(present_childProducts);
-    if (present_childProducts)
-      list.add(childProducts);
-
     return list.hashCode();
   }
 
@@ -1246,16 +1165,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetChildProducts()).compareTo(other.isSetChildProducts());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetChildProducts()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.childProducts, other.childProducts);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
     return 0;
   }
 
@@ -1393,16 +1302,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       first = false;
     }
-    if (isSetChildProducts()) {
-      if (!first) sb.append(", ");
-      sb.append("childProducts:");
-      if (this.childProducts == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.childProducts);
-      }
-      first = false;
-    }
     sb.append(")");
     return sb.toString();
   }
@@ -1575,25 +1474,6 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 14: // CHILD_PRODUCTS
-            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
-              {
-                org.apache.thrift.protocol.TList _list7 = iprot.readListBegin();
-                struct.childProducts = new ArrayList<DataProductModel>(_list7.size);
-                DataProductModel _elem8;
-                for (int _i9 = 0; _i9 < _list7.size; ++_i9)
-                {
-                  _elem8 = new DataProductModel();
-                  _elem8.read(iprot);
-                  struct.childProducts.add(_elem8);
-                }
-                iprot.readListEnd();
-              }
-              struct.setChildProductsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1683,10 +1563,10 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
           oprot.writeFieldBegin(PRODUCT_METADATA_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.productMetadata.size()));
-            for (Map.Entry<String, String> _iter10 : struct.productMetadata.entrySet())
+            for (Map.Entry<String, String> _iter7 : struct.productMetadata.entrySet())
             {
-              oprot.writeString(_iter10.getKey());
-              oprot.writeString(_iter10.getValue());
+              oprot.writeString(_iter7.getKey());
+              oprot.writeString(_iter7.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -1698,23 +1578,9 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
           oprot.writeFieldBegin(REPLICA_LOCATIONS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.replicaLocations.size()));
-            for (DataReplicaLocationModel _iter11 : struct.replicaLocations)
+            for (DataReplicaLocationModel _iter8 : struct.replicaLocations)
             {
-              _iter11.write(oprot);
-            }
-            oprot.writeListEnd();
-          }
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.childProducts != null) {
-        if (struct.isSetChildProducts()) {
-          oprot.writeFieldBegin(CHILD_PRODUCTS_FIELD_DESC);
-          {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.childProducts.size()));
-            for (DataProductModel _iter12 : struct.childProducts)
-            {
-              _iter12.write(oprot);
+              _iter8.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1778,10 +1644,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       if (struct.isSetReplicaLocations()) {
         optionals.set(12);
       }
-      if (struct.isSetChildProducts()) {
-        optionals.set(13);
-      }
-      oprot.writeBitSet(optionals, 14);
+      oprot.writeBitSet(optionals, 13);
       if (struct.isSetProductUri()) {
         oprot.writeString(struct.productUri);
       }
@@ -1818,28 +1681,19 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       if (struct.isSetProductMetadata()) {
         {
           oprot.writeI32(struct.productMetadata.size());
-          for (Map.Entry<String, String> _iter13 : struct.productMetadata.entrySet())
+          for (Map.Entry<String, String> _iter9 : struct.productMetadata.entrySet())
           {
-            oprot.writeString(_iter13.getKey());
-            oprot.writeString(_iter13.getValue());
+            oprot.writeString(_iter9.getKey());
+            oprot.writeString(_iter9.getValue());
           }
         }
       }
       if (struct.isSetReplicaLocations()) {
         {
           oprot.writeI32(struct.replicaLocations.size());
-          for (DataReplicaLocationModel _iter14 : struct.replicaLocations)
-          {
-            _iter14.write(oprot);
-          }
-        }
-      }
-      if (struct.isSetChildProducts()) {
-        {
-          oprot.writeI32(struct.childProducts.size());
-          for (DataProductModel _iter15 : struct.childProducts)
+          for (DataReplicaLocationModel _iter10 : struct.replicaLocations)
           {
-            _iter15.write(oprot);
+            _iter10.write(oprot);
           }
         }
       }
@@ -1848,7 +1702,7 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, DataProductModel struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(14);
+      BitSet incoming = iprot.readBitSet(13);
       if (incoming.get(0)) {
         struct.productUri = iprot.readString();
         struct.setProductUriIsSet(true);
@@ -1895,47 +1749,33 @@ public class DataProductModel implements org.apache.thrift.TBase<DataProductMode
       }
       if (incoming.get(11)) {
         {
-          org.apache.thrift.protocol.TMap _map16 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.productMetadata = new HashMap<String,String>(2*_map16.size);
-          String _key17;
-          String _val18;
-          for (int _i19 = 0; _i19 < _map16.size; ++_i19)
+          org.apache.thrift.protocol.TMap _map11 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.productMetadata = new HashMap<String,String>(2*_map11.size);
+          String _key12;
+          String _val13;
+          for (int _i14 = 0; _i14 < _map11.size; ++_i14)
           {
-            _key17 = iprot.readString();
-            _val18 = iprot.readString();
-            struct.productMetadata.put(_key17, _val18);
+            _key12 = iprot.readString();
+            _val13 = iprot.readString();
+            struct.productMetadata.put(_key12, _val13);
           }
         }
         struct.setProductMetadataIsSet(true);
       }
       if (incoming.get(12)) {
         {
-          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list20.size);
-          DataReplicaLocationModel _elem21;
-          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
+          org.apache.thrift.protocol.TList _list15 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.replicaLocations = new ArrayList<DataReplicaLocationModel>(_list15.size);
+          DataReplicaLocationModel _elem16;
+          for (int _i17 = 0; _i17 < _list15.size; ++_i17)
           {
-            _elem21 = new DataReplicaLocationModel();
-            _elem21.read(iprot);
-            struct.replicaLocations.add(_elem21);
+            _elem16 = new DataReplicaLocationModel();
+            _elem16.read(iprot);
+            struct.replicaLocations.add(_elem16);
           }
         }
         struct.setReplicaLocationsIsSet(true);
       }
-      if (incoming.get(13)) {
-        {
-          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.childProducts = new ArrayList<DataProductModel>(_list23.size);
-          DataProductModel _elem24;
-          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
-          {
-            _elem24 = new DataProductModel();
-            _elem24.read(iprot);
-            struct.childProducts.add(_elem24);
-          }
-        }
-        struct.setChildProductsIsSet(true);
-      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
index 91a3948..defc214 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/DataReplicaLocationModel.java
@@ -1349,15 +1349,15 @@ public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataRep
           case 12: // REPLICA_METADATA
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map26 = iprot.readMapBegin();
-                struct.replicaMetadata = new HashMap<String,String>(2*_map26.size);
-                String _key27;
-                String _val28;
-                for (int _i29 = 0; _i29 < _map26.size; ++_i29)
+                org.apache.thrift.protocol.TMap _map18 = iprot.readMapBegin();
+                struct.replicaMetadata = new HashMap<String,String>(2*_map18.size);
+                String _key19;
+                String _val20;
+                for (int _i21 = 0; _i21 < _map18.size; ++_i21)
                 {
-                  _key27 = iprot.readString();
-                  _val28 = iprot.readString();
-                  struct.replicaMetadata.put(_key27, _val28);
+                  _key19 = iprot.readString();
+                  _val20 = iprot.readString();
+                  struct.replicaMetadata.put(_key19, _val20);
                 }
                 iprot.readMapEnd();
               }
@@ -1455,10 +1455,10 @@ public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataRep
           oprot.writeFieldBegin(REPLICA_METADATA_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.replicaMetadata.size()));
-            for (Map.Entry<String, String> _iter30 : struct.replicaMetadata.entrySet())
+            for (Map.Entry<String, String> _iter22 : struct.replicaMetadata.entrySet())
             {
-              oprot.writeString(_iter30.getKey());
-              oprot.writeString(_iter30.getValue());
+              oprot.writeString(_iter22.getKey());
+              oprot.writeString(_iter22.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -1556,10 +1556,10 @@ public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataRep
       if (struct.isSetReplicaMetadata()) {
         {
           oprot.writeI32(struct.replicaMetadata.size());
-          for (Map.Entry<String, String> _iter31 : struct.replicaMetadata.entrySet())
+          for (Map.Entry<String, String> _iter23 : struct.replicaMetadata.entrySet())
           {
-            oprot.writeString(_iter31.getKey());
-            oprot.writeString(_iter31.getValue());
+            oprot.writeString(_iter23.getKey());
+            oprot.writeString(_iter23.getValue());
           }
         }
       }
@@ -1615,15 +1615,15 @@ public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataRep
       }
       if (incoming.get(11)) {
         {
-          org.apache.thrift.protocol.TMap _map32 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.replicaMetadata = new HashMap<String,String>(2*_map32.size);
-          String _key33;
-          String _val34;
-          for (int _i35 = 0; _i35 < _map32.size; ++_i35)
+          org.apache.thrift.protocol.TMap _map24 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.replicaMetadata = new HashMap<String,String>(2*_map24.size);
+          String _key25;
+          String _val26;
+          for (int _i27 = 0; _i27 < _map24.size; ++_i27)
           {
-            _key33 = iprot.readString();
-            _val34 = iprot.readString();
-            struct.replicaMetadata.put(_key33, _val34);
+            _key25 = iprot.readString();
+            _val26 = iprot.readString();
+            struct.replicaMetadata.put(_key25, _val26);
           }
         }
         struct.setReplicaMetadataIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
index 3e4c835..b946710 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
@@ -37,6 +37,7 @@ import javax.persistence.EntityManager;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
@@ -360,4 +361,49 @@ public class ReplicaCatalogImpl implements ReplicaCatalog {
             }
         }
     }
+
+    @Override
+    public DataProductModel getParentDataProduct(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            return ThriftDataModelConversion.getDataProductModel(dataProduct.getParentDataProduct());
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public List<DataProductModel> getChildDataProducts(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            Collection<DataProduct> childProducts = dataProduct.getChildDataProducts();
+            ArrayList<DataProductModel> returnModels = new ArrayList<>();
+            childProducts.stream().forEach(cp->{
+                returnModels.add(ThriftDataModelConversion.getDataProductModel(cp));
+            });
+            return returnModels;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
index 676f84b..741215a 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
@@ -65,11 +65,6 @@ public class ThriftDataModelConversion {
                         .add(getDataReplicaLocationModel(r)));
                 dataProductModel.setReplicaLocations(dataReplicaLocationModels);
             }
-            if(!dataProductModel.getDataProductType().equals(DataProductType.FILE) && dataProduct.getChildDataProducts() != null){
-                ArrayList<DataProductModel> childDataProducts = new ArrayList<>();
-                dataProduct.getChildDataProducts().stream().forEach(r->childDataProducts.add(getDataProductModel(r)));
-                dataProductModel.setChildProducts(childDataProducts);
-            }
             return dataProductModel;
         }
         return null;
@@ -121,11 +116,6 @@ public class ThriftDataModelConversion {
             });
             dataProduct.setDataReplicaLocations(dataReplicaLocations);
         }
-        if(dataProductModel.getDataProductType() == DataProductType.COLLECTION && dataProductModel.getChildProducts() != null){
-            ArrayList<DataProduct> childDataProducts = new ArrayList<>();
-            dataProductModel.getChildProducts().stream().forEach(r->childDataProducts.add(getDataProduct(r)));
-            dataProduct.setChildDataProducts(childDataProducts);
-        }
         return dataProduct;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
index 1897356..9db6dc6 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
@@ -47,4 +47,8 @@ public interface ReplicaCatalog {
     DataReplicaLocationModel getReplicaLocation(String replicaId) throws ReplicaCatalogException;
 
     List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws ReplicaCatalogException;
+
+    DataProductModel getParentDataProduct(String productUri) throws ReplicaCatalogException;
+
+    List<DataProductModel> getChildDataProducts(String productUri) throws ReplicaCatalogException;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/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 5fcdb88..d54a6d9 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2982,6 +2982,17 @@ service Airavata {
                                 3: airavata_errors.AiravataSystemException ase,
                                 4: airavata_errors.AuthorizationException ae)
 
+ replica_catalog_models.DataProductModel getParentDataProduct(1: required security_model.AuthzToken authzToken, 2: required  string productUri)
+               throws (1: airavata_errors.InvalidRequestException ire,
+                                 2: airavata_errors.AiravataClientException ace,
+                                 3: airavata_errors.AiravataSystemException ase,
+                                 4: airavata_errors.AuthorizationException ae)
+
+ list<replica_catalog_models.DataProductModel> getChildDataProducts(1: required security_model.AuthzToken authzToken, 2: required  string productUri)
+               throws (1: airavata_errors.InvalidRequestException ire,
+                                 2: airavata_errors.AiravataClientException ace,
+                                 3: airavata_errors.AiravataSystemException ase,
+                                 4: airavata_errors.AuthorizationException ae)
  //End of API
  }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
index 424f532..cd41eda 100644
--- a/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
+++ b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
@@ -54,7 +54,6 @@ struct DataProductModel {
     11: optional i64 lastModifiedTime,
     12: optional map<string, string> productMetadata,
     13: optional list<DataReplicaLocationModel> replicaLocations,
-    14: optional list<DataProductModel> childProducts
 }
 
 struct DataReplicaLocationModel {


[07/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 7fc2fc4..1d6f60a 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
@@ -28145,7 +28145,7 @@ uint32_t Airavata_addLocalDataMovementDetails_args::read(::apache::thrift::proto
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_authzToken = false;
-  bool isset_productId = false;
+  bool isset_productUri = false;
   bool isset_dataMoveType = false;
   bool isset_priorityOrder = false;
   bool isset_localDataMovement = false;
@@ -28168,8 +28168,8 @@ uint32_t Airavata_addLocalDataMovementDetails_args::read(::apache::thrift::proto
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->productId);
-          isset_productId = true;
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -28211,7 +28211,7 @@ uint32_t Airavata_addLocalDataMovementDetails_args::read(::apache::thrift::proto
 
   if (!isset_authzToken)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_productId)
+  if (!isset_productUri)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_dataMoveType)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -28231,8 +28231,8 @@ uint32_t Airavata_addLocalDataMovementDetails_args::write(::apache::thrift::prot
   xfer += this->authzToken.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->productId);
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -28266,8 +28266,8 @@ uint32_t Airavata_addLocalDataMovementDetails_pargs::write(::apache::thrift::pro
   xfer += (*(this->authzToken)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->productId)));
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -29090,7 +29090,7 @@ uint32_t Airavata_addSCPDataMovementDetails_args::read(::apache::thrift::protoco
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_authzToken = false;
-  bool isset_productId = false;
+  bool isset_productUri = false;
   bool isset_dataMoveType = false;
   bool isset_priorityOrder = false;
   bool isset_scpDataMovement = false;
@@ -29113,8 +29113,8 @@ uint32_t Airavata_addSCPDataMovementDetails_args::read(::apache::thrift::protoco
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->productId);
-          isset_productId = true;
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -29156,7 +29156,7 @@ uint32_t Airavata_addSCPDataMovementDetails_args::read(::apache::thrift::protoco
 
   if (!isset_authzToken)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_productId)
+  if (!isset_productUri)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_dataMoveType)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -29176,8 +29176,8 @@ uint32_t Airavata_addSCPDataMovementDetails_args::write(::apache::thrift::protoc
   xfer += this->authzToken.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->productId);
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -29211,8 +29211,8 @@ uint32_t Airavata_addSCPDataMovementDetails_pargs::write(::apache::thrift::proto
   xfer += (*(this->authzToken)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->productId)));
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -30035,7 +30035,7 @@ uint32_t Airavata_addUnicoreDataMovementDetails_args::read(::apache::thrift::pro
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_authzToken = false;
-  bool isset_productId = false;
+  bool isset_productUri = false;
   bool isset_dataMoveType = false;
   bool isset_priorityOrder = false;
   bool isset_unicoreDataMovement = false;
@@ -30058,8 +30058,8 @@ uint32_t Airavata_addUnicoreDataMovementDetails_args::read(::apache::thrift::pro
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->productId);
-          isset_productId = true;
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -30101,7 +30101,7 @@ uint32_t Airavata_addUnicoreDataMovementDetails_args::read(::apache::thrift::pro
 
   if (!isset_authzToken)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_productId)
+  if (!isset_productUri)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_dataMoveType)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -30121,8 +30121,8 @@ uint32_t Airavata_addUnicoreDataMovementDetails_args::write(::apache::thrift::pr
   xfer += this->authzToken.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->productId);
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -30156,8 +30156,8 @@ uint32_t Airavata_addUnicoreDataMovementDetails_pargs::write(::apache::thrift::p
   xfer += (*(this->authzToken)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->productId)));
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -30980,7 +30980,7 @@ uint32_t Airavata_addGridFTPDataMovementDetails_args::read(::apache::thrift::pro
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_authzToken = false;
-  bool isset_productId = false;
+  bool isset_productUri = false;
   bool isset_dataMoveType = false;
   bool isset_priorityOrder = false;
   bool isset_gridFTPDataMovement = false;
@@ -31003,8 +31003,8 @@ uint32_t Airavata_addGridFTPDataMovementDetails_args::read(::apache::thrift::pro
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->productId);
-          isset_productId = true;
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -31046,7 +31046,7 @@ uint32_t Airavata_addGridFTPDataMovementDetails_args::read(::apache::thrift::pro
 
   if (!isset_authzToken)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_productId)
+  if (!isset_productUri)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_dataMoveType)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -31066,8 +31066,8 @@ uint32_t Airavata_addGridFTPDataMovementDetails_args::write(::apache::thrift::pr
   xfer += this->authzToken.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->productId);
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -31101,8 +31101,8 @@ uint32_t Airavata_addGridFTPDataMovementDetails_pargs::write(::apache::thrift::p
   xfer += (*(this->authzToken)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->productId)));
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMoveType", ::apache::thrift::protocol::T_I32, 3);
@@ -33493,7 +33493,7 @@ uint32_t Airavata_deleteDataMovementInterface_args::read(::apache::thrift::proto
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_authzToken = false;
-  bool isset_productId = false;
+  bool isset_productUri = false;
   bool isset_dataMovementInterfaceId = false;
   bool isset_dataMoveType = false;
 
@@ -33515,8 +33515,8 @@ uint32_t Airavata_deleteDataMovementInterface_args::read(::apache::thrift::proto
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->productId);
-          isset_productId = true;
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -33550,7 +33550,7 @@ uint32_t Airavata_deleteDataMovementInterface_args::read(::apache::thrift::proto
 
   if (!isset_authzToken)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_productId)
+  if (!isset_productUri)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_dataMovementInterfaceId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
@@ -33568,8 +33568,8 @@ uint32_t Airavata_deleteDataMovementInterface_args::write(::apache::thrift::prot
   xfer += this->authzToken.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->productId);
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMovementInterfaceId", ::apache::thrift::protocol::T_STRING, 3);
@@ -33599,8 +33599,8 @@ uint32_t Airavata_deleteDataMovementInterface_pargs::write(::apache::thrift::pro
   xfer += (*(this->authzToken)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("productId", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->productId)));
+  xfer += oprot->writeFieldBegin("productUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldBegin("dataMovementInterfaceId", ::apache::thrift::protocol::T_STRING, 3);
@@ -41999,6 +41999,873 @@ uint32_t Airavata_isWorkflowExistWithName_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
+
+Airavata_registerDataProduct_args::~Airavata_registerDataProduct_args() throw() {
+}
+
+
+uint32_t Airavata_registerDataProduct_args::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_authzToken = false;
+  bool isset_dataProductModel = 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_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->dataProductModel.read(iprot);
+          isset_dataProductModel = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_dataProductModel)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_registerDataProduct_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_registerDataProduct_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("dataProductModel", ::apache::thrift::protocol::T_STRUCT, 2);
+  xfer += this->dataProductModel.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerDataProduct_pargs::~Airavata_registerDataProduct_pargs() throw() {
+}
+
+
+uint32_t Airavata_registerDataProduct_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_registerDataProduct_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("dataProductModel", ::apache::thrift::protocol::T_STRUCT, 2);
+  xfer += (*(this->dataProductModel)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerDataProduct_result::~Airavata_registerDataProduct_result() throw() {
+}
+
+
+uint32_t Airavata_registerDataProduct_result::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->success);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_registerDataProduct_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_registerDataProduct_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRING, 0);
+    xfer += oprot->writeString(this->success);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerDataProduct_presult::~Airavata_registerDataProduct_presult() throw() {
+}
+
+
+uint32_t Airavata_registerDataProduct_presult::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString((*(this->success)));
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+
+Airavata_getDataProduct_args::~Airavata_getDataProduct_args() throw() {
+}
+
+
+uint32_t Airavata_getDataProduct_args::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_authzToken = false;
+  bool isset_dataProductUri = 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_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->dataProductUri);
+          isset_dataProductUri = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_dataProductUri)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_getDataProduct_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getDataProduct_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("dataProductUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->dataProductUri);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getDataProduct_pargs::~Airavata_getDataProduct_pargs() throw() {
+}
+
+
+uint32_t Airavata_getDataProduct_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getDataProduct_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("dataProductUri", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->dataProductUri)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getDataProduct_result::~Airavata_getDataProduct_result() throw() {
+}
+
+
+uint32_t Airavata_getDataProduct_result::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->success.read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_getDataProduct_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getDataProduct_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
+    xfer += this->success.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getDataProduct_presult::~Airavata_getDataProduct_presult() throw() {
+}
+
+
+uint32_t Airavata_getDataProduct_presult::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += (*(this->success)).read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+
+Airavata_registerReplicaLocation_args::~Airavata_registerReplicaLocation_args() throw() {
+}
+
+
+uint32_t Airavata_registerReplicaLocation_args::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_authzToken = false;
+  bool isset_replicaLocationModel = 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_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->replicaLocationModel.read(iprot);
+          isset_replicaLocationModel = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_replicaLocationModel)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t Airavata_registerReplicaLocation_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_registerReplicaLocation_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("replicaLocationModel", ::apache::thrift::protocol::T_STRUCT, 2);
+  xfer += this->replicaLocationModel.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerReplicaLocation_pargs::~Airavata_registerReplicaLocation_pargs() throw() {
+}
+
+
+uint32_t Airavata_registerReplicaLocation_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_registerReplicaLocation_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", ::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("replicaLocationModel", ::apache::thrift::protocol::T_STRUCT, 2);
+  xfer += (*(this->replicaLocationModel)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerReplicaLocation_result::~Airavata_registerReplicaLocation_result() throw() {
+}
+
+
+uint32_t Airavata_registerReplicaLocation_result::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->success);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_registerReplicaLocation_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_registerReplicaLocation_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRING, 0);
+    xfer += oprot->writeString(this->success);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", ::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", ::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_registerReplicaLocation_presult::~Airavata_registerReplicaLocation_presult() throw() {
+}
+
+
+uint32_t Airavata_registerReplicaLocation_presult::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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString((*(this->success)));
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
 void AiravataClient::getAPIVersion(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
 {
   send_getAPIVersion(authzToken);
@@ -42209,24 +43076,302 @@ void AiravataClient::recv_addGateway(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "addGateway failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "addGateway failed: unknown result");
+}
+
+void AiravataClient::updateGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Gateway& updatedGateway)
+{
+  send_updateGateway(authzToken, gatewayId, updatedGateway);
+  recv_updateGateway();
+}
+
+void AiravataClient::send_updateGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Gateway& updatedGateway)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("updateGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_updateGateway_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayId = &gatewayId;
+  args.updatedGateway = &updatedGateway;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+void AiravataClient::recv_updateGateway()
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("updateGateway") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  Airavata_updateGateway_presult result;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  return;
+}
+
+void AiravataClient::getGateway( ::apache::airavata::model::workspace::Gateway& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+{
+  send_getGateway(authzToken, gatewayId);
+  recv_getGateway(_return);
+}
+
+void AiravataClient::send_getGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("getGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_getGateway_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayId = &gatewayId;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+void AiravataClient::recv_getGateway( ::apache::airavata::model::workspace::Gateway& _return)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("getGateway") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  Airavata_getGateway_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    // _return pointer has now been filled
+    return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGateway failed: unknown result");
+}
+
+bool AiravataClient::deleteGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+{
+  send_deleteGateway(authzToken, gatewayId);
+  return recv_deleteGateway();
+}
+
+void AiravataClient::send_deleteGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("deleteGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_deleteGateway_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayId = &gatewayId;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+bool AiravataClient::recv_deleteGateway()
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("deleteGateway") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  bool _return;
+  Airavata_deleteGateway_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    return _return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGateway failed: unknown result");
+}
+
+void AiravataClient::getAllGateways(std::vector< ::apache::airavata::model::workspace::Gateway> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
+{
+  send_getAllGateways(authzToken);
+  recv_getAllGateways(_return);
+}
+
+void AiravataClient::send_getAllGateways(const  ::apache::airavata::model::security::AuthzToken& authzToken)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("getAllGateways", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_getAllGateways_pargs args;
+  args.authzToken = &authzToken;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+void AiravataClient::recv_getAllGateways(std::vector< ::apache::airavata::model::workspace::Gateway> & _return)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("getAllGateways") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  Airavata_getAllGateways_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    // _return pointer has now been filled
+    return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGateways failed: unknown result");
 }
 
-void AiravataClient::updateGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Gateway& updatedGateway)
+bool AiravataClient::isGatewayExist(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
-  send_updateGateway(authzToken, gatewayId, updatedGateway);
-  recv_updateGateway();
+  send_isGatewayExist(authzToken, gatewayId);
+  return recv_isGatewayExist();
 }
 
-void AiravataClient::send_updateGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Gateway& updatedGateway)
+void AiravataClient::send_isGatewayExist(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("updateGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("isGatewayExist", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateGateway_pargs args;
+  Airavata_isGatewayExist_pargs args;
   args.authzToken = &authzToken;
   args.gatewayId = &gatewayId;
-  args.updatedGateway = &updatedGateway;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42234,7 +43379,7 @@ void AiravataClient::send_updateGateway(const  ::apache::airavata::model::securi
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_updateGateway()
+bool AiravataClient::recv_isGatewayExist()
 {
 
   int32_t rseqid = 0;
@@ -42254,16 +43399,21 @@ void AiravataClient::recv_updateGateway()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("updateGateway") != 0) {
+  if (fname.compare("isGatewayExist") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_updateGateway_presult result;
+  bool _return;
+  Airavata_isGatewayExist_presult result;
+  result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
+  if (result.__isset.success) {
+    return _return;
+  }
   if (result.__isset.ire) {
     throw result.ire;
   }
@@ -42276,23 +43426,24 @@ void AiravataClient::recv_updateGateway()
   if (result.__isset.ae) {
     throw result.ae;
   }
-  return;
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "isGatewayExist failed: unknown result");
 }
 
-void AiravataClient::getGateway( ::apache::airavata::model::workspace::Gateway& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::generateAndRegisterSSHKeys(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName)
 {
-  send_getGateway(authzToken, gatewayId);
-  recv_getGateway(_return);
+  send_generateAndRegisterSSHKeys(authzToken, gatewayId, userName);
+  recv_generateAndRegisterSSHKeys(_return);
 }
 
-void AiravataClient::send_getGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::send_generateAndRegisterSSHKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("generateAndRegisterSSHKeys", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getGateway_pargs args;
+  Airavata_generateAndRegisterSSHKeys_pargs args;
   args.authzToken = &authzToken;
   args.gatewayId = &gatewayId;
+  args.userName = &userName;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42300,7 +43451,7 @@ void AiravataClient::send_getGateway(const  ::apache::airavata::model::security:
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getGateway( ::apache::airavata::model::workspace::Gateway& _return)
+void AiravataClient::recv_generateAndRegisterSSHKeys(std::string& _return)
 {
 
   int32_t rseqid = 0;
@@ -42320,12 +43471,12 @@ void AiravataClient::recv_getGateway( ::apache::airavata::model::workspace::Gate
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getGateway") != 0) {
+  if (fname.compare("generateAndRegisterSSHKeys") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getGateway_presult result;
+  Airavata_generateAndRegisterSSHKeys_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42344,25 +43495,23 @@ void AiravataClient::recv_getGateway( ::apache::airavata::model::workspace::Gate
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.ae) {
-    throw result.ae;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getGateway failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "generateAndRegisterSSHKeys failed: unknown result");
 }
 
-bool AiravataClient::deleteGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::getSSHPubKey(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
 {
-  send_deleteGateway(authzToken, gatewayId);
-  return recv_deleteGateway();
+  send_getSSHPubKey(authzToken, airavataCredStoreToken, gatewayId);
+  recv_getSSHPubKey(_return);
 }
 
-void AiravataClient::send_deleteGateway(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::send_getSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("deleteGateway", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getSSHPubKey", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteGateway_pargs args;
+  Airavata_getSSHPubKey_pargs args;
   args.authzToken = &authzToken;
+  args.airavataCredStoreToken = &airavataCredStoreToken;
   args.gatewayId = &gatewayId;
   args.write(oprot_);
 
@@ -42371,7 +43520,7 @@ void AiravataClient::send_deleteGateway(const  ::apache::airavata::model::securi
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_deleteGateway()
+void AiravataClient::recv_getSSHPubKey(std::string& _return)
 {
 
   int32_t rseqid = 0;
@@ -42391,20 +43540,20 @@ bool AiravataClient::recv_deleteGateway()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("deleteGateway") != 0) {
+  if (fname.compare("getSSHPubKey") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  bool _return;
-  Airavata_deleteGateway_presult result;
+  Airavata_getSSHPubKey_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    return _return;
+    // _return pointer has now been filled
+    return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -42415,25 +43564,23 @@ bool AiravataClient::recv_deleteGateway()
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.ae) {
-    throw result.ae;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteGateway failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getSSHPubKey failed: unknown result");
 }
 
-void AiravataClient::getAllGateways(std::vector< ::apache::airavata::model::workspace::Gateway> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
+void AiravataClient::getAllUserSSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName)
 {
-  send_getAllGateways(authzToken);
-  recv_getAllGateways(_return);
+  send_getAllUserSSHPubKeys(authzToken, userName);
+  recv_getAllUserSSHPubKeys(_return);
 }
 
-void AiravataClient::send_getAllGateways(const  ::apache::airavata::model::security::AuthzToken& authzToken)
+void AiravataClient::send_getAllUserSSHPubKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getAllGateways", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllUserSSHPubKeys", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGateways_pargs args;
+  Airavata_getAllUserSSHPubKeys_pargs args;
   args.authzToken = &authzToken;
+  args.userName = &userName;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42441,7 +43588,7 @@ void AiravataClient::send_getAllGateways(const  ::apache::airavata::model::secur
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getAllGateways(std::vector< ::apache::airavata::model::workspace::Gateway> & _return)
+void AiravataClient::recv_getAllUserSSHPubKeys(std::map<std::string, std::string> & _return)
 {
 
   int32_t rseqid = 0;
@@ -42461,12 +43608,12 @@ void AiravataClient::recv_getAllGateways(std::vector< ::apache::airavata::model:
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getAllGateways") != 0) {
+  if (fname.compare("getAllUserSSHPubKeys") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getAllGateways_presult result;
+  Airavata_getAllUserSSHPubKeys_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42485,24 +43632,21 @@ void AiravataClient::recv_getAllGateways(std::vector< ::apache::airavata::model:
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.ae) {
-    throw result.ae;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGateways failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllUserSSHPubKeys failed: unknown result");
 }
 
-bool AiravataClient::isGatewayExist(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::getAllGatewaySSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
-  send_isGatewayExist(authzToken, gatewayId);
-  return recv_isGatewayExist();
+  send_getAllGatewaySSHPubKeys(authzToken, gatewayId);
+  recv_getAllGatewaySSHPubKeys(_return);
 }
 
-void AiravataClient::send_isGatewayExist(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::send_getAllGatewaySSHPubKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("isGatewayExist", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewaySSHPubKeys", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_isGatewayExist_pargs args;
+  Airavata_getAllGatewaySSHPubKeys_pargs args;
   args.authzToken = &authzToken;
   args.gatewayId = &gatewayId;
   args.write(oprot_);
@@ -42512,7 +43656,7 @@ void AiravataClient::send_isGatewayExist(const  ::apache::airavata::model::secur
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_isGatewayExist()
+void AiravataClient::recv_getAllGatewaySSHPubKeys(std::map<std::string, std::string> & _return)
 {
 
   int32_t rseqid = 0;
@@ -42532,20 +43676,20 @@ bool AiravataClient::recv_isGatewayExist()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("isGatewayExist") != 0) {
+  if (fname.compare("getAllGatewaySSHPubKeys") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  bool _return;
-  Airavata_isGatewayExist_presult result;
+  Airavata_getAllGatewaySSHPubKeys_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    return _return;
+    // _return pointer has now been filled
+    return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -42556,27 +43700,24 @@ bool AiravataClient::recv_isGatewayExist()
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.ae) {
-    throw result.ae;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "isGatewayExist failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewaySSHPubKeys failed: unknown result");
 }
 
-void AiravataClient::generateAndRegisterSSHKeys(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName)
+bool AiravataClient::deleteSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
 {
-  send_generateAndRegisterSSHKeys(authzToken, gatewayId, userName);
-  recv_generateAndRegisterSSHKeys(_return);
+  send_deleteSSHPubKey(authzToken, airavataCredStoreToken, gatewayId);
+  return recv_deleteSSHPubKey();
 }
 
-void AiravataClient::send_generateAndRegisterSSHKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName)
+void AiravataClient::send_deleteSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("generateAndRegisterSSHKeys", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteSSHPubKey", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_generateAndRegisterSSHKeys_pargs args;
+  Airavata_deleteSSHPubKey_pargs args;
   args.authzToken = &authzToken;
+  args.airavataCredStoreToken = &airavataCredStoreToken;
   args.gatewayId = &gatewayId;
-  args.userName = &userName;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42584,7 +43725,7 @@ void AiravataClient::send_generateAndRegisterSSHKeys(const  ::apache::airavata::
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_generateAndRegisterSSHKeys(std::string& _return)
+bool AiravataClient::recv_deleteSSHPubKey()
 {
 
   int32_t rseqid = 0;
@@ -42604,20 +43745,20 @@ void AiravataClient::recv_generateAndRegisterSSHKeys(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("generateAndRegisterSSHKeys") != 0) {
+  if (fname.compare("deleteSSHPubKey") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_generateAndRegisterSSHKeys_presult result;
+  bool _return;
+  Airavata_deleteSSHPubKey_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    // _return pointer has now been filled
-    return;
+    return _return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -42628,24 +43769,24 @@ void AiravataClient::recv_generateAndRegisterSSHKeys(std::string& _return)
   if (result.__isset.ase) {
     throw result.ase;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "generateAndRegisterSSHKeys failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteSSHPubKey failed: unknown result");
 }
 
-void AiravataClient::getSSHPubKey(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
+void AiravataClient::createProject(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Project& project)
 {
-  send_getSSHPubKey(authzToken, airavataCredStoreToken, gatewayId);
-  recv_getSSHPubKey(_return);
+  send_createProject(authzToken, gatewayId, project);
+  recv_createProject(_return);
 }
 
-void AiravataClient::send_getSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
+void AiravataClient::send_createProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Project& project)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getSSHPubKey", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("createProject", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getSSHPubKey_pargs args;
+  Airavata_createProject_pargs args;
   args.authzToken = &authzToken;
-  args.airavataCredStoreToken = &airavataCredStoreToken;
   args.gatewayId = &gatewayId;
+  args.project = &project;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42653,7 +43794,7 @@ void AiravataClient::send_getSSHPubKey(const  ::apache::airavata::model::securit
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getSSHPubKey(std::string& _return)
+void AiravataClient::recv_createProject(std::string& _return)
 {
 
   int32_t rseqid = 0;
@@ -42673,12 +43814,12 @@ void AiravataClient::recv_getSSHPubKey(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getSSHPubKey") != 0) {
+  if (fname.compare("createProject") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getSSHPubKey_presult result;
+  Airavata_createProject_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42697,23 +43838,27 @@ void AiravataClient::recv_getSSHPubKey(std::string& _return)
   if (result.__isset.ase) {
     throw result.ase;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getSSHPubKey failed: unknown result");
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "createProject failed: unknown result");
 }
 
-void AiravataClient::getAllUserSSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName)
+void AiravataClient::updateProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const  ::apache::airavata::model::workspace::Project& updatedProject)
 {
-  send_getAllUserSSHPubKeys(authzToken, userName);
-  recv_getAllUserSSHPubKeys(_return);
+  send_updateProject(authzToken, projectId, updatedProject);
+  recv_updateProject();
 }
 
-void AiravataClient::send_getAllUserSSHPubKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName)
+void AiravataClient::send_updateProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const  ::apache::airavata::model::workspace::Project& updatedProject)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getAllUserSSHPubKeys", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("updateProject", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllUserSSHPubKeys_pargs args;
+  Airavata_updateProject_pargs args;
   args.authzToken = &authzToken;
-  args.userName = &userName;
+  args.projectId = &projectId;
+  args.updatedProject = &updatedProject;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42721,7 +43866,7 @@ void AiravataClient::send_getAllUserSSHPubKeys(const  ::apache::airavata::model:
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getAllUserSSHPubKeys(std::map<std::string, std::string> & _return)
+void AiravataClient::recv_updateProject()
 {
 
   int32_t rseqid = 0;
@@ -42741,21 +43886,16 @@ void AiravataClient::recv_getAllUserSSHPubKeys(std::map<std::string, std::string
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getAllUserSSHPubKeys") != 0) {
+  if (fname.compare("updateProject") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getAllUserSSHPubKeys_presult result;
-  result.success = &_return;
+  Airavata_updateProject_presult result;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
-  if (result.__isset.success) {
-    // _return pointer has now been filled
-    return;
-  }
   if (result.__isset.ire) {
     throw result.ire;
   }
@@ -42765,23 +43905,29 @@ void AiravataClient::recv_getAllUserSSHPubKeys(std::map<std::string, std::string
   if (result.__isset.ase) {
     throw result.ase;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllUserSSHPubKeys failed: unknown result");
+  if (result.__isset.pnfe) {
+    throw result.pnfe;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  return;
 }
 
-void AiravataClient::getAllGatewaySSHPubKeys(std::map<std::string, std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::getProject( ::apache::airavata::model::workspace::Project& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
 {
-  send_getAllGatewaySSHPubKeys(authzToken, gatewayId);
-  recv_getAllGatewaySSHPubKeys(_return);
+  send_getProject(authzToken, projectId);
+  recv_getProject(_return);
 }
 
-void AiravataClient::send_getAllGatewaySSHPubKeys(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId)
+void AiravataClient::send_getProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getAllGatewaySSHPubKeys", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getProject", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewaySSHPubKeys_pargs args;
+  Airavata_getProject_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayId = &gatewayId;
+  args.projectId = &projectId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42789,7 +43935,7 @@ void AiravataClient::send_getAllGatewaySSHPubKeys(const  ::apache::airavata::mod
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getAllGatewaySSHPubKeys(std::map<std::string, std::string> & _return)
+void AiravataClient::recv_getProject( ::apache::airavata::model::workspace::Project& _return)
 {
 
   int32_t rseqid = 0;
@@ -42809,12 +43955,12 @@ void AiravataClient::recv_getAllGatewaySSHPubKeys(std::map<std::string, std::str
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getAllGatewaySSHPubKeys") != 0) {
+  if (fname.compare("getProject") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getAllGatewaySSHPubKeys_presult result;
+  Airavata_getProject_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42833,24 +43979,29 @@ void AiravataClient::recv_getAllGatewaySSHPubKeys(std::map<std::string, std::str
   if (result.__isset.ase) {
     throw result.ase;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGatewaySSHPubKeys failed: unknown result");
+  if (result.__isset.pnfe) {
+    throw result.pnfe;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getProject failed: unknown result");
 }
 
-bool AiravataClient::deleteSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
+bool AiravataClient::deleteProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
 {
-  send_deleteSSHPubKey(authzToken, airavataCredStoreToken, gatewayId);
-  return recv_deleteSSHPubKey();
+  send_deleteProject(authzToken, projectId);
+  return recv_deleteProject();
 }
 
-void AiravataClient::send_deleteSSHPubKey(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& airavataCredStoreToken, const std::string& gatewayId)
+void AiravataClient::send_deleteProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("deleteSSHPubKey", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteProject", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteSSHPubKey_pargs args;
+  Airavata_deleteProject_pargs args;
   args.authzToken = &authzToken;
-  args.airavataCredStoreToken = &airavataCredStoreToken;
-  args.gatewayId = &gatewayId;
+  args.projectId = &projectId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42858,7 +44009,7 @@ void AiravataClient::send_deleteSSHPubKey(const  ::apache::airavata::model::secu
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_deleteSSHPubKey()
+bool AiravataClient::recv_deleteProject()
 {
 
   int32_t rseqid = 0;
@@ -42878,13 +44029,13 @@ bool AiravataClient::recv_deleteSSHPubKey()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("deleteSSHPubKey") != 0) {
+  if (fname.compare("deleteProject") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
   bool _return;
-  Airavata_deleteSSHPubKey_presult result;
+  Airavata_deleteProject_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42902,24 +44053,32 @@ bool AiravataClient::recv_deleteSSHPubKey()
   if (result.__isset.ase) {
     throw result.ase;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteSSHPubKey failed: unknown result");
+  if (result.__isset.pnfe) {
+    throw result.pnfe;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteProject failed: unknown result");
 }
 
-void AiravataClient::createProject(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Project& project)
+void AiravataClient::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)
 {
-  send_createProject(authzToken, gatewayId, project);
-  recv_createProject(_return);
+  send_getUserProjects(authzToken, gatewayId, userName, limit, offset);
+  recv_getUserProjects(_return);
 }
 
-void AiravataClient::send_createProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::apache::airavata::model::workspace::Project& project)
+void AiravataClient::send_getUserProjects(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const std::string& userName, const int32_t limit, const int32_t offset)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("createProject", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getUserProjects", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_createProject_pargs args;
+  Airavata_getUserProjects_pargs args;
   args.authzToken = &authzToken;
   args.gatewayId = &gatewayId;
-  args.project = &project;
+  args.userName = &userName;
+  args.limit = &limit;
+  args.offset = &offset;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42927,7 +44086,7 @@ void AiravataClient::send_createProject(const  ::apache::airavata::model::securi
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_createProject(std::string& _return)
+void AiravataClient::recv_getUserProjects(std::vector< ::apache::airavata::model::workspace::Project> & _return)
 {
 
   int32_t rseqid = 0;
@@ -42947,12 +44106,12 @@ void AiravataClient::recv_createProject(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("createProject") != 0) {
+  if (fname.compare("getUserProjects") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_createProject_presult result;
+  Airavata_getUserProjects_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -42974,24 +44133,27 @@ void AiravataClient::recv_createProject(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "createProject failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getUserProjects failed: unknown result");
 }
 
-void AiravataClient::updateProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const  ::apache::airavata::model::workspace::Project& updatedProject)
+void AiravataClient::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)
 {
-  send_updateProject(authzToken, projectId, updatedProject);
-  recv_updateProject();
+  send_searchProjectsByProjectName(authzToken, gatewayId, userName, projectName, limit, offset);
+  recv_searchProjectsByProjectName(_return);
 }
 
-void AiravataClient::send_updateProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId, const  ::apache::airavata::model::workspace::Project& updatedProject)
+void AiravataClient::send_searchProjectsByProjectName(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)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("updateProject", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("searchProjectsByProjectName", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateProject_pargs args;
+  Airavata_searchProjectsByProjectName_pargs args;
   args.authzToken = &authzToken;
-  args.projectId = &projectId;
-  args.updatedProject = &updatedProject;
+  args.gatewayId = &gatewayId;
+  args.userName = &userName;
+  args.projectName = &projectName;
+  args.limit = &limit;
+  args.offset = &offset;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -42999,7 +44161,7 @@ void AiravataClient::send_updateProject(const  ::apache::airavata::model::securi
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_updateProject()
+void AiravataClient::recv_searchProjectsByProjectName(std::vector< ::apache::airavata::model::workspace::Project> & _return)
 {
 
   int32_t rseqid = 0;
@@ -43019,16 +44181,21 @@ void AiravataClient::recv_updateProject()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("updateProject") != 0) {
+  if (fname.compare("searchProjectsByProjectName") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_updateProject_presult result;
+  Airavata_searchProjectsByProjectName_presult result;
+  result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
+  if (result.__isset.success) {
+    // _return pointer has now been filled
+    return;
+  }
   if (result.__isset.ire) {
     throw result.ire;
   }
@@ -43038,29 +44205,30 @@ void AiravataClient::recv_updateProject()
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.pnfe) {
-    throw result.pnfe;
-  }
   if (result.__isset.ae) {
     throw result.ae;
   }
-  return;
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
 }
 
-void AiravataClient::getProject( ::apache::airavata::model::workspace::Project& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
+void AiravataClient::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)
 {
-  send_getProject(authzToken, projectId);
-  recv_getProject(_return);
+  send_searchProjectsByProjectDesc(authzToken, gatewayId, userName, description, limit, offset);
+  recv_searchProjectsByProjectDesc(_return);
 }
 
-void AiravataClient::send_getProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
+void AiravataClient::send_searchProjectsByProjectDesc(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)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getProject", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("searchProjectsByProjectDesc", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getProject_pargs args;
+  Airavata_searchProjectsByProjectDesc_pargs args;
   args.authzToken = &authzToken;
-  args.projectId = &projectId;
+  args.gatewayId = &gatewayId;
+  args.userName = &userName;
+  args.description = &description;
+  args.limit = &limit;
+  args.offset = &offset;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -43068,7 +44236,7 @@ void AiravataClient::send_getProject(const  ::apache::airavata::model::security:
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getProject( ::apache::airavata::model::workspace::Project& _return)
+void AiravataClient::recv_searchProjectsByProjectDesc(std::vector< ::apache::airavata::model::workspace::Project> & _return)
 {
 
   int32_t rseqid = 0;
@@ -43088,12 +44256,12 @@ void AiravataClient::recv_getProject( ::apache::airavata::model::workspace::Proj
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getProject") != 0) {
+  if (fname.compare("searchProjectsByProjectDesc") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getProject_presult result;
+  Airavata_searchProjectsByProjectDesc_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -43112,29 +44280,30 @@ void AiravataClient::recv_getProject( ::apache::airavata::model::workspace::Proj
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.pnfe) {
-    throw result.pnfe;
-  }
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getProject failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
 }
 
-bool AiravataClient::deleteProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
+void AiravataClient::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)
 {
-  send_deleteProject(authzToken, projectId);
-  return recv_deleteProject();
+  send_searchExperimentsByName(authzToken, gatewayId, userName, expName, limit, offset);
+  recv_searchExperimentsByName(_return);
 }
 
-void AiravataClient::send_deleteProject(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& projectId)
+void AiravataClient::send_searchExperimentsByName(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)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("deleteProject", ::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("searchExperimentsByName", ::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteProject_pargs args;
+  Airavata_searchExperimentsByName_pargs args;
   args.authzToken = &authzToken;
-  args.projectId = &projectId;
+  args.gatewayId = &gatewayId;
+  args.userName = &userName;
+  args.expName = &expName;
+  args.limit = &limit;
+  args.offset = &offset;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -43142,7 +44311,7 @@ void AiravataClient::send_deleteProject(const  ::apache::airavata::model::securi
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_deleteProject()
+void AiravataClient::recv_searchExperimentsByName(std::vector< ::apache::airavata::model::experiment::ExperimentSummaryModel> & _return)
 {
 
   int32_t rseqid = 0;
@@ -43162,20 +44331,20 @@ bool AiravataClient::recv_deleteProject()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("deleteProject") != 0) {
+  if (fname.compare("searchExperimentsByName") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  bool _return;
-  Airavata_deleteProject_presult result;
+  Airavata_searchExperimentsByName_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    return _return;
+    // _return pointer has now been filled
+    return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -43186,30 +44355,28 @@ bool AiravataClient::recv_deleteProject()
   if (result.__isset.ase) {
     throw result.ase;
   }
-  if (result.__isset.pnfe) {
-    throw result.pnfe;
-  }
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "deleteProject failed: unknown result");
+  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "searchExperimentsByName failed: unknown result");
 }
 
-void AiravataClient::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)
+void AiravataClient::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)
 {
-  send_getUserProjects(authzToken, gatewayId, userName, limit, offset);
-  recv_getUserProjects(_return);
+  send_searchExperimentsByDesc(authzToken, gatewayId, userName, d

<TRUNCATED>

[23/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogJPAUtils.java
deleted file mode 100644
index b8257cb..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogJPAUtils.java
+++ /dev/null
@@ -1,82 +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.data.catalog.utils;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-public class DataCatalogJPAUtils {
-    private final static Logger logger = LoggerFactory.getLogger(DataCatalogJPAUtils.class);
-
-    private static final String PERSISTENCE_UNIT_NAME = "datacatalog_data";
-    private static final String DATACATALOG_JDBC_DRIVER = "datacatalog.jdbc.driver";
-    private static final String DATACATALOG_JDBC_URL = "datacatalog.jdbc.url";
-    private static final String DATACATALOG_JDBC_USER = "datacatalog.jdbc.user";
-    private static final String DATACATALOG_JDBC_PWD = "datacatalog.jdbc.password";
-    private static final String DATACATALOG_VALIDATION_QUERY = "datacatalog.validationQuery";
-
-    @PersistenceUnit(unitName="datacatalog_data")
-    protected static EntityManagerFactory factory;
-
-    @PersistenceContext(unitName="datacatalog_data")
-    private static EntityManager dataCatEntityManager;
-
-    public static EntityManager getEntityManager() throws ApplicationSettingsException {
-        if (factory == null) {
-            String connectionProperties = "DriverClassName=" + readServerProperties(DATACATALOG_JDBC_DRIVER) + "," +
-                    "Url=" + readServerProperties(DATACATALOG_JDBC_URL) + "?autoReconnect=true," +
-                    "Username=" + readServerProperties(DATACATALOG_JDBC_USER) + "," +
-                    "Password=" + readServerProperties(DATACATALOG_JDBC_PWD) +
-                    ",validationQuery=" + readServerProperties(DATACATALOG_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");
-            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);
-        }
-        dataCatEntityManager = factory.createEntityManager();
-        return dataCatEntityManager;
-    }
-
-    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...");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogQueryGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogQueryGenerator.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogQueryGenerator.java
deleted file mode 100644
index 4ddf8d3..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/DataCatalogQueryGenerator.java
+++ /dev/null
@@ -1,111 +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.data.catalog.utils;
-
-import org.apache.airavata.registry.cpi.ResultOrderType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.util.HashMap;
-import java.util.Map;
-
-public class DataCatalogQueryGenerator {
-
-    private final static Logger logger = LoggerFactory.getLogger(DataCatalogQueryGenerator.class);
-	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 DataCatalogQueryGenerator(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 selectQuery(EntityManager entityManager, String orderByColumn,
-                             ResultOrderType resultOrderType){
-        String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
-        String orderByClause = " ORDER BY " + SELECT_OBJ + "." + orderByColumn + " " + order;
-        String queryString="SELECT "+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
-        return generateQueryWithParameters(entityManager, queryString, orderByClause);
-    }
-
-	public Query deleteQuery(EntityManager entityManager){
-		String queryString="Delete FROM "+getTableName()+" "+TABLE_OBJ;
-		return generateQueryWithParameters(entityManager, queryString);
-	}
-
-	private Query generateQueryWithParameters(EntityManager entityManager, String queryString) {
-		return generateQueryWithParameters(entityManager, queryString, "");
-	}
-
-    private Query generateQueryWithParameters(EntityManager entityManager,
-                                              String queryString, String orderByClause) {
-        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;
-        }
-        queryString += orderByClause;
-        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/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java
deleted file mode 100644
index 5426e8b..0000000
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java
+++ /dev/null
@@ -1,215 +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.data.catalog.utils;
-
-import org.apache.airavata.model.data.product.*;
-import org.apache.airavata.registry.core.data.catalog.model.DataProduct;
-import org.apache.airavata.registry.core.data.catalog.model.DataProductMetaData;
-import org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation;
-import org.apache.airavata.registry.core.data.catalog.model.DataReplicaMetaData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-public class ThriftDataModelConversion {
-
-    private final static Logger logger = LoggerFactory.getLogger(ThriftDataModelConversion.class);
-
-    public static DataProductModel getDataProductModel(DataProduct dataProduct){
-        if (dataProduct != null) {
-            DataProductModel dataProductModel = new DataProductModel();
-            dataProductModel.setProductUri(dataProduct.getProductUri());
-            dataProductModel.setLogicalPath(dataProduct.getLogicalPath());
-            dataProductModel.setGatewayId(dataProduct.getGatewayId());
-            dataProductModel.setParentProductUri(dataProduct.getParentProductUri());
-            dataProductModel.setProductName(dataProduct.getProductName());
-            if(dataProduct.getDataProductType() != null)
-                dataProductModel.setDataProductType(DataProductType.valueOf(dataProduct.getDataProductType()));
-            else
-                dataProductModel.setDataProductType(DataProductType.FILE);
-            dataProductModel.setProductDescription(dataProduct.getProductDescription());
-            dataProductModel.setOwnerName(dataProduct.getOwnerName());
-            dataProductModel.setProductSize(dataProduct.getProductSize());
-            if(dataProduct.getCreationTime() != null)
-                dataProductModel.setCreationTime(dataProduct.getCreationTime().getTime());
-            if(dataProduct.getLastModifiedTime() != null)
-                dataProductModel.setLastModifiedTime(dataProduct.getLastModifiedTime().getTime());
-            dataProductModel.setProductMetadata(getResourceMetaData(dataProduct.getDataProductMetaData()));
-            if(dataProduct.getDataReplicaLocations() != null){
-                ArrayList<DataReplicaLocationModel> dataReplicaLocationModels = new ArrayList<>();
-                dataProduct.getDataReplicaLocations().stream().forEach(r->dataReplicaLocationModels
-                        .add(getDataReplicaLocationModel(r)));
-                dataProductModel.setReplicaLocations(dataReplicaLocationModels);
-            }
-            if(dataProductModel.getDataProductType().equals(DataProductType.COLLECTION) && dataProduct.getChildDataProducts() != null){
-                ArrayList<DataProductModel> childDataProducts = new ArrayList<>();
-                dataProduct.getChildDataProducts().stream().forEach(r->childDataProducts.add(getDataProductModel(r)));
-                dataProductModel.setChildProducts(childDataProducts);
-            }
-            return dataProductModel;
-        }
-        return null;
-    }
-
-    public static DataProduct getDataProduct(DataProductModel dataProductModel){
-        if(dataProductModel != null){
-            DataProduct dataProduct = new DataProduct();
-            return getUpdatedDataProduct(dataProductModel, dataProduct);
-        }
-        return null;
-    }
-
-    public static DataProduct getUpdatedDataProduct(DataProductModel dataProductModel, DataProduct dataProduct){
-        dataProduct.setProductUri(dataProductModel.getProductUri());
-        dataProduct.setLogicalPath(dataProductModel.getLogicalPath());
-        dataProduct.setGatewayId(dataProductModel.getGatewayId());
-        dataProduct.setProductName(dataProductModel.getProductName());
-        dataProduct.setParentProductUri(dataProductModel.getParentProductUri());
-        if(dataProductModel.getDataProductType() != null)
-            dataProduct.setDataProductType(dataProductModel.getDataProductType().toString());
-        else
-            dataProduct.setDataProductType(DataProductType.FILE.toString());
-        dataProduct.setProductDescription(dataProductModel.getProductDescription());
-        dataProduct.setOwnerName(dataProductModel.getOwnerName());
-        dataProduct.setProductSize(dataProductModel.getProductSize());
-        if(dataProductModel.getCreationTime() > 0)
-            dataProduct.setCreationTime(new Timestamp(dataProductModel.getCreationTime()));
-        if(dataProductModel.getLastModifiedTime() > 0)
-            dataProduct.setLastModifiedTime(new Timestamp(dataProductModel.getLastModifiedTime()));
-        ArrayList<DataProductMetaData> dataProductMetaData = new ArrayList<>();
-        if(dataProductModel.getProductMetadata() != null) {
-            dataProductModel.getProductMetadata().keySet().stream().forEach(k -> {
-                String v = dataProductModel.getProductMetadata().get(k);
-                DataProductMetaData temp = new DataProductMetaData();
-                temp.setProductUri(dataProduct.getProductUri());
-                temp.setKey(k);
-                temp.setValue(v);
-                dataProductMetaData.add(temp);
-            });
-            dataProduct.setDataProductMetaData(dataProductMetaData);
-        }
-        if(dataProductModel.getReplicaLocations() != null){
-            ArrayList<DataReplicaLocation> dataReplicaLocations = new ArrayList<>();
-            dataProductModel.getReplicaLocations().stream().forEach(r->{
-                DataReplicaLocation dataReplicaLocationModel = getDataReplicaLocation(r);
-                dataReplicaLocationModel.setProductUri(dataProductModel.getProductUri());
-                dataReplicaLocations.add(dataReplicaLocationModel);
-            });
-            dataProduct.setDataReplicaLocations(dataReplicaLocations);
-        }
-        if(dataProductModel.getDataProductType() == DataProductType.COLLECTION && dataProductModel.getChildProducts() != null){
-            ArrayList<DataProduct> childDataProducts = new ArrayList<>();
-            dataProductModel.getChildProducts().stream().forEach(r->childDataProducts.add(getDataProduct(r)));
-            dataProduct.setChildDataProducts(childDataProducts);
-        }
-        return dataProduct;
-    }
-
-    public static DataReplicaLocationModel getDataReplicaLocationModel(DataReplicaLocation replicaLocation){
-        if (replicaLocation != null) {
-            DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
-            replicaLocationModel.setReplicaId(replicaLocation.getReplicaId());
-            replicaLocationModel.setProductUri(replicaLocation.getProductUri());
-            replicaLocationModel.setReplicaName(replicaLocation.getReplicaName());
-            replicaLocationModel.setReplicaDescription(replicaLocation.getReplicaDescription());
-            replicaLocationModel.setStorageResourceId(replicaLocation.getStorageResourceId());
-            if(replicaLocation.getValidUntilTime() != null)
-                replicaLocationModel.setValidUntilTime(replicaLocation.getValidUntilTime().getTime());
-            replicaLocationModel.setFilePath(replicaLocation.getFilePath());
-            if(replicaLocation.getCreationTime() != null)
-                replicaLocationModel.setCreationTime(replicaLocation.getCreationTime().getTime());
-            if(replicaLocation.getLastModifiedTime() != null)
-                replicaLocationModel.setLastModifiedTime(replicaLocation.getLastModifiedTime().getTime());
-            if(replicaLocation.getReplicaLocationCategory() != null)
-                replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.valueOf(replicaLocation
-                        .getReplicaLocationCategory().toString()));
-            if(replicaLocation.getReplicaPersistentType() != null)
-                replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.valueOf(replicaLocation
-                        .getReplicaPersistentType().toString()));
-            replicaLocationModel.setReplicaMetadata(getReplicaMetaData(replicaLocation.getDataReplicaMetaData()));
-            return replicaLocationModel;
-        }
-        return null;
-    }
-
-    public static DataReplicaLocation getDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel){
-        if(dataReplicaLocationModel != null){
-            DataReplicaLocation dataReplicaLocation = new DataReplicaLocation();
-            return getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation);
-        }
-        return null;
-    }
-
-    public static DataReplicaLocation getUpdatedDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel,
-                                                                    DataReplicaLocation dataReplicaLocation){
-        dataReplicaLocation.setReplicaId(dataReplicaLocationModel.getReplicaId());
-        dataReplicaLocation.setProductUri(dataReplicaLocationModel.getProductUri());
-        dataReplicaLocation.setReplicaName(dataReplicaLocationModel.getReplicaName());
-        dataReplicaLocation.setReplicaDescription(dataReplicaLocationModel.getReplicaDescription());
-        dataReplicaLocation.setStorageResourceId(dataReplicaLocationModel.getStorageResourceId());
-        dataReplicaLocation.setFilePath(dataReplicaLocationModel.getFilePath());
-        if(dataReplicaLocationModel.getValidUntilTime() > 0)
-            dataReplicaLocation.setValidUntilTime(new Timestamp(dataReplicaLocationModel.getValidUntilTime()));
-        if(dataReplicaLocationModel.getCreationTime() > 0)
-            dataReplicaLocation.setCreationTime(new Timestamp(dataReplicaLocationModel.getCreationTime()));
-        if(dataReplicaLocationModel.getLastModifiedTime() > 0)
-            dataReplicaLocation.setLastModifiedTime(new Timestamp(dataReplicaLocationModel.getLastModifiedTime()));
-        if(dataReplicaLocationModel.getReplicaLocationCategory() != null)
-            dataReplicaLocation.setReplicaLocationCategory(dataReplicaLocationModel.getReplicaLocationCategory().toString());
-        if(dataReplicaLocationModel.getReplicaPersistentType() != null)
-            dataReplicaLocation.setReplicaPersistentType(dataReplicaLocationModel.getReplicaPersistentType().toString());
-        ArrayList<DataReplicaMetaData> dataReplicaMetadata = new ArrayList<>();
-        if(dataReplicaLocation.getDataReplicaMetaData() != null){
-            dataReplicaLocationModel.getReplicaMetadata().keySet().stream().forEach(k -> {
-                String v = dataReplicaLocationModel.getReplicaMetadata().get(k);
-                DataReplicaMetaData temp = new DataReplicaMetaData();
-                temp.setReplicaId(dataReplicaLocationModel.getProductUri());
-                temp.setKey(k);
-                temp.setValue(v);
-                dataReplicaMetadata.add(temp);
-            });
-            dataReplicaLocation.setDataReplicaMetaData(dataReplicaMetadata);
-        }
-        return dataReplicaLocation;
-    }
-
-    public static Map<String, String> getResourceMetaData(Collection<DataProductMetaData> dataProductMetaData){
-        HashMap<String, String> metadata = new HashMap<>();
-        if(dataProductMetaData!=null && !dataProductMetaData.isEmpty()) {
-            dataProductMetaData.stream().forEach(m -> metadata.put(m.getKey(),m.getValue()));
-        }
-        return metadata;
-    }
-
-    public static Map<String, String> getReplicaMetaData(Collection<DataReplicaMetaData> dataReplicaMetaData){
-        HashMap<String, String> metadata = new HashMap<>();
-        if(dataReplicaMetaData!=null && !dataReplicaMetaData.isEmpty()) {
-            dataReplicaMetaData.stream().forEach(m -> metadata.put(m.getKey(),m.getValue()));
-        }
-        return metadata;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/RegistryFactory.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/RegistryFactory.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/RegistryFactory.java
index 41a9f13..8e4ed08 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/RegistryFactory.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/RegistryFactory.java
@@ -24,7 +24,7 @@ package org.apache.airavata.registry.core.experiment.catalog.impl;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.registry.core.app.catalog.impl.AppCatalogImpl;
-import org.apache.airavata.registry.core.data.catalog.impl.DataCatalogImpl;
+import org.apache.airavata.registry.core.replica.catalog.impl.ReplicaCatalogImpl;
 import org.apache.airavata.registry.core.impl.RegistryImpl;
 import org.apache.airavata.registry.cpi.*;
 import org.slf4j.Logger;
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
 public class RegistryFactory {
     private static ExperimentCatalog experimentCatalog;
     private static AppCatalog appCatalog;
-    private static DataCatalog replicaCatalog;
+    private static ReplicaCatalog replicaCatalog;
     private static Registry registry;
     private static Logger logger = LoggerFactory.getLogger(RegistryFactory.class);
 
@@ -100,14 +100,14 @@ public class RegistryFactory {
         return appCatalog;
     }
 
-    public static DataCatalog getDataCatalog() throws DataCatalogException {
+    public static ReplicaCatalog getReplicaCatalog() throws ReplicaCatalogException {
         try {
             if (replicaCatalog == null) {
-                replicaCatalog = new DataCatalogImpl();
+                replicaCatalog = new ReplicaCatalogImpl();
             }
         } catch (Exception e) {
             logger.error("Unable to create data catalog instance", e);
-            throw new DataCatalogException(e);
+            throw new ReplicaCatalogException(e);
         }
         return replicaCatalog;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/impl/RegistryImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/impl/RegistryImpl.java
index 5207fee..0e3c006 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/impl/RegistryImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/impl/RegistryImpl.java
@@ -22,7 +22,7 @@
 package org.apache.airavata.registry.core.impl;
 
 import org.apache.airavata.registry.core.app.catalog.impl.AppCatalogImpl;
-import org.apache.airavata.registry.core.data.catalog.impl.DataCatalogImpl;
+import org.apache.airavata.registry.core.replica.catalog.impl.ReplicaCatalogImpl;
 import org.apache.airavata.registry.core.experiment.catalog.impl.ExperimentCatalogImpl;
 import org.apache.airavata.registry.cpi.*;
 
@@ -43,7 +43,7 @@ public class RegistryImpl implements Registry {
     }
 
     @Override
-    public DataCatalog getDataCatalog() throws RegistryException {
-        return new DataCatalogImpl();
+    public ReplicaCatalog getReplicaCatalog() throws RegistryException {
+        return new ReplicaCatalogImpl();
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
new file mode 100644
index 0000000..2da6724
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/impl/ReplicaCatalogImpl.java
@@ -0,0 +1,356 @@
+/*
+ *
+ * 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.replica.catalog.impl;
+
+import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.DataProductType;
+import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
+import org.apache.airavata.registry.core.replica.catalog.model.DataProduct;
+import org.apache.airavata.registry.core.replica.catalog.model.DataReplicaLocation;
+import org.apache.airavata.registry.core.replica.catalog.utils.ReplicaCatalogJPAUtils;
+import org.apache.airavata.registry.core.replica.catalog.utils.ThriftDataModelConversion;
+import org.apache.airavata.registry.cpi.ReplicaCatalog;
+import org.apache.airavata.registry.cpi.ReplicaCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public class ReplicaCatalogImpl implements ReplicaCatalog {
+
+    private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogImpl.class);
+
+    @Override
+    public String registerDataProduct(DataProductModel productModel) throws ReplicaCatalogException {
+        if(productModel.getOwnerName() == null || productModel.getGatewayId() == null || productModel
+                .getLogicalPath() == null || !productModel.getLogicalPath().startsWith("/")){
+            throw new ReplicaCatalogException("owner name, gateway id and logical path should be non empty and logical path" +
+                    " should start with /");
+        }
+        if(productModel.getDataProductType().equals(DataProductType.FILE) && !productModel.getLogicalPath().endsWith(productModel.getProductName())){
+            if(!productModel.getLogicalPath().endsWith("/"))
+                productModel.setLogicalPath(productModel.getLogicalPath()+"/");
+            productModel.setLogicalPath(productModel.getLogicalPath()+productModel.getProductName());
+        }
+        //Creating parent logical dir if not exist too
+        String parentUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId() + ":/" ;
+        DataProductModel tempDp;
+        if(!isExists(parentUri)){
+            tempDp = new DataProductModel();
+            tempDp.setProductUri(parentUri);
+            tempDp.setLogicalPath("/");
+            tempDp.setOwnerName(productModel.getOwnerName());
+            tempDp.setGatewayId(productModel.getGatewayId());
+            tempDp.setDataProductType(DataProductType.DIR);
+            createDataProduct(tempDp);
+        }
+        String[] bits = productModel.getLogicalPath().split("/");
+        for(int i=0; i<bits.length-1;i++){
+            String dir = bits[i];
+            if(!isExists(parentUri + dir)){
+                tempDp = new DataProductModel();
+                try {
+                    tempDp.setLogicalPath((new URI(parentUri + dir)).getPath());
+                } catch (URISyntaxException e) {
+                    throw new ReplicaCatalogException(e);
+                }
+                tempDp.setProductUri(parentUri + dir);
+                tempDp.setOwnerName(productModel.getOwnerName());
+                tempDp.setGatewayId(productModel.getGatewayId());
+                tempDp.setDataProductType(DataProductType.DIR);
+                tempDp.setParentProductUri(parentUri);
+                parentUri = createDataProduct(tempDp);
+            }
+        }
+
+        productModel.setParentProductUri(parentUri);
+        String productUri = ReplicaCatalog.schema + "://" + productModel.getOwnerName() + "@" + productModel.getGatewayId()
+                + ":" + productModel.getLogicalPath();
+        productModel.setProductUri(productUri);
+        long currentTime = System.currentTimeMillis();
+        productModel.setCreationTime(currentTime);
+        productModel.setLastModifiedTime(currentTime);
+        if(productModel.getReplicaLocations() != null){
+            productModel.getReplicaLocations().stream().forEach(r-> {
+                r.setProductUri(productUri);
+                r.setReplicaId(UUID.randomUUID().toString());
+                r.setCreationTime(currentTime);
+                r.setLastModifiedTime(currentTime);
+            });
+        }
+        productModel.setCreationTime(System.currentTimeMillis());
+        productModel.setLastModifiedTime(System.currentTimeMillis());
+        return createDataProduct(productModel);
+    }
+
+    private String createDataProduct(DataProductModel productModel) throws ReplicaCatalogException {
+        DataProduct dataProduct = ThriftDataModelConversion.getDataProduct(productModel);
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            em.persist(dataProduct);
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return dataProduct.getProductUri();
+    }
+
+    @Override
+    public boolean removeDataProduct(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            if(dataProduct == null)
+                return false;
+            em.getTransaction().begin();
+            em.remove(dataProduct);
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean updateDataProduct(DataProductModel productModel) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productModel.getProductUri());
+            if(dataProduct == null)
+                return false;
+            em.getTransaction().begin();
+            productModel.setCreationTime(dataProduct.getCreationTime().getTime());
+            productModel.setLastModifiedTime(System.currentTimeMillis());
+            em.merge(ThriftDataModelConversion.getUpdatedDataProduct(productModel, dataProduct));
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public DataProductModel getDataProduct(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            return ThriftDataModelConversion.getDataProductModel(dataProduct);
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public boolean isExists(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            return dataProduct != null;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws ReplicaCatalogException {
+        String replicaId = UUID.randomUUID().toString();
+        dataReplicaLocationModel.setReplicaId(replicaId);
+        long currentTime = System.currentTimeMillis();
+        dataReplicaLocationModel.setCreationTime(currentTime);
+        dataReplicaLocationModel.setLastModifiedTime(currentTime);
+        dataReplicaLocationModel.setCreationTime(System.currentTimeMillis());
+        dataReplicaLocationModel.setLastModifiedTime(System.currentTimeMillis());
+        DataReplicaLocation replicaLocation = ThriftDataModelConversion.getDataReplicaLocation(dataReplicaLocationModel);
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            em.persist(replicaLocation);
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return replicaId;
+    }
+
+    @Override
+    public boolean removeReplicaLocation(String replicaId) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId);
+            if(replicaLocation == null)
+                return false;
+            em.getTransaction().begin();
+            em.remove(replicaLocation);
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataReplicaLocation dataReplicaLocation = em.find(DataReplicaLocation.class, dataReplicaLocationModel.getReplicaId());
+            if(dataReplicaLocation == null)
+                return false;
+            em.getTransaction().begin();
+            dataReplicaLocationModel.setCreationTime(dataReplicaLocation.getCreationTime().getTime());
+            dataReplicaLocationModel.setLastModifiedTime(System.currentTimeMillis());
+            em.merge(ThriftDataModelConversion.getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation));
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public DataReplicaLocationModel getReplicaLocation(String replicaId) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId);
+            return ThriftDataModelConversion.getDataReplicaLocationModel(replicaLocation);
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws ReplicaCatalogException {
+        EntityManager em = null;
+        try {
+            em = ReplicaCatalogJPAUtils.getEntityManager();
+            DataProduct dataProduct = em.find(DataProduct.class, productUri);
+            if(dataProduct == null)
+                return null;
+            ArrayList<DataReplicaLocationModel> dataReplicaLocationModels = new ArrayList<>();
+            dataProduct.getDataReplicaLocations().stream().forEach(rl->dataReplicaLocationModels
+                    .add(ThriftDataModelConversion.getDataReplicaLocationModel(rl)));
+            return dataReplicaLocationModels;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new ReplicaCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/Configuration.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/Configuration.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/Configuration.java
new file mode 100644
index 0000000..881d043
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/Configuration.java
@@ -0,0 +1,55 @@
+/*
+*
+* 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.replica.catalog.model;
+
+import org.apache.airavata.registry.core.app.catalog.model.Configuration_PK;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name ="CONFIGURATION")
+@IdClass(Configuration_PK.class)
+public class Configuration implements Serializable {
+    @Id
+    @Column(name = "CONFIG_KEY")
+    private String config_key;
+
+    @Id
+    @Column(name = "CONFIG_VAL")
+    private String config_val;
+
+    public String getConfig_key() {
+        return config_key;
+    }
+
+    public String getConfig_val() {
+        return config_val;
+    }
+
+    public void setConfig_key(String config_key) {
+        this.config_key = config_key;
+    }
+
+    public void setConfig_val(String config_val) {
+        this.config_val = config_val;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
new file mode 100644
index 0000000..7a48f87
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProduct.java
@@ -0,0 +1,187 @@
+/*
+ *
+ * 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.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Collection;
+
+@Entity
+@Table(name = "DATA_PRODUCT")
+public class DataProduct {
+    private final static Logger logger = LoggerFactory.getLogger(DataProduct.class);
+    private String productUri;
+    private String gatewayId;
+    private String productName;
+    private String logicalPath;
+    private String productDescription;
+    private String dataProductType;
+    private String ownerName;
+    private String parentProductUri;
+    private int productSize;
+    private Timestamp creationTime;
+    private Timestamp lastModifiedTime;
+
+    private DataProduct parentDataProduct;
+    private Collection<DataReplicaLocation> dataReplicaLocations;
+    private Collection<DataProductMetaData> dataProductMetaData;
+    private Collection<DataProduct> childDataProducts;
+
+    @Id
+    @Column(name = "PRODUCT_URI")
+    public String getProductUri() {
+        return productUri;
+    }
+
+    public void setProductUri(String productUri) {
+        this.productUri = productUri;
+    }
+
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Column(name = "PRODUCT_NAME")
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    @Column(name = "PRODUCT_DESCRIPTION")
+    public String getProductDescription() {
+        return productDescription;
+    }
+
+    public void setProductDescription(String productDescription) {
+        this.productDescription = productDescription;
+    }
+
+    @Column(name = "LOGICAL_PATH")
+    public String getLogicalPath() {
+        return logicalPath;
+    }
+
+    public void setLogicalPath(String logicalPath) {
+        this.logicalPath = logicalPath;
+    }
+
+    @Column(name = "OWNER_NAME")
+    public String getOwnerName() {
+        return ownerName;
+    }
+
+    public void setOwnerName(String ownerName) {
+        this.ownerName = ownerName;
+    }
+
+    @Column(name = "PARENT_PRODUCT_URI")
+    public String getParentProductUri() {
+        return parentProductUri;
+    }
+
+    public void setParentProductUri(String parentProductUri) {
+        this.parentProductUri = parentProductUri;
+    }
+
+    @Column(name = "PRODUCT_TYPE")
+    public String getDataProductType() {
+        return dataProductType;
+    }
+
+    public void setDataProductType(String dataProductType) {
+        this.dataProductType = dataProductType;
+    }
+
+    @Column(name = "PRODUCT_SIZE")
+    public int getProductSize() {
+        return productSize;
+    }
+
+    public void setProductSize(int productSize) {
+        this.productSize = productSize;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_MODIFIED_TIME")
+    public Timestamp getLastModifiedTime() {
+        return lastModifiedTime;
+    }
+
+    public void setLastModifiedTime(Timestamp lastModifiedTime) {
+        this.lastModifiedTime = lastModifiedTime;
+    }
+
+    @OneToMany(mappedBy = "dataProduct", cascade = {CascadeType.ALL})
+    public Collection<DataReplicaLocation> getDataReplicaLocations() {
+        return dataReplicaLocations;
+    }
+
+    public void setDataReplicaLocations(Collection<DataReplicaLocation> dataReplicaLocations) {
+        this.dataReplicaLocations = dataReplicaLocations;
+    }
+
+    @OneToMany(mappedBy = "dataProduct", cascade = {CascadeType.ALL})
+    public Collection<DataProductMetaData> getDataProductMetaData() {
+        return dataProductMetaData;
+    }
+
+    public void setDataProductMetaData(Collection<DataProductMetaData> dataProductMetaData) {
+        this.dataProductMetaData = dataProductMetaData;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "PARENT_PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
+    public DataProduct getParentDataProduct() {
+        return parentDataProduct;
+    }
+
+    public void setParentDataProduct(DataProduct parentDataProduct) {
+        this.parentDataProduct = parentDataProduct;
+    }
+
+    @OneToMany(mappedBy = "parentDataProduct", cascade = {CascadeType.ALL})
+    public Collection<DataProduct> getChildDataProducts() {
+        return childDataProducts;
+    }
+
+    public void setChildDataProducts(Collection<DataProduct> childDataProducts) {
+        this.childDataProducts = childDataProducts;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData.java
new file mode 100644
index 0000000..8604c69
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData.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.
+ *
+*/
+package org.apache.airavata.registry.core.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "DATA_PRODUCT_METADATA")
+@IdClass(DataProductMetaData_PK.class)
+public class DataProductMetaData {
+    private final static Logger logger = LoggerFactory.getLogger(DataProductMetaData.class);
+    private String productUri;
+    private String key;
+    private String value;
+
+    private DataProduct dataProduct;
+
+    @Id
+    @Column(name = "PRODUCT_URI")
+    public String getProductUri() {
+        return productUri;
+    }
+
+    public void setProductUri(String productUri) {
+        this.productUri = productUri;
+    }
+
+    @Id
+    @Column(name = "METADATA_KEY")
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    @Column(name = "METADATA_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
+    public DataProduct getDataProduct() {
+        return dataProduct;
+    }
+
+    public void setDataProduct(DataProduct dataProduct) {
+        this.dataProduct = dataProduct;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData_PK.java
new file mode 100644
index 0000000..891b2fa
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataProductMetaData_PK.java
@@ -0,0 +1,59 @@
+/*
+ *
+ * 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.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.Serializable;
+
+public class DataProductMetaData_PK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(DataProductMetaData_PK.class);
+
+    private String productUri;
+    private String key;
+
+    public String getProductUri() {
+        return productUri;
+    }
+
+    public void setProductUri(String productUri) {
+        this.productUri = productUri;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaLocation.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaLocation.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaLocation.java
new file mode 100644
index 0000000..44ce4fc
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaLocation.java
@@ -0,0 +1,169 @@
+/*
+ *
+ * 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.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Collection;
+
+@Entity
+@Table(name = "DATA_REPLICA_LOCATION")
+public class DataReplicaLocation {
+    private final static Logger logger = LoggerFactory.getLogger(DataReplicaLocation.class);
+    private String replicaId;
+    private String productUri;
+    private String replicaName;
+    private String replicaDescription;
+    private String storageResourceId;
+    private String filePath;
+    private String replicaLocationCategory;
+    private String replicaPersistentType;
+    private Timestamp creationTime;
+    private Timestamp lastModifiedTime;
+    private Timestamp validUntilTime;
+
+    private DataProduct dataProduct;
+    private Collection<DataReplicaMetaData> dataReplicaMetaData;
+
+    @Id
+    @Column(name = "REPLICA_ID")
+    public String getReplicaId() {
+        return replicaId;
+    }
+
+    public void setReplicaId(String replicaId) {
+        this.replicaId = replicaId;
+    }
+
+    @Column(name = "PRODUCT_URI")
+    public String getProductUri() {
+        return productUri;
+    }
+
+    public void setProductUri(String productUri) {
+        this.productUri = productUri;
+    }
+
+
+    @Column(name = "REPLICA_NAME")
+    public String getReplicaName() {
+        return replicaName;
+    }
+
+    public void setReplicaName(String replicaName) {
+        this.replicaName = replicaName;
+    }
+
+    @Column(name = "REPLICA_DESCRIPTION")
+    public String getReplicaDescription() {
+        return replicaDescription;
+    }
+
+    public void setReplicaDescription(String replicaDescription) {
+        this.replicaDescription = replicaDescription;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @Column(name = "FILE_PATH")
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_MODIFIED_TIME")
+    public Timestamp getLastModifiedTime() {
+        return lastModifiedTime;
+    }
+
+    public void setLastModifiedTime(Timestamp lastModifiedTime) {
+        this.lastModifiedTime = lastModifiedTime;
+    }
+
+    @Column(name = "VALID_UNTIL_TIME")
+    public Timestamp getValidUntilTime() {
+        return validUntilTime;
+    }
+
+    public void setValidUntilTime(Timestamp validUntilTime) {
+        this.validUntilTime = validUntilTime;
+    }
+
+
+    @Column(name = "REPLICA_LOCATION_CATEGORY")
+    public String getReplicaLocationCategory() {
+        return replicaLocationCategory;
+    }
+
+    public void setReplicaLocationCategory(String replicaLocationCategory) {
+        this.replicaLocationCategory = replicaLocationCategory;
+    }
+
+    @Column(name = "REPLICA_PERSISTENT_TYPE")
+    public String getReplicaPersistentType() {
+        return replicaPersistentType;
+    }
+
+    public void setReplicaPersistentType(String replicaPersistentType) {
+        this.replicaPersistentType = replicaPersistentType;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "PRODUCT_URI", referencedColumnName = "PRODUCT_URI")
+    public DataProduct getDataProduct() {
+        return dataProduct;
+    }
+
+    public void setDataProduct(DataProduct dataProduct) {
+        this.dataProduct = dataProduct;
+    }
+
+    @OneToMany(mappedBy = "dataReplicaLocation", cascade = {CascadeType.ALL})
+    public Collection<DataReplicaMetaData> getDataReplicaMetaData() {
+        return dataReplicaMetaData;
+    }
+
+    public void setDataReplicaMetaData(Collection<DataReplicaMetaData> dataReplicaMetaData) {
+        this.dataReplicaMetaData = dataReplicaMetaData;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData.java
new file mode 100644
index 0000000..2f00321
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData.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.
+ *
+*/
+package org.apache.airavata.registry.core.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "DATA_REPLICA_METADATA")
+@IdClass(DataReplicaMetaData_PK.class)
+public class DataReplicaMetaData {
+    private final static Logger logger = LoggerFactory.getLogger(DataReplicaMetaData.class);
+    private String replicaId;
+    private String key;
+    private String value;
+
+    private DataReplicaLocation dataReplicaLocation;
+
+    @Id
+    @Column(name = "REPLICA_ID")
+    public String getReplicaId() {
+        return replicaId;
+    }
+
+    public void setReplicaId(String replicaId) {
+        this.replicaId = replicaId;
+    }
+
+    @Id
+    @Column(name = "METADATA_KEY")
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    @Column(name = "METADATA_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "REPLICA_ID", referencedColumnName = "REPLICA_ID")
+    public DataReplicaLocation getDataReplicaLocation() {
+        return dataReplicaLocation;
+    }
+
+    public void setDataReplicaLocation(DataReplicaLocation dataReplicaLocation) {
+        this.dataReplicaLocation = dataReplicaLocation;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData_PK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData_PK.java
new file mode 100644
index 0000000..86133c2
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/model/DataReplicaMetaData_PK.java
@@ -0,0 +1,59 @@
+/*
+ *
+ * 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.replica.catalog.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.Serializable;
+
+public class DataReplicaMetaData_PK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(DataReplicaMetaData_PK.class);
+
+    private String replicaId;
+    private String key;
+
+    public String getReplicaId() {
+        return replicaId;
+    }
+
+    public void setReplicaId(String replicaId) {
+        this.replicaId = replicaId;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogConstants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogConstants.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogConstants.java
new file mode 100644
index 0000000..5d9d4ec
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogConstants.java
@@ -0,0 +1,49 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.registry.core.replica.catalog.utils;
+
+public class ReplicaCatalogConstants {
+	// table names
+	public static final String DATA_RESOURCE = "DataProduct";
+	public static final String DATA_REPLICA_LOCATION = "DataReplicaLocation";
+	public static final String CONFIGURATION = "Configuration";
+
+	// DataProduct Table
+	public final class DataResourceConstants {
+		public static final String RESOURCE_ID = "resourceId";
+		public static final String RESOURCE_NAME = "resourceName";
+		public static final String RESOURCE_DESCRIPTION = "resourceDescription";
+		public static final String RESOURCE_SIZE = "resourceSize";
+        public static final String CREATION_TIME = "creationTime";
+        public static final String LAST_MODIFIED_TIME = "lastModifiedTime";
+	}
+
+	// Users table
+	public final class DataReplicaLocationConstants {
+        public static final String REPLICA_ID = "replicaId";
+        public static final String RESOURCE_ID = "resourceId";
+        public static final String DATA_LOCATIONS = "dataLocations";
+        public static final String REPLICA_NAME = "replicaName";
+        public static final String REPLICA_DESCRIPTION = "replicaDescription";
+        public static final String CREATION_TIME = "creationTime";
+        public static final String LAST_MODIFIED_TIME = "lastModifiedTime";
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
new file mode 100644
index 0000000..21b3e17
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogJPAUtils.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * 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.replica.catalog.utils;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ReplicaCatalogJPAUtils {
+    private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogJPAUtils.class);
+
+    private static final String PERSISTENCE_UNIT_NAME = "datacatalog_data";
+    private static final String DATACATALOG_JDBC_DRIVER = "datacatalog.jdbc.driver";
+    private static final String DATACATALOG_JDBC_URL = "datacatalog.jdbc.url";
+    private static final String DATACATALOG_JDBC_USER = "datacatalog.jdbc.user";
+    private static final String DATACATALOG_JDBC_PWD = "datacatalog.jdbc.password";
+    private static final String DATACATALOG_VALIDATION_QUERY = "datacatalog.validationQuery";
+
+    @PersistenceUnit(unitName="datacatalog_data")
+    protected static EntityManagerFactory factory;
+
+    @PersistenceContext(unitName="datacatalog_data")
+    private static EntityManager dataCatEntityManager;
+
+    public static EntityManager getEntityManager() throws ApplicationSettingsException {
+        if (factory == null) {
+            String connectionProperties = "DriverClassName=" + readServerProperties(DATACATALOG_JDBC_DRIVER) + "," +
+                    "Url=" + readServerProperties(DATACATALOG_JDBC_URL) + "?autoReconnect=true," +
+                    "Username=" + readServerProperties(DATACATALOG_JDBC_USER) + "," +
+                    "Password=" + readServerProperties(DATACATALOG_JDBC_PWD) +
+                    ",validationQuery=" + readServerProperties(DATACATALOG_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");
+            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);
+        }
+        dataCatEntityManager = factory.createEntityManager();
+        return dataCatEntityManager;
+    }
+
+    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...");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogQueryGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogQueryGenerator.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogQueryGenerator.java
new file mode 100644
index 0000000..da102a9
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ReplicaCatalogQueryGenerator.java
@@ -0,0 +1,111 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.core.replica.catalog.utils;
+
+import org.apache.airavata.registry.cpi.ResultOrderType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ReplicaCatalogQueryGenerator {
+
+    private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogQueryGenerator.class);
+	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 ReplicaCatalogQueryGenerator(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 selectQuery(EntityManager entityManager, String orderByColumn,
+                             ResultOrderType resultOrderType){
+        String order = (resultOrderType == ResultOrderType.ASC) ? "ASC" : "DESC";
+        String orderByClause = " ORDER BY " + SELECT_OBJ + "." + orderByColumn + " " + order;
+        String queryString="SELECT "+ SELECT_OBJ + " FROM " +getTableName()+" "+TABLE_OBJ;
+        return generateQueryWithParameters(entityManager, queryString, orderByClause);
+    }
+
+	public Query deleteQuery(EntityManager entityManager){
+		String queryString="Delete FROM "+getTableName()+" "+TABLE_OBJ;
+		return generateQueryWithParameters(entityManager, queryString);
+	}
+
+	private Query generateQueryWithParameters(EntityManager entityManager, String queryString) {
+		return generateQueryWithParameters(entityManager, queryString, "");
+	}
+
+    private Query generateQueryWithParameters(EntityManager entityManager,
+                                              String queryString, String orderByClause) {
+        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;
+        }
+        queryString += orderByClause;
+        Query query = entityManager.createQuery(queryString);
+        for (String paramName : queryParameters.keySet()) {
+            query.setParameter(paramName, queryParameters.get(paramName));
+        }
+        return query;
+    }
+}


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

Posted by sh...@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/6c483bc4
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6c483bc4
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6c483bc4

Branch: refs/heads/master
Commit: 6c483bc4cf9f7a7c7301449a02dd50e499baccd5
Parents: f30e73f 199c301
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Mar 23 18:05:55 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Mar 23 18:05:55 2016 -0400

----------------------------------------------------------------------
 .../client/samples/DataCatalogSample.java       |  2 +-
 .../test/resources/airavata-server.properties   | 13 ----
 .../server/OrchestratorServerHandler.java       | 37 +++++++----
 .../core/data/catalog/impl/DataCatalogImpl.java | 64 +++++++++++++++++++-
 .../airavata/data/catalog/DataCatalogTest.java  |  6 +-
 .../airavata/registry/cpi/DataCatalog.java      | 12 ++--
 6 files changed, 96 insertions(+), 38 deletions(-)
----------------------------------------------------------------------



[32/55] [abbrv] airavata git commit: changing db script names

Posted by sh...@apache.org.
changing db script names


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

Branch: refs/heads/master
Commit: cf8dc28e7b551b37f4794a9452a1cc95f21d5c1b
Parents: 04f6f59
Author: scnakandala <su...@gmail.com>
Authored: Thu Mar 24 11:30:47 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Mar 24 11:30:47 2016 -0400

----------------------------------------------------------------------
 .../api/server/handler/utils/DataCatInit.java   |  2 +-
 .../src/main/resources/datacatalog-derby.sql    | 78 --------------------
 .../src/main/resources/datacatalog-mysql.sql    | 77 -------------------
 .../src/main/resources/replicacatalog-derby.sql | 78 ++++++++++++++++++++
 .../src/main/resources/replicacatalog-mysql.sql | 77 +++++++++++++++++++
 .../replica/catalog/ReplicaCatalogTest.java     |  2 +-
 .../replica/catalog/util/Initialize.java        |  2 +-
 7 files changed, 158 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
index f99228a..b63d9c4 100644
--- a/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
+++ b/airavata-api/airavata-api-server/src/test/java/org/apache/airavata/api/server/handler/utils/DataCatInit.java
@@ -40,7 +40,7 @@ import java.util.StringTokenizer;
 public class DataCatInit {
     private static final Logger logger = LoggerFactory.getLogger(DataCatInit.class);
     public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
-    public  String scriptName = "datacatalog-derby.sql";
+    public  String scriptName = "replicacatalog-derby.sql";
     private NetworkServerControl server;
     private static final String delimiter = ";";
     private String jdbcUrl = null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql b/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql
deleted file mode 100644
index 78dc165..0000000
--- a/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql
+++ /dev/null
@@ -1,78 +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 DATA_PRODUCT
-(
-        PRODUCT_URI VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        PRODUCT_NAME VARCHAR (255),
-        PRODUCT_DESCRIPTION VARCHAR (1024),
-        PARENT_PRODUCT_URI VARCHAR (255),
-        LOGICAL_PATH VARCHAR (255),
-        OWNER_NAME VARCHAR (255),
-        PRODUCT_SIZE INTEGER ,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (PRODUCT_URI)
-);
-
-CREATE TABLE DATA_REPLICA_LOCATION
-(
-        REPLICA_ID VARCHAR (255),
-        PRODUCT_URI VARCHAR (255) NOT NULL,
-        REPLICA_NAME VARCHAR (255),
-        REPLICA_DESCRIPTION VARCHAR (1024),
-        STORAGE_RESOURCE_ID VARCHAR (255),
-        FILE_PATH VARCHAR (4096),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        VALID_UNTIL_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (REPLICA_ID),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_PRODUCT_METADATA
-(
-        PRODUCT_URI VARCHAR(255),
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(2048),
-        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_REPLICA_METADATA
-(
-        REPLICA_ID VARCHAR(255),
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(2048),
-        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
-        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
deleted file mode 100644
index d612194..0000000
--- a/modules/registry/registry-core/src/main/resources/datacatalog-mysql.sql
+++ /dev/null
@@ -1,77 +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 DATA_PRODUCT
-(
-        PRODUCT_URI VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        PRODUCT_NAME VARCHAR (255),
-        LOGICAL_PATH VARCHAR (255),
-        PRODUCT_DESCRIPTION VARCHAR (255),
-        OWNER_NAME VARCHAR (255),
-        PARENT_PRODUCT_URI VARCHAR (255),
-        PRODUCT_SIZE INT,
-        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRIMARY KEY (PRODUCT_URI)
-);
-
-CREATE TABLE DATA_REPLICA_LOCATION
-(
-        REPLICA_ID VARCHAR (255),
-        PRODUCT_URI VARCHAR (255) NOT NULL,
-        REPLICA_NAME VARCHAR (255),
-        REPLICA_DESCRIPTION VARCHAR (255),
-        STORAGE_RESOURCE_ID VARCHAR (255),
-        FILE_PATH VARCHAR (255),
-        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        VALID_UNTIL_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (REPLICA_ID),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_PRODUCT_METADATA
-(
-        PRODUCT_URI VARCHAR(255),
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_REPLICA_METADATA
-(
-        REPLICA_ID VARCHAR(255),
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
-        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql b/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
new file mode 100644
index 0000000..78dc165
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/replicacatalog-derby.sql
@@ -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.
+ *
+ */
+
+CREATE TABLE DATA_PRODUCT
+(
+        PRODUCT_URI VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
+        PRODUCT_NAME VARCHAR (255),
+        PRODUCT_DESCRIPTION VARCHAR (1024),
+        PARENT_PRODUCT_URI VARCHAR (255),
+        LOGICAL_PATH VARCHAR (255),
+        OWNER_NAME VARCHAR (255),
+        PRODUCT_SIZE INTEGER ,
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY (PRODUCT_URI)
+);
+
+CREATE TABLE DATA_REPLICA_LOCATION
+(
+        REPLICA_ID VARCHAR (255),
+        PRODUCT_URI VARCHAR (255) NOT NULL,
+        REPLICA_NAME VARCHAR (255),
+        REPLICA_DESCRIPTION VARCHAR (1024),
+        STORAGE_RESOURCE_ID VARCHAR (255),
+        FILE_PATH VARCHAR (4096),
+        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        VALID_UNTIL_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY (REPLICA_ID),
+        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_PRODUCT_METADATA
+(
+        PRODUCT_URI VARCHAR(255),
+        METADATA_KEY VARCHAR(255),
+        METADATA_VALUE VARCHAR(2048),
+        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
+        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_REPLICA_METADATA
+(
+        REPLICA_ID VARCHAR(255),
+        METADATA_KEY VARCHAR(255),
+        METADATA_VALUE VARCHAR(2048),
+        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
+        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
+);
+
+
+CREATE TABLE CONFIGURATION
+(
+        CONFIG_KEY VARCHAR(255),
+        CONFIG_VAL VARCHAR(255),
+        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
+);
+
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
new file mode 100644
index 0000000..d612194
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/replicacatalog-mysql.sql
@@ -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.
+ *
+ */
+
+CREATE TABLE DATA_PRODUCT
+(
+        PRODUCT_URI VARCHAR (255),
+        GATEWAY_ID VARCHAR (255),
+        PRODUCT_NAME VARCHAR (255),
+        LOGICAL_PATH VARCHAR (255),
+        PRODUCT_DESCRIPTION VARCHAR (255),
+        OWNER_NAME VARCHAR (255),
+        PARENT_PRODUCT_URI VARCHAR (255),
+        PRODUCT_SIZE INT,
+        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
+        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        PRIMARY KEY (PRODUCT_URI)
+);
+
+CREATE TABLE DATA_REPLICA_LOCATION
+(
+        REPLICA_ID VARCHAR (255),
+        PRODUCT_URI VARCHAR (255) NOT NULL,
+        REPLICA_NAME VARCHAR (255),
+        REPLICA_DESCRIPTION VARCHAR (255),
+        STORAGE_RESOURCE_ID VARCHAR (255),
+        FILE_PATH VARCHAR (255),
+        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
+        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+        VALID_UNTIL_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY (REPLICA_ID),
+        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_PRODUCT_METADATA
+(
+        PRODUCT_URI VARCHAR(255),
+        METADATA_KEY VARCHAR(255),
+        METADATA_VALUE VARCHAR(255),
+        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
+        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
+);
+
+CREATE TABLE DATA_REPLICA_METADATA
+(
+        REPLICA_ID VARCHAR(255),
+        METADATA_KEY VARCHAR(255),
+        METADATA_VALUE VARCHAR(255),
+        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
+        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE CONFIGURATION
+(
+        CONFIG_KEY VARCHAR(255),
+        CONFIG_VAL VARCHAR(255),
+        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
+);
+
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
index f787ee4..ff30d43 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
@@ -45,7 +45,7 @@ public class ReplicaCatalogTest {
     public static void setUp() {
         try {
             System.out.println("********** SET UP ************");
-            initialize = new Initialize("datacatalog-derby.sql");
+            initialize = new Initialize("replicacatalog-derby.sql");
             initialize.initializeDB();
             datacatalog = RegistryFactory.getReplicaCatalog();
             dataProductModel = new DataProductModel();

http://git-wip-us.apache.org/repos/asf/airavata/blob/cf8dc28e/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
index 989a775..c05003b 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
@@ -40,7 +40,7 @@ import java.util.StringTokenizer;
 public class Initialize {
     private static final Logger logger = LoggerFactory.getLogger(Initialize.class);
     public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
-    public  String scriptName = "datacatalog-derby.sql";
+    public  String scriptName = "replicacatalog-derby.sql";
     private NetworkServerControl server;
     private static final String delimiter = ";";
     private String jdbcUrl = null;


[06/55] [abbrv] airavata git commit: adding replica catalog related API methods

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 a91f277..fd22834 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
@@ -1910,7 +1910,7 @@ class AiravataIf {
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param DMType
@@ -1928,12 +1928,12 @@ class AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param localDataMovement
    */
-  virtual void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) = 0;
+  virtual void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) = 0;
 
   /**
    * 
@@ -1977,7 +1977,7 @@ class AiravataIf {
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param priorityOrder
@@ -1991,12 +1991,12 @@ class AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param scpDataMovement
    */
-  virtual void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) = 0;
+  virtual void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) = 0;
 
   /**
    * 
@@ -2039,7 +2039,7 @@ class AiravataIf {
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which data movement protocol to be added
    * 
    * @param priorityOrder
@@ -2053,12 +2053,12 @@ class AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param unicoreDataMovement
    */
-  virtual void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) = 0;
+  virtual void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) = 0;
 
   /**
    * 
@@ -2103,7 +2103,7 @@ class AiravataIf {
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which dataMovement protocol to be added
    * 
    * @param DMType
@@ -2121,12 +2121,12 @@ class AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param gridFTPDataMovement
    */
-  virtual void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) = 0;
+  virtual void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) = 0;
 
   /**
    * Update the given GridFTP data movement details to a compute resource
@@ -2264,11 +2264,11 @@ class AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMovementInterfaceId
    * @param dataMoveType
    */
-  virtual bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) = 0;
+  virtual bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) = 0;
   virtual void registerResourceJobManager(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager) = 0;
   virtual bool updateResourceJobManager(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& resourceJobManagerId, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& updatedResourceJobManager) = 0;
   virtual void getResourceJobManager( ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& resourceJobManagerId) = 0;
@@ -2608,6 +2608,17 @@ class AiravataIf {
   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;
+
+  /**
+   * API Methods related to data catalog
+   * 
+   * 
+   * @param authzToken
+   * @param dataProductModel
+   */
+  virtual void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) = 0;
+  virtual void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) = 0;
+  virtual void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) = 0;
 };
 
 class AiravataIfFactory {
@@ -2925,7 +2936,7 @@ class AiravataNull : virtual public AiravataIf {
     bool _return = false;
     return _return;
   }
-  void addLocalDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::LOCALDataMovement& /* localDataMovement */) {
+  void addLocalDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::LOCALDataMovement& /* localDataMovement */) {
     return;
   }
   bool updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::LOCALDataMovement& /* localDataMovement */) {
@@ -2935,7 +2946,7 @@ class AiravataNull : virtual public AiravataIf {
   void getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementId */) {
     return;
   }
-  void addSCPDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::SCPDataMovement& /* scpDataMovement */) {
+  void addSCPDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::SCPDataMovement& /* scpDataMovement */) {
     return;
   }
   bool updateSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::SCPDataMovement& /* scpDataMovement */) {
@@ -2945,7 +2956,7 @@ class AiravataNull : virtual public AiravataIf {
   void getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementId */) {
     return;
   }
-  void addUnicoreDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& /* unicoreDataMovement */) {
+  void addUnicoreDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& /* unicoreDataMovement */) {
     return;
   }
   bool updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& /* unicoreDataMovement */) {
@@ -2955,7 +2966,7 @@ class AiravataNull : virtual public AiravataIf {
   void getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementId */) {
     return;
   }
-  void addGridFTPDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& /* gridFTPDataMovement */) {
+  void addGridFTPDataMovementDetails(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */, const int32_t /* priorityOrder */, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& /* gridFTPDataMovement */) {
     return;
   }
   bool updateGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& /* gridFTPDataMovement */) {
@@ -2985,7 +2996,7 @@ class AiravataNull : virtual public AiravataIf {
     bool _return = false;
     return _return;
   }
-  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productId */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */) {
+  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* productUri */, const std::string& /* dataMovementInterfaceId */, const  ::apache::airavata::model::data::movement::DMType::type /* dataMoveType */) {
     bool _return = false;
     return _return;
   }
@@ -3082,6 +3093,15 @@ class AiravataNull : virtual public AiravataIf {
     bool _return = false;
     return _return;
   }
+  void registerDataProduct(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::product::DataProductModel& /* dataProductModel */) {
+    return;
+  }
+  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* dataProductUri */) {
+    return;
+  }
+  void registerReplicaLocation(std::string& /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& /* replicaLocationModel */) {
+    return;
+  }
 };
 
 
@@ -15668,19 +15688,19 @@ class Airavata_addLocalDataMovementDetails_args {
 
   Airavata_addLocalDataMovementDetails_args(const Airavata_addLocalDataMovementDetails_args&);
   Airavata_addLocalDataMovementDetails_args& operator=(const Airavata_addLocalDataMovementDetails_args&);
-  Airavata_addLocalDataMovementDetails_args() : productId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
+  Airavata_addLocalDataMovementDetails_args() : productUri(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
   }
 
   virtual ~Airavata_addLocalDataMovementDetails_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-  std::string productId;
+  std::string productUri;
    ::apache::airavata::model::data::movement::DMType::type dataMoveType;
   int32_t priorityOrder;
    ::apache::airavata::model::data::movement::LOCALDataMovement localDataMovement;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_productId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_dataMoveType(const  ::apache::airavata::model::data::movement::DMType::type val);
 
@@ -15692,7 +15712,7 @@ class Airavata_addLocalDataMovementDetails_args {
   {
     if (!(authzToken == rhs.authzToken))
       return false;
-    if (!(productId == rhs.productId))
+    if (!(productUri == rhs.productUri))
       return false;
     if (!(dataMoveType == rhs.dataMoveType))
       return false;
@@ -15720,7 +15740,7 @@ class Airavata_addLocalDataMovementDetails_pargs {
 
   virtual ~Airavata_addLocalDataMovementDetails_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const std::string* productId;
+  const std::string* productUri;
   const  ::apache::airavata::model::data::movement::DMType::type* dataMoveType;
   const int32_t* priorityOrder;
   const  ::apache::airavata::model::data::movement::LOCALDataMovement* localDataMovement;
@@ -16100,19 +16120,19 @@ class Airavata_addSCPDataMovementDetails_args {
 
   Airavata_addSCPDataMovementDetails_args(const Airavata_addSCPDataMovementDetails_args&);
   Airavata_addSCPDataMovementDetails_args& operator=(const Airavata_addSCPDataMovementDetails_args&);
-  Airavata_addSCPDataMovementDetails_args() : productId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
+  Airavata_addSCPDataMovementDetails_args() : productUri(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
   }
 
   virtual ~Airavata_addSCPDataMovementDetails_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-  std::string productId;
+  std::string productUri;
    ::apache::airavata::model::data::movement::DMType::type dataMoveType;
   int32_t priorityOrder;
    ::apache::airavata::model::data::movement::SCPDataMovement scpDataMovement;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_productId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_dataMoveType(const  ::apache::airavata::model::data::movement::DMType::type val);
 
@@ -16124,7 +16144,7 @@ class Airavata_addSCPDataMovementDetails_args {
   {
     if (!(authzToken == rhs.authzToken))
       return false;
-    if (!(productId == rhs.productId))
+    if (!(productUri == rhs.productUri))
       return false;
     if (!(dataMoveType == rhs.dataMoveType))
       return false;
@@ -16152,7 +16172,7 @@ class Airavata_addSCPDataMovementDetails_pargs {
 
   virtual ~Airavata_addSCPDataMovementDetails_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const std::string* productId;
+  const std::string* productUri;
   const  ::apache::airavata::model::data::movement::DMType::type* dataMoveType;
   const int32_t* priorityOrder;
   const  ::apache::airavata::model::data::movement::SCPDataMovement* scpDataMovement;
@@ -16532,19 +16552,19 @@ class Airavata_addUnicoreDataMovementDetails_args {
 
   Airavata_addUnicoreDataMovementDetails_args(const Airavata_addUnicoreDataMovementDetails_args&);
   Airavata_addUnicoreDataMovementDetails_args& operator=(const Airavata_addUnicoreDataMovementDetails_args&);
-  Airavata_addUnicoreDataMovementDetails_args() : productId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
+  Airavata_addUnicoreDataMovementDetails_args() : productUri(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
   }
 
   virtual ~Airavata_addUnicoreDataMovementDetails_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-  std::string productId;
+  std::string productUri;
    ::apache::airavata::model::data::movement::DMType::type dataMoveType;
   int32_t priorityOrder;
    ::apache::airavata::model::data::movement::UnicoreDataMovement unicoreDataMovement;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_productId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_dataMoveType(const  ::apache::airavata::model::data::movement::DMType::type val);
 
@@ -16556,7 +16576,7 @@ class Airavata_addUnicoreDataMovementDetails_args {
   {
     if (!(authzToken == rhs.authzToken))
       return false;
-    if (!(productId == rhs.productId))
+    if (!(productUri == rhs.productUri))
       return false;
     if (!(dataMoveType == rhs.dataMoveType))
       return false;
@@ -16584,7 +16604,7 @@ class Airavata_addUnicoreDataMovementDetails_pargs {
 
   virtual ~Airavata_addUnicoreDataMovementDetails_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const std::string* productId;
+  const std::string* productUri;
   const  ::apache::airavata::model::data::movement::DMType::type* dataMoveType;
   const int32_t* priorityOrder;
   const  ::apache::airavata::model::data::movement::UnicoreDataMovement* unicoreDataMovement;
@@ -16964,19 +16984,19 @@ class Airavata_addGridFTPDataMovementDetails_args {
 
   Airavata_addGridFTPDataMovementDetails_args(const Airavata_addGridFTPDataMovementDetails_args&);
   Airavata_addGridFTPDataMovementDetails_args& operator=(const Airavata_addGridFTPDataMovementDetails_args&);
-  Airavata_addGridFTPDataMovementDetails_args() : productId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
+  Airavata_addGridFTPDataMovementDetails_args() : productUri(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0), priorityOrder(0) {
   }
 
   virtual ~Airavata_addGridFTPDataMovementDetails_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-  std::string productId;
+  std::string productUri;
    ::apache::airavata::model::data::movement::DMType::type dataMoveType;
   int32_t priorityOrder;
    ::apache::airavata::model::data::movement::GridFTPDataMovement gridFTPDataMovement;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_productId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_dataMoveType(const  ::apache::airavata::model::data::movement::DMType::type val);
 
@@ -16988,7 +17008,7 @@ class Airavata_addGridFTPDataMovementDetails_args {
   {
     if (!(authzToken == rhs.authzToken))
       return false;
-    if (!(productId == rhs.productId))
+    if (!(productUri == rhs.productUri))
       return false;
     if (!(dataMoveType == rhs.dataMoveType))
       return false;
@@ -17016,7 +17036,7 @@ class Airavata_addGridFTPDataMovementDetails_pargs {
 
   virtual ~Airavata_addGridFTPDataMovementDetails_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const std::string* productId;
+  const std::string* productUri;
   const  ::apache::airavata::model::data::movement::DMType::type* dataMoveType;
   const int32_t* priorityOrder;
   const  ::apache::airavata::model::data::movement::GridFTPDataMovement* gridFTPDataMovement;
@@ -18094,18 +18114,18 @@ class Airavata_deleteDataMovementInterface_args {
 
   Airavata_deleteDataMovementInterface_args(const Airavata_deleteDataMovementInterface_args&);
   Airavata_deleteDataMovementInterface_args& operator=(const Airavata_deleteDataMovementInterface_args&);
-  Airavata_deleteDataMovementInterface_args() : productId(), dataMovementInterfaceId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0) {
+  Airavata_deleteDataMovementInterface_args() : productUri(), dataMovementInterfaceId(), dataMoveType(( ::apache::airavata::model::data::movement::DMType::type)0) {
   }
 
   virtual ~Airavata_deleteDataMovementInterface_args() throw();
    ::apache::airavata::model::security::AuthzToken authzToken;
-  std::string productId;
+  std::string productUri;
   std::string dataMovementInterfaceId;
    ::apache::airavata::model::data::movement::DMType::type dataMoveType;
 
   void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
 
-  void __set_productId(const std::string& val);
+  void __set_productUri(const std::string& val);
 
   void __set_dataMovementInterfaceId(const std::string& val);
 
@@ -18115,7 +18135,7 @@ class Airavata_deleteDataMovementInterface_args {
   {
     if (!(authzToken == rhs.authzToken))
       return false;
-    if (!(productId == rhs.productId))
+    if (!(productUri == rhs.productUri))
       return false;
     if (!(dataMovementInterfaceId == rhs.dataMovementInterfaceId))
       return false;
@@ -18141,7 +18161,7 @@ class Airavata_deleteDataMovementInterface_pargs {
 
   virtual ~Airavata_deleteDataMovementInterface_pargs() throw();
   const  ::apache::airavata::model::security::AuthzToken* authzToken;
-  const std::string* productId;
+  const std::string* productUri;
   const std::string* dataMovementInterfaceId;
   const  ::apache::airavata::model::data::movement::DMType::type* dataMoveType;
 
@@ -21988,6 +22008,414 @@ class Airavata_isWorkflowExistWithName_presult {
 
 };
 
+
+class Airavata_registerDataProduct_args {
+ public:
+
+  Airavata_registerDataProduct_args(const Airavata_registerDataProduct_args&);
+  Airavata_registerDataProduct_args& operator=(const Airavata_registerDataProduct_args&);
+  Airavata_registerDataProduct_args() {
+  }
+
+  virtual ~Airavata_registerDataProduct_args() throw();
+   ::apache::airavata::model::security::AuthzToken authzToken;
+   ::apache::airavata::model::data::product::DataProductModel dataProductModel;
+
+  void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
+
+  void __set_dataProductModel(const  ::apache::airavata::model::data::product::DataProductModel& val);
+
+  bool operator == (const Airavata_registerDataProduct_args & rhs) const
+  {
+    if (!(authzToken == rhs.authzToken))
+      return false;
+    if (!(dataProductModel == rhs.dataProductModel))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_registerDataProduct_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_registerDataProduct_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_registerDataProduct_pargs {
+ public:
+
+
+  virtual ~Airavata_registerDataProduct_pargs() throw();
+  const  ::apache::airavata::model::security::AuthzToken* authzToken;
+  const  ::apache::airavata::model::data::product::DataProductModel* dataProductModel;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_registerDataProduct_result__isset {
+  _Airavata_registerDataProduct_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_registerDataProduct_result__isset;
+
+class Airavata_registerDataProduct_result {
+ public:
+
+  Airavata_registerDataProduct_result(const Airavata_registerDataProduct_result&);
+  Airavata_registerDataProduct_result& operator=(const Airavata_registerDataProduct_result&);
+  Airavata_registerDataProduct_result() : success() {
+  }
+
+  virtual ~Airavata_registerDataProduct_result() throw();
+  std::string success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_registerDataProduct_result__isset __isset;
+
+  void __set_success(const std::string& val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_registerDataProduct_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_registerDataProduct_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_registerDataProduct_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_registerDataProduct_presult__isset {
+  _Airavata_registerDataProduct_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_registerDataProduct_presult__isset;
+
+class Airavata_registerDataProduct_presult {
+ public:
+
+
+  virtual ~Airavata_registerDataProduct_presult() throw();
+  std::string* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_registerDataProduct_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_getDataProduct_args {
+ public:
+
+  Airavata_getDataProduct_args(const Airavata_getDataProduct_args&);
+  Airavata_getDataProduct_args& operator=(const Airavata_getDataProduct_args&);
+  Airavata_getDataProduct_args() : dataProductUri() {
+  }
+
+  virtual ~Airavata_getDataProduct_args() throw();
+   ::apache::airavata::model::security::AuthzToken authzToken;
+  std::string dataProductUri;
+
+  void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
+
+  void __set_dataProductUri(const std::string& val);
+
+  bool operator == (const Airavata_getDataProduct_args & rhs) const
+  {
+    if (!(authzToken == rhs.authzToken))
+      return false;
+    if (!(dataProductUri == rhs.dataProductUri))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getDataProduct_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getDataProduct_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_getDataProduct_pargs {
+ public:
+
+
+  virtual ~Airavata_getDataProduct_pargs() throw();
+  const  ::apache::airavata::model::security::AuthzToken* authzToken;
+  const std::string* dataProductUri;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getDataProduct_result__isset {
+  _Airavata_getDataProduct_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getDataProduct_result__isset;
+
+class Airavata_getDataProduct_result {
+ public:
+
+  Airavata_getDataProduct_result(const Airavata_getDataProduct_result&);
+  Airavata_getDataProduct_result& operator=(const Airavata_getDataProduct_result&);
+  Airavata_getDataProduct_result() {
+  }
+
+  virtual ~Airavata_getDataProduct_result() throw();
+   ::apache::airavata::model::data::product::DataProductModel success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getDataProduct_result__isset __isset;
+
+  void __set_success(const  ::apache::airavata::model::data::product::DataProductModel& val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_getDataProduct_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_getDataProduct_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_getDataProduct_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_getDataProduct_presult__isset {
+  _Airavata_getDataProduct_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_getDataProduct_presult__isset;
+
+class Airavata_getDataProduct_presult {
+ public:
+
+
+  virtual ~Airavata_getDataProduct_presult() throw();
+   ::apache::airavata::model::data::product::DataProductModel* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_getDataProduct_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
+
+class Airavata_registerReplicaLocation_args {
+ public:
+
+  Airavata_registerReplicaLocation_args(const Airavata_registerReplicaLocation_args&);
+  Airavata_registerReplicaLocation_args& operator=(const Airavata_registerReplicaLocation_args&);
+  Airavata_registerReplicaLocation_args() {
+  }
+
+  virtual ~Airavata_registerReplicaLocation_args() throw();
+   ::apache::airavata::model::security::AuthzToken authzToken;
+   ::apache::airavata::model::data::product::DataReplicaLocationModel replicaLocationModel;
+
+  void __set_authzToken(const  ::apache::airavata::model::security::AuthzToken& val);
+
+  void __set_replicaLocationModel(const  ::apache::airavata::model::data::product::DataReplicaLocationModel& val);
+
+  bool operator == (const Airavata_registerReplicaLocation_args & rhs) const
+  {
+    if (!(authzToken == rhs.authzToken))
+      return false;
+    if (!(replicaLocationModel == rhs.replicaLocationModel))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_registerReplicaLocation_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_registerReplicaLocation_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_registerReplicaLocation_pargs {
+ public:
+
+
+  virtual ~Airavata_registerReplicaLocation_pargs() throw();
+  const  ::apache::airavata::model::security::AuthzToken* authzToken;
+  const  ::apache::airavata::model::data::product::DataReplicaLocationModel* replicaLocationModel;
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_registerReplicaLocation_result__isset {
+  _Airavata_registerReplicaLocation_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_registerReplicaLocation_result__isset;
+
+class Airavata_registerReplicaLocation_result {
+ public:
+
+  Airavata_registerReplicaLocation_result(const Airavata_registerReplicaLocation_result&);
+  Airavata_registerReplicaLocation_result& operator=(const Airavata_registerReplicaLocation_result&);
+  Airavata_registerReplicaLocation_result() : success() {
+  }
+
+  virtual ~Airavata_registerReplicaLocation_result() throw();
+  std::string success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_registerReplicaLocation_result__isset __isset;
+
+  void __set_success(const std::string& val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_registerReplicaLocation_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_registerReplicaLocation_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_registerReplicaLocation_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_registerReplicaLocation_presult__isset {
+  _Airavata_registerReplicaLocation_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_registerReplicaLocation_presult__isset;
+
+class Airavata_registerReplicaLocation_presult {
+ public:
+
+
+  virtual ~Airavata_registerReplicaLocation_presult() throw();
+  std::string* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_registerReplicaLocation_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
 class AiravataClient : virtual public AiravataIf {
  public:
   AiravataClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
@@ -22280,8 +22708,8 @@ class AiravataClient : virtual public AiravataIf {
   bool updateUnicoreJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission);
   void send_updateUnicoreJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission);
   bool recv_updateUnicoreJobSubmissionDetails();
-  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
-  void send_addLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
+  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
+  void send_addLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
   void recv_addLocalDataMovementDetails(std::string& _return);
   bool updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
   void send_updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
@@ -22289,8 +22717,8 @@ class AiravataClient : virtual public AiravataIf {
   void getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void send_getLocalDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& _return);
-  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
-  void send_addSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
+  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
+  void send_addSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
   void recv_addSCPDataMovementDetails(std::string& _return);
   bool updateSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
   void send_updateSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
@@ -22298,8 +22726,8 @@ class AiravataClient : virtual public AiravataIf {
   void getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void send_getSCPDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& _return);
-  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
-  void send_addUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
+  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
+  void send_addUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
   void recv_addUnicoreDataMovementDetails(std::string& _return);
   bool updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
   void send_updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
@@ -22307,8 +22735,8 @@ class AiravataClient : virtual public AiravataIf {
   void getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void send_getUnicoreDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& _return);
-  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
-  void send_addGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
+  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
+  void send_addGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
   void recv_addGridFTPDataMovementDetails(std::string& _return);
   bool updateGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
   void send_updateGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
@@ -22331,8 +22759,8 @@ class AiravataClient : virtual public AiravataIf {
   bool deleteJobSubmissionInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const std::string& jobSubmissionInterfaceId);
   void send_deleteJobSubmissionInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const std::string& jobSubmissionInterfaceId);
   bool recv_deleteJobSubmissionInterface();
-  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
-  void send_deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
+  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
+  void send_deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
   bool recv_deleteDataMovementInterface();
   void registerResourceJobManager(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager);
   void send_registerResourceJobManager(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager);
@@ -22415,6 +22843,15 @@ class AiravataClient : virtual public AiravataIf {
   bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   void send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   bool recv_isWorkflowExistWithName();
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  void send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  void recv_registerDataProduct(std::string& _return);
+  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  void send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  void recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return);
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  void send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  void recv_registerReplicaLocation(std::string& _return);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;
@@ -22564,6 +23001,9 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
   void process_updateWorkflow(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getWorkflowTemplateId(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_isWorkflowExistWithName(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_registerDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_getDataProduct(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_registerReplicaLocation(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
  public:
   AiravataProcessor(boost::shared_ptr<AiravataIf> iface) :
     iface_(iface) {
@@ -22701,6 +23141,9 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
     processMap_["updateWorkflow"] = &AiravataProcessor::process_updateWorkflow;
     processMap_["getWorkflowTemplateId"] = &AiravataProcessor::process_getWorkflowTemplateId;
     processMap_["isWorkflowExistWithName"] = &AiravataProcessor::process_isWorkflowExistWithName;
+    processMap_["registerDataProduct"] = &AiravataProcessor::process_registerDataProduct;
+    processMap_["getDataProduct"] = &AiravataProcessor::process_getDataProduct;
+    processMap_["registerReplicaLocation"] = &AiravataProcessor::process_registerReplicaLocation;
   }
 
   virtual ~AiravataProcessor() {}
@@ -23591,13 +24034,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return ifaces_[i]->updateUnicoreJobSubmissionDetails(authzToken, jobSubmissionInterfaceId, unicoreJobSubmission);
   }
 
-  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) {
+  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->addLocalDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, localDataMovement);
+      ifaces_[i]->addLocalDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement);
     }
-    ifaces_[i]->addLocalDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, localDataMovement);
+    ifaces_[i]->addLocalDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement);
     return;
   }
 
@@ -23620,13 +24063,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) {
+  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->addSCPDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement);
+      ifaces_[i]->addSCPDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement);
     }
-    ifaces_[i]->addSCPDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement);
+    ifaces_[i]->addSCPDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement);
     return;
   }
 
@@ -23649,13 +24092,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) {
+  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->addUnicoreDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement);
+      ifaces_[i]->addUnicoreDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement);
     }
-    ifaces_[i]->addUnicoreDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement);
+    ifaces_[i]->addUnicoreDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement);
     return;
   }
 
@@ -23678,13 +24121,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) {
+  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->addGridFTPDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement);
+      ifaces_[i]->addGridFTPDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement);
     }
-    ifaces_[i]->addGridFTPDataMovementDetails(_return, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement);
+    ifaces_[i]->addGridFTPDataMovementDetails(_return, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement);
     return;
   }
 
@@ -23752,13 +24195,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return ifaces_[i]->deleteJobSubmissionInterface(authzToken, computeResourceId, jobSubmissionInterfaceId);
   }
 
-  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) {
+  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->deleteDataMovementInterface(authzToken, productId, dataMovementInterfaceId, dataMoveType);
+      ifaces_[i]->deleteDataMovementInterface(authzToken, productUri, dataMovementInterfaceId, dataMoveType);
     }
-    return ifaces_[i]->deleteDataMovementInterface(authzToken, productId, dataMovementInterfaceId, dataMoveType);
+    return ifaces_[i]->deleteDataMovementInterface(authzToken, productUri, dataMovementInterfaceId, dataMoveType);
   }
 
   void registerResourceJobManager(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager) {
@@ -24017,6 +24460,36 @@ class AiravataMultiface : virtual public AiravataIf {
     return ifaces_[i]->isWorkflowExistWithName(authzToken, workflowName);
   }
 
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->registerDataProduct(_return, authzToken, dataProductModel);
+    }
+    ifaces_[i]->registerDataProduct(_return, authzToken, dataProductModel);
+    return;
+  }
+
+  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->getDataProduct(_return, authzToken, dataProductUri);
+    }
+    ifaces_[i]->getDataProduct(_return, authzToken, dataProductUri);
+    return;
+  }
+
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->registerReplicaLocation(_return, authzToken, replicaLocationModel);
+    }
+    ifaces_[i]->registerReplicaLocation(_return, authzToken, replicaLocationModel);
+    return;
+  }
+
 };
 
 // The 'concurrent' client is a thread safe client that correctly handles
@@ -24314,8 +24787,8 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   bool updateUnicoreJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission);
   int32_t send_updateUnicoreJobSubmissionDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& jobSubmissionInterfaceId, const  ::apache::airavata::model::appcatalog::computeresource::UnicoreJobSubmission& unicoreJobSubmission);
   bool recv_updateUnicoreJobSubmissionDetails(const int32_t seqid);
-  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
-  int32_t send_addLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
+  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
+  int32_t send_addLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
   void recv_addLocalDataMovementDetails(std::string& _return, const int32_t seqid);
   bool updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
   int32_t send_updateLocalDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement);
@@ -24323,8 +24796,8 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   int32_t send_getLocalDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getLocalDataMovement( ::apache::airavata::model::data::movement::LOCALDataMovement& _return, const int32_t seqid);
-  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
-  int32_t send_addSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
+  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
+  int32_t send_addSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
   void recv_addSCPDataMovementDetails(std::string& _return, const int32_t seqid);
   bool updateSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
   int32_t send_updateSCPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement);
@@ -24332,8 +24805,8 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   int32_t send_getSCPDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getSCPDataMovement( ::apache::airavata::model::data::movement::SCPDataMovement& _return, const int32_t seqid);
-  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
-  int32_t send_addUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
+  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
+  int32_t send_addUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
   void recv_addUnicoreDataMovementDetails(std::string& _return, const int32_t seqid);
   bool updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
   int32_t send_updateUnicoreDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement);
@@ -24341,8 +24814,8 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   int32_t send_getUnicoreDataMovement(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementId);
   void recv_getUnicoreDataMovement( ::apache::airavata::model::data::movement::UnicoreDataMovement& _return, const int32_t seqid);
-  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
-  int32_t send_addGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
+  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
+  int32_t send_addGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
   void recv_addGridFTPDataMovementDetails(std::string& _return, const int32_t seqid);
   bool updateGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
   int32_t send_updateGridFTPDataMovementDetails(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement);
@@ -24365,8 +24838,8 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   bool deleteJobSubmissionInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const std::string& jobSubmissionInterfaceId);
   int32_t send_deleteJobSubmissionInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& computeResourceId, const std::string& jobSubmissionInterfaceId);
   bool recv_deleteJobSubmissionInterface(const int32_t seqid);
-  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
-  int32_t send_deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
+  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
+  int32_t send_deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType);
   bool recv_deleteDataMovementInterface(const int32_t seqid);
   void registerResourceJobManager(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager);
   int32_t send_registerResourceJobManager(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::appcatalog::computeresource::ResourceJobManager& resourceJobManager);
@@ -24449,6 +24922,15 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   bool isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   int32_t send_isWorkflowExistWithName(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowName);
   bool recv_isWorkflowExistWithName(const int32_t seqid);
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  int32_t send_registerDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel);
+  void recv_registerDataProduct(std::string& _return, const int32_t seqid);
+  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  int32_t send_getDataProduct(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri);
+  void recv_getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const int32_t seqid);
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  int32_t send_registerReplicaLocation(const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel);
+  void recv_registerReplicaLocation(std::string& _return, const int32_t seqid);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/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 c0d29ec..28ad7aa 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
@@ -2179,7 +2179,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.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param DMType
@@ -2197,12 +2197,12 @@ class AiravataHandler : virtual public AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param localDataMovement
    */
-  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) {
+  void addLocalDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::LOCALDataMovement& localDataMovement) {
     // Your implementation goes here
     printf("addLocalDataMovementDetails\n");
   }
@@ -2255,7 +2255,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.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which JobSubmission protocol to be added
    * 
    * @param priorityOrder
@@ -2269,12 +2269,12 @@ class AiravataHandler : virtual public AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param scpDataMovement
    */
-  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) {
+  void addSCPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::SCPDataMovement& scpDataMovement) {
     // Your implementation goes here
     printf("addSCPDataMovementDetails\n");
   }
@@ -2326,7 +2326,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.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which data movement protocol to be added
    * 
    * @param priorityOrder
@@ -2340,12 +2340,12 @@ class AiravataHandler : virtual public AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param unicoreDataMovement
    */
-  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) {
+  void addUnicoreDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::UnicoreDataMovement& unicoreDataMovement) {
     // Your implementation goes here
     printf("addUnicoreDataMovementDetails\n");
   }
@@ -2399,7 +2399,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.
    * 
-   * @param productId
+   * @param productUri
    *   The identifier of the compute resource to which dataMovement protocol to be added
    * 
    * @param DMType
@@ -2417,12 +2417,12 @@ class AiravataHandler : virtual public AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMoveType
    * @param priorityOrder
    * @param gridFTPDataMovement
    */
-  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) {
+  void addGridFTPDataMovementDetails(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType, const int32_t priorityOrder, const  ::apache::airavata::model::data::movement::GridFTPDataMovement& gridFTPDataMovement) {
     // Your implementation goes here
     printf("addGridFTPDataMovementDetails\n");
   }
@@ -2584,11 +2584,11 @@ class AiravataHandler : virtual public AiravataIf {
    * 
    * 
    * @param authzToken
-   * @param productId
+   * @param productUri
    * @param dataMovementInterfaceId
    * @param dataMoveType
    */
-  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productId, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) {
+  bool deleteDataMovementInterface(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& productUri, const std::string& dataMovementInterfaceId, const  ::apache::airavata::model::data::movement::DMType::type dataMoveType) {
     // Your implementation goes here
     printf("deleteDataMovementInterface\n");
   }
@@ -3022,6 +3022,28 @@ class AiravataHandler : virtual public AiravataIf {
     printf("isWorkflowExistWithName\n");
   }
 
+  /**
+   * API Methods related to data catalog
+   * 
+   * 
+   * @param authzToken
+   * @param dataProductModel
+   */
+  void registerDataProduct(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataProductModel& dataProductModel) {
+    // Your implementation goes here
+    printf("registerDataProduct\n");
+  }
+
+  void getDataProduct( ::apache::airavata::model::data::product::DataProductModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& dataProductUri) {
+    // Your implementation goes here
+    printf("getDataProduct\n");
+  }
+
+  void registerReplicaLocation(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const  ::apache::airavata::model::data::product::DataReplicaLocationModel& replicaLocationModel) {
+    // Your implementation goes here
+    printf("registerReplicaLocation\n");
+  }
+
 };
 
 int main(int argc, char **argv) {


[29/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 cb12233..6e66e41 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 5047e39..0ad7ea1 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 a1cd3bd..f93b4b2 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 3171c2e..e0e3e68 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 46b2dbd..15bc83f 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 4dc9c51..c34d55a 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 deac239..5fc5d26 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 74c3510..bf51b4c 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 8900588..0625220 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 6cb1992..2ae6125 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 4e7d7c0..7306ece 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 f251dee..e464551 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 9fe1709..8128001 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 6c0852b..68da980 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 0f14ddc..cabc7cf 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 722b3f7..75abc53 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 6522680..a2cd48f 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 147fa03..d83cf69 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 173f0e8..caa1cd3 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 a9657a5..dc4f1c9 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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/04f6f593/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 ebfbc7f..767d4ef 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-03-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-03-24")
 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");
 


[53/55] [abbrv] airavata git commit: fixing typo

Posted by sh...@apache.org.
fixing typo


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

Branch: refs/heads/master
Commit: 1eda8c985171452f82208910921280a47e48d1d3
Parents: 03c0715
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 15:41:58 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 15:41:58 2016 -0400

----------------------------------------------------------------------
 .../airavata/registry/core/experiment/catalog/resources/Utils.java  | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1eda8c98/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
index d7b15b4..9dc2a07 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
@@ -538,6 +538,7 @@ public class Utils {
             processResource.setUserDn(o.getUserDn());
             processResource.setGenerateCert(o.getGenerateCert());
             processResource.setExperimentDataDir(o.getExperimentDataDir());
+            processResource.setUserName(o.getUserName());
         }
         return processResource;
     }


[52/55] [abbrv] airavata git commit: fixing typo

Posted by sh...@apache.org.
fixing typo


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

Branch: refs/heads/master
Commit: 03c071590f4a1f39bec8f1fbcd8c212a413364f9
Parents: 6f39725
Author: scnakandala <su...@gmail.com>
Authored: Fri Mar 25 15:23:57 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Mar 25 15:23:57 2016 -0400

----------------------------------------------------------------------
 .../airavata/registry/core/experiment/catalog/model/Process.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/03c07159/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
index 0722647..3ea2150 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
@@ -118,7 +118,7 @@ public class Process {
     }
 
     public void setUserName(String userName) {
-        this.userDn = userName;
+        this.userName = userName;
     }
 
     @Column(name = "STORAGE_RESOURCE_ID")


[48/55] [abbrv] airavata git commit: Make unicore works with local files

Posted by sh...@apache.org.
Make unicore works with local files


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

Branch: refs/heads/master
Commit: ef4329c51c9d81c41c42c5dd77eb5ca34ef40675
Parents: 6c483bc
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Mar 25 14:11:07 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Mar 25 14:11:07 2016 -0400

----------------------------------------------------------------------
 .../gfac/impl/task/BESJobSubmissionTask.java    | 48 ++++++++------
 .../impl/task/utils/bes/DataTransferrer.java    | 70 +++++++++++---------
 2 files changed, 64 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ef4329c5/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
index 145cde9..678924f 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
@@ -77,8 +77,9 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
     public TaskStatus execute(TaskContext taskContext) {
         TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
         StorageClient sc = null;
+        // FIXME - use original output dir
+        taskContext.getParentProcessContext().setOutputDir("");
 
-        //TODO - initialize securityContext secProperties
         try {
             if (secProperties == null) {
                 secProperties = getSecurityConfig(taskContext.getParentProcessContext());
@@ -121,6 +122,8 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             dt.uploadLocalFiles();
 
             JobModel jobDetails = new JobModel();
+            jobDetails.setTaskId(taskContext.getTaskId());
+            jobDetails.setProcessId(taskContext.getProcessId());
             FactoryClient factory = new FactoryClient(eprt, secProperties);
 
             log.info(String.format("Activity Submitting to %s ... \n",
@@ -143,6 +146,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             jobDetails.setJobDescription(activityEpr.toString());
             jobDetails.setJobStatus(new JobStatus(JobState.SUBMITTED));
             processContext.setJobModel(jobDetails);
+            GFacUtils.saveJobModel(processContext, jobDetails);
             GFacUtils.saveJobStatus(processContext, jobDetails);
             log.info(formatStatusMessage(activityEpr.getAddress()
                     .getStringValue(), factory.getActivityStatus(activityEpr)
@@ -164,7 +168,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
                         + "\n"
                         + activityStatus.getFault().getFaultstring()
                         + "\n EXITCODE: " + activityStatus.getExitCode();
-                log.info(error);
+                log.error(error);
 
                 JobState applicationJobStatus = JobState.FAILED;
                 jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
@@ -173,7 +177,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
 
                 //What if job is failed before execution and there are not stdouts generated yet?
                 log.debug("Downloading any standard output and error files, if they were produced.");
-                dt.downloadStdOuts();
+                dt.downloadRemoteFiles();
 
             } else if (activityStatus.getState() == ActivityStateEnumeration.CANCELLED) {
                 JobState applicationJobStatus = JobState.CANCELED;
@@ -184,17 +188,19 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             } else if (activityStatus.getState() == ActivityStateEnumeration.FINISHED) {
                 try {
                     Thread.sleep(5000);
-                    JobState applicationJobStatus = JobState.COMPLETE;
-                    jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
-                    GFacUtils.saveJobStatus(processContext, jobDetails);
-
-                } catch (InterruptedException e) {
-                }
-                if (activityStatus.getExitCode() == 0) {
-                    dt.downloadRemoteFiles();
-                } else {
-                    dt.downloadStdOuts();
+                } catch (InterruptedException ignored) {
                 }
+                JobState applicationJobStatus = JobState.COMPLETE;
+                jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
+                GFacUtils.saveJobStatus(processContext, jobDetails);
+                log.info("Job Id: {}, exit code: {}, exit status: {}", jobDetails.getJobId(),
+                        activityStatus.getExitCode(), ActivityStateEnumeration.FINISHED.toString());
+
+//                if (activityStatus.getExitCode() == 0) {
+//                } else {
+//                    dt.downloadStdOuts();
+//                }
+                dt.downloadRemoteFiles();
             }
 
             dt.publishFinalOutputs();
@@ -243,22 +249,22 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             FactoryClient factoryClient = new FactoryClient(factoryEpr, secProperties);
             JobState applicationJobStatus = null;
 
-            while ((factoryClient.getActivityStatus(activityEpr) != ActivityStateEnumeration.FINISHED)
-                    && (factoryClient.getActivityStatus(activityEpr) != ActivityStateEnumeration.FAILED)
-                    && (factoryClient.getActivityStatus(activityEpr) != ActivityStateEnumeration.CANCELLED)
+            ActivityStateEnumeration.Enum activityStatus = factoryClient.getActivityStatus(activityEpr);
+            while ((activityStatus != ActivityStateEnumeration.FINISHED)
+                    && (activityStatus != ActivityStateEnumeration.FAILED)
+                    && (activityStatus != ActivityStateEnumeration.CANCELLED)
                     && (applicationJobStatus != JobState.COMPLETE)) {
 
-                ActivityStatusType activityStatus = getStatus(factoryClient, activityEpr);
-                applicationJobStatus = getApplicationJobStatus(activityStatus);
-
+                ActivityStatusType activityStatusType = getStatus(factoryClient, activityEpr);
+                applicationJobStatus = getApplicationJobStatus(activityStatusType);
                 sendNotification(processContext,processContext.getJobModel());
-
                 // GFacUtils.updateApplicationJobStatus(jobExecutionContext,jobId,
                 // applicationJobStatus);
                 try {
                     Thread.sleep(5000);
                 } catch (InterruptedException e) {}
-                continue;
+
+                activityStatus = factoryClient.getActivityStatus(activityEpr);
             }
         } catch(Exception e) {
             log.error("Error monitoring job status..");

http://git-wip-us.apache.org/repos/asf/airavata/blob/ef4329c5/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
index 4a0cbbf..b4bf9ed 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java
@@ -150,25 +150,32 @@ public class DataTransferrer {
         String stderrFileName = new File(stderrLocation).getName();
 
         FileDownloader f1 = null;
-        try {
-            log.info("Downloading stdout and stderr..");
-            log.info(stdoutFileName + " -> "+stdoutLocation);
+        log.info("Downloading stdout and stderr..");
+        log.info(stdoutFileName + " -> " + stdoutLocation);
 
-            f1 = new FileDownloader(stdoutFileName,stdoutLocation, Mode.overwrite);
+        f1 = new FileDownloader(stdoutFileName, stdoutLocation, Mode.overwrite);
+        try {
             f1.perform(storageClient);
-            String stdoutput = readFile(stdoutLocation);
+//            String stdoutput = readFile(stdoutLocation);
+        } catch (Exception e) {
+            log.error("Error while downloading " + stdoutFileName + " to location " + stdoutLocation, e);
+        }
 
-            log.info(stderrFileName + " -> " + stderrLocation);
-            f1.setFrom(stderrFileName);
-            f1.setTo(stderrLocation);
+        log.info(stderrFileName + " -> " + stderrLocation);
+        f1.setFrom(stderrFileName);
+        f1.setTo(stderrLocation);
+        try {
             f1.perform(storageClient);
-            String stderror = readFile(stderrLocation);
-
-            if(UASDataStagingProcessor.isUnicoreEndpoint(processContext)) {
-                String scriptExitCodeFName = "UNICORE_SCRIPT_EXIT_CODE";
-                String scriptCodeLocation = gatewayDownloadLocation+File.separator+scriptExitCodeFName;
-                f1.setFrom(scriptExitCodeFName);
-                f1.setTo(scriptCodeLocation);
+//            String stderror = readFile(stderrLocation);
+        } catch (Exception e) {
+            log.error("Error while downloading " + stderrFileName + " to location " + stderrLocation);
+        }
+        String scriptExitCodeFName = "UNICORE_SCRIPT_EXIT_CODE";
+        String scriptCodeLocation = gatewayDownloadLocation + File.separator + scriptExitCodeFName;
+        if (UASDataStagingProcessor.isUnicoreEndpoint(processContext)) {
+            f1.setFrom(scriptExitCodeFName);
+            f1.setTo(scriptCodeLocation);
+            try {
                 f1.perform(storageClient);
                 OutputDataObjectType output = new OutputDataObjectType();
                 output.setName(scriptExitCodeFName);
@@ -176,13 +183,12 @@ public class DataTransferrer {
                 output.setType(DataType.URI);
                 output.setIsRequired(true);
                 processContext.getProcessModel().getProcessOutputs().add(output);
-                log.info("UNICORE_SCRIPT_EXIT_CODE -> "+scriptCodeLocation);
-                log.info("EXIT CODE: "+ readFile(scriptCodeLocation));
+                log.info("UNICORE_SCRIPT_EXIT_CODE -> " + scriptCodeLocation);
+                log.info("EXIT CODE: " + readFile(scriptCodeLocation));
+            } catch (Exception e) {
+                log.error("Error downloading file " + scriptExitCodeFName + " to location " + scriptCodeLocation, e);
             }
-        } catch (Exception e) {
-            throw new GFacException(e.getLocalizedMessage(),e);
         }
-
     }
 
     private String readFile(String localFile) throws IOException {
@@ -253,7 +259,7 @@ public class DataTransferrer {
     public void downloadRemoteFiles() throws GFacException {
 
         if(log.isDebugEnabled()) {
-            log.debug("Download location is:"+gatewayDownloadLocation);
+            log.debug("Download location is:" + gatewayDownloadLocation);
         }
 
         List<OutputDataObjectType> applicationOutputs = processContext.getProcessModel().getProcessOutputs();
@@ -265,35 +271,33 @@ public class DataTransferrer {
                 if(output.getType().equals(DataType.STDOUT)) {
                     output.setValue(processContext.getStdoutLocation());
                     resultantOutputsLst.add(output);
-                }
-
-                else if(output.getType().equals(DataType.STDERR)) {
+                } else if(output.getType().equals(DataType.STDERR)) {
                     output.setValue(processContext.getStderrLocation());
                     resultantOutputsLst.add(output);
-                }
-                else if(output.getType().equals(DataType.STRING)) {
+                } else if (output.getType().equals(DataType.STRING)) {
                     String value = null;
-                    if(!output.getLocation().isEmpty()){
+                    if (!output.getLocation().isEmpty()) {
                         value = output.getLocation() + File.separator + output.getValue();
-                    }else{
+                    } else {
                         value = output.getValue();
                     }
                     String outputPath = gatewayDownloadLocation + File.separator + output.getValue();
                     File f = new File(gatewayDownloadLocation);
-                    if(!f.exists())
+                    if (!f.exists())
                         f.mkdirs();
 
-                    FileDownloader fileDownloader = new FileDownloader(value,outputPath, Mode.overwrite);
+                    FileDownloader fileDownloader = new FileDownloader(value, outputPath, Mode.overwrite);
                     try {
                         fileDownloader.perform(storageClient);
                         output.setType(DataType.URI);
                         output.setValue(outputPath);
-                        processContext.getProcessModel().getProcessOutputs().add(output);
                         resultantOutputsLst.add(output);
                     } catch (Exception e) {
-                        log.error("Error downloading "+value+" from job working directory. ");
-                        throw new GFacException(e.getLocalizedMessage(),e);
+                        log.error("Error downloading " + value + " from job working directory. ");
+//                        throw new GFacException(e.getLocalizedMessage(),e);
                     }
+                } else {
+                    log.info("Ignore output file {}, type {}", output.getValue(), output.getType().toString());
                 }
 
             }


[22/55] [abbrv] airavata git commit: renaming data-catalog to replica catalog

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
new file mode 100644
index 0000000..ece579c
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/replica/catalog/utils/ThriftDataModelConversion.java
@@ -0,0 +1,215 @@
+/*
+*
+* 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.replica.catalog.utils;
+
+import org.apache.airavata.model.data.replica.*;
+import org.apache.airavata.registry.core.replica.catalog.model.DataProduct;
+import org.apache.airavata.registry.core.replica.catalog.model.DataProductMetaData;
+import org.apache.airavata.registry.core.replica.catalog.model.DataReplicaLocation;
+import org.apache.airavata.registry.core.replica.catalog.model.DataReplicaMetaData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ThriftDataModelConversion {
+
+    private final static Logger logger = LoggerFactory.getLogger(ThriftDataModelConversion.class);
+
+    public static DataProductModel getDataProductModel(DataProduct dataProduct){
+        if (dataProduct != null) {
+            DataProductModel dataProductModel = new DataProductModel();
+            dataProductModel.setProductUri(dataProduct.getProductUri());
+            dataProductModel.setLogicalPath(dataProduct.getLogicalPath());
+            dataProductModel.setGatewayId(dataProduct.getGatewayId());
+            dataProductModel.setParentProductUri(dataProduct.getParentProductUri());
+            dataProductModel.setProductName(dataProduct.getProductName());
+            if(dataProduct.getDataProductType() != null)
+                dataProductModel.setDataProductType(DataProductType.valueOf(dataProduct.getDataProductType()));
+            else
+                dataProductModel.setDataProductType(DataProductType.FILE);
+            dataProductModel.setProductDescription(dataProduct.getProductDescription());
+            dataProductModel.setOwnerName(dataProduct.getOwnerName());
+            dataProductModel.setProductSize(dataProduct.getProductSize());
+            if(dataProduct.getCreationTime() != null)
+                dataProductModel.setCreationTime(dataProduct.getCreationTime().getTime());
+            if(dataProduct.getLastModifiedTime() != null)
+                dataProductModel.setLastModifiedTime(dataProduct.getLastModifiedTime().getTime());
+            dataProductModel.setProductMetadata(getResourceMetaData(dataProduct.getDataProductMetaData()));
+            if(dataProduct.getDataReplicaLocations() != null){
+                ArrayList<DataReplicaLocationModel> dataReplicaLocationModels = new ArrayList<>();
+                dataProduct.getDataReplicaLocations().stream().forEach(r->dataReplicaLocationModels
+                        .add(getDataReplicaLocationModel(r)));
+                dataProductModel.setReplicaLocations(dataReplicaLocationModels);
+            }
+            if(dataProductModel.getDataProductType().equals(DataProductType.COLLECTION) && dataProduct.getChildDataProducts() != null){
+                ArrayList<DataProductModel> childDataProducts = new ArrayList<>();
+                dataProduct.getChildDataProducts().stream().forEach(r->childDataProducts.add(getDataProductModel(r)));
+                dataProductModel.setChildProducts(childDataProducts);
+            }
+            return dataProductModel;
+        }
+        return null;
+    }
+
+    public static DataProduct getDataProduct(DataProductModel dataProductModel){
+        if(dataProductModel != null){
+            DataProduct dataProduct = new DataProduct();
+            return getUpdatedDataProduct(dataProductModel, dataProduct);
+        }
+        return null;
+    }
+
+    public static DataProduct getUpdatedDataProduct(DataProductModel dataProductModel, DataProduct dataProduct){
+        dataProduct.setProductUri(dataProductModel.getProductUri());
+        dataProduct.setLogicalPath(dataProductModel.getLogicalPath());
+        dataProduct.setGatewayId(dataProductModel.getGatewayId());
+        dataProduct.setProductName(dataProductModel.getProductName());
+        dataProduct.setParentProductUri(dataProductModel.getParentProductUri());
+        if(dataProductModel.getDataProductType() != null)
+            dataProduct.setDataProductType(dataProductModel.getDataProductType().toString());
+        else
+            dataProduct.setDataProductType(DataProductType.FILE.toString());
+        dataProduct.setProductDescription(dataProductModel.getProductDescription());
+        dataProduct.setOwnerName(dataProductModel.getOwnerName());
+        dataProduct.setProductSize(dataProductModel.getProductSize());
+        if(dataProductModel.getCreationTime() > 0)
+            dataProduct.setCreationTime(new Timestamp(dataProductModel.getCreationTime()));
+        if(dataProductModel.getLastModifiedTime() > 0)
+            dataProduct.setLastModifiedTime(new Timestamp(dataProductModel.getLastModifiedTime()));
+        ArrayList<DataProductMetaData> dataProductMetaData = new ArrayList<>();
+        if(dataProductModel.getProductMetadata() != null) {
+            dataProductModel.getProductMetadata().keySet().stream().forEach(k -> {
+                String v = dataProductModel.getProductMetadata().get(k);
+                DataProductMetaData temp = new DataProductMetaData();
+                temp.setProductUri(dataProduct.getProductUri());
+                temp.setKey(k);
+                temp.setValue(v);
+                dataProductMetaData.add(temp);
+            });
+            dataProduct.setDataProductMetaData(dataProductMetaData);
+        }
+        if(dataProductModel.getReplicaLocations() != null){
+            ArrayList<DataReplicaLocation> dataReplicaLocations = new ArrayList<>();
+            dataProductModel.getReplicaLocations().stream().forEach(r->{
+                DataReplicaLocation dataReplicaLocationModel = getDataReplicaLocation(r);
+                dataReplicaLocationModel.setProductUri(dataProductModel.getProductUri());
+                dataReplicaLocations.add(dataReplicaLocationModel);
+            });
+            dataProduct.setDataReplicaLocations(dataReplicaLocations);
+        }
+        if(dataProductModel.getDataProductType() == DataProductType.COLLECTION && dataProductModel.getChildProducts() != null){
+            ArrayList<DataProduct> childDataProducts = new ArrayList<>();
+            dataProductModel.getChildProducts().stream().forEach(r->childDataProducts.add(getDataProduct(r)));
+            dataProduct.setChildDataProducts(childDataProducts);
+        }
+        return dataProduct;
+    }
+
+    public static DataReplicaLocationModel getDataReplicaLocationModel(DataReplicaLocation replicaLocation){
+        if (replicaLocation != null) {
+            DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel();
+            replicaLocationModel.setReplicaId(replicaLocation.getReplicaId());
+            replicaLocationModel.setProductUri(replicaLocation.getProductUri());
+            replicaLocationModel.setReplicaName(replicaLocation.getReplicaName());
+            replicaLocationModel.setReplicaDescription(replicaLocation.getReplicaDescription());
+            replicaLocationModel.setStorageResourceId(replicaLocation.getStorageResourceId());
+            if(replicaLocation.getValidUntilTime() != null)
+                replicaLocationModel.setValidUntilTime(replicaLocation.getValidUntilTime().getTime());
+            replicaLocationModel.setFilePath(replicaLocation.getFilePath());
+            if(replicaLocation.getCreationTime() != null)
+                replicaLocationModel.setCreationTime(replicaLocation.getCreationTime().getTime());
+            if(replicaLocation.getLastModifiedTime() != null)
+                replicaLocationModel.setLastModifiedTime(replicaLocation.getLastModifiedTime().getTime());
+            if(replicaLocation.getReplicaLocationCategory() != null)
+                replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.valueOf(replicaLocation
+                        .getReplicaLocationCategory().toString()));
+            if(replicaLocation.getReplicaPersistentType() != null)
+                replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.valueOf(replicaLocation
+                        .getReplicaPersistentType().toString()));
+            replicaLocationModel.setReplicaMetadata(getReplicaMetaData(replicaLocation.getDataReplicaMetaData()));
+            return replicaLocationModel;
+        }
+        return null;
+    }
+
+    public static DataReplicaLocation getDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel){
+        if(dataReplicaLocationModel != null){
+            DataReplicaLocation dataReplicaLocation = new DataReplicaLocation();
+            return getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation);
+        }
+        return null;
+    }
+
+    public static DataReplicaLocation getUpdatedDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel,
+                                                                    DataReplicaLocation dataReplicaLocation){
+        dataReplicaLocation.setReplicaId(dataReplicaLocationModel.getReplicaId());
+        dataReplicaLocation.setProductUri(dataReplicaLocationModel.getProductUri());
+        dataReplicaLocation.setReplicaName(dataReplicaLocationModel.getReplicaName());
+        dataReplicaLocation.setReplicaDescription(dataReplicaLocationModel.getReplicaDescription());
+        dataReplicaLocation.setStorageResourceId(dataReplicaLocationModel.getStorageResourceId());
+        dataReplicaLocation.setFilePath(dataReplicaLocationModel.getFilePath());
+        if(dataReplicaLocationModel.getValidUntilTime() > 0)
+            dataReplicaLocation.setValidUntilTime(new Timestamp(dataReplicaLocationModel.getValidUntilTime()));
+        if(dataReplicaLocationModel.getCreationTime() > 0)
+            dataReplicaLocation.setCreationTime(new Timestamp(dataReplicaLocationModel.getCreationTime()));
+        if(dataReplicaLocationModel.getLastModifiedTime() > 0)
+            dataReplicaLocation.setLastModifiedTime(new Timestamp(dataReplicaLocationModel.getLastModifiedTime()));
+        if(dataReplicaLocationModel.getReplicaLocationCategory() != null)
+            dataReplicaLocation.setReplicaLocationCategory(dataReplicaLocationModel.getReplicaLocationCategory().toString());
+        if(dataReplicaLocationModel.getReplicaPersistentType() != null)
+            dataReplicaLocation.setReplicaPersistentType(dataReplicaLocationModel.getReplicaPersistentType().toString());
+        ArrayList<DataReplicaMetaData> dataReplicaMetadata = new ArrayList<>();
+        if(dataReplicaLocation.getDataReplicaMetaData() != null){
+            dataReplicaLocationModel.getReplicaMetadata().keySet().stream().forEach(k -> {
+                String v = dataReplicaLocationModel.getReplicaMetadata().get(k);
+                DataReplicaMetaData temp = new DataReplicaMetaData();
+                temp.setReplicaId(dataReplicaLocationModel.getProductUri());
+                temp.setKey(k);
+                temp.setValue(v);
+                dataReplicaMetadata.add(temp);
+            });
+            dataReplicaLocation.setDataReplicaMetaData(dataReplicaMetadata);
+        }
+        return dataReplicaLocation;
+    }
+
+    public static Map<String, String> getResourceMetaData(Collection<DataProductMetaData> dataProductMetaData){
+        HashMap<String, String> metadata = new HashMap<>();
+        if(dataProductMetaData!=null && !dataProductMetaData.isEmpty()) {
+            dataProductMetaData.stream().forEach(m -> metadata.put(m.getKey(),m.getValue()));
+        }
+        return metadata;
+    }
+
+    public static Map<String, String> getReplicaMetaData(Collection<DataReplicaMetaData> dataReplicaMetaData){
+        HashMap<String, String> metadata = new HashMap<>();
+        if(dataReplicaMetaData!=null && !dataReplicaMetaData.isEmpty()) {
+            dataReplicaMetaData.stream().forEach(m -> metadata.put(m.getKey(),m.getValue()));
+        }
+        return metadata;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 54215fa..2d8eb7d 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
@@ -95,11 +95,11 @@
     </persistence-unit>
     <persistence-unit name="datacatalog_data">
         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-        <class>org.apache.airavata.registry.core.data.catalog.model.DataProduct</class>
-        <class>org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation</class>
-        <class>org.apache.airavata.registry.core.data.catalog.model.DataProductMetaData</class>
-        <class>org.apache.airavata.registry.core.data.catalog.model.DataReplicaMetaData</class>
-        <class>org.apache.airavata.registry.core.data.catalog.model.Configuration</class>
+        <class>org.apache.airavata.registry.core.replica.catalog.model.DataProduct</class>
+        <class>org.apache.airavata.registry.core.replica.catalog.model.DataReplicaLocation</class>
+        <class>org.apache.airavata.registry.core.replica.catalog.model.DataProductMetaData</class>
+        <class>org.apache.airavata.registry.core.replica.catalog.model.DataReplicaMetaData</class>
+        <class>org.apache.airavata.registry.core.replica.catalog.model.Configuration</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
     <persistence-unit name="workflowcatalog_data">

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
deleted file mode 100644
index 627a6e6..0000000
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java
+++ /dev/null
@@ -1,100 +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.data.catalog;
-
-import org.apache.airavata.data.catalog.util.Initialize;
-import org.apache.airavata.model.data.product.*;
-import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.cpi.DataCatalog;
-import org.apache.airavata.registry.cpi.DataCatalogException;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-
-public class DataCatalogTest {
-    private final static Logger logger = LoggerFactory.getLogger(DataCatalogTest.class);
-    private static Initialize initialize;
-    private static DataCatalog datacatalog;
-    private static DataProductModel dataProductModel;
-    private static DataReplicaLocationModel replicaLocationModel;
-
-    @BeforeClass
-    public static void setUp() {
-        try {
-            System.out.println("********** SET UP ************");
-            initialize = new Initialize("datacatalog-derby.sql");
-            initialize.initializeDB();
-            datacatalog = RegistryFactory.getDataCatalog();
-            dataProductModel = new DataProductModel();
-            dataProductModel.setProductName("test-file.txt");
-            dataProductModel.setOwnerName("scnakandala");
-            dataProductModel.setGatewayId("default");
-            dataProductModel.setLogicalPath("/test/test/test");
-            dataProductModel.setDataProductType(DataProductType.FILE);
-            HashMap<String, String> resMetadata = new HashMap<>();
-            resMetadata.put("name", "name");
-            dataProductModel.setProductMetadata(resMetadata);
-
-            replicaLocationModel = new DataReplicaLocationModel();
-            replicaLocationModel.setReplicaName("1-st-replica");
-            replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.COMPUTE_RESOURCE);
-            replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
-            HashMap<String, String> rMetadata = new HashMap<>();
-            rMetadata.put("name", "name");
-            replicaLocationModel.setReplicaMetadata(rMetadata);
-            dataProductModel.addToReplicaLocations(replicaLocationModel);
-        } catch (DataCatalogException e) {
-            logger.error(e.getMessage(), e);
-        }
-    }
-
-    @AfterClass
-    public static void tearDown() throws Exception {
-        System.out.println("********** TEAR DOWN ************");
-        initialize.stopDerbyServer();
-    }
-
-    @Test
-    public void testDataCatalog(){
-        try {
-            String productUri = datacatalog.registerDataProduct(dataProductModel);
-            org.junit.Assert.assertNotNull(productUri);
-            dataProductModel = datacatalog.getDataProduct(productUri);
-            Assert.assertNotNull(dataProductModel);
-            boolean result = datacatalog.removeDataProduct(productUri);
-            Assert.assertTrue(result);
-            productUri = datacatalog.registerDataProduct(dataProductModel);
-            Assert.assertNotNull(productUri);
-            result = datacatalog.removeDataProduct(productUri);
-            Assert.assertTrue(result);
-            result = datacatalog.removeDataProduct(productUri);
-            Assert.assertFalse(result);
-        } catch (DataCatalogException e) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/util/Initialize.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/util/Initialize.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/util/Initialize.java
deleted file mode 100644
index 002e51e..0000000
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/util/Initialize.java
+++ /dev/null
@@ -1,315 +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.data.catalog.util;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.registry.core.data.catalog.utils.DataCatalogConstants;
-import org.apache.derby.drda.NetworkServerControl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.URI;
-import java.sql.*;
-import java.util.StringTokenizer;
-
-public class Initialize {
-    private static final Logger logger = LoggerFactory.getLogger(Initialize.class);
-    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
-    public  String scriptName = "datacatalog-derby.sql";
-    private NetworkServerControl server;
-    private static final String delimiter = ";";
-    private String jdbcUrl = null;
-    private String jdbcDriver = null;
-    private String jdbcUser = null;
-    private String jdbcPassword = null;
-
-    public Initialize(String scriptName) {
-        this.scriptName = scriptName;
-    }
-
-    public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) {
-        if (suffix.length() > buffer.length()) {
-            return false;
-        }
-        // this loop is done on purpose to avoid memory allocation performance
-        // problems on various JDKs
-        // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and
-        // implementation is ok though does allocation/copying
-        // StringBuffer.toString().endsWith() does massive memory
-        // allocation/copying on JDK 1.5
-        // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169
-        int endIndex = suffix.length() - 1;
-        int bufferIndex = buffer.length() - 1;
-        while (endIndex >= 0) {
-            if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) {
-                return false;
-            }
-            bufferIndex--;
-            endIndex--;
-        }
-        return true;
-    }
-
-    private static boolean isServerStarted(NetworkServerControl server, int ntries)
-    {
-        for (int i = 1; i <= ntries; i ++)
-        {
-            try {
-                Thread.sleep(500);
-                server.ping();
-                return true;
-            }
-            catch (Exception e) {
-                if (i == ntries)
-                    return false;
-            }
-        }
-        return false;
-    }
-
-    public void initializeDB() {
-        try{
-            jdbcDriver = ServerSettings.getSetting("datacatalog.jdbc.driver");
-            jdbcUrl = ServerSettings.getSetting("datacatalog.jdbc.url");
-            jdbcUser = ServerSettings.getSetting("datacatalog.jdbc.user");
-            jdbcPassword = ServerSettings.getSetting("datacatalog.jdbc.password");
-            jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
-        } catch (ApplicationSettingsException e) {
-            logger.error("Unable to read properties", e);
-        }
-
-        startDerbyInServerMode();
-        if(!isServerStarted(server, 20)){
-           throw new RuntimeException("Derby server could not started within five seconds...");
-        }
-        Connection conn = null;
-        try {
-            Class.forName(jdbcDriver).newInstance();
-            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
-            if (!isDatabaseStructureCreated(DataCatalogConstants.CONFIGURATION, conn)) {
-                executeSQLScript(conn);
-                logger.info("New Database created for Data Catalog !!!");
-            } else {
-                logger.debug("Database already created for Data Catalog!");
-            }
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException("Database failure", e);
-        } finally {
-            try {
-                if (conn != null){
-                    if (!conn.getAutoCommit()) {
-                        conn.commit();
-                    }
-                    conn.close();
-                }
-            } catch (SQLException e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-    }
-
-    public static boolean isDatabaseStructureCreated(String tableName, Connection conn) {
-        try {
-            System.out.println("Running a query to test the database tables existence.");
-            // check whether the tables are already created with a query
-            Statement statement = null;
-            try {
-                statement = conn.createStatement();
-                ResultSet rs = statement.executeQuery("select * from " + tableName);
-                if (rs != null) {
-                    rs.close();
-                }
-            } finally {
-                try {
-                    if (statement != null) {
-                        statement.close();
-                    }
-                } catch (SQLException e) {
-                    return false;
-                }
-            }
-        } catch (SQLException e) {
-            return false;
-        }
-
-        return true;
-    }
-
-    private void executeSQLScript(Connection conn) throws Exception {
-        StringBuffer sql = new StringBuffer();
-        BufferedReader reader = null;
-        try{
-
-        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(scriptName);
-        reader = new BufferedReader(new InputStreamReader(inputStream));
-        String line;
-        while ((line = reader.readLine()) != null) {
-            line = line.trim();
-            if (line.startsWith("//")) {
-                continue;
-            }
-            if (line.startsWith("--")) {
-                continue;
-            }
-            StringTokenizer st = new StringTokenizer(line);
-            if (st.hasMoreTokens()) {
-                String token = st.nextToken();
-                if ("REM".equalsIgnoreCase(token)) {
-                    continue;
-                }
-            }
-            sql.append(" ").append(line);
-
-            // SQL defines "--" as a comment to EOL
-            // and in Oracle it may contain a hint
-            // so we cannot just remove it, instead we must end it
-            if (line.indexOf("--") >= 0) {
-                sql.append("\n");
-            }
-            if ((checkStringBufferEndsWith(sql, delimiter))) {
-                executeSQL(sql.substring(0, sql.length() - delimiter.length()), conn);
-                sql.replace(0, sql.length(), "");
-            }
-        }
-        // Catch any statements not followed by ;
-        if (sql.length() > 0) {
-            executeSQL(sql.toString(), conn);
-        }
-        }catch (IOException e){
-            logger.error("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
-            throw new Exception("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
-        }finally {
-            if (reader != null) {
-                reader.close();
-            }
-        }
-    }
-
-    private static void executeSQL(String sql, Connection conn) throws Exception {
-        // Check and ignore empty statements
-        if ("".equals(sql.trim())) {
-            return;
-        }
-
-        Statement statement = null;
-        try {
-            logger.debug("SQL : " + sql);
-
-            boolean ret;
-            int updateCount = 0, updateCountTotal = 0;
-            statement = conn.createStatement();
-            ret = statement.execute(sql);
-            updateCount = statement.getUpdateCount();
-            do {
-                if (!ret) {
-                    if (updateCount != -1) {
-                        updateCountTotal += updateCount;
-                    }
-                }
-                ret = statement.getMoreResults();
-                if (ret) {
-                    updateCount = statement.getUpdateCount();
-                }
-            } while (ret);
-
-            logger.debug(sql + " : " + updateCountTotal + " rows affected");
-
-            SQLWarning warning = conn.getWarnings();
-            while (warning != null) {
-                logger.warn(warning + " sql warning");
-                warning = warning.getNextWarning();
-            }
-            conn.clearWarnings();
-        } catch (SQLException e) {
-            if (e.getSQLState().equals("X0Y32")) {
-                // eliminating the table already exception for the derby
-                // database
-                logger.info("Table Already Exists", e);
-            } else {
-                throw new Exception("Error occurred while executing : " + sql, e);
-            }
-        } finally {
-            if (statement != null) {
-                try {
-                    statement.close();
-                } catch (SQLException e) {
-                    logger.error("Error occurred while closing result set.", e);
-                }
-            }
-        }
-    }
-
-    private void startDerbyInServerMode() {
-        try {
-            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
-            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
-                    20000,
-                    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 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;
-        }
-    }
-
-    private void startDerbyInEmbeddedMode(){
-        try {
-            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
-            DriverManager.getConnection("jdbc:derby:memory:unit-testing-jpa;create=true").close();
-        } catch (ClassNotFoundException e) {
-            logger.error(e.getMessage(), e);
-        } catch (SQLException e) {
-            logger.error(e.getMessage(), e);
-        }
-    }
-
-    public void stopDerbyServer() {
-        try {
-            server.shutdown();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
new file mode 100644
index 0000000..f787ee4
--- /dev/null
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/ReplicaCatalogTest.java
@@ -0,0 +1,100 @@
+/*
+ *
+ * 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.replica.catalog;
+
+import org.apache.airavata.replica.catalog.util.Initialize;
+import org.apache.airavata.model.data.replica.*;
+import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
+import org.apache.airavata.registry.cpi.ReplicaCatalog;
+import org.apache.airavata.registry.cpi.ReplicaCatalogException;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+
+public class ReplicaCatalogTest {
+    private final static Logger logger = LoggerFactory.getLogger(ReplicaCatalogTest.class);
+    private static Initialize initialize;
+    private static ReplicaCatalog datacatalog;
+    private static DataProductModel dataProductModel;
+    private static DataReplicaLocationModel replicaLocationModel;
+
+    @BeforeClass
+    public static void setUp() {
+        try {
+            System.out.println("********** SET UP ************");
+            initialize = new Initialize("datacatalog-derby.sql");
+            initialize.initializeDB();
+            datacatalog = RegistryFactory.getReplicaCatalog();
+            dataProductModel = new DataProductModel();
+            dataProductModel.setProductName("test-file.txt");
+            dataProductModel.setOwnerName("scnakandala");
+            dataProductModel.setGatewayId("default");
+            dataProductModel.setLogicalPath("/test/test/test");
+            dataProductModel.setDataProductType(DataProductType.FILE);
+            HashMap<String, String> resMetadata = new HashMap<>();
+            resMetadata.put("name", "name");
+            dataProductModel.setProductMetadata(resMetadata);
+
+            replicaLocationModel = new DataReplicaLocationModel();
+            replicaLocationModel.setReplicaName("1-st-replica");
+            replicaLocationModel.setReplicaLocationCategory(ReplicaLocationCategory.COMPUTE_RESOURCE);
+            replicaLocationModel.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
+            HashMap<String, String> rMetadata = new HashMap<>();
+            rMetadata.put("name", "name");
+            replicaLocationModel.setReplicaMetadata(rMetadata);
+            dataProductModel.addToReplicaLocations(replicaLocationModel);
+        } catch (ReplicaCatalogException e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        System.out.println("********** TEAR DOWN ************");
+        initialize.stopDerbyServer();
+    }
+
+    @Test
+    public void testReplicaCatalog(){
+        try {
+            String productUri = datacatalog.registerDataProduct(dataProductModel);
+            org.junit.Assert.assertNotNull(productUri);
+            dataProductModel = datacatalog.getDataProduct(productUri);
+            Assert.assertNotNull(dataProductModel);
+            boolean result = datacatalog.removeDataProduct(productUri);
+            Assert.assertTrue(result);
+            productUri = datacatalog.registerDataProduct(dataProductModel);
+            Assert.assertNotNull(productUri);
+            result = datacatalog.removeDataProduct(productUri);
+            Assert.assertTrue(result);
+            result = datacatalog.removeDataProduct(productUri);
+            Assert.assertFalse(result);
+        } catch (ReplicaCatalogException e) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
new file mode 100644
index 0000000..989a775
--- /dev/null
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/replica/catalog/util/Initialize.java
@@ -0,0 +1,315 @@
+/*
+ *
+ * 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.replica.catalog.util;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.registry.core.replica.catalog.utils.ReplicaCatalogConstants;
+import org.apache.derby.drda.NetworkServerControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.URI;
+import java.sql.*;
+import java.util.StringTokenizer;
+
+public class Initialize {
+    private static final Logger logger = LoggerFactory.getLogger(Initialize.class);
+    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
+    public  String scriptName = "datacatalog-derby.sql";
+    private NetworkServerControl server;
+    private static final String delimiter = ";";
+    private String jdbcUrl = null;
+    private String jdbcDriver = null;
+    private String jdbcUser = null;
+    private String jdbcPassword = null;
+
+    public Initialize(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) {
+        if (suffix.length() > buffer.length()) {
+            return false;
+        }
+        // this loop is done on purpose to avoid memory allocation performance
+        // problems on various JDKs
+        // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and
+        // implementation is ok though does allocation/copying
+        // StringBuffer.toString().endsWith() does massive memory
+        // allocation/copying on JDK 1.5
+        // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169
+        int endIndex = suffix.length() - 1;
+        int bufferIndex = buffer.length() - 1;
+        while (endIndex >= 0) {
+            if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) {
+                return false;
+            }
+            bufferIndex--;
+            endIndex--;
+        }
+        return true;
+    }
+
+    private static boolean isServerStarted(NetworkServerControl server, int ntries)
+    {
+        for (int i = 1; i <= ntries; i ++)
+        {
+            try {
+                Thread.sleep(500);
+                server.ping();
+                return true;
+            }
+            catch (Exception e) {
+                if (i == ntries)
+                    return false;
+            }
+        }
+        return false;
+    }
+
+    public void initializeDB() {
+        try{
+            jdbcDriver = ServerSettings.getSetting("datacatalog.jdbc.driver");
+            jdbcUrl = ServerSettings.getSetting("datacatalog.jdbc.url");
+            jdbcUser = ServerSettings.getSetting("datacatalog.jdbc.user");
+            jdbcPassword = ServerSettings.getSetting("datacatalog.jdbc.password");
+            jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read properties", e);
+        }
+
+        startDerbyInServerMode();
+        if(!isServerStarted(server, 20)){
+           throw new RuntimeException("Derby server could not started within five seconds...");
+        }
+        Connection conn = null;
+        try {
+            Class.forName(jdbcDriver).newInstance();
+            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
+            if (!isDatabaseStructureCreated(ReplicaCatalogConstants.CONFIGURATION, conn)) {
+                executeSQLScript(conn);
+                logger.info("New Database created for Data Catalog !!!");
+            } else {
+                logger.debug("Database already created for Data Catalog!");
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RuntimeException("Database failure", e);
+        } finally {
+            try {
+                if (conn != null){
+                    if (!conn.getAutoCommit()) {
+                        conn.commit();
+                    }
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    public static boolean isDatabaseStructureCreated(String tableName, Connection conn) {
+        try {
+            System.out.println("Running a query to test the database tables existence.");
+            // check whether the tables are already created with a query
+            Statement statement = null;
+            try {
+                statement = conn.createStatement();
+                ResultSet rs = statement.executeQuery("select * from " + tableName);
+                if (rs != null) {
+                    rs.close();
+                }
+            } finally {
+                try {
+                    if (statement != null) {
+                        statement.close();
+                    }
+                } catch (SQLException e) {
+                    return false;
+                }
+            }
+        } catch (SQLException e) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private void executeSQLScript(Connection conn) throws Exception {
+        StringBuffer sql = new StringBuffer();
+        BufferedReader reader = null;
+        try{
+
+        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(scriptName);
+        reader = new BufferedReader(new InputStreamReader(inputStream));
+        String line;
+        while ((line = reader.readLine()) != null) {
+            line = line.trim();
+            if (line.startsWith("//")) {
+                continue;
+            }
+            if (line.startsWith("--")) {
+                continue;
+            }
+            StringTokenizer st = new StringTokenizer(line);
+            if (st.hasMoreTokens()) {
+                String token = st.nextToken();
+                if ("REM".equalsIgnoreCase(token)) {
+                    continue;
+                }
+            }
+            sql.append(" ").append(line);
+
+            // SQL defines "--" as a comment to EOL
+            // and in Oracle it may contain a hint
+            // so we cannot just remove it, instead we must end it
+            if (line.indexOf("--") >= 0) {
+                sql.append("\n");
+            }
+            if ((checkStringBufferEndsWith(sql, delimiter))) {
+                executeSQL(sql.substring(0, sql.length() - delimiter.length()), conn);
+                sql.replace(0, sql.length(), "");
+            }
+        }
+        // Catch any statements not followed by ;
+        if (sql.length() > 0) {
+            executeSQL(sql.toString(), conn);
+        }
+        }catch (IOException e){
+            logger.error("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
+            throw new Exception("Error occurred while executing SQL script for creating Airavata Data Catalog database", e);
+        }finally {
+            if (reader != null) {
+                reader.close();
+            }
+        }
+    }
+
+    private static void executeSQL(String sql, Connection conn) throws Exception {
+        // Check and ignore empty statements
+        if ("".equals(sql.trim())) {
+            return;
+        }
+
+        Statement statement = null;
+        try {
+            logger.debug("SQL : " + sql);
+
+            boolean ret;
+            int updateCount = 0, updateCountTotal = 0;
+            statement = conn.createStatement();
+            ret = statement.execute(sql);
+            updateCount = statement.getUpdateCount();
+            do {
+                if (!ret) {
+                    if (updateCount != -1) {
+                        updateCountTotal += updateCount;
+                    }
+                }
+                ret = statement.getMoreResults();
+                if (ret) {
+                    updateCount = statement.getUpdateCount();
+                }
+            } while (ret);
+
+            logger.debug(sql + " : " + updateCountTotal + " rows affected");
+
+            SQLWarning warning = conn.getWarnings();
+            while (warning != null) {
+                logger.warn(warning + " sql warning");
+                warning = warning.getNextWarning();
+            }
+            conn.clearWarnings();
+        } catch (SQLException e) {
+            if (e.getSQLState().equals("X0Y32")) {
+                // eliminating the table already exception for the derby
+                // database
+                logger.info("Table Already Exists", e);
+            } else {
+                throw new Exception("Error occurred while executing : " + sql, e);
+            }
+        } finally {
+            if (statement != null) {
+                try {
+                    statement.close();
+                } catch (SQLException e) {
+                    logger.error("Error occurred while closing result set.", e);
+                }
+            }
+        }
+    }
+
+    private void startDerbyInServerMode() {
+        try {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+                    20000,
+                    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 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;
+        }
+    }
+
+    private void startDerbyInEmbeddedMode(){
+        try {
+            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+            DriverManager.getConnection("jdbc:derby:memory:unit-testing-jpa;create=true").close();
+        } catch (ClassNotFoundException e) {
+            logger.error(e.getMessage(), e);
+        } catch (SQLException e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+
+    public void stopDerbyServer() {
+        try {
+            server.shutdown();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
deleted file mode 100644
index 42eff2a..0000000
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java
+++ /dev/null
@@ -1,50 +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.cpi;
-
-
-import org.apache.airavata.model.data.product.DataProductModel;
-import org.apache.airavata.model.data.product.DataReplicaLocationModel;
-
-import java.util.List;
-
-public interface DataCatalog {
-    String schema = "airavata-dp";
-
-    String registerDataProduct(DataProductModel product) throws DataCatalogException;
-
-    boolean removeDataProduct(String productUri) throws DataCatalogException;
-
-    boolean updateDataProduct(DataProductModel product) throws DataCatalogException;
-
-    DataProductModel getDataProduct(String productUri) throws DataCatalogException;
-
-    boolean isExists(String productUri) throws DataCatalogException;
-
-    String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException;
-
-    boolean removeReplicaLocation(String replicaId) throws DataCatalogException;
-
-    boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException;
-
-    DataReplicaLocationModel getReplicaLocation(String replicaId) throws DataCatalogException;
-
-    List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws DataCatalogException;
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalogException.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalogException.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalogException.java
deleted file mode 100644
index 9bc4da9..0000000
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalogException.java
+++ /dev/null
@@ -1,35 +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.cpi;
-
-public class DataCatalogException extends Exception{
-
-    public DataCatalogException(Throwable e) {
-        super(e);
-    }
-
-    public DataCatalogException(String message) {
-        super(message, null);
-    }
-
-    public DataCatalogException(String message, Throwable e) {
-        super(message, e);
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
index e51389c..60531c8 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
@@ -25,5 +25,5 @@ public interface Registry {
     public ExperimentCatalog getExperimentCatalog() throws RegistryException;
     public ExperimentCatalog getExperimentCatalog(String gatewayId, String username, String password) throws RegistryException;
     public AppCatalog getAppCatalog() throws RegistryException;
-    public DataCatalog getDataCatalog() throws RegistryException;
+    public ReplicaCatalog getReplicaCatalog() throws RegistryException;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
new file mode 100644
index 0000000..1897356
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalog.java
@@ -0,0 +1,50 @@
+/**
+ * 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;
+
+
+import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
+
+import java.util.List;
+
+public interface ReplicaCatalog {
+    String schema = "airavata-dp";
+
+    String registerDataProduct(DataProductModel product) throws ReplicaCatalogException;
+
+    boolean removeDataProduct(String productUri) throws ReplicaCatalogException;
+
+    boolean updateDataProduct(DataProductModel product) throws ReplicaCatalogException;
+
+    DataProductModel getDataProduct(String productUri) throws ReplicaCatalogException;
+
+    boolean isExists(String productUri) throws ReplicaCatalogException;
+
+    String registerReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws ReplicaCatalogException;
+
+    boolean removeReplicaLocation(String replicaId) throws ReplicaCatalogException;
+
+    boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws ReplicaCatalogException;
+
+    DataReplicaLocationModel getReplicaLocation(String replicaId) throws ReplicaCatalogException;
+
+    List<DataReplicaLocationModel> getAllReplicaLocations(String productUri) throws ReplicaCatalogException;
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
new file mode 100644
index 0000000..f0eb5cd
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ReplicaCatalogException.java
@@ -0,0 +1,35 @@
+/**
+ * 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 ReplicaCatalogException extends Exception{
+
+    public ReplicaCatalogException(Throwable e) {
+        super(e);
+    }
+
+    public ReplicaCatalogException(String message) {
+        super(message, null);
+    }
+
+    public ReplicaCatalogException(String message, Throwable e) {
+        super(message, e);
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/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 3835c8e..5fcdb88 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -40,7 +40,7 @@ include "../data-models/resource-catalog-models/storage_resource_model.thrift"
 include "../data-models/resource-catalog-models/gateway_resource_profile_model.thrift"
 include "../data-models/resource-catalog-models/data_movement_models.thrift"
 include "../data-models/workflow-models/workflow_data_model.thrift"
-include "../data-models/data-catalog-models/data_catalog_models.thrift"
+include "../data-models/replica-catalog-models/replica_catalog_models.thrift"
 
 namespace java org.apache.airavata.api
 namespace php Airavata.API
@@ -2962,21 +2962,21 @@ service Airavata {
 
 
  /**
- * API Methods related to data catalog
+ * API Methods related to replica catalog
  **/
- string registerDataProduct(1: required security_model.AuthzToken authzToken, 2: required  data_catalog_models.DataProductModel dataProductModel)
+ string registerDataProduct(1: required security_model.AuthzToken authzToken, 2: required  replica_catalog_models.DataProductModel dataProductModel)
             throws (1: airavata_errors.InvalidRequestException ire,
                               2: airavata_errors.AiravataClientException ace,
                               3: airavata_errors.AiravataSystemException ase,
                               4: airavata_errors.AuthorizationException ae)
 
- data_catalog_models.DataProductModel getDataProduct(1: required security_model.AuthzToken authzToken, 2: required  string dataProductUri)
+ replica_catalog_models.DataProductModel getDataProduct(1: required security_model.AuthzToken authzToken, 2: required  string dataProductUri)
              throws (1: airavata_errors.InvalidRequestException ire,
                                2: airavata_errors.AiravataClientException ace,
                                3: airavata_errors.AiravataSystemException ase,
                                4: airavata_errors.AuthorizationException ae)
 
- string registerReplicaLocation(1: required security_model.AuthzToken authzToken, 2: required  data_catalog_models.DataReplicaLocationModel replicaLocationModel)
+ string registerReplicaLocation(1: required security_model.AuthzToken authzToken, 2: required  replica_catalog_models.DataReplicaLocationModel replicaLocationModel)
               throws (1: airavata_errors.InvalidRequestException ire,
                                 2: airavata_errors.AiravataClientException ace,
                                 3: airavata_errors.AiravataSystemException ase,

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/thrift-interface-descriptions/data-models/airavata_data_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/airavata_data_models.thrift b/thrift-interface-descriptions/data-models/airavata_data_models.thrift
index 12ac253..8d49b1a 100644
--- a/thrift-interface-descriptions/data-models/airavata_data_models.thrift
+++ b/thrift-interface-descriptions/data-models/airavata_data_models.thrift
@@ -30,7 +30,7 @@ include "experiment-catalog-models/process_model.thrift"
 include "experiment-catalog-models/scheduling_model.thrift"
 include "experiment-catalog-models/status_models.thrift"
 include "resource-catalog-models/data_movement_models.thrift"
-include "data-catalog-models/data_catalog_models.thrift"
+include "replica-catalog-models/replica_catalog_models.thrift"
 
 namespace java org.apache.airavata.model
 namespace php Airavata.Model

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/thrift-interface-descriptions/data-models/data-catalog-models/data_catalog_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/data-catalog-models/data_catalog_models.thrift b/thrift-interface-descriptions/data-models/data-catalog-models/data_catalog_models.thrift
deleted file mode 100644
index 9876b20..0000000
--- a/thrift-interface-descriptions/data-models/data-catalog-models/data_catalog_models.thrift
+++ /dev/null
@@ -1,73 +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.
- *
- */
-  namespace java org.apache.airavata.model.data.product
-  namespace php Airavata.Model.Data.Product
-  namespace cpp apache.airavata.model.data.product
-  namespace py apache.airavata.model.data.product
-
-enum ReplicaLocationCategory {
-    GATEWAY_DATA_STORE,
-    COMPUTE_RESOURCE,
-    LONG_TERM_STORAGE_RESOURCE,
-    OTHER
-}
-
-enum ReplicaPersistentType {
-    TRANSIENT,
-    PERSISTENT
-}
-
-enum DataProductType {
-    DIR,
-    FILE,
-    COLLECTION,
-}
-
-struct DataProductModel {
-    1: optional string productUri,
-    2: optional string gatewayId,
-    3: optional string parentProductUri,
-    4: optional string logicalPath,
-    5: optional string productName,
-    6: optional string productDescription,
-    7: optional string ownerName,
-    8: optional DataProductType dataProductType,
-    9: optional i32 productSize,
-    10: optional i64 creationTime,
-    11: optional i64 lastModifiedTime,
-    12: optional map<string, string> productMetadata,
-    13: optional list<DataReplicaLocationModel> replicaLocations,
-    14: optional list<DataProductModel> childProducts
-}
-
-struct DataReplicaLocationModel {
-    1: optional string replicaId,
-    2: optional string productUri,
-    3: optional string replicaName,
-    4: optional string replicaDescription,
-    5: optional i64 creationTime,
-    6: optional i64 lastModifiedTime,
-    7: optional i64 validUntilTime,
-    8: optional ReplicaLocationCategory replicaLocationCategory,
-    9: optional ReplicaPersistentType replicaPersistentType,
-    10: optional string storageResourceId,
-    11: optional string filePath,
-    12: optional map<string, string> replicaMetadata
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/04f6f593/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
new file mode 100644
index 0000000..424f532
--- /dev/null
+++ b/thrift-interface-descriptions/data-models/replica-catalog-models/replica_catalog_models.thrift
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ *
+ */
+  namespace java org.apache.airavata.model.data.replica
+  namespace php Airavata.Model.Data.Replica
+  namespace cpp apache.airavata.model.data.replica
+  namespace py apache.airavata.model.data.replica
+
+enum ReplicaLocationCategory {
+    GATEWAY_DATA_STORE,
+    COMPUTE_RESOURCE,
+    LONG_TERM_STORAGE_RESOURCE,
+    OTHER
+}
+
+enum ReplicaPersistentType {
+    TRANSIENT,
+    PERSISTENT
+}
+
+enum DataProductType {
+    DIR,
+    FILE,
+    COLLECTION,
+}
+
+struct DataProductModel {
+    1: optional string productUri,
+    2: optional string gatewayId,
+    3: optional string parentProductUri,
+    4: optional string logicalPath,
+    5: optional string productName,
+    6: optional string productDescription,
+    7: optional string ownerName,
+    8: optional DataProductType dataProductType,
+    9: optional i32 productSize,
+    10: optional i64 creationTime,
+    11: optional i64 lastModifiedTime,
+    12: optional map<string, string> productMetadata,
+    13: optional list<DataReplicaLocationModel> replicaLocations,
+    14: optional list<DataProductModel> childProducts
+}
+
+struct DataReplicaLocationModel {
+    1: optional string replicaId,
+    2: optional string productUri,
+    3: optional string replicaName,
+    4: optional string replicaDescription,
+    5: optional i64 creationTime,
+    6: optional i64 lastModifiedTime,
+    7: optional i64 validUntilTime,
+    8: optional ReplicaLocationCategory replicaLocationCategory,
+    9: optional ReplicaPersistentType replicaPersistentType,
+    10: optional string storageResourceId,
+    11: optional string filePath,
+    12: optional map<string, string> replicaMetadata
+}