You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/01/13 19:36:38 UTC

[1/2] airavata git commit: adding application argument and search query to outputdata object

Repository: airavata
Updated Branches:
  refs/heads/master f8b6adb7b -> dc22b7beb


http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/NodeOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/NodeOutputResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/NodeOutputResource.java
index cbe0dab..ceb323b 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/NodeOutputResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/NodeOutputResource.java
@@ -46,6 +46,25 @@ public class NodeOutputResource extends AbstractResource {
     private boolean dataMovement;
     private String dataNameLocation;
     private boolean requiredToCMD;
+    private String searchQuery;
+    private String appArgument;
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
 
     public boolean getRequiredToCMD() {
         return requiredToCMD;
@@ -156,6 +175,8 @@ public class NodeOutputResource extends AbstractResource {
             nodeOutput.setRequiredToCMD(requiredToCMD);
             nodeOutput.setDataMovement(dataMovement);
             nodeOutput.setDataNameLocation(dataNameLocation);
+            nodeOutput.setApplicationArgument(appArgument);
+            nodeOutput.setSearchQuery(searchQuery);
 
             if (existingOutput != null) {
                 existingOutput.setNode(nodeDetail);
@@ -167,6 +188,8 @@ public class NodeOutputResource extends AbstractResource {
                 existingOutput.setRequiredToCMD(requiredToCMD);
                 existingOutput.setDataMovement(dataMovement);
                 existingOutput.setDataNameLocation(dataNameLocation);
+                existingOutput.setApplicationArgument(appArgument);
+                existingOutput.setSearchQuery(searchQuery);
                 nodeOutput = em.merge(existingOutput);
             } else {
                 em.persist(nodeOutput);

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
index 9935e55..f815505 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
@@ -546,6 +546,8 @@ public class Utils {
             eOutputResource.setRequiredToCMD(o.isRequiredToCMD());
             eOutputResource.setDataMovement(o.isDataMovement());
             eOutputResource.setDataNameLocation(o.getDataNameLocation());
+            eOutputResource.setSearchQuery(o.getSearchQuery());
+            eOutputResource.setAppArgument(o.getApplicationArgument());
         }
         return eOutputResource;
     }
@@ -642,6 +644,8 @@ public class Utils {
             outputResource.setRequiredToCMD(o.isAddedToCmd());
             outputResource.setDataMovement(o.isDataMovement());
             outputResource.setDataNameLocation(o.getDataNameLocation());
+            outputResource.setSearchQuery(o.getSearchQuery());
+            outputResource.setAppArgument(o.getApplicationArgument());
         }
         return outputResource;
     }
@@ -678,6 +682,8 @@ public class Utils {
             outputResource.setRequiredToCMD(o.isRequiredToCMD());
             outputResource.setDataMovement(o.isDataMovement());
             outputResource.setDataNameLocation(o.getDataNameLocation());
+            outputResource.setSearchQuery(o.getSearchQuery());
+            outputResource.setAppArgument(o.getApplicationArgument());
         }
 
         return outputResource;

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
index 4e63656..7a9c32d 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
@@ -248,7 +248,9 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(expOutput.getRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(expOutput.getRequiredToCMD());
                 dataObjectType.setDataMovement(expOutput.isDataMovement());
-                dataObjectType.setDataNameLocation(expOutput.getDataNameLocation());
+                dataObjectType.setLocation(expOutput.getDataNameLocation());
+                dataObjectType.setSearchQuery(expOutput.getSearchQuery());
+                dataObjectType.setApplicationArgument(expOutput.getAppArgument());
                 return dataObjectType;
             }else if (object instanceof NodeOutputResource){
                 NodeOutputResource nodeOutputResource = (NodeOutputResource)object;
@@ -260,7 +262,9 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(nodeOutputResource.getRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(nodeOutputResource.getRequiredToCMD());
                 dataObjectType.setDataMovement(nodeOutputResource.isDataMovement());
-                dataObjectType.setDataNameLocation(nodeOutputResource.getDataNameLocation());
+                dataObjectType.setLocation(nodeOutputResource.getDataNameLocation());
+                dataObjectType.setSearchQuery(nodeOutputResource.getSearchQuery());
+                dataObjectType.setApplicationArgument(nodeOutputResource.getAppArgument());
                 return dataObjectType;
             }else if (object instanceof ApplicationOutputResource){
                 ApplicationOutputResource outputResource = (ApplicationOutputResource)object;
@@ -272,7 +276,9 @@ public class ThriftDataModelConversion {
                     dataObjectType.setType(DataType.valueOf(outputResource.getDataType()));
                 }
                 dataObjectType.setDataMovement(outputResource.isDataMovement());
-                dataObjectType.setDataNameLocation(outputResource.getDataNameLocation());
+                dataObjectType.setLocation(outputResource.getDataNameLocation());
+                dataObjectType.setSearchQuery(outputResource.getSearchQuery());
+                dataObjectType.setApplicationArgument(outputResource.getAppArgument());
                 return dataObjectType;
             }else {
                 return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
index 8f31a3f..8516950 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
@@ -149,6 +149,8 @@ CREATE TABLE EXPERIMENT_OUTPUT
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_MOVEMENT SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -226,6 +228,8 @@ CREATE TABLE APPLICATION_OUTPUT
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_MOVEMENT SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(TASK_ID,OUTPUT_KEY),
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
@@ -258,6 +262,8 @@ CREATE TABLE NODE_OUTPUT
        REQUIRED_TO_COMMANDLINE SMALLINT,
        DATA_MOVEMENT SMALLINT,
        DATA_NAME_LOCATION VARCHAR(255),
+       SEARCH_QUERY VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
        PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql b/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
index 374db98..855c7cc 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
@@ -149,6 +149,8 @@ CREATE TABLE EXPERIMENT_OUTPUT
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_MOVEMENT SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -207,6 +209,8 @@ CREATE TABLE APPLICATION_OUTPUT
         IS_REQUIRED SMALLINT,
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(TASK_ID,OUTPUT_KEY),
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
@@ -239,6 +243,8 @@ CREATE TABLE NODE_OUTPUT
        REQUIRED_TO_COMMANDLINE SMALLINT,
        DATA_MOVEMENT SMALLINT,
        DATA_NAME_LOCATION VARCHAR(255),
+       SEARCH_QUERY VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
        PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/test/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/test/resources/registry-derby.sql b/modules/registry/airavata-jpa-registry/src/test/resources/registry-derby.sql
index 8f31a3f..8516950 100644
--- a/modules/registry/airavata-jpa-registry/src/test/resources/registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/test/resources/registry-derby.sql
@@ -149,6 +149,8 @@ CREATE TABLE EXPERIMENT_OUTPUT
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_MOVEMENT SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(EXPERIMENT_ID,OUTPUT_KEY),
         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -226,6 +228,8 @@ CREATE TABLE APPLICATION_OUTPUT
         REQUIRED_TO_COMMANDLINE SMALLINT,
         DATA_MOVEMENT SMALLINT,
         DATA_NAME_LOCATION VARCHAR(255),
+        SEARCH_QUERY VARCHAR(255),
+        APP_ARGUMENT VARCHAR(255),
         PRIMARY KEY(TASK_ID,OUTPUT_KEY),
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
@@ -258,6 +262,8 @@ CREATE TABLE NODE_OUTPUT
        REQUIRED_TO_COMMANDLINE SMALLINT,
        DATA_MOVEMENT SMALLINT,
        DATA_NAME_LOCATION VARCHAR(255),
+       SEARCH_QUERY VARCHAR(255),
+       APP_ARGUMENT VARCHAR(255),
        PRIMARY KEY(NODE_INSTANCE_ID,OUTPUT_KEY),
        FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
 );


[2/2] airavata git commit: adding application argument and search query to outputdata object

Posted by ch...@apache.org.
adding application argument and search query to outputdata object


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

Branch: refs/heads/master
Commit: dc22b7bebd72624de14d7b003a7af1607a15b763
Parents: f8b6adb
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Tue Jan 13 13:36:31 2015 -0500
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Tue Jan 13 13:36:31 2015 -0500

----------------------------------------------------------------------
 .../applicationInterfaceModel_types.cpp         |  60 +++-
 .../airavata/applicationInterfaceModel_types.h  |  48 ++-
 .../lib/airavata/experimentModel_types.cpp      |  12 +-
 .../lib/airavata/experimentModel_types.h        |  12 +-
 .../lib/airavata/messagingEvents_types.cpp      |   4 +-
 .../lib/airavata/messagingEvents_types.h        |   4 +-
 .../lib/airavata/workflowDataModel_types.cpp    |   4 +-
 .../lib/airavata/workflowDataModel_types.h      |   4 +-
 .../Model/AppCatalog/AppInterface/Types.php     |  74 +++-
 .../appinterface/OutputDataObjectType.java      | 346 +++++++++++++++----
 .../applicationInterfaceModel.thrift            |  10 +-
 .../data/impl/ApplicationInterfaceImpl.java     |   8 +-
 .../catalog/data/model/ApplicationOutput.java   |  20 ++
 .../resources/ApplicationOutputResource.java    |  20 ++
 .../catalog/data/util/AppCatalogJPAUtils.java   |   2 +
 .../data/util/AppCatalogThriftConversion.java   |   4 +-
 .../src/main/resources/appcatalog-derby.sql     |   2 +
 .../src/main/resources/appcatalog-mysql.sql     |   2 +
 .../src/test/resources/appcatalog-derby.sql     |   2 +
 .../registry/jpa/impl/ExperimentRegistry.java   |  28 +-
 .../registry/jpa/model/ApplicationOutput.java   |  20 ++
 .../registry/jpa/model/Experiment_Output.java   |  20 ++
 .../registry/jpa/model/NodeOutput.java          |  21 +-
 .../resources/ApplicationOutputResource.java    |  22 ++
 .../jpa/resources/ExperimentOutputResource.java |  23 ++
 .../jpa/resources/NodeOutputResource.java       |  23 ++
 .../registry/jpa/resources/Utils.java           |   6 +
 .../jpa/utils/ThriftDataModelConversion.java    |  12 +-
 .../src/main/resources/registry-derby.sql       |   6 +
 .../src/main/resources/registry-mysql.sql       |   6 +
 .../src/test/resources/registry-derby.sql       |   6 +
 31 files changed, 675 insertions(+), 156 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
index 0b7adf7..1991bda 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
@@ -252,8 +252,8 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* OutputDataObjectType::ascii_fingerprint = "E4852521B22B693B0FFBEBAE57AA4F8A";
-const uint8_t OutputDataObjectType::binary_fingerprint[16] = {0xE4,0x85,0x25,0x21,0xB2,0x2B,0x69,0x3B,0x0F,0xFB,0xEB,0xAE,0x57,0xAA,0x4F,0x8A};
+const char* OutputDataObjectType::ascii_fingerprint = "3259D81CA906AEEBC4D76ED47386A18B";
+const uint8_t OutputDataObjectType::binary_fingerprint[16] = {0x32,0x59,0xD8,0x1C,0xA9,0x06,0xAE,0xEB,0xC4,0xD7,0x6E,0xD4,0x73,0x86,0xA1,0x8B};
 
 uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -303,6 +303,14 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
         }
         break;
       case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationArgument);
+          this->__isset.applicationArgument = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_BOOL) {
           xfer += iprot->readBool(this->isRequired);
           this->__isset.isRequired = true;
@@ -310,7 +318,7 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
           xfer += iprot->skip(ftype);
         }
         break;
-      case 5:
+      case 6:
         if (ftype == ::apache::thrift::protocol::T_BOOL) {
           xfer += iprot->readBool(this->requiredToAddedToCommandLine);
           this->__isset.requiredToAddedToCommandLine = true;
@@ -318,7 +326,7 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_BOOL) {
           xfer += iprot->readBool(this->dataMovement);
           this->__isset.dataMovement = true;
@@ -326,10 +334,18 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
           xfer += iprot->skip(ftype);
         }
         break;
-      case 7:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->dataNameLocation);
-          this->__isset.dataNameLocation = true;
+          xfer += iprot->readString(this->location);
+          this->__isset.location = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->searchQuery);
+          this->__isset.searchQuery = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -366,24 +382,34 @@ uint32_t OutputDataObjectType::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeI32((int32_t)this->type);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.applicationArgument) {
+    xfer += oprot->writeFieldBegin("applicationArgument", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->applicationArgument);
+    xfer += oprot->writeFieldEnd();
+  }
   if (this->__isset.isRequired) {
-    xfer += oprot->writeFieldBegin("isRequired", ::apache::thrift::protocol::T_BOOL, 4);
+    xfer += oprot->writeFieldBegin("isRequired", ::apache::thrift::protocol::T_BOOL, 5);
     xfer += oprot->writeBool(this->isRequired);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.requiredToAddedToCommandLine) {
-    xfer += oprot->writeFieldBegin("requiredToAddedToCommandLine", ::apache::thrift::protocol::T_BOOL, 5);
+    xfer += oprot->writeFieldBegin("requiredToAddedToCommandLine", ::apache::thrift::protocol::T_BOOL, 6);
     xfer += oprot->writeBool(this->requiredToAddedToCommandLine);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.dataMovement) {
-    xfer += oprot->writeFieldBegin("dataMovement", ::apache::thrift::protocol::T_BOOL, 6);
+    xfer += oprot->writeFieldBegin("dataMovement", ::apache::thrift::protocol::T_BOOL, 7);
     xfer += oprot->writeBool(this->dataMovement);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.dataNameLocation) {
-    xfer += oprot->writeFieldBegin("dataNameLocation", ::apache::thrift::protocol::T_STRING, 7);
-    xfer += oprot->writeString(this->dataNameLocation);
+  if (this->__isset.location) {
+    xfer += oprot->writeFieldBegin("location", ::apache::thrift::protocol::T_STRING, 8);
+    xfer += oprot->writeString(this->location);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.searchQuery) {
+    xfer += oprot->writeFieldBegin("searchQuery", ::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeString(this->searchQuery);
     xfer += oprot->writeFieldEnd();
   }
   xfer += oprot->writeFieldStop();
@@ -396,15 +422,17 @@ void swap(OutputDataObjectType &a, OutputDataObjectType &b) {
   swap(a.name, b.name);
   swap(a.value, b.value);
   swap(a.type, b.type);
+  swap(a.applicationArgument, b.applicationArgument);
   swap(a.isRequired, b.isRequired);
   swap(a.requiredToAddedToCommandLine, b.requiredToAddedToCommandLine);
   swap(a.dataMovement, b.dataMovement);
-  swap(a.dataNameLocation, b.dataNameLocation);
+  swap(a.location, b.location);
+  swap(a.searchQuery, b.searchQuery);
   swap(a.__isset, b.__isset);
 }
 
-const char* ApplicationInterfaceDescription::ascii_fingerprint = "29D39A862EDAA850C0484542CD39F4A3";
-const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0x29,0xD3,0x9A,0x86,0x2E,0xDA,0xA8,0x50,0xC0,0x48,0x45,0x42,0xCD,0x39,0xF4,0xA3};
+const char* ApplicationInterfaceDescription::ascii_fingerprint = "C21011258B830B950ECA4A73DCB61630";
+const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0xC2,0x10,0x11,0x25,0x8B,0x83,0x0B,0x95,0x0E,0xCA,0x4A,0x73,0xDC,0xB6,0x16,0x30};
 
 uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
