You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2017/02/15 20:29:32 UTC

airavata git commit: adding IIS_READ_ONLY field to Experiment Input/ Process Input and Application Input

Repository: airavata
Updated Branches:
  refs/heads/develop c8326ae62 -> 84fcd360d


adding IIS_READ_ONLY field to Experiment Input/ Process Input and Application Input


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

Branch: refs/heads/develop
Commit: 84fcd360da6e6d8c9ecb5f52de133e81734abfdb
Parents: c8326ae
Author: scnakandala <su...@gmail.com>
Authored: Wed Feb 15 15:28:51 2017 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Feb 15 15:28:51 2017 -0500

----------------------------------------------------------------------
 .../airavata/application_io_models_types.cpp    |  22 +++
 .../lib/airavata/application_io_models_types.h  |  12 +-
 .../lib/Airavata/Model/Application/Io/Types.php |  23 ++++
 .../airavata/model/application/io/ttypes.py     |  15 ++-
 .../application/io/InputDataObjectType.java     | 134 +++++++++++++++----
 .../catalog/impl/ApplicationInterfaceImpl.java  |   1 +
 .../app/catalog/model/ApplicationIntInput.java  |  11 ++
 .../resources/ApplicationInputResource.java     |  10 ++
 .../app/catalog/util/AppCatalogJPAUtils.java    |   1 +
 .../util/AppCatalogThriftConversion.java        |   1 +
 .../catalog/impl/ExperimentRegistry.java        |   4 +
 .../catalog/model/ExperimentInput.java          |  10 ++
 .../experiment/catalog/model/ProcessInput.java  |   9 ++
 .../resources/ExperimentInputResource.java      |  10 ++
 .../catalog/resources/ProcessInputResource.java |  10 ++
 .../experiment/catalog/resources/Utils.java     |   2 +
 .../utils/ThriftDataModelConversion.java        |   2 +
 .../src/main/resources/appcatalog-derby.sql     |   1 +
 .../src/main/resources/appcatalog-mysql.sql     |   1 +
 .../src/main/resources/expcatalog-derby.sql     |   2 +
 .../src/main/resources/expcatalog-mysql.sql     |   2 +
 .../catalog/ExperimentInputResourceTest.java    |   1 +
 .../application_io_models.thrift                |   3 +-
 23 files changed, 258 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 769938e..1c1b548 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
@@ -114,6 +114,11 @@ void InputDataObjectType::__set_storageResourceId(const std::string& val) {
 __isset.storageResourceId = true;
 }
 
+void InputDataObjectType::__set_isReadOnly(const bool val) {
+  this->isReadOnly = val;
+__isset.isReadOnly = true;
+}
+
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -234,6 +239,14 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 13:
+        if (ftype == ::apache::thrift::protocol::T_BOOL) {
+          xfer += iprot->readBool(this->isReadOnly);
+          this->__isset.isReadOnly = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -312,6 +325,11 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeString(this->storageResourceId);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.isReadOnly) {
+    xfer += oprot->writeFieldBegin("isReadOnly", ::apache::thrift::protocol::T_BOOL, 13);
+    xfer += oprot->writeBool(this->isReadOnly);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -331,6 +349,7 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.requiredToAddedToCommandLine, b.requiredToAddedToCommandLine);
   swap(a.dataStaged, b.dataStaged);
   swap(a.storageResourceId, b.storageResourceId);
+  swap(a.isReadOnly, b.isReadOnly);
   swap(a.__isset, b.__isset);
 }
 
@@ -347,6 +366,7 @@ InputDataObjectType::InputDataObjectType(const InputDataObjectType& other1) {
   requiredToAddedToCommandLine = other1.requiredToAddedToCommandLine;
   dataStaged = other1.dataStaged;
   storageResourceId = other1.storageResourceId;
+  isReadOnly = other1.isReadOnly;
   __isset = other1.__isset;
 }
 InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& other2) {
@@ -362,6 +382,7 @@ InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& o
   requiredToAddedToCommandLine = other2.requiredToAddedToCommandLine;
   dataStaged = other2.dataStaged;
   storageResourceId = other2.storageResourceId;
+  isReadOnly = other2.isReadOnly;
   __isset = other2.__isset;
   return *this;
 }
@@ -380,6 +401,7 @@ void InputDataObjectType::printTo(std::ostream& out) const {
   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 << ", " << "isReadOnly="; (__isset.isReadOnly ? (out << to_string(isReadOnly)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 89aecb8..491f47c 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
@@ -56,7 +56,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), storageResourceId(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), isReadOnly(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -68,6 +68,7 @@ typedef struct _InputDataObjectType__isset {
   bool requiredToAddedToCommandLine :1;
   bool dataStaged :1;
   bool storageResourceId :1;
+  bool isReadOnly :1;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType {
@@ -75,7 +76,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), storageResourceId() {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0), storageResourceId(), isReadOnly(0) {
   }
 
   virtual ~InputDataObjectType() throw();
@@ -91,6 +92,7 @@ class InputDataObjectType {
   bool requiredToAddedToCommandLine;
   bool dataStaged;
   std::string storageResourceId;
+  bool isReadOnly;
 
   _InputDataObjectType__isset __isset;
 
@@ -118,6 +120,8 @@ class InputDataObjectType {
 
   void __set_storageResourceId(const std::string& val);
 
+  void __set_isReadOnly(const bool val);
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -166,6 +170,10 @@ class InputDataObjectType {
       return false;
     else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
       return false;
+    if (__isset.isReadOnly != rhs.__isset.isReadOnly)
+      return false;
+    else if (__isset.isReadOnly && !(isReadOnly == rhs.isReadOnly))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 fae8964..fd97025 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
@@ -117,6 +117,10 @@ class InputDataObjectType {
    * @var string
    */
   public $storageResourceId = null;
+  /**
+   * @var bool
+   */
+  public $isReadOnly = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -169,6 +173,10 @@ class InputDataObjectType {
           'var' => 'storageResourceId',
           'type' => TType::STRING,
           ),
+          13 => array(
+              'var' => 'isReadOnly',
+              'type' => TType::BOOL,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -208,6 +216,9 @@ class InputDataObjectType {
       if (isset($vals['storageResourceId'])) {
         $this->storageResourceId = $vals['storageResourceId'];
       }
+      if (isset($vals['isReadOnly'])) {
+        $this->isReadOnly = $vals['isReadOnly'];
+      }
     }
   }
 
@@ -314,6 +325,13 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 13:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isReadOnly);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -387,6 +405,11 @@ class InputDataObjectType {
       $xfer += $output->writeString($this->storageResourceId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->isReadOnly !== null) {
+      $xfer += $output->writeFieldBegin('isReadOnly', TType::BOOL, 13);
+      $xfer += $output->writeBool($this->isReadOnly);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 3b255a5..0e678da 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
@@ -92,6 +92,7 @@ class InputDataObjectType:
    - requiredToAddedToCommandLine
    - dataStaged
    - storageResourceId
+   - isReadOnly
   """
 
   thrift_spec = (
@@ -108,9 +109,10 @@ class InputDataObjectType:
     (10, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 10
     (11, TType.BOOL, 'dataStaged', None, None, ), # 11
     (12, TType.STRING, 'storageResourceId', None, None, ), # 12
+    (13, TType.BOOL, 'isReadOnly', None, None, ), # 13
   )
 
-  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,):
+  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, isReadOnly=None,):
     self.name = name
     self.value = value
     self.type = type
@@ -123,6 +125,7 @@ class InputDataObjectType:
     self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
     self.dataStaged = dataStaged
     self.storageResourceId = storageResourceId
+    self.isReadOnly = isReadOnly
 
   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:
@@ -193,6 +196,11 @@ class InputDataObjectType:
           self.storageResourceId = iprot.readString()
         else:
           iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.BOOL:
+          self.isReadOnly = iprot.readBool()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -251,6 +259,10 @@ class InputDataObjectType:
       oprot.writeFieldBegin('storageResourceId', TType.STRING, 12)
       oprot.writeString(self.storageResourceId)
       oprot.writeFieldEnd()
+    if self.isReadOnly is not None:
+      oprot.writeFieldBegin('isReadOnly', TType.BOOL, 13)
+      oprot.writeBool(self.isReadOnly)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -274,6 +286,7 @@ class InputDataObjectType:
     value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
     value = (value * 31) ^ hash(self.dataStaged)
     value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.isReadOnly)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 620b937..dcb6f2f 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
@@ -23,32 +23,15 @@
  */
 package org.apache.airavata.model.application.io;
 
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.protocol.TTupleProtocol;
 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;
+import java.util.*;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**
@@ -93,6 +76,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   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 org.apache.thrift.protocol.TField IS_READ_ONLY_FIELD_DESC = new org.apache.thrift.protocol.TField("isReadOnly", org.apache.thrift.protocol.TType.BOOL, (short) 13);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -112,6 +96,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private boolean requiredToAddedToCommandLine; // optional
   private boolean dataStaged; // optional
   private String storageResourceId; // optional
+  private boolean isReadOnly; // 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 {
@@ -130,7 +115,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     IS_REQUIRED((short)9, "isRequired"),
     REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)10, "requiredToAddedToCommandLine"),
     DATA_STAGED((short)11, "dataStaged"),
-    STORAGE_RESOURCE_ID((short)12, "storageResourceId");
+    STORAGE_RESOURCE_ID((short) 12, "storageResourceId"),
+    IS_READ_ONLY((short) 13, "isReadOnly");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -169,6 +155,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
           return DATA_STAGED;
         case 12: // STORAGE_RESOURCE_ID
           return STORAGE_RESOURCE_ID;
+        case 13: // IS_READ_ONLY
+          return IS_READ_ONLY;
         default:
           return null;
       }
@@ -214,8 +202,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private static final int __ISREQUIRED_ISSET_ID = 2;
   private static final int __REQUIREDTOADDEDTOCOMMANDLINE_ISSET_ID = 3;
   private static final int __DATASTAGED_ISSET_ID = 4;
+  private static final int __ISREADONLY_ISSET_ID = 5;
   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,_Fields.STORAGE_RESOURCE_ID};
+  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, _Fields.IS_READ_ONLY};
   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);
@@ -243,6 +232,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.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.IS_READ_ONLY, new org.apache.thrift.meta_data.FieldMetaData("isReadOnly", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InputDataObjectType.class, metaDataMap);
   }
@@ -288,6 +279,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     if (other.isSetStorageResourceId()) {
       this.storageResourceId = other.storageResourceId;
     }
+    this.isReadOnly = other.isReadOnly;
   }
 
   public InputDataObjectType deepCopy() {
@@ -313,6 +305,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     setDataStagedIsSet(false);
     this.dataStaged = false;
     this.storageResourceId = null;
+    setIsReadOnlyIsSet(false);
+    this.isReadOnly = false;
   }
 
   public String getName() {
@@ -594,6 +588,30 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     }
   }
 
+  public boolean isIsReadOnly() {
+    return this.isReadOnly;
+  }
+
+  public void setIsReadOnly(boolean isReadOnly) {
+    this.isReadOnly = isReadOnly;
+    setIsReadOnlyIsSet(true);
+  }
+
+  public void unsetIsReadOnly() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISREADONLY_ISSET_ID);
+  }
+
+  /**
+   * Returns true if field isReadOnly is set (has been assigned a value) and false otherwise
+   */
+  public boolean isSetIsReadOnly() {
+    return EncodingUtils.testBit(__isset_bitfield, __ISREADONLY_ISSET_ID);
+  }
+
+  public void setIsReadOnlyIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISREADONLY_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -692,6 +710,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       }
       break;
 
+      case IS_READ_ONLY:
+        if (value == null) {
+          unsetIsReadOnly();
+        } else {
+          setIsReadOnly((Boolean) value);
+        }
+        break;
+
     }
   }
 
@@ -733,6 +759,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     case STORAGE_RESOURCE_ID:
       return getStorageResourceId();
 
+      case IS_READ_ONLY:
+        return isIsReadOnly();
+
     }
     throw new IllegalStateException();
   }
@@ -768,6 +797,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       return isSetDataStaged();
     case STORAGE_RESOURCE_ID:
       return isSetStorageResourceId();
+      case IS_READ_ONLY:
+        return isSetIsReadOnly();
     }
     throw new IllegalStateException();
   }
@@ -893,6 +924,15 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return false;
     }
 
+    boolean this_present_isReadOnly = true && this.isSetIsReadOnly();
+    boolean that_present_isReadOnly = true && that.isSetIsReadOnly();
+    if (this_present_isReadOnly || that_present_isReadOnly) {
+      if (!(this_present_isReadOnly && that_present_isReadOnly))
+        return false;
+      if (this.isReadOnly != that.isReadOnly)
+        return false;
+    }
+
     return true;
   }
 
@@ -960,6 +1000,11 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     if (present_storageResourceId)
       list.add(storageResourceId);
 
+    boolean present_isReadOnly = true && (isSetIsReadOnly());
+    list.add(present_isReadOnly);
+    if (present_isReadOnly)
+      list.add(isReadOnly);
+
     return list.hashCode();
   }
 
@@ -1091,6 +1136,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetIsReadOnly()).compareTo(other.isSetIsReadOnly());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetIsReadOnly()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isReadOnly, other.isReadOnly);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1208,6 +1263,12 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       }
       first = false;
     }
+    if (isSetIsReadOnly()) {
+      if (!first) sb.append(", ");
+      sb.append("isReadOnly:");
+      sb.append(this.isReadOnly);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1353,6 +1414,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 13: // IS_READ_ONLY
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.isReadOnly = iprot.readBool();
+              struct.setIsReadOnlyIsSet(true);
+            } else {
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1438,6 +1507,11 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetIsReadOnly()) {
+        oprot.writeFieldBegin(IS_READ_ONLY_FIELD_DESC);
+        oprot.writeBool(struct.isReadOnly);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1490,7 +1564,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetStorageResourceId()) {
         optionals.set(10);
       }
-      oprot.writeBitSet(optionals, 11);
+      if (struct.isSetIsReadOnly()) {
+        optionals.set(11);
+      }
+      oprot.writeBitSet(optionals, 12);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1524,6 +1601,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetStorageResourceId()) {
         oprot.writeString(struct.storageResourceId);
       }
+      if (struct.isSetIsReadOnly()) {
+        oprot.writeBool(struct.isReadOnly);
+      }
     }
 
     @Override
@@ -1531,7 +1611,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(11);
+      BitSet incoming = iprot.readBitSet(12);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1576,6 +1656,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         struct.storageResourceId = iprot.readString();
         struct.setStorageResourceIdIsSet(true);
       }
+      if (incoming.get(11)) {
+        struct.isReadOnly = iprot.readBool();
+        struct.setIsReadOnlyIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/ApplicationInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/ApplicationInterfaceImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/ApplicationInterfaceImpl.java
index 825fe49..a4bfac2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/ApplicationInterfaceImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/ApplicationInterfaceImpl.java
@@ -238,6 +238,7 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     inputResource.setRequired(input.isIsRequired());
                     inputResource.setRequiredToCMD(input.isRequiredToAddedToCommandLine());
                     inputResource.setDataStaged(input.isDataStaged());
+                    inputResource.setIsReadOnly(input.isIsReadOnly());
                     inputResource.save();
                 }
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/ApplicationIntInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/ApplicationIntInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/ApplicationIntInput.java
index 2487387..d0c005d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/ApplicationIntInput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/model/ApplicationIntInput.java
@@ -55,6 +55,8 @@ public class ApplicationIntInput implements Serializable {
     private boolean requiredToCMD;
     @Column(name = "DATA_STAGED")
     private boolean dataStaged;
+    @Column(name = "IS_READ_ONLY")
+    private boolean isReadOnly;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -163,4 +165,13 @@ public class ApplicationIntInput implements Serializable {
     public void setDataStaged(boolean dataStaged) {
         this.dataStaged = dataStaged;
     }
+
+
+    public boolean isReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ApplicationInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ApplicationInputResource.java
index b04e55a..6136ea9 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ApplicationInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ApplicationInputResource.java
@@ -53,6 +53,7 @@ public class ApplicationInputResource extends AppCatAbstractResource {
     private boolean isRequired;
     private boolean requiredToCMD;
     private boolean dataStaged;
+    private boolean isReadOnly;
 
     private AppInterfaceResource appInterfaceResource;
 
@@ -332,6 +333,7 @@ public class ApplicationInputResource extends AppCatAbstractResource {
             applicationInput.setRequiredToCMD(requiredToCMD);
             applicationInput.setRequired(isRequired);
             applicationInput.setDataStaged(dataStaged);
+            applicationInput.setReadOnly(isReadOnly);
             if (existingApplicationInput == null) {
                 em.persist(applicationInput);
             } else {
@@ -496,4 +498,12 @@ public class ApplicationInputResource extends AppCatAbstractResource {
     public void setDataStaged(boolean dataStaged) {
         this.dataStaged = dataStaged;
     }
+
+    public boolean isReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setIsReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
index efac1e2..4a77af2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogJPAUtils.java
@@ -868,6 +868,7 @@ public class AppCatalogJPAUtils {
             resource.setRequired(o.isRequired());
             resource.setRequiredToCMD(o.isRequiredToCMD());
             resource.setDataStaged(o.isDataStaged());
+            resource.setIsReadOnly(o.isReadOnly());
             resource.setAppInterfaceResource((AppInterfaceResource) createAppInterfaceResource(o.getApplicationInterface()));
         }
         return resource;

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
index b20c736..c29ec0b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/util/AppCatalogThriftConversion.java
@@ -687,6 +687,7 @@ public class AppCatalogThriftConversion {
         inputDataObjectType.setIsRequired(input.getRequired());
         inputDataObjectType.setRequiredToAddedToCommandLine(input.getRequiredToCMD());
         inputDataObjectType.setDataStaged(input.isDataStaged());
+        inputDataObjectType.setIsReadOnly(input.isReadOnly());
         return inputDataObjectType;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 5411a81..58c6f9e 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
@@ -176,6 +176,7 @@ public class ExperimentRegistry {
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
                 resource.setStorageResourceId(input.getStorageResourceId());
+                resource.setIsReadOnly(input.isIsReadOnly());
                 resource.save();
             }
         } catch (Exception e) {
@@ -365,6 +366,7 @@ public class ExperimentRegistry {
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
                 resource.setStorageResourceId(input.getStorageResourceId());
+                resource.setIsReadOnly(input.isIsReadOnly());
                 resource.save();
             }
             return processID;
@@ -663,6 +665,7 @@ public class ExperimentRegistry {
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
                         exinput.setStorageResourceId(input.getStorageResourceId());
+                        exinput.setIsReadOnly(input.isIsReadOnly());
                         exinput.save();
                     }
                 }
@@ -847,6 +850,7 @@ public class ExperimentRegistry {
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
                         exinput.setStorageResourceId(input.getStorageResourceId());
+                        exinput.setIsReadOnly(input.isIsReadOnly());
                         exinput.save();
                     }
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 dc49741..96c1989 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
@@ -43,6 +43,7 @@ public class ExperimentInput {
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
     private String storageResourceId;
+    private boolean isReadOnly;
     private Experiment experiment;
 
     @Id
@@ -165,6 +166,15 @@ public class ExperimentInput {
         this.dataStaged = dataStaged;
     }
 
+    @Column(name = "IS_READ_ONLY")
+    public boolean isReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setIsReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 0e30164..b74de10 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
@@ -44,6 +44,7 @@ public class ProcessInput {
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
     private String storageResourceId;
+    private boolean isReadOnly;
     private Process process;
 
     @Id
@@ -166,6 +167,14 @@ public class ProcessInput {
         this.storageResourceId = storageResourceId;
     }
 
+    @Column(name = "IS_READ_ONLY")
+    public boolean getIsReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setIsReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
 
 //    @Override
 //    public boolean equals(Object o) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 e20aa25..c08513f 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
@@ -48,6 +48,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
     private boolean requiredToAddedToCmd;
     private boolean dataStaged = false;
     private String storageResourceId;
+    private boolean isReadOnly;
 
     public String getExperimentId() {
         return experimentId;
@@ -153,6 +154,14 @@ public class ExperimentInputResource extends AbstractExpCatResource {
         this.dataStaged = dataStaged;
     }
 
+    public boolean isReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setIsReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process input data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -216,6 +225,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
             experimentInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             experimentInput.setDataStaged(dataStaged);
             experimentInput.setStorageResourceId(storageResourceId);
+            experimentInput.setIsReadOnly(isReadOnly);
             if (existingExpInput == null){
                 em.persist(experimentInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 fa09e88..4dc808a 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
@@ -48,6 +48,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
     private boolean requiredToAddedToCmd = false;
     private boolean dataStaged = false;
     private String storageResourceId;
+    private boolean isReadOnly;
 
     public String getProcessId() {
         return processId;
@@ -153,6 +154,14 @@ public class ProcessInputResource extends AbstractExpCatResource {
         this.storageResourceId = storageResourceId;
     }
 
+    public boolean isReadOnly() {
+        return isReadOnly;
+    }
+
+    public void setIsReadOnly(boolean isReadOnly) {
+        this.isReadOnly = isReadOnly;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process input data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -216,6 +225,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
             processInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             processInput.setDataStaged(dataStaged);
             processInput.setStorageResourceId(storageResourceId);
+            processInput.setIsReadOnly(isReadOnly);
             if (existingProInput == null){
                 em.persist(processInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 2f5ff99..70c9b33 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
@@ -483,6 +483,7 @@ public class Utils {
             inputResource.setIsRequired(o.getIsRequired());
             inputResource.setRequiredToAddedToCmd(o.getRequiredToAddedToCmd());
             inputResource.setDataStaged(o.getDataStaged());
+            inputResource.setIsReadOnly(o.isReadOnly());
         }
         return inputResource;
     }
@@ -616,6 +617,7 @@ public class Utils {
             inputResource.setIsRequired(o.getIsRequired());
             inputResource.setRequiredToAddedToCmd(o.getRequiredToAddedToCmd());
             inputResource.setDataStaged(o.getDataStaged());
+            inputResource.setIsReadOnly(o.getIsReadOnly());
         }
         return inputResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 f84b3d8..077ab44 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
@@ -185,6 +185,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(inputResource.getIsRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
+                dataObjectType.setIsReadOnly(inputResource.isReadOnly());
                 dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
                 return dataObjectType;
             }else if (object instanceof ProcessInputResource){
@@ -201,6 +202,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
                 dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
+                dataObjectType.setIsReadOnly(inputResource.isReadOnly());
                 return dataObjectType;
             }else {
                 return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
index 4716f98..1f744ee 100644
--- a/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
@@ -301,6 +301,7 @@ CREATE TABLE APPLICATION_INPUT
          REQUIRED_TO_COMMANDLINE SMALLINT,
          DATA_STAGED SMALLINT,
          USER_FRIENDLY_DESC VARCHAR(255),
+  IS_READ_ONLY SMALLINT,
          PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
index 4ef7c4b..12a1953 100644
--- a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
@@ -300,6 +300,7 @@ CREATE TABLE APPLICATION_INPUT
          IS_REQUIRED SMALLINT,
          REQUIRED_TO_COMMANDLINE SMALLINT,
          DATA_STAGED SMALLINT,
+         IS_READ_ONLY SMALLINT,
          PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 c1dcb05..5d9bf94 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -127,6 +127,7 @@ CREATE TABLE EXPERIMENT_INPUT
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
     STORAGE_RESOURCE_ID varchar(255),
+  IS_READ_ONLY SMALLINT,
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -249,6 +250,7 @@ CREATE TABLE PROCESS_INPUT
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
     STORAGE_RESOURCE_ID varchar(255),
+  IS_READ_ONLY SMALLINT,
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 8d4c99f..5397a7a 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -128,6 +128,7 @@ CREATE TABLE EXPERIMENT_INPUT
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
     STORAGE_RESOURCE_ID varchar(255),
+  IS_READ_ONLY SMALLINT,
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -253,6 +254,7 @@ CREATE TABLE PROCESS_INPUT
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
     STORAGE_RESOURCE_ID varchar(255),
+  IS_READ_ONLY SMALLINT,
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/modules/registry/registry-core/src/test/java/org/apache/airavata/experiment/catalog/ExperimentInputResourceTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/experiment/catalog/ExperimentInputResourceTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/experiment/catalog/ExperimentInputResourceTest.java
index ac7c5bb..5895c9a 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/experiment/catalog/ExperimentInputResourceTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/experiment/catalog/ExperimentInputResourceTest.java
@@ -55,6 +55,7 @@ public class ExperimentInputResourceTest extends AbstractResourceTest  {
         experimentInputResource.setInputName("testKey");
         experimentInputResource.setInputValue("testValue");
         experimentInputResource.setDataType("string");
+        experimentInputResource.setIsReadOnly(false);
         experimentInputResource.save();
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/84fcd360/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 e4e5d1e..c8490aa 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
@@ -77,7 +77,8 @@ struct InputDataObjectType {
     9: optional bool isRequired,
     10: optional bool requiredToAddedToCommandLine,
     11: optional bool dataStaged,
-    12: optional string storageResourceId
+    12: optional string storageResourceId,
+    13: optional bool isReadOnly
 }
 
 /**