index 53fd2af..da49d62 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
@@ -200,22 +200,24 @@ class InputDataObjectType {
 void swap(InputDataObjectType &a, InputDataObjectType &b);
 
 typedef struct _OutputDataObjectType__isset {
-  _OutputDataObjectType__isset() : value(false), type(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), dataNameLocation(false) {}
+  _OutputDataObjectType__isset() : value(false), type(false), applicationArgument(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), location(false), searchQuery(false) {}
   bool value;
   bool type;
+  bool applicationArgument;
   bool isRequired;
   bool requiredToAddedToCommandLine;
   bool dataMovement;
-  bool dataNameLocation;
+  bool location;
+  bool searchQuery;
 } _OutputDataObjectType__isset;
 
 class OutputDataObjectType {
  public:
 
-  static const char* ascii_fingerprint; // = "E4852521B22B693B0FFBEBAE57AA4F8A";
-  static const uint8_t binary_fingerprint[16]; // = {0xE4,0x85,0x25,0x21,0xB2,0x2B,0x69,0x3B,0x0F,0xFB,0xEB,0xAE,0x57,0xAA,0x4F,0x8A};
+  static const char* ascii_fingerprint; // = "3259D81CA906AEEBC4D76ED47386A18B";
+  static const uint8_t binary_fingerprint[16]; // = {0x32,0x59,0xD8,0x1C,0xA9,0x06,0xAE,0xEB,0xC4,0xD7,0x6E,0xD4,0x73,0x86,0xA1,0x8B};
 
-  OutputDataObjectType() : name(), value(), type((DataType::type)0), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), dataNameLocation() {
+  OutputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), location(), searchQuery() {
   }
 
   virtual ~OutputDataObjectType() throw() {}
@@ -223,10 +225,12 @@ class OutputDataObjectType {
   std::string name;
   std::string value;
   DataType::type type;
+  std::string applicationArgument;
   bool isRequired;
   bool requiredToAddedToCommandLine;
   bool dataMovement;
-  std::string dataNameLocation;
+  std::string location;
+  std::string searchQuery;
 
   _OutputDataObjectType__isset __isset;
 
@@ -244,6 +248,11 @@ class OutputDataObjectType {
     __isset.type = true;
   }
 
+  void __set_applicationArgument(const std::string& val) {
+    applicationArgument = val;
+    __isset.applicationArgument = true;
+  }
+
   void __set_isRequired(const bool val) {
     isRequired = val;
     __isset.isRequired = true;
@@ -259,9 +268,14 @@ class OutputDataObjectType {
     __isset.dataMovement = true;
   }
 
-  void __set_dataNameLocation(const std::string& val) {
-    dataNameLocation = val;
-    __isset.dataNameLocation = true;
+  void __set_location(const std::string& val) {
+    location = val;
+    __isset.location = true;
+  }
+
+  void __set_searchQuery(const std::string& val) {
+    searchQuery = val;
+    __isset.searchQuery = true;
   }
 
   bool operator == (const OutputDataObjectType & rhs) const
@@ -276,6 +290,10 @@ class OutputDataObjectType {
       return false;
     else if (__isset.type && !(type == rhs.type))
       return false;
+    if (__isset.applicationArgument != rhs.__isset.applicationArgument)
+      return false;
+    else if (__isset.applicationArgument && !(applicationArgument == rhs.applicationArgument))
+      return false;
     if (__isset.isRequired != rhs.__isset.isRequired)
       return false;
     else if (__isset.isRequired && !(isRequired == rhs.isRequired))
@@ -288,9 +306,13 @@ class OutputDataObjectType {
       return false;
     else if (__isset.dataMovement && !(dataMovement == rhs.dataMovement))
       return false;
-    if (__isset.dataNameLocation != rhs.__isset.dataNameLocation)
+    if (__isset.location != rhs.__isset.location)
+      return false;
+    else if (__isset.location && !(location == rhs.location))
+      return false;
+    if (__isset.searchQuery != rhs.__isset.searchQuery)
       return false;
-    else if (__isset.dataNameLocation && !(dataNameLocation == rhs.dataNameLocation))
+    else if (__isset.searchQuery && !(searchQuery == rhs.searchQuery))
       return false;
     return true;
   }
@@ -318,8 +340,8 @@ typedef struct _ApplicationInterfaceDescription__isset {
 class ApplicationInterfaceDescription {
  public:
 
-  static const char* ascii_fingerprint; // = "29D39A862EDAA850C0484542CD39F4A3";
-  static const uint8_t binary_fingerprint[16]; // = {0x29,0xD3,0x9A,0x86,0x2E,0xDA,0xA8,0x50,0xC0,0x48,0x45,0x42,0xCD,0x39,0xF4,0xA3};
+  static const char* ascii_fingerprint; // = "C21011258B830B950ECA4A73DCB61630";
+  static const uint8_t binary_fingerprint[16]; // = {0xC2,0x10,0x11,0x25,0x8B,0x83,0x0B,0x95,0x0E,0xCA,0x4A,0x73,0xDC,0xB6,0x16,0x30};
 
   ApplicationInterfaceDescription() : applicationInterfaceId("DO_NOT_SET_AT_CLIENTS"), applicationName(), applicationDescription() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
index 1e9e667..c9ed366 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
@@ -1843,8 +1843,8 @@ void swap(DataTransferDetails &a, DataTransferDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* TaskDetails::ascii_fingerprint = "89E8B92F7318CCFA137F6774D833A5B2";
-const uint8_t TaskDetails::binary_fingerprint[16] = {0x89,0xE8,0xB9,0x2F,0x73,0x18,0xCC,0xFA,0x13,0x7F,0x67,0x74,0xD8,0x33,0xA5,0xB2};
+const char* TaskDetails::ascii_fingerprint = "6FF0ECF6FE53D283757211BADE659108";
+const uint8_t TaskDetails::binary_fingerprint[16] = {0x6F,0xF0,0xEC,0xF6,0xFE,0x53,0xD2,0x83,0x75,0x72,0x11,0xBA,0xDE,0x65,0x91,0x08};
 
 uint32_t TaskDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2190,8 +2190,8 @@ void swap(TaskDetails &a, TaskDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* WorkflowNodeDetails::ascii_fingerprint = "848AB686F7E85BB9EA788751E264556B";
-const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0x84,0x8A,0xB6,0x86,0xF7,0xE8,0x5B,0xB9,0xEA,0x78,0x87,0x51,0xE2,0x64,0x55,0x6B};
+const char* WorkflowNodeDetails::ascii_fingerprint = "D2AF8FCCA5B9C08220AE508BA2D7FB06";
+const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0xD2,0xAF,0x8F,0xCC,0xA5,0xB9,0xC0,0x82,0x20,0xAE,0x50,0x8B,0xA2,0xD7,0xFB,0x06};
 
 uint32_t WorkflowNodeDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2646,8 +2646,8 @@ void swap(ValidationResults &a, ValidationResults &b) {
   swap(a.validationResultList, b.validationResultList);
 }
 
-const char* Experiment::ascii_fingerprint = "38B6FB610EBD53743F28A960C25CCEC5";
-const uint8_t Experiment::binary_fingerprint[16] = {0x38,0xB6,0xFB,0x61,0x0E,0xBD,0x53,0x74,0x3F,0x28,0xA9,0x60,0xC2,0x5C,0xCE,0xC5};
+const char* Experiment::ascii_fingerprint = "4CE20099975A60F2FE0D6D1139972D1A";
+const uint8_t Experiment::binary_fingerprint[16] = {0x4C,0xE2,0x00,0x99,0x97,0x5A,0x60,0xF2,0xFE,0x0D,0x6D,0x11,0x39,0x97,0x2D,0x1A};
 
 uint32_t Experiment::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
index 2044f7a..b5e1e57 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
@@ -1294,8 +1294,8 @@ typedef struct _TaskDetails__isset {
 class TaskDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "89E8B92F7318CCFA137F6774D833A5B2";
-  static const uint8_t binary_fingerprint[16]; // = {0x89,0xE8,0xB9,0x2F,0x73,0x18,0xCC,0xFA,0x13,0x7F,0x67,0x74,0xD8,0x33,0xA5,0xB2};
+  static const char* ascii_fingerprint; // = "6FF0ECF6FE53D283757211BADE659108";
+  static const uint8_t binary_fingerprint[16]; // = {0x6F,0xF0,0xEC,0xF6,0xFE,0x53,0xD2,0x83,0x75,0x72,0x11,0xBA,0xDE,0x65,0x91,0x08};
 
   TaskDetails() : taskID("DO_NOT_SET_AT_CLIENTS"), creationTime(0), applicationId(), applicationVersion(), applicationDeploymentId() {
   }
@@ -1473,8 +1473,8 @@ typedef struct _WorkflowNodeDetails__isset {
 class WorkflowNodeDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "848AB686F7E85BB9EA788751E264556B";
-  static const uint8_t binary_fingerprint[16]; // = {0x84,0x8A,0xB6,0x86,0xF7,0xE8,0x5B,0xB9,0xEA,0x78,0x87,0x51,0xE2,0x64,0x55,0x6B};
+  static const char* ascii_fingerprint; // = "D2AF8FCCA5B9C08220AE508BA2D7FB06";
+  static const uint8_t binary_fingerprint[16]; // = {0xD2,0xAF,0x8F,0xCC,0xA5,0xB9,0xC0,0x82,0x20,0xAE,0x50,0x8B,0xA2,0xD7,0xFB,0x06};
 
   WorkflowNodeDetails() : nodeInstanceId("DO_NOT_SET_AT_CLIENTS"), creationTime(0), nodeName("SINGLE_APP_NODE"), executionUnit((ExecutionUnit::type)1), executionUnitData() {
     executionUnit = (ExecutionUnit::type)1;
@@ -1712,8 +1712,8 @@ typedef struct _Experiment__isset {
 class Experiment {
  public:
 
-  static const char* ascii_fingerprint; // = "38B6FB610EBD53743F28A960C25CCEC5";
-  static const uint8_t binary_fingerprint[16]; // = {0x38,0xB6,0xFB,0x61,0x0E,0xBD,0x53,0x74,0x3F,0x28,0xA9,0x60,0xC2,0x5C,0xCE,0xC5};
+  static const char* ascii_fingerprint; // = "4CE20099975A60F2FE0D6D1139972D1A";
+  static const uint8_t binary_fingerprint[16]; // = {0x4C,0xE2,0x00,0x99,0x97,0x5A,0x60,0xF2,0xFE,0x0D,0x6D,0x11,0x39,0x97,0x2D,0x1A};
 
   Experiment() : experimentID("DO_NOT_SET_AT_CLIENTS"), projectID("DEFAULT"), creationTime(0), userName(), name(), description(), applicationId(), applicationVersion(), workflowTemplateId(), workflowTemplateVersion(), workflowExecutionInstanceId() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
index 4904dc1..1f839f3 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
@@ -607,8 +607,8 @@ void swap(TaskStatusChangeRequestEvent &a, TaskStatusChangeRequestEvent &b) {
   swap(a.taskIdentity, b.taskIdentity);
 }
 
-const char* TaskOutputChangeEvent::ascii_fingerprint = "F136B59B363FC26FD71A6D7EE9996A6B";
-const uint8_t TaskOutputChangeEvent::binary_fingerprint[16] = {0xF1,0x36,0xB5,0x9B,0x36,0x3F,0xC2,0x6F,0xD7,0x1A,0x6D,0x7E,0xE9,0x99,0x6A,0x6B};
+const char* TaskOutputChangeEvent::ascii_fingerprint = "C7C71D05D69F7D8C4A11C9E432FF5A51";
+const uint8_t TaskOutputChangeEvent::binary_fingerprint[16] = {0xC7,0xC7,0x1D,0x05,0xD6,0x9F,0x7D,0x8C,0x4A,0x11,0xC9,0xE4,0x32,0xFF,0x5A,0x51};
 
 uint32_t TaskOutputChangeEvent::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
index 5dba2b0..572a8bd 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
@@ -354,8 +354,8 @@ void swap(TaskStatusChangeRequestEvent &a, TaskStatusChangeRequestEvent &b);
 class TaskOutputChangeEvent {
  public:
 
-  static const char* ascii_fingerprint; // = "F136B59B363FC26FD71A6D7EE9996A6B";
-  static const uint8_t binary_fingerprint[16]; // = {0xF1,0x36,0xB5,0x9B,0x36,0x3F,0xC2,0x6F,0xD7,0x1A,0x6D,0x7E,0xE9,0x99,0x6A,0x6B};
+  static const char* ascii_fingerprint; // = "C7C71D05D69F7D8C4A11C9E432FF5A51";
+  static const uint8_t binary_fingerprint[16]; // = {0xC7,0xC7,0x1D,0x05,0xD6,0x9F,0x7D,0x8C,0x4A,0x11,0xC9,0xE4,0x32,0xFF,0x5A,0x51};
 
   TaskOutputChangeEvent() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
index e6e7d28..1f8f97e 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
@@ -27,8 +27,8 @@
 
 
 
-const char* Workflow::ascii_fingerprint = "3C0FB89A672FDE904AE1E4DD71A863C6";
-const uint8_t Workflow::binary_fingerprint[16] = {0x3C,0x0F,0xB8,0x9A,0x67,0x2F,0xDE,0x90,0x4A,0xE1,0xE4,0xDD,0x71,0xA8,0x63,0xC6};
+const char* Workflow::ascii_fingerprint = "5BEAC53013828D81DABDECEEE0E170C2";
+const uint8_t Workflow::binary_fingerprint[16] = {0x5B,0xEA,0xC5,0x30,0x13,0x82,0x8D,0x81,0xDA,0xBD,0xEC,0xEE,0xE0,0xE1,0x70,0xC2};
 
 uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
index 1911bc6..8b1a774 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
@@ -46,8 +46,8 @@ typedef struct _Workflow__isset {
 class Workflow {
  public:
 
-  static const char* ascii_fingerprint; // = "3C0FB89A672FDE904AE1E4DD71A863C6";
-  static const uint8_t binary_fingerprint[16]; // = {0x3C,0x0F,0xB8,0x9A,0x67,0x2F,0xDE,0x90,0x4A,0xE1,0xE4,0xDD,0x71,0xA8,0x63,0xC6};
+  static const char* ascii_fingerprint; // = "5BEAC53013828D81DABDECEEE0E170C2";
+  static const uint8_t binary_fingerprint[16]; // = {0x5B,0xEA,0xC5,0x30,0x13,0x82,0x8D,0x81,0xDA,0xBD,0xEC,0xEE,0xE0,0xE1,0x70,0xC2};
 
   Workflow() : templateId("DO_NOT_SET_AT_CLIENTS"), name(), graph(), image() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
index 36031db..e6748f4 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
@@ -312,10 +312,12 @@ class OutputDataObjectType {
   public $name = null;
   public $value = null;
   public $type = null;
+  public $applicationArgument = null;
   public $isRequired = null;
   public $requiredToAddedToCommandLine = null;
   public $dataMovement = null;
-  public $dataNameLocation = null;
+  public $location = null;
+  public $searchQuery = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -333,19 +335,27 @@ class OutputDataObjectType {
           'type' => TType::I32,
           ),
         4 => array(
+          'var' => 'applicationArgument',
+          'type' => TType::STRING,
+          ),
+        5 => array(
           'var' => 'isRequired',
           'type' => TType::BOOL,
           ),
-        5 => array(
+        6 => array(
           'var' => 'requiredToAddedToCommandLine',
           'type' => TType::BOOL,
           ),
-        6 => array(
+        7 => array(
           'var' => 'dataMovement',
           'type' => TType::BOOL,
           ),
-        7 => array(
-          'var' => 'dataNameLocation',
+        8 => array(
+          'var' => 'location',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'searchQuery',
           'type' => TType::STRING,
           ),
         );
@@ -360,6 +370,9 @@ class OutputDataObjectType {
       if (isset($vals['type'])) {
         $this->type = $vals['type'];
       }
+      if (isset($vals['applicationArgument'])) {
+        $this->applicationArgument = $vals['applicationArgument'];
+      }
       if (isset($vals['isRequired'])) {
         $this->isRequired = $vals['isRequired'];
       }
@@ -369,8 +382,11 @@ class OutputDataObjectType {
       if (isset($vals['dataMovement'])) {
         $this->dataMovement = $vals['dataMovement'];
       }
-      if (isset($vals['dataNameLocation'])) {
-        $this->dataNameLocation = $vals['dataNameLocation'];
+      if (isset($vals['location'])) {
+        $this->location = $vals['location'];
+      }
+      if (isset($vals['searchQuery'])) {
+        $this->searchQuery = $vals['searchQuery'];
       }
     }
   }
@@ -416,29 +432,43 @@ class OutputDataObjectType {
           }
           break;
         case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationArgument);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->isRequired);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 5:
+        case 6:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->requiredToAddedToCommandLine);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 6:
+        case 7:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->dataMovement);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 7:
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->location);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->dataNameLocation);
+            $xfer += $input->readString($this->searchQuery);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -471,24 +501,34 @@ class OutputDataObjectType {
       $xfer += $output->writeI32($this->type);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->applicationArgument !== null) {
+      $xfer += $output->writeFieldBegin('applicationArgument', TType::STRING, 4);
+      $xfer += $output->writeString($this->applicationArgument);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->isRequired !== null) {
-      $xfer += $output->writeFieldBegin('isRequired', TType::BOOL, 4);
+      $xfer += $output->writeFieldBegin('isRequired', TType::BOOL, 5);
       $xfer += $output->writeBool($this->isRequired);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->requiredToAddedToCommandLine !== null) {
-      $xfer += $output->writeFieldBegin('requiredToAddedToCommandLine', TType::BOOL, 5);
+      $xfer += $output->writeFieldBegin('requiredToAddedToCommandLine', TType::BOOL, 6);
       $xfer += $output->writeBool($this->requiredToAddedToCommandLine);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->dataMovement !== null) {
-      $xfer += $output->writeFieldBegin('dataMovement', TType::BOOL, 6);
+      $xfer += $output->writeFieldBegin('dataMovement', TType::BOOL, 7);
       $xfer += $output->writeBool($this->dataMovement);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->dataNameLocation !== null) {
-      $xfer += $output->writeFieldBegin('dataNameLocation', TType::STRING, 7);
-      $xfer += $output->writeString($this->dataNameLocation);
+    if ($this->location !== null) {
+      $xfer += $output->writeFieldBegin('location', TType::STRING, 8);
+      $xfer += $output->writeString($this->location);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->searchQuery !== null) {
+      $xfer += $output->writeFieldBegin('searchQuery', TType::STRING, 9);
+      $xfer += $output->writeString($this->searchQuery);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
index d432d09..3f13e52 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
@@ -81,10 +81,12 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("value", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)3);
-  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)4);
-  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)5);
-  private static final org.apache.thrift.protocol.TField DATA_MOVEMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("dataMovement", org.apache.thrift.protocol.TType.BOOL, (short)6);
-  private static final org.apache.thrift.protocol.TField DATA_NAME_LOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("dataNameLocation", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField APPLICATION_ARGUMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationArgument", org.apache.thrift.protocol.TType.STRING, (short)4);
+  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)5);
+  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)6);
+  private static final org.apache.thrift.protocol.TField DATA_MOVEMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("dataMovement", org.apache.thrift.protocol.TType.BOOL, (short)7);
+  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 Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -95,10 +97,12 @@ import org.slf4j.LoggerFactory;
   private String name; // required
   private String value; // optional
   private DataType type; // optional
+  private String applicationArgument; // optional
   private boolean isRequired; // optional
   private boolean requiredToAddedToCommandLine; // optional
   private boolean dataMovement; // optional
-  private String dataNameLocation; // optional
+  private String location; // optional
+  private String searchQuery; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -109,10 +113,12 @@ import org.slf4j.LoggerFactory;
      * @see DataType
      */
     TYPE((short)3, "type"),
-    IS_REQUIRED((short)4, "isRequired"),
-    REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)5, "requiredToAddedToCommandLine"),
-    DATA_MOVEMENT((short)6, "dataMovement"),
-    DATA_NAME_LOCATION((short)7, "dataNameLocation");
+    APPLICATION_ARGUMENT((short)4, "applicationArgument"),
+    IS_REQUIRED((short)5, "isRequired"),
+    REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)6, "requiredToAddedToCommandLine"),
+    DATA_MOVEMENT((short)7, "dataMovement"),
+    LOCATION((short)8, "location"),
+    SEARCH_QUERY((short)9, "searchQuery");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -133,14 +139,18 @@ import org.slf4j.LoggerFactory;
           return VALUE;
         case 3: // TYPE
           return TYPE;
-        case 4: // IS_REQUIRED
+        case 4: // APPLICATION_ARGUMENT
+          return APPLICATION_ARGUMENT;
+        case 5: // IS_REQUIRED
           return IS_REQUIRED;
-        case 5: // REQUIRED_TO_ADDED_TO_COMMAND_LINE
+        case 6: // REQUIRED_TO_ADDED_TO_COMMAND_LINE
           return REQUIRED_TO_ADDED_TO_COMMAND_LINE;
-        case 6: // DATA_MOVEMENT
+        case 7: // DATA_MOVEMENT
           return DATA_MOVEMENT;
-        case 7: // DATA_NAME_LOCATION
-          return DATA_NAME_LOCATION;
+        case 8: // LOCATION
+          return LOCATION;
+        case 9: // SEARCH_QUERY
+          return SEARCH_QUERY;
         default:
           return null;
       }
@@ -185,7 +195,7 @@ import org.slf4j.LoggerFactory;
   private static final int __REQUIREDTOADDEDTOCOMMANDLINE_ISSET_ID = 1;
   private static final int __DATAMOVEMENT_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_MOVEMENT,_Fields.DATA_NAME_LOCATION};
+  private _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};
   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);
@@ -195,13 +205,17 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, DataType.class)));
+    tmpMap.put(_Fields.APPLICATION_ARGUMENT, new org.apache.thrift.meta_data.FieldMetaData("applicationArgument", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.IS_REQUIRED, new org.apache.thrift.meta_data.FieldMetaData("isRequired", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE, new org.apache.thrift.meta_data.FieldMetaData("requiredToAddedToCommandLine", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.DATA_MOVEMENT, new org.apache.thrift.meta_data.FieldMetaData("dataMovement", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
-    tmpMap.put(_Fields.DATA_NAME_LOCATION, new org.apache.thrift.meta_data.FieldMetaData("dataNameLocation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.LOCATION, new org.apache.thrift.meta_data.FieldMetaData("location", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SEARCH_QUERY, new org.apache.thrift.meta_data.FieldMetaData("searchQuery", 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);
@@ -231,11 +245,17 @@ import org.slf4j.LoggerFactory;
     if (other.isSetType()) {
       this.type = other.type;
     }
+    if (other.isSetApplicationArgument()) {
+      this.applicationArgument = other.applicationArgument;
+    }
     this.isRequired = other.isRequired;
     this.requiredToAddedToCommandLine = other.requiredToAddedToCommandLine;
     this.dataMovement = other.dataMovement;
-    if (other.isSetDataNameLocation()) {
-      this.dataNameLocation = other.dataNameLocation;
+    if (other.isSetLocation()) {
+      this.location = other.location;
+    }
+    if (other.isSetSearchQuery()) {
+      this.searchQuery = other.searchQuery;
     }
   }
 
@@ -248,13 +268,15 @@ import org.slf4j.LoggerFactory;
     this.name = null;
     this.value = null;
     this.type = null;
+    this.applicationArgument = null;
     setIsRequiredIsSet(false);
     this.isRequired = false;
     setRequiredToAddedToCommandLineIsSet(false);
     this.requiredToAddedToCommandLine = false;
     setDataMovementIsSet(false);
     this.dataMovement = false;
-    this.dataNameLocation = null;
+    this.location = null;
+    this.searchQuery = null;
   }
 
   public String getName() {
@@ -334,6 +356,29 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  public String getApplicationArgument() {
+    return this.applicationArgument;
+  }
+
+  public void setApplicationArgument(String applicationArgument) {
+    this.applicationArgument = applicationArgument;
+  }
+
+  public void unsetApplicationArgument() {
+    this.applicationArgument = null;
+  }
+
+  /** Returns true if field applicationArgument is set (has been assigned a value) and false otherwise */
+  public boolean isSetApplicationArgument() {
+    return this.applicationArgument != null;
+  }
+
+  public void setApplicationArgumentIsSet(boolean value) {
+    if (!value) {
+      this.applicationArgument = null;
+    }
+  }
+
   public boolean isIsRequired() {
     return this.isRequired;
   }
@@ -400,26 +445,49 @@ import org.slf4j.LoggerFactory;
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATAMOVEMENT_ISSET_ID, value);
   }
 
-  public String getDataNameLocation() {
-    return this.dataNameLocation;
+  public String getLocation() {
+    return this.location;
+  }
+
+  public void setLocation(String location) {
+    this.location = location;
+  }
+
+  public void unsetLocation() {
+    this.location = null;
+  }
+
+  /** Returns true if field location is set (has been assigned a value) and false otherwise */
+  public boolean isSetLocation() {
+    return this.location != null;
+  }
+
+  public void setLocationIsSet(boolean value) {
+    if (!value) {
+      this.location = null;
+    }
+  }
+
+  public String getSearchQuery() {
+    return this.searchQuery;
   }
 
-  public void setDataNameLocation(String dataNameLocation) {
-    this.dataNameLocation = dataNameLocation;
+  public void setSearchQuery(String searchQuery) {
+    this.searchQuery = searchQuery;
   }
 
-  public void unsetDataNameLocation() {
-    this.dataNameLocation = null;
+  public void unsetSearchQuery() {
+    this.searchQuery = null;
   }
 
-  /** Returns true if field dataNameLocation is set (has been assigned a value) and false otherwise */
-  public boolean isSetDataNameLocation() {
-    return this.dataNameLocation != null;
+  /** Returns true if field searchQuery is set (has been assigned a value) and false otherwise */
+  public boolean isSetSearchQuery() {
+    return this.searchQuery != null;
   }
 
-  public void setDataNameLocationIsSet(boolean value) {
+  public void setSearchQueryIsSet(boolean value) {
     if (!value) {
-      this.dataNameLocation = null;
+      this.searchQuery = null;
     }
   }
 
@@ -449,6 +517,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case APPLICATION_ARGUMENT:
+      if (value == null) {
+        unsetApplicationArgument();
+      } else {
+        setApplicationArgument((String)value);
+      }
+      break;
+
     case IS_REQUIRED:
       if (value == null) {
         unsetIsRequired();
@@ -473,11 +549,19 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case DATA_NAME_LOCATION:
+    case LOCATION:
+      if (value == null) {
+        unsetLocation();
+      } else {
+        setLocation((String)value);
+      }
+      break;
+
+    case SEARCH_QUERY:
       if (value == null) {
-        unsetDataNameLocation();
+        unsetSearchQuery();
       } else {
-        setDataNameLocation((String)value);
+        setSearchQuery((String)value);
       }
       break;
 
@@ -495,6 +579,9 @@ import org.slf4j.LoggerFactory;
     case TYPE:
       return getType();
 
+    case APPLICATION_ARGUMENT:
+      return getApplicationArgument();
+
     case IS_REQUIRED:
       return Boolean.valueOf(isIsRequired());
 
@@ -504,8 +591,11 @@ import org.slf4j.LoggerFactory;
     case DATA_MOVEMENT:
       return Boolean.valueOf(isDataMovement());
 
-    case DATA_NAME_LOCATION:
-      return getDataNameLocation();
+    case LOCATION:
+      return getLocation();
+
+    case SEARCH_QUERY:
+      return getSearchQuery();
 
     }
     throw new IllegalStateException();
@@ -524,14 +614,18 @@ import org.slf4j.LoggerFactory;
       return isSetValue();
     case TYPE:
       return isSetType();
+    case APPLICATION_ARGUMENT:
+      return isSetApplicationArgument();
     case IS_REQUIRED:
       return isSetIsRequired();
     case REQUIRED_TO_ADDED_TO_COMMAND_LINE:
       return isSetRequiredToAddedToCommandLine();
     case DATA_MOVEMENT:
       return isSetDataMovement();
-    case DATA_NAME_LOCATION:
-      return isSetDataNameLocation();
+    case LOCATION:
+      return isSetLocation();
+    case SEARCH_QUERY:
+      return isSetSearchQuery();
     }
     throw new IllegalStateException();
   }
@@ -576,6 +670,15 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
+    boolean this_present_applicationArgument = true && this.isSetApplicationArgument();
+    boolean that_present_applicationArgument = true && that.isSetApplicationArgument();
+    if (this_present_applicationArgument || that_present_applicationArgument) {
+      if (!(this_present_applicationArgument && that_present_applicationArgument))
+        return false;
+      if (!this.applicationArgument.equals(that.applicationArgument))
+        return false;
+    }
+
     boolean this_present_isRequired = true && this.isSetIsRequired();
     boolean that_present_isRequired = true && that.isSetIsRequired();
     if (this_present_isRequired || that_present_isRequired) {
@@ -603,12 +706,21 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_dataNameLocation = true && this.isSetDataNameLocation();
-    boolean that_present_dataNameLocation = true && that.isSetDataNameLocation();
-    if (this_present_dataNameLocation || that_present_dataNameLocation) {
-      if (!(this_present_dataNameLocation && that_present_dataNameLocation))
+    boolean this_present_location = true && this.isSetLocation();
+    boolean that_present_location = true && that.isSetLocation();
+    if (this_present_location || that_present_location) {
+      if (!(this_present_location && that_present_location))
+        return false;
+      if (!this.location.equals(that.location))
+        return false;
+    }
+
+    boolean this_present_searchQuery = true && this.isSetSearchQuery();
+    boolean that_present_searchQuery = true && that.isSetSearchQuery();
+    if (this_present_searchQuery || that_present_searchQuery) {
+      if (!(this_present_searchQuery && that_present_searchQuery))
         return false;
-      if (!this.dataNameLocation.equals(that.dataNameLocation))
+      if (!this.searchQuery.equals(that.searchQuery))
         return false;
     }
 
@@ -658,6 +770,16 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetApplicationArgument()).compareTo(other.isSetApplicationArgument());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetApplicationArgument()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationArgument, other.applicationArgument);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetIsRequired()).compareTo(other.isSetIsRequired());
     if (lastComparison != 0) {
       return lastComparison;
@@ -688,12 +810,22 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetDataNameLocation()).compareTo(other.isSetDataNameLocation());
+    lastComparison = Boolean.valueOf(isSetLocation()).compareTo(other.isSetLocation());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLocation()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.location, other.location);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSearchQuery()).compareTo(other.isSetSearchQuery());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDataNameLocation()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataNameLocation, other.dataNameLocation);
+    if (isSetSearchQuery()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.searchQuery, other.searchQuery);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -745,6 +877,16 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
+    if (isSetApplicationArgument()) {
+      if (!first) sb.append(", ");
+      sb.append("applicationArgument:");
+      if (this.applicationArgument == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.applicationArgument);
+      }
+      first = false;
+    }
     if (isSetIsRequired()) {
       if (!first) sb.append(", ");
       sb.append("isRequired:");
@@ -763,13 +905,23 @@ import org.slf4j.LoggerFactory;
       sb.append(this.dataMovement);
       first = false;
     }
-    if (isSetDataNameLocation()) {
+    if (isSetLocation()) {
       if (!first) sb.append(", ");
-      sb.append("dataNameLocation:");
-      if (this.dataNameLocation == null) {
+      sb.append("location:");
+      if (this.location == null) {
         sb.append("null");
       } else {
-        sb.append(this.dataNameLocation);
+        sb.append(this.location);
+      }
+      first = false;
+    }
+    if (isSetSearchQuery()) {
+      if (!first) sb.append(", ");
+      sb.append("searchQuery:");
+      if (this.searchQuery == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.searchQuery);
       }
       first = false;
     }
@@ -846,7 +998,15 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // IS_REQUIRED
+          case 4: // APPLICATION_ARGUMENT
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.applicationArgument = iprot.readString();
+              struct.setApplicationArgumentIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // IS_REQUIRED
             if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
               struct.isRequired = iprot.readBool();
               struct.setIsRequiredIsSet(true);
@@ -854,7 +1014,7 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 5: // REQUIRED_TO_ADDED_TO_COMMAND_LINE
+          case 6: // REQUIRED_TO_ADDED_TO_COMMAND_LINE
             if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
               struct.requiredToAddedToCommandLine = iprot.readBool();
               struct.setRequiredToAddedToCommandLineIsSet(true);
@@ -862,7 +1022,7 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // DATA_MOVEMENT
+          case 7: // DATA_MOVEMENT
             if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
               struct.dataMovement = iprot.readBool();
               struct.setDataMovementIsSet(true);
@@ -870,10 +1030,18 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 7: // DATA_NAME_LOCATION
+          case 8: // LOCATION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.location = iprot.readString();
+              struct.setLocationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // SEARCH_QUERY
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.dataNameLocation = iprot.readString();
-              struct.setDataNameLocationIsSet(true);
+              struct.searchQuery = iprot.readString();
+              struct.setSearchQueryIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -910,6 +1078,13 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
+      if (struct.applicationArgument != null) {
+        if (struct.isSetApplicationArgument()) {
+          oprot.writeFieldBegin(APPLICATION_ARGUMENT_FIELD_DESC);
+          oprot.writeString(struct.applicationArgument);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.isSetIsRequired()) {
         oprot.writeFieldBegin(IS_REQUIRED_FIELD_DESC);
         oprot.writeBool(struct.isRequired);
@@ -925,10 +1100,17 @@ import org.slf4j.LoggerFactory;
         oprot.writeBool(struct.dataMovement);
         oprot.writeFieldEnd();
       }
-      if (struct.dataNameLocation != null) {
-        if (struct.isSetDataNameLocation()) {
-          oprot.writeFieldBegin(DATA_NAME_LOCATION_FIELD_DESC);
-          oprot.writeString(struct.dataNameLocation);
+      if (struct.location != null) {
+        if (struct.isSetLocation()) {
+          oprot.writeFieldBegin(LOCATION_FIELD_DESC);
+          oprot.writeString(struct.location);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.searchQuery != null) {
+        if (struct.isSetSearchQuery()) {
+          oprot.writeFieldBegin(SEARCH_QUERY_FIELD_DESC);
+          oprot.writeString(struct.searchQuery);
           oprot.writeFieldEnd();
         }
       }
@@ -957,25 +1139,34 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetType()) {
         optionals.set(1);
       }
-      if (struct.isSetIsRequired()) {
+      if (struct.isSetApplicationArgument()) {
         optionals.set(2);
       }
-      if (struct.isSetRequiredToAddedToCommandLine()) {
+      if (struct.isSetIsRequired()) {
         optionals.set(3);
       }
-      if (struct.isSetDataMovement()) {
+      if (struct.isSetRequiredToAddedToCommandLine()) {
         optionals.set(4);
       }
-      if (struct.isSetDataNameLocation()) {
+      if (struct.isSetDataMovement()) {
         optionals.set(5);
       }
-      oprot.writeBitSet(optionals, 6);
+      if (struct.isSetLocation()) {
+        optionals.set(6);
+      }
+      if (struct.isSetSearchQuery()) {
+        optionals.set(7);
+      }
+      oprot.writeBitSet(optionals, 8);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
       if (struct.isSetType()) {
         oprot.writeI32(struct.type.getValue());
       }
+      if (struct.isSetApplicationArgument()) {
+        oprot.writeString(struct.applicationArgument);
+      }
       if (struct.isSetIsRequired()) {
         oprot.writeBool(struct.isRequired);
       }
@@ -985,8 +1176,11 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetDataMovement()) {
         oprot.writeBool(struct.dataMovement);
       }
-      if (struct.isSetDataNameLocation()) {
-        oprot.writeString(struct.dataNameLocation);
+      if (struct.isSetLocation()) {
+        oprot.writeString(struct.location);
+      }
+      if (struct.isSetSearchQuery()) {
+        oprot.writeString(struct.searchQuery);
       }
     }
 
@@ -995,7 +1189,7 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(6);
+      BitSet incoming = iprot.readBitSet(8);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1005,20 +1199,28 @@ import org.slf4j.LoggerFactory;
         struct.setTypeIsSet(true);
       }
       if (incoming.get(2)) {
+        struct.applicationArgument = iprot.readString();
+        struct.setApplicationArgumentIsSet(true);
+      }
+      if (incoming.get(3)) {
         struct.isRequired = iprot.readBool();
         struct.setIsRequiredIsSet(true);
       }
-      if (incoming.get(3)) {
+      if (incoming.get(4)) {
         struct.requiredToAddedToCommandLine = iprot.readBool();
         struct.setRequiredToAddedToCommandLineIsSet(true);
       }
-      if (incoming.get(4)) {
+      if (incoming.get(5)) {
         struct.dataMovement = iprot.readBool();
         struct.setDataMovementIsSet(true);
       }
-      if (incoming.get(5)) {
-        struct.dataNameLocation = iprot.readString();
-        struct.setDataNameLocationIsSet(true);
+      if (incoming.get(6)) {
+        struct.location = iprot.readString();
+        struct.setLocationIsSet(true);
+      }
+      if (incoming.get(7)) {
+        struct.searchQuery = iprot.readString();
+        struct.setSearchQueryIsSet(true);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
index 386dba2..baeab2a 100644
--- a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
@@ -113,10 +113,12 @@ struct OutputDataObjectType {
     1: required string name,
     2: optional string value,
     3: optional DataType type,
-    4: optional bool isRequired,
-    5: optional bool requiredToAddedToCommandLine,
-    6: optional bool dataMovement,
-    7: optional string dataNameLocation
+    4: optional string applicationArgument,
+    5: optional bool isRequired,
+    6: optional bool requiredToAddedToCommandLine,
+    7: optional bool dataMovement,
+    8: optional string location,
+    9: optional string searchQuery
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
index 850e18c..889aeb6 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
@@ -122,7 +122,9 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     outputResource.setRequired(output.isIsRequired());
                     outputResource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                     outputResource.setDataMovement(output.isDataMovement());
-                    outputResource.setDataNameLocation(output.getDataNameLocation());
+                    outputResource.setDataNameLocation(output.getLocation());
+                    outputResource.setAppArgument(output.getApplicationArgument());
+                    outputResource.setSearchQuery(output.getSearchQuery());
                     outputResource.save();
                 }
             }
@@ -255,7 +257,9 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     outputResource.setRequired(output.isIsRequired());
                     outputResource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                     outputResource.setDataMovement(output.isDataMovement());
-                    outputResource.setDataNameLocation(output.getDataNameLocation());
+                    outputResource.setDataNameLocation(output.getLocation());
+                    outputResource.setAppArgument(output.getApplicationArgument());
+                    outputResource.setSearchQuery(output.getSearchQuery());
                     outputResource.save();
                 }
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
index 2115d92..b2cb867 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
@@ -47,6 +47,10 @@ public class ApplicationOutput implements Serializable {
     private boolean dataMovement;
     @Column(name = "DATA_NAME_LOCATION")
     private String dataNameLocation;
+    @Column(name = "SEARCH_QUERY")
+    private String searchQuery;
+    @Column(name = "APP_ARGUMENT")
+    private String applicationArgument;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -123,4 +127,20 @@ public class ApplicationOutput implements Serializable {
     public void setDataNameLocation(String dataNameLocation) {
         this.dataNameLocation = dataNameLocation;
     }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
index 2a93354..feac711 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
@@ -48,6 +48,8 @@ public class ApplicationOutputResource extends AbstractResource {
     private boolean dataMovement;
     private String dataNameLocation;
     private boolean requiredToCMD;
+    private String searchQuery;
+    private String appArgument;
 
     private AppInterfaceResource appInterfaceResource;
 
@@ -291,6 +293,8 @@ public class ApplicationOutputResource extends AbstractResource {
             applicationOutput.setRequiredToCMD(requiredToCMD);
             applicationOutput.setDataMovement(dataMovement);
             applicationOutput.setDataNameLocation(dataNameLocation);
+            applicationOutput.setSearchQuery(searchQuery);
+            applicationOutput.setApplicationArgument(appArgument);
             em.merge(applicationOutput);
             em.getTransaction().commit();
             em.close();
@@ -409,4 +413,20 @@ public class ApplicationOutputResource extends AbstractResource {
     public void setRequiredToCMD(boolean requiredToCMD) {
         this.requiredToCMD = requiredToCMD;
     }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index e60e0d7..e564cda 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -805,6 +805,8 @@ public class AppCatalogJPAUtils {
             resource.setRequiredToCMD(o.isRequiredToCMD());
             resource.setDataMovement(o.isDataMovement());
             resource.setDataNameLocation(o.getDataNameLocation());
+            resource.setSearchQuery(o.getSearchQuery());
+            resource.setAppArgument(o.getApplicationArgument());
             resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
         }
         return resource;

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index 87083a9..6757da0 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -583,7 +583,9 @@ public class AppCatalogThriftConversion {
         outputDataObjectType.setIsRequired(output.getRequired());
         outputDataObjectType.setRequiredToAddedToCommandLine(output.getRequiredToCMD());
         outputDataObjectType.setDataMovement(output.isDataMovement());
-        outputDataObjectType.setDataNameLocation(output.getDataNameLocation());
+        outputDataObjectType.setLocation(output.getDataNameLocation());
+        outputDataObjectType.setSearchQuery(output.getSearchQuery());
+        outputDataObjectType.setApplicationArgument(output.getAppArgument());
         return outputDataObjectType;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
index 0bba153..7a1bb57 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
@@ -292,6 +292,8 @@ CREATE TABLE APPLICATION_OUTPUT
          REQUIRED_TO_COMMANDLINE SMALLINT,
          DATA_MOVEMENT SMALLINT,
          DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
index e2893d3..b992959 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
@@ -291,6 +291,8 @@ CREATE TABLE APPLICATION_OUTPUT
          REQUIRED_TO_COMMANDLINE SMALLINT,
          DATA_MOVEMENT SMALLINT,
          DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
index 0bba153..7a1bb57 100644
--- a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
@@ -292,6 +292,8 @@ CREATE TABLE APPLICATION_OUTPUT
          REQUIRED_TO_COMMANDLINE SMALLINT,
          DATA_MOVEMENT SMALLINT,
          DATA_NAME_LOCATION VARCHAR(255),
+         SEARCH_QUERY VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 10821bd..fc5bb9f 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -326,7 +326,9 @@ public class ExperimentRegistry {
                 resource.setRequired(output.isIsRequired());
                 resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                 resource.setDataMovement(output.isDataMovement());
-                resource.setDataNameLocation(output.getDataNameLocation());
+                resource.setDataNameLocation(output.getLocation());
+                resource.setAppArgument(output.getApplicationArgument());
+                resource.setSearchQuery(output.getSearchQuery());
 //                resource.setMetadata(output.get());
                 resource.save();
             }
@@ -353,7 +355,9 @@ public class ExperimentRegistry {
                         resource.setRequired(output.isIsRequired());
                         resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                         resource.setDataMovement(output.isDataMovement());
-                        resource.setDataNameLocation(output.getDataNameLocation());
+                        resource.setDataNameLocation(output.getLocation());
+                        resource.setAppArgument(output.getApplicationArgument());
+                        resource.setSearchQuery(output.getSearchQuery());
 //                        resource.setMetadata(output.getMetaData());
                         resource.save();
                     }
@@ -380,7 +384,9 @@ public class ExperimentRegistry {
                 resource.setRequired(output.isIsRequired());
                 resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                 resource.setDataMovement(output.isDataMovement());
-                resource.setDataNameLocation(output.getDataNameLocation());
+                resource.setDataNameLocation(output.getLocation());
+                resource.setAppArgument(output.getApplicationArgument());
+                resource.setSearchQuery(output.getSearchQuery());
 //                resource.setMetadata(output.getMetaData());
                 resource.save();
             }
@@ -407,7 +413,9 @@ public class ExperimentRegistry {
                     resource.setRequired(output.isIsRequired());
                     resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                     resource.setDataMovement(output.isDataMovement());
-                    resource.setDataNameLocation(output.getDataNameLocation());
+                    resource.setDataNameLocation(output.getLocation());
+                    resource.setAppArgument(output.getApplicationArgument());
+                    resource.setSearchQuery(output.getSearchQuery());
 //                    resource.setMetadata(output.getMetaData());
                     resource.save();
                 }
@@ -434,7 +442,9 @@ public class ExperimentRegistry {
                 resource.setRequired(output.isIsRequired());
                 resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                 resource.setDataMovement(output.isDataMovement());
-                resource.setDataNameLocation(output.getDataNameLocation());
+                resource.setDataNameLocation(output.getLocation());
+                resource.setAppArgument(output.getApplicationArgument());
+                resource.setSearchQuery(output.getSearchQuery());
 //                resource.setMetadata(output.getMetaData());
                 resource.save();
             }
@@ -1056,7 +1066,9 @@ public class ExperimentRegistry {
                 resource.setRequired(output.isIsRequired());
                 resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                 resource.setDataMovement(output.isDataMovement());
-                resource.setDataNameLocation(output.getDataNameLocation());
+                resource.setDataNameLocation(output.getLocation());
+                resource.setAppArgument(output.getApplicationArgument());
+                resource.setSearchQuery(output.getSearchQuery());
 //                resource.setMetadata(output.getMetaData());
                 resource.save();
             }
@@ -1084,7 +1096,9 @@ public class ExperimentRegistry {
                     resource.setRequired(output.isIsRequired());
                     resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
                     resource.setDataMovement(output.isDataMovement());
-                    resource.setDataNameLocation(output.getDataNameLocation());
+                    resource.setDataNameLocation(output.getLocation());
+                    resource.setAppArgument(output.getApplicationArgument());
+                    resource.setSearchQuery(output.getSearchQuery());
 //                    resource.setMetadata(output.getMetaData());
                     resource.save();
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationOutput.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationOutput.java
index bab0d69..c95f934 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationOutput.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationOutput.java
@@ -51,6 +51,10 @@ public class ApplicationOutput implements Serializable {
     private boolean dataMovement;
     @Column(name = "DATA_NAME_LOCATION")
     private String dataNameLocation;
+    @Column(name = "SEARCH_QUERY")
+    private String searchQuery;
+    @Column(name = "APP_ARGUMENT")
+    private String applicationArgument;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "TASK_ID")
@@ -127,4 +131,20 @@ public class ApplicationOutput implements Serializable {
     public void setDataNameLocation(String dataNameLocation) {
         this.dataNameLocation = dataNameLocation;
     }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Output.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Output.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Output.java
index 62e19a5..ece544e 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Output.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Output.java
@@ -52,6 +52,10 @@ public class Experiment_Output  implements Serializable {
     private boolean dataMovement;
     @Column(name = "DATA_NAME_LOCATION")
     private String dataNameLocation;
+    @Column(name = "SEARCH_QUERY")
+    private String searchQuery;
+    @Column(name = "APP_ARGUMENT")
+    private String applicationArgument;
 
     @ManyToOne
     @JoinColumn(name = "EXPERIMENT_ID")
@@ -128,4 +132,20 @@ public class Experiment_Output  implements Serializable {
     public void setDataNameLocation(String dataNameLocation) {
         this.dataNameLocation = dataNameLocation;
     }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeOutput.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeOutput.java
index 578a5fa..9281ee8 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeOutput.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeOutput.java
@@ -49,7 +49,10 @@ public class NodeOutput implements Serializable {
     private boolean dataMovement;
     @Column(name = "DATA_NAME_LOCATION")
     private String dataNameLocation;
-
+    @Column(name = "SEARCH_QUERY")
+    private String searchQuery;
+    @Column(name = "APP_ARGUMENT")
+    private String applicationArgument;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "NODE_INSTANCE_ID")
@@ -126,4 +129,20 @@ public class NodeOutput implements Serializable {
     public void setDataNameLocation(String dataNameLocation) {
         this.dataNameLocation = dataNameLocation;
     }
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationOutputResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationOutputResource.java
index d5441f3..c937df3 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationOutputResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationOutputResource.java
@@ -45,6 +45,24 @@ public class ApplicationOutputResource extends AbstractResource {
     private boolean dataMovement;
     private String dataNameLocation;
     private boolean requiredToCMD;
+    private String searchQuery;
+    private String appArgument;
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
 
     public boolean isRequired() {
         return isRequired;
@@ -154,6 +172,8 @@ public class ApplicationOutputResource extends AbstractResource {
             applicationOutput.setAddedToCmd(requiredToCMD);
             applicationOutput.setDataMovement(dataMovement);
             applicationOutput.setDataNameLocation(dataNameLocation);
+            applicationOutput.setSearchQuery(searchQuery);
+            applicationOutput.setApplicationArgument(appArgument);
             if (value != null){
                 applicationOutput.setValue(value.toCharArray());
             }
@@ -167,6 +187,8 @@ public class ApplicationOutputResource extends AbstractResource {
                 existingOutput.setAddedToCmd(requiredToCMD);
                 existingOutput.setDataMovement(dataMovement);
                 existingOutput.setDataNameLocation(dataNameLocation);
+                existingOutput.setSearchQuery(searchQuery);
+                existingOutput.setApplicationArgument(appArgument);
                 if (value != null){
                     existingOutput.setValue(value.toCharArray());
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/dc22b7be/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentOutputResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentOutputResource.java
index eca13a6..17bd23a 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentOutputResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentOutputResource.java
@@ -45,6 +45,25 @@ public class ExperimentOutputResource extends AbstractResource {
     private boolean dataMovement;
     private String dataNameLocation;
     private boolean requiredToCMD;
+    private String searchQuery;
+    private String appArgument;
+
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    public String getAppArgument() {
+        return appArgument;
+    }
+
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
+    }
+
 
     public boolean getRequiredToCMD() {
         return requiredToCMD;
@@ -152,6 +171,8 @@ public class ExperimentOutputResource extends AbstractResource {
             exOutput.setRequiredToCMD(requiredToCMD);
             exOutput.setDataMovement(dataMovement);
             exOutput.setDataNameLocation(dataNameLocation);
+            exOutput.setApplicationArgument(appArgument);
+            exOutput.setSearchQuery(searchQuery);
 
             if (existingOutput != null) {
                 existingOutput.setEx_key(experimentKey);
@@ -165,6 +186,8 @@ public class ExperimentOutputResource extends AbstractResource {
                 existingOutput.setRequiredToCMD(requiredToCMD);
                 existingOutput.setDataMovement(dataMovement);
                 existingOutput.setDataNameLocation(dataNameLocation);
+                existingOutput.setApplicationArgument(appArgument);
+                existingOutput.setSearchQuery(searchQuery);
                 exOutput = em.merge(existingOutput);
             } else {
                 em.persist(exOutput);