You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2016/09/16 16:11:36 UTC

[01/48] airavata git commit: add simstream module to airavata [Forced Update!]

Repository: airavata
Updated Branches:
  refs/heads/lahiru/AIRAVATA-2065 ce26536fc -> 6786f8ee0 (forced update)


http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/pikaproducer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/pikaproducer.py b/modules/simstream/simstream/pikaproducer.py
new file mode 100755
index 0000000..6ffaf3d
--- /dev/null
+++ b/modules/simstream/simstream/pikaproducer.py
@@ -0,0 +1,202 @@
+"""
+Utilties for sending data.
+
+Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+import json
+import pika
+
+
+class PikaProducer(object):
+    """
+    Utility for sending job data to a set of endpoints.
+    """
+
+    def __init__(self, rabbitmq_url, exchange, exchange_type="direct", routing_keys=[]):
+        """
+        Instantiate a new PikaProducer.
+
+        Arguments:
+        rabbitmq_url -- the url of the RabbitMQ server to send to
+        exchange -- the name of the exchange to send to
+
+        Keyword Arguments:
+        exchange_type -- one of one of 'direct', 'topic', 'fanout', 'headers'
+                         (default 'direct')
+        routing_key -- the routing keys to the endpoints for this producer
+                       (default [])
+        """
+        self._url = rabbitmq_url
+        self._exchange = exchange
+        self._exchange_type = exchange_type
+        self._routing_keys = routing_keys
+
+        self._connection = None # RabbitMQ connection object
+        self._channel = None    # RabbitMQ channel object
+
+        import random
+        self._name = random.randint(0,100)
+
+    def __call__(self, data):
+        """
+        Publish data to the RabbitMQ server.
+
+        Arguments:
+        data -- JSON serializable data to send
+        """
+        if self._connection is None: # Start the connection if it is inactive
+            self.start()
+        else: # Serialize and send the data
+            message = self.pack_data(data)
+            self.send_data(message)
+
+    def add_routing_key(self, key):
+        """
+        Add a new endpoint that will receive this data.
+
+        Arguments:
+        key -- the routing key for the new endpoint
+        """
+        if key not in self._routing_keys:
+            #print("Adding key %s to %s" % (key, self._name))
+            self._routing_keys.append(key)
+            #print(self._routing_keys)
+
+    def remove_routing_key(self, key):
+        """
+        Stop sending data to an existing endpoint.
+
+        Arguments:
+        key -- the routing key for the existing endpoint
+        """
+        try:
+            self._routing_keys.remove(key)
+        except ValueError:
+            pass
+
+    def pack_data(self, data):
+        """
+        JSON-serialize the data for transport.
+
+        Arguments:
+        data -- JSON-serializable data
+        """
+        try: # Generate a JSON string from the data
+            msg = json.dumps(data)
+        except TypeError as e: # Generate and return an error if serialization fails
+            msg = json.dumps({"err": str(e)})
+        finally:
+            return msg
+
+    def send_data(self, data):
+        """
+        Send the data to all active endpoints.
+
+        Arguments:
+        data -- the message to send
+        """
+        if self._channel is not None: # Make sure the connection is active
+            for key in self._routing_keys: # Send to all endpoints
+                #print(self._exchange, key, self._name)
+                self._channel.basic_publish(exchange = self._exchange,
+                                            routing_key=key,
+                                            body=data)
+
+    def start(self):
+        """
+        Open a connection if one does not exist.
+        """
+        print("Starting new connection")
+        if self._connection is None:
+            print("Creating connection object")
+            self._connection = pika.BlockingConnection(pika.URLParameters(self._url))
+            self._channel = self._connection.channel()
+            self._channel.exchange_declare(exchange=self._exchange,
+                                           type=self._exchange_type)
+
+    def shutdown(self):
+        """
+        Close an existing connection.
+        """
+        if self._channel is not None:
+            self._channel.close()
+
+    def _on_connection_open(self, unused_connection):
+        """
+        Create a new channel if the connection opens successful.
+
+        Arguments:
+        unused_connection -- a reference to self._connection
+        """
+        print("Connection is open")
+        self._connection.channel(on_open_callback=self._on_channel_open)
+
+    def _on_connection_close(self, connection, code, text):
+        """
+        Actions to take when the connection is closed for any reason.
+
+        Arguments:
+        connection -- the connection that was closed (same as self._connection)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+        """
+        print("Connection is closed")
+        self._channel = None
+        self._connection = None
+
+    def _on_channel_open(self, channel):
+        """
+        Actions to take when the channel opens.
+
+        Arguments:
+        channel -- the newly opened channel
+        """
+        print("Channel is open")
+        self._channel = channel
+        self._channel.add_on_close_callback(self._on_channel_close)
+        self._declare_exchange()
+
+    def _on_channel_close(self, channel, code, text):
+        """
+        Actions to take when the channel closes for any reason.
+
+        Arguments:
+        channel -- the channel that was closed (same as self._channel)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+        """
+        print("Channel is closed")
+        self._connection.close()
+
+    def _declare_exchange(self):
+        """
+        Set up the exchange to publish to even if it already exists.
+        """
+        print("Exchange is declared")
+        self._channel.exchange_declare(exchange=self._exchange,
+                                       type=self.exchange_type)
+
+if __name__ == "__main__":
+    import time
+
+    config = {
+        "url": "amqp://guest:guest@localhost:5672",
+        "exchange": "simstream",
+        "routing_key": "test_consumer",
+        "exchange_type": "topic"
+    }
+
+    producer = PikaProducer(config["url"],
+                            config["exchange"],
+                            exchange_type=config["exchange_type"],
+                            routing_keys=[config["routing_key"]])
+    producer.start()
+
+    while True:
+        try:
+            time.sleep(5)
+            data = str(time.time()) + ": Hello SimStream"
+            producer.send_data(data)
+        except KeyboardInterrupt:
+            producer.shutdown()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/simstream.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/simstream.py b/modules/simstream/simstream/simstream.py
new file mode 100755
index 0000000..499a8c3
--- /dev/null
+++ b/modules/simstream/simstream/simstream.py
@@ -0,0 +1,167 @@
+import pika
+
+from .pikaasyncconsumer import PikaAsyncConsumer
+from .datacollector import DataCollector
+from .datareporter import DataReporter
+from .eventhandler import EventHandler
+from .eventmonitor import EventMonitor
+
+
+class ReporterExistsException(Exception):
+    """Thrown when attempting to add a DataReporter with a conflicting name"""
+    pass
+
+
+class SimStream(object):
+    """
+    Manager for routing messages to their correct reporter.
+    """
+
+    DEFAULT_CONFIG_PATH="simstream.cnf"
+
+
+    class MessageParser(object):
+        """
+        Internal message parsing facilities.
+        """
+
+        def __init__(self):
+            self.parsed = None
+
+        def __call__(self, message):
+            pass
+
+
+    def __init__(self, reporters={}, config={}):
+        self.reporters = reporters
+        self.consumer = None
+        self.config = config
+
+    def add_data_reporter(self, reporter):
+        """
+        Add a new DataReporter object.
+
+        Arguments:
+        reporter -- the DataReporter to add
+        """
+        if reporter.name in self.reporters:
+            raise ReporterExistsException
+        self.reporters[reporter.name] = reporter
+
+    def parse_config(self):
+        """
+        Read the config file and set up the specified, data collection and
+        event handling resources.
+        """
+        # TODO: Read in config
+        # TODO: Set up configuration dict
+        pass
+
+    def route_message(self, message):
+        """
+        Send a message to the correct reporter.
+        """
+        # TODO: Create new MessageParser
+        # TODO: Run message through MessageParser
+        # TODO: Route message to the correct DataReporter/EventMonitor
+        parser = MessageParser()
+        parser(message)
+        if parser.reporter_name in self.reporters:
+            self.reporters[parser.reporter_name].start_streaming(
+                    parser.collector_name,
+                    parser.routing_key
+                )
+
+    def start_collecting(self):
+        """
+        Begin collecting data and monitoring for events.
+        """
+        for reporter in self.reporters:
+            self.reporters[reporter].start_collecting()
+
+    def setup(self):
+        """
+        Set up the SimStream instance: create DataCollectors, create
+        EventMonitors, configure AMQP consumer.
+        """
+        self.parse_config()
+        #self.setup_consumer()
+        self.setup_data_collection()
+        self.setup_event_monitoring()
+
+    def setup_data_collection(self):
+        """
+        Set up all DataReporters and DataCollectors.
+        """
+        # TODO: Create and configure all DataReporters
+        # TODO: Create and configure all DataCollectors
+        # TODO: Assign each DataCollector to the correct DataReporter
+        if "reporters" in self.config:
+            for reporter in self.config.reporters:
+                pass
+            for collector in self.config.collectors:
+                pass
+
+    def setup_event_monitoring(self):
+        #TODO: Create and configure all EventMonitors
+        #TODO: Create and configure all EventHandlers
+        #TODO: Assign each EventHandler to the correct EventMonitor
+        #TODO: Assign each EventMonitor to the correct DataCollector
+        pass
+
+    def setup_consumer(self):
+        """
+        Set up and configure the consumer.
+        """
+        if len(self.config) > 0 and self.consumer is None:
+            if "message_handler" in self.config:
+                message_handler = self.config["message_handler"]
+            else:
+                message_handler = self.route_message
+            self.consumer = PikaAsyncConsumer(self.config["url"],
+                                              self.config["exchange"],
+                                              self.config["queue"],
+                                              message_handler,
+                                              exchange_type=self.config["exchange_type"],
+                                              routing_key=self.config["routing_key"]
+                                             )
+
+    def start(self):
+        """
+        Configure and start SimStream.
+        """
+        if self.consumer is None:
+            self.setup()
+        self.start_collecting()
+        #self.consumer.start()
+
+    def stop(self):
+        """
+        Stop all data collection, event monitoring, and message consumption.
+        """
+        self.consumer.stop()
+        self.stop_collecting()
+
+
+if __name__ == "__main__":
+    def print_message(message):
+        with open("test.out", "w") as f:
+            print(message)
+
+    print(SimStream.DEFAULT_CONFIG_PATH)
+
+    config = {
+        "url": "amqp://guest:guest@localhost:5672",
+        "exchange": "simstream",
+        "queue": "simstream_test",
+        "message_handler": print_message,
+        "routing_key": "test_consumer",
+        "exchange_type": "topic"
+    }
+
+    streamer = SimStream(config=config)
+
+    try:
+        streamer.start()
+    except KeyboardInterrupt:
+        streamer.stop()


[47/48] airavata git commit: [AIRAVATA-2065] Introduce more robust logging mechanism for Airavata

Posted by la...@apache.org.
[AIRAVATA-2065] Introduce more robust logging mechanism for Airavata

1. Add configurable KafkaAppender (default turned off) which will push
the airavata logs to kafka topic.

2. Use configured kafka topic prefix and construct the topic name based on
the airavata role running.

3. Bring back logback as the logging library.
4. Use git describe in the server version string and introduce new serverId with more metadata.
5. Added new class to handle specifically AWS deployment (use aws-metadata service).


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 091546fcaff6efb5e4ba8507adcd09439741f6eb
Parents: e27c54e
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Sun Aug 28 21:39:11 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Mon Sep 12 23:29:36 2016 -0700

----------------------------------------------------------------------
 modules/commons/pom.xml                         |  12 +-
 .../airavata/common/utils/BuildConstant.java    |  26 ++++
 .../airavata/common/logging/Exception.java      |  66 +++++++++
 .../airavata/common/logging/LogEntry.java       | 132 ++++++++++++++++++
 .../airavata/common/logging/ServerId.java       |  68 +++++++++
 .../common/logging/kafka/KafkaAppender.java     |  15 +-
 .../airavata/common/utils/AiravataZKUtils.java  |  13 +-
 .../common/utils/ApplicationSettings.java       |  34 +++--
 .../airavata/common/utils/AwsMetadata.java      | 137 +++++++++++++++++++
 .../apache/airavata/common/utils/JSONUtil.java  |   1 -
 .../airavata/common/utils/ServerSettings.java   |  34 +++++
 .../main/resources/airavata-server.properties   |   8 +-
 modules/distribution/pom.xml                    |  19 +--
 .../gfac/bes/provider/impl/BESProvider.java     |   7 +-
 .../impl/JSDLGeneratorTestWithMyProxyAuth.java  |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |   2 +-
 .../gfac/impl/task/BESJobSubmissionTask.java    |   7 +-
 .../services/impl/BigRed2TestWithSSHAuth.java   |   2 +-
 .../impl/GSISSHProviderTestWithMyProxyAuth.java |   2 +-
 .../impl/SSHProviderTestWithSSHAuth.java        |   2 +-
 modules/registry/registry-core/pom.xml          |  27 ----
 .../org/apache/airavata/server/ServerMain.java  |  29 +++-
 .../utils/PropertyReader.java                   |   3 +-
 .../core/AbstractThriftDeserializer.java        |   3 +-
 pom.xml                                         |  65 +++++++++
 25 files changed, 631 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/pom.xml
----------------------------------------------------------------------
diff --git a/modules/commons/pom.xml b/modules/commons/pom.xml
index a2136c6..f4231ce 100644
--- a/modules/commons/pom.xml
+++ b/modules/commons/pom.xml
@@ -115,7 +115,6 @@
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
@@ -127,12 +126,21 @@
             <artifactId>libthrift</artifactId>
             <version>${thrift.version}</version>
         </dependency>
-
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
             <version>${google.gson.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+            <version>${kafka-clients.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>${logback.version}</version>
+        </dependency>
     </dependencies>
 
     <properties>

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java-templates/org/apache/airavata/common/utils/BuildConstant.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java-templates/org/apache/airavata/common/utils/BuildConstant.java b/modules/commons/src/main/java-templates/org/apache/airavata/common/utils/BuildConstant.java
new file mode 100644
index 0000000..8cf5ddf
--- /dev/null
+++ b/modules/commons/src/main/java-templates/org/apache/airavata/common/utils/BuildConstant.java
@@ -0,0 +1,26 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.common.utils;
+
+public class BuildConstant {
+    public static final String VERSION = "${git-describe}";
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/logging/Exception.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/Exception.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/Exception.java
new file mode 100644
index 0000000..cea0c95
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/Exception.java
@@ -0,0 +1,66 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.logging;
+
+
+public class Exception {
+
+    private String message;
+
+    private String[] stackTrace;
+
+    private String className;
+
+    public Exception(String message, String[] stackTrace) {
+        this.message = message;
+        this.stackTrace = stackTrace;
+    }
+
+    public Exception(String message, String[] stackTrace, String className) {
+        this.message = message;
+        this.stackTrace = stackTrace;
+        this.className = className;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String[] getStackTrace() {
+        return stackTrace;
+    }
+
+    public void setStackTrace(String[] stackTrace) {
+        this.stackTrace = stackTrace;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/logging/LogEntry.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/LogEntry.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/LogEntry.java
new file mode 100644
index 0000000..72fc4a0
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/LogEntry.java
@@ -0,0 +1,132 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.logging;
+
+
+import java.lang.*;
+import java.util.Map;
+
+public class LogEntry {
+
+    private ServerId serverId;
+
+    private String message;
+
+    private String timestamp;
+
+    private String level;
+
+    private String loggerName;
+
+    private Map<String, String> mdc;
+
+    private String threadName;
+
+    private Exception exception;
+
+    public LogEntry(ServerId serverId, String message, String timestamp, String level, String loggerName, Map<String,
+            String> mdc, String threadName, Exception exception) {
+        this.serverId = serverId;
+        this.message = message;
+        this.timestamp = timestamp;
+        this.level = level;
+        this.loggerName = loggerName;
+        this.mdc = mdc;
+        this.threadName = threadName;
+        this.exception = exception;
+    }
+
+    public LogEntry(ServerId serverId, String message, String timestamp, String level, String loggerName, Map<String,
+            String> mdc, String threadName) {
+        this.serverId = serverId;
+        this.message = message;
+        this.timestamp = timestamp;
+        this.level = level;
+        this.loggerName = loggerName;
+        this.mdc = mdc;
+        this.threadName = threadName;
+    }
+
+
+    public ServerId getServerId() {
+        return serverId;
+    }
+
+    public void setServerId(ServerId serverId) {
+        this.serverId = serverId;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getLoggerName() {
+        return loggerName;
+    }
+
+    public void setLoggerName(String loggerName) {
+        this.loggerName = loggerName;
+    }
+
+    public Map<String, String> getMdc() {
+        return mdc;
+    }
+
+    public void setMdc(Map<String, String> mdc) {
+        this.mdc = mdc;
+    }
+
+    public String getThreadName() {
+        return threadName;
+    }
+
+    public void setThreadName(String threadName) {
+        this.threadName = threadName;
+    }
+
+    public Exception getException() {
+        return exception;
+    }
+
+    public void setException(Exception exception) {
+        this.exception = exception;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/logging/ServerId.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/ServerId.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/ServerId.java
new file mode 100644
index 0000000..9611302
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/ServerId.java
@@ -0,0 +1,68 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.logging;
+
+public class ServerId {
+    private String serverId;
+    private String hostName;
+    private String version;
+
+    private String[] roles; // gfac, orchestrator, apiserver,
+
+    public ServerId(String serverId, String hostName, String version, String[] roles) {
+        this.serverId = serverId;
+        this.hostName = hostName;
+        this.version = version;
+        this.roles = roles;
+    }
+
+    public String getServerId() {
+        return serverId;
+    }
+
+    public void setServerId(String serverId) {
+        this.serverId = serverId;
+    }
+
+    public String getHostName() {
+        return hostName;
+    }
+
+    public void setHostName(String hostName) {
+        this.hostName = hostName;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String[] getRoles() {
+        return roles;
+    }
+
+    public void setRoles(String[] roles) {
+        this.roles = roles;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
index 06649c6..6733800 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
@@ -62,7 +62,7 @@ public class KafkaAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
         props.put("producer.type", "async");
         props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
-        this.kafkaTopic = getKafkaTopic(kafkaTopicPrefix);
+        this.kafkaTopic = getKafkaTopicPrefix(kafkaTopicPrefix);
         logger.info("Starting kafka producer: bootstrap-server:{}, topic : {}", kafkaHost, this.kafkaTopic);
         this.producer = new KafkaProducer<>(props);
         if(ServerSettings.isRunningOnAws()) {
@@ -100,20 +100,13 @@ public class KafkaAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
         return Arrays.stream(stackTraceElement).map(StackTraceElementProxy::getSTEAsString).toArray(String[]::new);
     }
 
-    private String getKafkaTopic(String kafkaTopicPrefix) {
+    private String getKafkaTopicPrefix(String kafkaTopicPrefix) {
         final StringBuilder stringBuffer = new StringBuilder("");
         final String[] serverRoles = ServerSettings.getServerRoles();
-        if (serverRoles.length == 4) {
+        if (serverRoles.length >= 4) {
             return kafkaTopicPrefix + "_all";
         }
-        for (String role : ServerSettings.getServerRoles()) {
-            stringBuffer.append("_");
-            stringBuffer.append(role);
-            stringBuffer.append("_logs");
-            // do not support multiple roles yet, topic name will become complex
-            break;
-        }
-        return kafkaTopicPrefix + stringBuffer.toString();
+        return kafkaTopicPrefix + stringBuffer.append("_").append(ServerSettings.getServerRoles()[0]).append("_logs").toString();
     }
 
     public void close() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataZKUtils.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataZKUtils.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataZKUtils.java
index 5faf985..75f91fd 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataZKUtils.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataZKUtils.java
@@ -119,13 +119,14 @@ public class AiravataZKUtils implements Watcher {
     public static void startEmbeddedZK(ServerCnxnFactory cnxnFactory) {
         if (ServerSettings.isEmbeddedZK()) {
             ServerConfig serverConfig = new ServerConfig();
-            URL resource = AiravataZKUtils.class.getClassLoader().getResource("zoo.cfg");
-            if (resource == null) {
-                logger.error("There is no zoo.cfg file in the classpath... Failed to start Zookeeper Server");
-                System.exit(1);
-            }
+            URL resource = ApplicationSettings.loadFile("zoo.cfg");
             try {
+                if (resource == null) {
+                    logger.error("There is no zoo.cfg file in the classpath... Failed to start Zookeeper Server");
+                    System.exit(1);
+                }
                 serverConfig.parse(resource.getPath());
+
             } catch (QuorumPeerConfig.ConfigException e) {
                 logger.error("Error while starting embedded Zookeeper", e);
                 System.exit(2);
@@ -193,7 +194,5 @@ public class AiravataZKUtils implements Watcher {
         } else {
             return bytesToLong(curatorClient.getData().storingStatIn(exists).forPath(cancelDeliveryTagPath));
         }
-
-
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
index 9ce0786..dc7944f 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
@@ -25,9 +25,11 @@ import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -35,10 +37,12 @@ import java.util.regex.Pattern;
 
 public class ApplicationSettings {
     public static final String SERVER_PROPERTIES="airavata-server.properties";
-    
-	public static String ADDITIONAL_SETTINGS_FILES = "external.settings";
+    public static final String AIRAVATA_CONFIG_DIR = "airavata.config.dir";
+
+    public static String ADDITIONAL_SETTINGS_FILES = "external.settings";
 
 	protected Properties properties = new Properties();
+
     private Exception propertyLoadException;
 
 
@@ -63,7 +67,6 @@ public class ApplicationSettings {
 	private void loadProperties() {
 		URL url = getPropertyFileURL();
         try {
-        	
             properties.load(url.openStream());
             logger.info("Settings loaded from "+url.toString());
             URL[] externalSettingsFileURLs = getExternalSettingsFileURLs();
@@ -77,7 +80,7 @@ public class ApplicationSettings {
 	}
 
 	protected URL getPropertyFileURL() {
-		return ApplicationSettings.class.getClassLoader().getResource(SERVER_PROPERTIES);
+		return ApplicationSettings.loadFile(SERVER_PROPERTIES);
 	}
 	
 	protected URL[] getExternalSettingsFileURLs(){
@@ -86,7 +89,7 @@ public class ApplicationSettings {
 			String externalSettingsFileNames = getSettingImpl(ADDITIONAL_SETTINGS_FILES);
 			String[] externalSettingFiles = externalSettingsFileNames.split(",");
 			for (String externalSettingFile : externalSettingFiles) {
-				URL externalSettingFileURL = ApplicationSettings.class.getClassLoader().getResource(externalSettingFile);
+				URL externalSettingFileURL = ApplicationSettings.loadFile(externalSettingFile);
 				if (externalSettingFileURL==null){
 					logger.warn("Could not file external settings file "+externalSettingFile);
 				}else{
@@ -313,11 +316,11 @@ public class ApplicationSettings {
      * Static methods which will be used by the users
      */
     
-    public static String getSetting(String key) throws ApplicationSettingsException{
+    public static String getSetting(String key) throws ApplicationSettingsException {
     	return getInstance().getSettingImpl(key);
     }
-    
-    public static String getSetting(String key, String defaultValue){
+
+    public static String getSetting(String key, String defaultValue) {
     	return getInstance().getSettingImpl(key,defaultValue);
 
     }
@@ -426,4 +429,19 @@ public class ApplicationSettings {
     public static ShutdownStrategy getShutdownStrategy() throws Exception{
     	return getInstance().getShutdownStrategyImpl();
     }
+
+    public static URL loadFile(String fileName) {
+        final URL resource = ApplicationSettings.class.getClassLoader().getResource(fileName);
+        if(resource == null) {
+            if(System.getProperty(AIRAVATA_CONFIG_DIR) != null) {
+                final String airavataConfigDir = System.getProperty(AIRAVATA_CONFIG_DIR);
+                try {
+                     return new File(airavataConfigDir + File.separator + fileName).toURI().toURL();
+                } catch (MalformedURLException e) {
+                    logger.error("Error parsing the file from airavata.config.dir", airavataConfigDir);
+                }
+            }
+        }
+        return resource;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/utils/AwsMetadata.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/AwsMetadata.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/AwsMetadata.java
new file mode 100644
index 0000000..f9b4a65
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/AwsMetadata.java
@@ -0,0 +1,137 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.utils;
+
+
+import com.google.common.base.Preconditions;
+import com.google.common.net.InetAddresses;
+import com.google.gson.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class AwsMetadata {
+    private static final Logger log = LoggerFactory.getLogger(AwsMetadata.class);
+    private static final String METADATA_URI_BASE = "http://169.254.169.254/";
+    private static final String REGION_SUFFIX = "/latest/dynamic/instance-identity/document";
+    private static final String ZONE_SUFFIX = "/latest/meta-data/placement/availability-zone";
+    private static final String PUBLIC_IPV4_SUFFIX = "/latest/meta-data/public-ipv4";
+    private static final String PRIVATE_IPV4_SUFFIX = "latest/meta-data/local-ipv4";
+    private static final String HOSTNAME_SUFFIX = "/latest/meta-data/hostname";
+    private static final String ID_SUFFIX = "/latest/meta-data/instance-id";
+
+    private final URI baseUri;
+
+    private String id;
+    private String region;
+    private String hostname;
+    private String zone;
+    private InetAddress publicIp;
+    private InetAddress privateIp;
+
+    public AwsMetadata() {
+        try {
+            baseUri = new URI(METADATA_URI_BASE);
+        } catch (URISyntaxException e) {
+            Preconditions.checkState(false, "Unexpected URI Syntax Exception: {}", e);
+            throw new RuntimeException(e);
+        }
+    }
+
+    public String getRegion() {
+        if (region == null) {
+            try {
+                String dynamicData = getMetadataAt(REGION_SUFFIX);
+                if (dynamicData != null) {
+                    final JsonObject asJsonObject = new JsonParser().parse(dynamicData).getAsJsonObject();
+                    region = asJsonObject.get("region").getAsString();
+                }
+            } catch (ClassCastException e) {
+                log.error("Unable to get region, expecting a JSON Object", e);
+            }
+        }
+        return region;
+    }
+
+    public String getZoneName() {
+        if (zone == null) {
+            zone = getMetadataAt(ZONE_SUFFIX);
+        }
+        return zone;
+    }
+
+    public String getId() {
+        if (id == null) {
+            id = getMetadataAt(ID_SUFFIX);
+        }
+
+        return id;
+    }
+
+    public String getHostname() {
+        if (hostname == null) {
+            hostname = getMetadataAt(HOSTNAME_SUFFIX);
+        }
+        return hostname;
+    }
+
+    public InetAddress getPublicIpAddress() {
+        if (publicIp == null) {
+            String ip = getMetadataAt(PUBLIC_IPV4_SUFFIX);
+            if (ip != null) {
+                publicIp = InetAddresses.forString(ip);
+            }
+        }
+        return publicIp;
+    }
+
+    public InetAddress getInternalIpAddress() {
+        if (privateIp == null) {
+            String ip = getMetadataAt(PRIVATE_IPV4_SUFFIX);
+            if (ip != null) {
+                privateIp = InetAddresses.forString(ip);
+            }
+        }
+        return privateIp;
+    }
+
+    private String getMetadataAt(String suffix) {
+        try {
+            URI resolved = baseUri.resolve(suffix);
+            StringBuilder builder = new StringBuilder();
+            String line = null;
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(resolved.toURL().openStream()))) {
+                while ((line = reader.readLine()) != null) {
+                    builder.append(line);
+                }
+                return builder.toString();
+            }
+        } catch (Exception e) {
+            // ignore for now to make sure local servers don't go verbose
+        }
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/utils/JSONUtil.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/JSONUtil.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/JSONUtil.java
index 222e5a2..adfc0c2 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/JSONUtil.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/JSONUtil.java
@@ -29,7 +29,6 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.JsonPrimitive;
 import com.google.gson.stream.JsonReader;
-
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index bb11264..3ac2a6e 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -27,6 +27,8 @@ import org.slf4j.LoggerFactory;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.Map;
 
 public class ServerSettings extends ApplicationSettings {
 
@@ -108,6 +110,15 @@ public class ServerSettings extends ApplicationSettings {
     private static final String EMAIL_BASED_MONITOR_STORE_PROTOCOL = "email.based.monitor.store.protocol";
     private static final String ENABLE_EMAIL_BASED_MONITORING = "enable.email.based.monitoring";
 
+    private static final String IS_RUNNING_ON_AWS = "isRunningOnAws";
+    private static final String ENABLE_KAFKA_LOGGING = "enable.kafka.logging";
+    private static final String KAFKA_BROKER_LIST = "kafka.broker.list";
+    private static final String KAFKA_TOPIC_PREFIX = "kafka.topic.prefix";
+    private static final String SERVER_ROLES = "server.roles";
+
+    // todo until AIRAVATA-2066 is finished, keep server side list configurations here.
+    private static Map<String, String[]> listConfigurations = new HashMap<>();
+
     private static boolean stopAllThreads = false;
     private static boolean emailBaseNotificationEnable;
     private static String outputLocation;
@@ -405,4 +416,27 @@ public class ServerSettings extends ApplicationSettings {
     public static Boolean isEnableSharing() throws ApplicationSettingsException {
         return Boolean.parseBoolean(getSetting(ENABLE_SHARING));
     }
+    public static boolean isRunningOnAws() {
+        return Boolean.valueOf(getSetting(IS_RUNNING_ON_AWS, "false"));
+    }
+
+    public static String getKafkaBrokerList() {
+        return getSetting(KAFKA_BROKER_LIST, null);
+    }
+
+    public static String getKafkaTopicPrefix() {
+        return getSetting(KAFKA_TOPIC_PREFIX, "all");
+    }
+
+    public static boolean isEnabledKafkaLogging() {
+        return Boolean.valueOf(getSetting(ENABLE_KAFKA_LOGGING, "false"));
+    }
+
+    public static void setServerRoles(String[] roles) {
+        listConfigurations.put(SERVER_ROLES, roles);
+    }
+
+    public static String[] getServerRoles() {
+        return listConfigurations.get(SERVER_ROLES);
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 2ce3701..0f03353 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -284,4 +284,10 @@ authorization.policy=airavata-default-xacml-policy
 #### authorization cache related configuration ####
 authz.cache.enabled=true
 authz.cache.manager.class=org.apache.airavata.api.server.security.authzcache.DefaultAuthzCacheManager
-in.memory.cache.size=1000
\ No newline at end of file
+in.memory.cache.size=1000
+
+# Kafka Logging related configuration
+isRunningOnAws= false
+kafka.broker.list= 54.84.144.132:9092
+kafka.topic.prefix= local
+enable.kafka.logging= true

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/distribution/pom.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/pom.xml b/modules/distribution/pom.xml
index 78d9bb9..d096739 100644
--- a/modules/distribution/pom.xml
+++ b/modules/distribution/pom.xml
@@ -164,14 +164,6 @@
             <artifactId>jcl-over-slf4j</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.amazonaws</groupId>
             <artifactId>aws-java-sdk</artifactId>
             <version>1.9.0</version>
@@ -559,7 +551,16 @@
             <artifactId>curator-framework</artifactId>
             <version>${curator.version}</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+            <version>${kafka-clients.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>${logback.version}</version>
+        </dependency>
         <!-- ======================== Sample =================== -->
         <dependency>
             <groupId>org.apache.airavata</groupId>

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
index b287b8e..efd2c5f 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
@@ -144,10 +144,9 @@ public class BESProvider extends AbstractProvider implements GFacProvider,
             JobDetails jobDetails = new JobDetails();
             FactoryClient factory = new FactoryClient(eprt, secProperties);
 
-            log.info(String.format("Activity Submitting to %s ... \n",
-                    factoryUrl));
+            log.info("Activity Submitting to {} ... \n", factoryUrl);
             CreateActivityResponseDocument response = factory.createActivity(cad);
-            log.info(String.format("Activity Submitted to %s \n", factoryUrl));
+            log.info("Activity Submitted to {} \n", factoryUrl);
 
             EndpointReferenceType activityEpr = response.getCreateActivityResponse().getActivityIdentifier();
 
@@ -353,7 +352,7 @@ public class BESProvider extends AbstractProvider implements GFacProvider,
 	}
 
 	protected String formatStatusMessage(String activityUrl, String status) {
-		return String.format("Activity %s is %s.\n", activityUrl, status);
+		return String.format("Activity {} is {}.\n", activityUrl, status);
 	}
 
 	protected String subStatusAsString(ActivityStatusType statusType) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-bes/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTestWithMyProxyAuth.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTestWithMyProxyAuth.java b/modules/gfac/gfac-bes/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTestWithMyProxyAuth.java
index cf9b82a..90f67a1 100644
--- a/modules/gfac/gfac-bes/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTestWithMyProxyAuth.java
+++ b/modules/gfac/gfac-bes/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTestWithMyProxyAuth.java
@@ -106,7 +106,7 @@ import static org.junit.Assert.assertTrue;
 //	}
 //
 //	protected GFacConfiguration getGFACConfig() throws Exception{
-//        URL resource = BESProviderTestWithMyProxyAuth.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+//        URL resource = ApplicationSettings.loadFile(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
 //        System.out.println(resource.getFile());
 //        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
 //		return gFacConfiguration;

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index cc1f17b..7e2154e 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -809,7 +809,7 @@ public class GFacUtils {
     public static File createJobFile(TaskContext taskContext, JobDescriptor jobDescriptor, JobManagerConfiguration jobManagerConfiguration) throws GFacException {
         try {
             TransformerFactory factory = TransformerFactory.newInstance();
-            URL resource = GFacUtils.class.getClassLoader().getResource(jobManagerConfiguration.getJobDescriptionTemplateName());
+            URL resource = ApplicationSettings.loadFile(jobManagerConfiguration.getJobDescriptionTemplateName());
 
             if (resource == null) {
                 String error = "System configuration file '" + jobManagerConfiguration.getJobDescriptionTemplateName()

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
index a4dcb5d..b5e1582 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
@@ -151,10 +151,9 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             jobDetails.setProcessId(taskContext.getProcessId());
             FactoryClient factory = new FactoryClient(eprt, secProperties);
 
-            log.info(String.format("Activity Submitting to %s ... \n",
-                    factoryUrl));
+            log.info("Activity Submitting to {} ... \n", factoryUrl);
             CreateActivityResponseDocument response = factory.createActivity(cad);
-            log.info(String.format("Activity Submitted to %s \n", factoryUrl));
+            log.info("Activity Submitted to {} \n", factoryUrl);
 
             EndpointReferenceType activityEpr = response.getCreateActivityResponse().getActivityIdentifier();
 
@@ -356,7 +355,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
     }
 
     protected String formatStatusMessage(String activityUrl, String status) {
-        return String.format("Activity %s is %s.\n", activityUrl, status);
+        return String.format("Activity {} is {}.\n", activityUrl, status);
     }
 
     protected void waitUntilDone(EndpointReferenceType factoryEpr, EndpointReferenceType activityEpr, ProcessContext processContext, DefaultClientConfiguration secProperties) throws Exception {

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/BigRed2TestWithSSHAuth.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/BigRed2TestWithSSHAuth.java b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/BigRed2TestWithSSHAuth.java
index 4aecd57..fbad51c 100644
--- a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/BigRed2TestWithSSHAuth.java
+++ b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/BigRed2TestWithSSHAuth.java
@@ -91,7 +91,7 @@
 //            System.out.println("Use -Dssh.username=xxx -Dssh.password=yyy -Dssh.keypass=zzz " +
 //                    "-Dprivate.ssh.key -Dpublic.ssh.key -Dssh.working.directory ");
 //        }
-//        URL resource = BigRed2TestWithSSHAuth.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+//        URL resource = ApplicationSettings.loadFile(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
 //        assert resource != null;
 //        System.out.println(resource.getFile());
 //        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null);

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTestWithMyProxyAuth.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTestWithMyProxyAuth.java b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTestWithMyProxyAuth.java
index 4ca5684..9d352a4 100644
--- a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTestWithMyProxyAuth.java
+++ b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTestWithMyProxyAuth.java
@@ -90,7 +90,7 @@
 //                    "E.g :- mvn clean install -Dmyproxy.username=xxx -Dmyproxy.password=xxx -Dgsi.working.directory=/path<<<<<<<");
 //            throw new Exception("Need my proxy user name password to run tests.");
 //        }
-//        URL resource = GSISSHProviderTestWithMyProxyAuth.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+//        URL resource = ApplicationSettings.loadFile(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
 //        assert resource != null;
 //        System.out.println(resource.getFile());
 //        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null);

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTestWithSSHAuth.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTestWithSSHAuth.java b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTestWithSSHAuth.java
index 4aa0df1..bdbadda 100644
--- a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTestWithSSHAuth.java
+++ b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/core/gfac/services/impl/SSHProviderTestWithSSHAuth.java
@@ -54,7 +54,7 @@
 //    @Before
 //    public void setUp() throws Exception {
 //
-//    	URL resource = SSHProviderTestWithSSHAuth.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+//    	URL resource = ApplicationSettings.loadFile(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
 //        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null);
 ////        gFacConfiguration.s
 //        //have to set InFlwo Handlers and outFlowHandlers

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/registry/registry-core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/pom.xml b/modules/registry/registry-core/pom.xml
index aa9a61b..23db8c6 100644
--- a/modules/registry/registry-core/pom.xml
+++ b/modules/registry/registry-core/pom.xml
@@ -107,33 +107,6 @@
 
     <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.openjpa</groupId>
-                <artifactId>openjpa-maven-plugin</artifactId>
-                <version>2.2.0</version>
-                <configuration>
-                    <includes>**/entities/*.class</includes>
-                    <excludes>**/entities/XML*.class</excludes>
-                    <addDefaultConstructor>true</addDefaultConstructor>
-                    <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>enhancer</id>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>enhance</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.apache.openjpa</groupId>
-                        <artifactId>openjpa</artifactId>
-                        <version>2.2.0</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
             <!--<plugin>-->
                 <!--<groupId>org.apache.maven.plugins</groupId>-->
                 <!--<artifactId>maven-antrun-plugin</artifactId>-->

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
----------------------------------------------------------------------
diff --git a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
index 99387de..d3326ba 100644
--- a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
+++ b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
@@ -20,13 +20,16 @@
  */
 package org.apache.airavata.server;
 
+import ch.qos.logback.classic.LoggerContext;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.logging.kafka.KafkaAppender;
 import org.apache.airavata.common.utils.*;
 import org.apache.airavata.common.utils.ApplicationSettings.ShutdownStrategy;
 import org.apache.airavata.common.utils.IServer.ServerStatus;
 import org.apache.airavata.common.utils.StringUtil.CommandLineParameters;
 import org.apache.commons.cli.ParseException;
 import org.apache.zookeeper.server.ServerCnxnFactory;
+import org.slf4j.ILoggerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -155,14 +158,35 @@ public class ServerMain {
 //	}
 	
 	public static void main(String args[]) throws ParseException, IOException {
-        CommandLineParameters commandLineParameters = StringUtil.getCommandLineParser(args);
+		ServerSettings.mergeSettingsCommandLineArgs(args);
+		ServerSettings.setServerRoles(ApplicationSettings.getSetting(SERVERS_KEY, "all").split(","));
+
+		if (ServerSettings.isEnabledKafkaLogging()) {
+			final ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory();
+			if (iLoggerFactory instanceof LoggerContext) {
+				final KafkaAppender kafkaAppender = new KafkaAppender(ServerSettings.getKafkaBrokerList(),
+						ServerSettings.getKafkaTopicPrefix());
+				kafkaAppender.setContext((LoggerContext) iLoggerFactory);
+				kafkaAppender.setName("kafka-appender");
+				kafkaAppender.clearAllFilters();
+				kafkaAppender.start();
+				// Until AIRAVATA-2073 use for airavata and zookeeper, add others if required
+				((LoggerContext) iLoggerFactory).getLogger("org.apache.airavata").addAppender(kafkaAppender);
+				((LoggerContext) iLoggerFactory).getLogger("org.apache.zookeeper").addAppender(kafkaAppender);
+				((LoggerContext) iLoggerFactory).getLogger("org.apache.derby").addAppender(kafkaAppender);
+				((LoggerContext) iLoggerFactory).getLogger("org.apache.commons").addAppender(kafkaAppender);
+			} else {
+				logger.warn("Kafka logging is enabled but cannot find logback LoggerContext, found", iLoggerFactory.getClass().toString());
+			}
+		}
+
+		CommandLineParameters commandLineParameters = StringUtil.getCommandLineParser(args);
         if (commandLineParameters.getArguments().contains(STOP_COMMAND_STR)){
             performServerStopRequest(commandLineParameters);
         }else{
             AiravataZKUtils.startEmbeddedZK(cnxnFactory);
             performServerStart(args);
 		}
-
     }
 
 
@@ -173,7 +197,6 @@ public class ServerMain {
 		for (String string : args) {
 			logger.info("Server Arguments: " + string);
 		}
-		ServerSettings.mergeSettingsCommandLineArgs(args);
 		String serverNames;
 		try {
 			serverNames = ApplicationSettings.getSetting(SERVERS_KEY);

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/PropertyReader.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/PropertyReader.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/PropertyReader.java
index f7b8e1f..9df1745 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/PropertyReader.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/PropertyReader.java
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.testsuite.multitenantedairavata.utils;
 
+import org.apache.airavata.common.utils.ApplicationSettings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,7 +42,7 @@ public class PropertyReader {
     }
 
     protected void loadProperties() throws IOException {
-        URL airavataURL = PropertyFileType.class.getClassLoader().getResource(TestFrameworkConstants.AIRAVATA_CLIENT_PROPERTIES);
+        URL airavataURL = ApplicationSettings.loadFile(TestFrameworkConstants.AIRAVATA_CLIENT_PROPERTIES);
         if (airavataURL != null){
             airavataClientProperties.load(airavataURL.openStream());
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/userprofile/core/AbstractThriftDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/userprofile/core/AbstractThriftDeserializer.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/userprofile/core/AbstractThriftDeserializer.java
index 83af52b..14a4b9c 100644
--- a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/userprofile/core/AbstractThriftDeserializer.java
+++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/userprofile/core/AbstractThriftDeserializer.java
@@ -91,8 +91,7 @@ public abstract class AbstractThriftDeserializer<E extends TFieldIdEnum, T exten
             // Validate that the instance contains all required fields.
             validate(instance);
         } catch (final TException e) {
-            log.error(String.format("Unable to deserialize JSON '%s' to type '%s'.",
-                    jp.getValueAsString(), instance.getClass().getName(), e));
+            log.error("Unable to deserialize JSON {} to type {}.", jp.getValueAsString(), instance.getClass().getName(), e);
             ctxt.mappingException(e.getMessage());
         }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/091546fc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1589171..8edd27f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,8 @@
         <snakeyaml.version>1.15</snakeyaml.version>
 		<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
 		<maven.replacer.plugin.version>1.5.3</maven.replacer.plugin.version>
+		<kafka-clients.version>0.8.2.2</kafka-clients.version>
+		<logback.version>1.1.6</logback.version>
 	</properties>
 
 	<developers>
@@ -434,6 +436,16 @@
 				<artifactId>curator-framework</artifactId>
 				<version>${curator.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>org.apache.kafka</groupId>
+				<artifactId>kafka-clients</artifactId>
+				<version>${kafka-clients.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>ch.qos.logback</groupId>
+				<artifactId>logback-classic</artifactId>
+				<version>${logback.version}</version>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>
 
@@ -480,6 +492,39 @@
 			<build>
 				<plugins>
 					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>templating-maven-plugin</artifactId>
+						<version>1.0.0</version>
+						<executions>
+							<execution>
+								<id>filtering-java-templates</id>
+								<goals>
+									<goal>filter-sources</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>com.lukegb.mojo</groupId>
+						<artifactId>gitdescribe-maven-plugin</artifactId>
+						<version>3.0</version>
+						<executions>
+							<execution>
+								<goals>
+									<goal>gitdescribe</goal>
+								</goals>
+								<id>git-describe</id>
+								<phase>initialize</phase>
+								<configuration>
+									<extraArguments>
+										<param>--tags</param>
+									</extraArguments>
+									<descriptionProperty>git-describe</descriptionProperty>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-remote-resources-plugin</artifactId>
 						<executions>
@@ -542,6 +587,26 @@
 							</excludes>
 						</configuration>
 					</plugin>
+					<plugin>
+						<groupId>com.lukegb.mojo</groupId>
+						<artifactId>gitdescribe-maven-plugin</artifactId>
+						<version>3.0</version>
+						<executions>
+							<execution>
+								<goals>
+									<goal>gitdescribe</goal>
+								</goals>
+								<id>git-describe</id>
+								<phase>initialize</phase>
+								<configuration>
+									<extraArguments>
+										<param>--tags</param>
+									</extraArguments>
+									<descriptionProperty>git-describe</descriptionProperty>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
 				</plugins>
 			</build>
 			<activation>


[10/48] airavata git commit: fixing the database creation failure

Posted by la...@apache.org.
fixing the database creation failure


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: bfff64c58c58b62116f64d7c81b6fbc4d23d7d52
Parents: 415e9b7
Author: scnakandala <su...@gmail.com>
Authored: Fri Aug 26 02:06:02 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Aug 26 02:06:02 2016 -0400

----------------------------------------------------------------------
 modules/registry/registry-core/pom.xml                            | 2 +-
 .../registry-core/src/main/resources/expcatalog-derby.sql         | 3 ++-
 .../registry-core/src/main/resources/expcatalog-mysql.sql         | 3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bfff64c5/modules/registry/registry-core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/pom.xml b/modules/registry/registry-core/pom.xml
index 85986ae..aa9a61b 100644
--- a/modules/registry/registry-core/pom.xml
+++ b/modules/registry/registry-core/pom.xml
@@ -162,7 +162,7 @@
                 <inherited>true</inherited>
                 <configuration>
                     <failIfNoTests>false</failIfNoTests>
-                    <skipTests>true</skipTests>
+                    <skipTests>${skipTests}</skipTests>
                     <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                     <!-- making sure that the sure-fire plugin doesn't run the integration tests-->
                     <!-- Integration tests are run using the fail-safe plugin in the module pom-->

http://git-wip-us.apache.org/repos/asf/airavata/blob/bfff64c5/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 275c772..3388dea 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -37,7 +37,8 @@ CREATE TABLE GATEWAY
         DECLINED_REASON varchar(255),
         OAUTH_CLIENT_SECRET varchar(255),
         OAUTH_CLIENT_ID varchar(255),
-        REQUEST_CREATION_TIME datetime DEFAULT CURRENT_TIMESTAMP,
+        REQUEST_CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        REQUESTER_USERNAME VARCHAR(255),
         PRIMARY KEY (GATEWAY_ID)
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bfff64c5/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index e5d6b09..2c776af 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -37,7 +37,8 @@ CREATE TABLE GATEWAY
         DECLINED_REASON varchar(255),
         OAUTH_CLIENT_SECRET varchar(255),
         OAUTH_CLIENT_ID varchar(255),
-        REQUEST_CREATION_TIME datetime DEFAULT CURRENT_TIMESTAMP,
+        REQUEST_CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        REQUESTER_USERNAME VARCHAR(255),
         PRIMARY KEY (GATEWAY_ID)
 );
 


[39/48] airavata git commit: fixing get job statuses issue

Posted by la...@apache.org.
fixing get job statuses issue


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: a0c9be8e2221b58ba995d81ef83abcab3414d407
Parents: 12383cc
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 7 15:50:03 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Sep 7 15:50:03 2016 -0400

----------------------------------------------------------------------
 .../registry/api/service/handler/RegistryServerHandler.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a0c9be8e/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 30c518f..3ca024c 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -721,9 +721,9 @@ public class RegistryServerHandler implements RegistryService.Iface {
                                 for (Object jobObject : jobs) {
                                     JobModel jobModel = (JobModel) jobObject;
                                     String jobID = jobModel.getJobId();
-                                    JobStatus status = jobModel.getJobStatuses().get(0);
-                                    if (status != null){
-                                        jobStatus.put(jobID, status);
+                                    List<JobStatus> status = jobModel.getJobStatuses();
+                                    if (status != null && status.size()>0){
+                                        jobStatus.put(jobID, status.get(0));
                                     }
                                 }
                             }


[42/48] airavata git commit: update error model, AIRAVATA-2096

Posted by la...@apache.org.
update error model, AIRAVATA-2096


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 5dbf84cc1a710b17b401f182ac2c4b904544d2c5
Parents: 2289aed
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Sep 12 16:14:19 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Sep 12 16:14:19 2016 -0400

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java       | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5dbf84cc/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index 1d1391c..a57252e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -74,6 +74,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.*;
@@ -207,14 +209,17 @@ public class GFacEngineImpl implements GFacEngine {
             return processContext;
         } catch (AppCatalogException e) {
             String msg = "App catalog access exception ";
+            saveErrorModel(processContext, e, msg);
             updateProcessFailure(processContext, msg);
             throw new GFacException(msg, e);
         } catch (RegistryException e) {
             String msg = "Registry access exception";
+            saveErrorModel(processContext, e, msg);
             updateProcessFailure(processContext, msg);
             throw new GFacException(msg, e);
         } catch (AiravataException e) {
             String msg = "Remote cluster initialization error";
+            saveErrorModel(processContext, e, msg);
             updateProcessFailure(processContext, msg);
             throw new GFacException(msg, e);
         }
@@ -877,6 +882,20 @@ public class GFacEngineImpl implements GFacEngine {
         }
     }
 
+    private void saveErrorModel(ProcessContext pc, Exception e, String userFriendlyMsg){
+        StringWriter errors = new StringWriter();
+        e.printStackTrace(new PrintWriter(errors));
+        ErrorModel errorModel = new ErrorModel();
+        errorModel.setUserFriendlyMessage(userFriendlyMsg);
+        errorModel.setActualErrorMessage(errors.toString());
+        errorModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
+        try {
+            GFacUtils.saveProcessError(pc, errorModel);
+        } catch (GFacException e1) {
+            log.error("Error while updating error model for process:" + pc.getProcessId());
+        }
+    }
+
     public static ResourceJobManager getResourceJobManager(ProcessContext processCtx) throws AppCatalogException, GFacException {
         List<JobSubmissionInterface> jobSubmissionInterfaces = Factory.getDefaultAppCatalog().getComputeResource()
                 .getComputeResource(processCtx.getComputeResourceId()).getJobSubmissionInterfaces();


[16/48] airavata git commit: [AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/NOTICE
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/NOTICE b/distribution/src/main/resources/NOTICE
deleted file mode 100644
index fa7cba5..0000000
--- a/distribution/src/main/resources/NOTICE
+++ /dev/null
@@ -1,163 +0,0 @@
-Apache Airavata
-Copyright 2014 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-===============================================================================
-Apache Xerces Java Notice:
-
-   Portions of this software were originally based on the following:
-     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
-     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
-     - voluntary contributions made by Paul Eng on behalf of the
-       Apache Software Foundation that were originally developed at iClick, Inc.,
-       software copyright (c) 1999.
-
-================================================================================
-Apache XmlBeans Notice: 
-
-   Portions of this software were originally based on the following:
-     - software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
-
-   Aside from contributions to the Apache XMLBeans project, this
-   software also includes:
-
-    - one or more source files from the Apache Xerces-J and Apache Axis
-      products, Copyright (c) 1999-2003 Apache Software Foundation
-
-    - W3C XML Schema documents Copyright 2001-2003 (c) World Wide Web
-      Consortium (Massachusetts Institute of Technology, European Research
-      Consortium for Informatics and Mathematics, Keio University)
-
-    - resolver.jar from Apache Xml Commons project,
-      Copyright (c) 2001-2003 Apache Software Foundation
-
-    - Piccolo XML Parser for Java from http://piccolo.sourceforge.net/,
-      Copyright 2002 Yuval Oren under the terms of the Apache Software License 2.0
-
-    - JSR-173 Streaming API for XML from http://sourceforge.net/projects/xmlpullparser/,
-      Copyright 2005 BEA under the terms of the Apache Software License 2.0
-      
-=========================================================================================
-Apache Axis2 Notice: (axis2-*, mex-1.5.1-impl)
-
-Portions Copyright 2006 International Business Machines Corp.
-Portions Copyright 2005-2007 WSO2, Inc.
-
-This product also includes schemas and specification developed by:
-- the W3C consortium (http://www.w3c.org)
-
-This product also includes WS-* schemas developed by International
-Business Machines Corporation, Microsoft Corporation, BEA Systems, 
-TIBCO Software, SAP AG, Sonic Software, and VeriSign
-
-This product also includes a WSDL developed by salesforce.com
-- Copyright 1999-2006 salesforce.com, inc.
-Portions of the included xmlbeans library were originally based on the following:
-- software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
-
-====================================================================================
-Apache Derby Notice:
-
-Portions of Derby were originally developed by
-International Business Machines Corporation and are
-licensed to the Apache Software Foundation under the
-"Software Grant and Corporate Contribution License Agreement",
-informally known as the "Derby CLA".
-The following copyright notice(s) were affixed to portions of the code
-with which this file is now or was at one time distributed
-and are placed here unaltered.
-
-(C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.
-
-(C) Copyright IBM Corp. 2003. 
-
-=======================
-
-The portion of the functionTests under 'nist' was originally 
-developed by the National Institute of Standards and Technology (NIST), 
-an agency of the United States Department of Commerce, and adapted by
-International Business Machines Corporation in accordance with the NIST
-Software Acknowledgment and Redistribution document at
-http://www.itl.nist.gov/div897/ctg/sql_form.htm
-
-========================
-
-The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
-java/stubs/jdbc3) were produced by trimming sources supplied by the
-Apache Harmony project. In addition, the Harmony SerialBlob and
-SerialClob implementations are used. The following notice covers the Harmony sources:
-
-Portions of Harmony were originally developed by
-Intel Corporation and are licensed to the Apache Software
-Foundation under the "Software Grant and Corporate Contribution
-License Agreement", informally known as the "Intel Harmony CLA".
-
-=============================================================================
-Apache Woden Notice:
-
-   This product also includes software developed by :
-   
-     - IBM Corporation (http://www.ibm.com),
-         WSDL4J was the initial code contribution for the Apache Woden
-         project and some of the WSDL4J design and code has been reused.
-     - The W3C Consortium (http://www.w3c.org),
-         Common W3C XML Schema and DTD files are packaged with Apache Woden.
-
-   Please read the different LICENSE files present in the root directory of
-   this distribution.
-
-=========================================================================
-Woodstox Notice: 
-
-This product includes software developed by the Woodstox Project 
-(http://woodstox.codehaus.org/)
-
-This product currently only contains code developed by authors
-of specific components, as identified by the source code files.
-
-Since product implements StAX API, it has dependencies to StAX API
-classes.
-
-For additional credits (generally to people who reported problems)
-see CREDITS file.
-
-===========================================================================
-Apache xml-commons xml-apis Notice:
-
-   Portions of this software were originally based on the following:
-     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
-     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
-     - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
-
-================================================================================================
-Apache  Xalan Notice: 
-
-Portions of this software was originally based on the following:
-     - software copyright (c) 1999-2002, Lotus Development Corporation., http://www.lotus.com.
-     - software copyright (c) 2001-2002, Sun Microsystems., http://www.sun.com.
-     - software copyright (c) 2003, IBM Corporation., http://www.ibm.com.
-     - voluntary contributions made by Ovidiu Predescu (ovidiu@cup.hp.com) on behalf of the 
-       Apache Software Foundation and was originally developed at Hewlett Packard Company. 
-================================================================================================
-Apache  OpenJPA Notice: 
-
-OpenJPA includes software developed by the SERP project
-Copyright (c) 2002-2006, A. Abram White. All rights reserved.
-
-OpenJPA includes the persistence and orm schemas from the JPA specifications.
-Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.
-OpenJPA elects to include this software in this distribution under the
-CDDL license.  You can obtain a copy of the License at:
-    https://glassfish.dev.java.net/public/CDDL+GPL.html
-The source code is available at:
-    https://glassfish.dev.java.net/source/browse/glassfish/
-
-OpenJPA includes software written by Miroslav Nachev
-OpenJPA uses test code written by Charles Tillman.
-================================================================================================
-Apache XmlSchema Notice:
-
-Portions Copyright 2006 International Business Machines Corp.
-================================================================================================

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/README
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/README b/distribution/src/main/resources/README
deleted file mode 100644
index c2223ff..0000000
--- a/distribution/src/main/resources/README
+++ /dev/null
@@ -1,145 +0,0 @@
-Apache Airavata Source - README.txt
-Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
---------------------------------------------------------------------------------
-
-About
-=====
-Apache Airavata, a software framework to executing and managing computational jobs on 
-distributed computing resources including local clusters, supercomputers, national grids, 
-academic and commercial clouds. Airavata builds on general concepts of service oriented computing, 
-distributed messaging, and workflow composition and orchestration. Airavata bundles a server package 
-with an API, client software development Kits and a general purpose GUI XBaya as a application registration, workflow
-construction execution and monitoring. XBaya GUI also provides capabilities to access the workflow 
-produced data.  
-
-Contact
-========
-For additional information about Apache Airavata, please contact the user or dev mailing lists:
-http://airavata.apache.org/community/mailing-lists.html
-
-Description of Airavata Directory Structure
-==================================
-    - airavata-api
-      This directory contains Airavata API related data models, api methods, generated server skeletons, client stubs, server implementations and client samples. 
-
-    - modules
-      This contains the source code of all the airavata maven projects organized as libraries, services and distributions
-
-    - samples
-      This contains all the system wide samples provided in Airavata distribution. All the sample are having its README file
-      So users have to refer each readme file before running each sample.
-
-    - tools
-      This contains source code libraries that can enhance Airavata features.
-
-    - README
-      This document.
-    
-    - RELEASE_NOTES
-      The describe the key features and know issues with the current release. 
-
-    - INSTALL
-      This document will contain information on installing Apache-Airavata.
-
-Airavata Source Distribution Directory Structure
-================================================
-
-    AIRAVATA_MASTER
-		\u251c\u2500\u2500 airavata-api
-		\u251c\u2500\u2500 modules
-		\u2502   \u251c\u2500\u2500 airavata-client
-		\u2502   \u251c\u2500\u2500 app-catalog
-		\u2502   \u251c\u2500\u2500 commons
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-schema
-		\u2502   \u2502   \u251c\u2500\u2500 utils
-		\u2502   \u2502   \u251c\u2500\u2500 workflow-execution-context
-		\u2502   \u2502   \u2514\u2500\u2500 workflow-tracking
-		\u2502   \u251c\u2500\u2500 credential-store-service
-		\u2502   \u251c\u2500\u2500 distribution
-		\u2502   \u2502   \u251c\u2500\u2500 api-server
-		\u2502   \u2502   \u251c\u2500\u2500 client
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-server
-		\u2502   \u2502   \u251c\u2500\u2500 orchestrator-server
-		\u2502   \u2502   \u251c\u2500\u2500 server
-		\u2502   \u2502   \u2514\u2500\u2500 release
-		\u2502   \u2502   \u2514\u2500\u2500 xbaya-gui
-		\u2502   \u251c\u2500\u2500 gfac
-		\u2502   \u2502   \u251c\u2500\u2500 airavata-gfac-service
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-bes
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-core
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-ec2
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-gram
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-gsissh
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-hadoop
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-local
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-monitor
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-ssh
-		\u2502   \u2502   \u251c\u2500\u2500 gfac-thrift-descriptions
-		\u2502   \u251c\u2500\u2500 integration-tests
-		\u2502   \u251c\u2500\u2500 messaging
-		\u2502   \u251c\u2500\u2500 orchestrator
-		\u2502   \u251c\u2500\u2500 registry
-		\u2502   \u2502   \u251c\u2500\u2500 airavata-jpa-registry
-		\u2502   \u2502   \u251c\u2500\u2500 registry-cpi
-		\u2502   \u251c\u2500\u2500 security
-		\u2502   \u251c\u2500\u2500 credential-store
-		\u2502   \u251c\u2500\u2500 server
-		\u2502   \u251c\u2500\u2500 test-suite
-		\u2502   \u251c\u2500\u2500 workflow-model
-		\u2502   \u2502   \u251c\u2500\u2500 workflow-engine
-		\u2502   \u2502   \u251c\u2500\u2500 workflow-model-component-node
-		\u2502   \u2502   \u2514\u2500\u2500 workflow-model-core
-		\u2502   \u251c\u2500\u2500 ws-messenger
-		\u2502   \u2502   \u251c\u2500\u2500 commons
-		\u2502   \u2502   \u251c\u2500\u2500 distribution
-		\u2502   \u2502   \u251c\u2500\u2500 messagebox
-		\u2502   \u2502   \u251c\u2500\u2500 messagebroker
-		\u2502   \u2502   \u251c\u2500\u2500 message-monitor
-		\u2502   \u2502   \u2514\u2500\u2500 samples
-		\u2502   \u2514\u2500\u2500 xbaya-gui
-		\u251c\u2500\u2500 samples
-		\u251c\u2500\u2500 tools
-		\u2502   \u251c\u2500\u2500 gsissh
-		\u2502   \u251c\u2500\u2500 gsissh-cli-tools
-		\u2502   \u251c\u2500\u2500 phoebus-integration
-		\u2502   \u2514\u2500\u2500 registry-migrate
-		\u251c\u2500\u2500 INSTALL
-		\u251c\u2500\u2500 LICENSE
-		\u251c\u2500\u2500 NOTICE
-		\u251c\u2500\u2500 README
-		\u2514\u2500\u2500 RELEASE_NOTES
-
-Available Binary Distributions
-==============================
-
-Server Distributions
---------------------
-* Airavata Server
-  The Airavata Server binary distribution allows you to run a standalone Airavata Server which includes all the airavata services 
-  shipped with a default derby database as the backend registry. For stable purposes, a mysql configuration is recommended. 
-
-* Airavata API Server
-  This is the server that contains Airavata API Server.
-
-* Airavata Orchestrator Server
-  This is the stand-alone orchestrator server
-
-* Airavata GFac Server
-  This is the standalone GFac Server
-
-Client Distributions
---------------------
-* Airavata XBaya
-  The Airavata XBaya distribution is a client GUI application with features to register applications as web services, construct workflows,
-  execute and monitor workflows and browse the generated results from the airavata registry.
-
-* Airavata Client
-  The Airavata Client distribution is a set of libraries and configurations files that allow a 3rd party application to programatically 
-  access Airavata functionality through Airavata API. 
-  
- How to test and run samples
-===========================
-* If you built Airavata from source, and if you see "BUILD SUCCESS", then the test cases should have passes.
-* The test cases are beyond unit level, they startup embedded services and run through basic workflow use cases.
-* To walk through Airavata features, follow "XBAYA Quick-Start Tutorial" tutorial at https://cwiki.apache.org/confluence/display/AIRAVATA/XBAYA+Quick-Start+Tutorial.
-* For advanced use cases, please contact mailing lists - http://airavata.apache.org/community/mailing-lists.html

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/airavata-server-start.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/airavata-server-start.sh b/distribution/src/main/resources/bin/airavata-server-start.sh
deleted file mode 100644
index f44661b..0000000
--- a/distribution/src/main/resources/bin/airavata-server-start.sh
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-. `dirname $0`/setenv.sh
-cd ${AIRAVATA_HOME}/bin
-LOGO_FILE="logo.txt"
-
-JAVA_OPTS=""
-AIRAVATA_COMMAND=""
-EXTRA_ARGS=""
-SERVERS=""
-IS_DAEMON_MODE=false
-LOGO=true
-IS_SUBSET=false
-SUBSET=""
-
-# parse command arguments
-for var in "$@"
-do
-    case ${var} in
-        -xdebug)
-        	AIRAVATA_COMMAND="${AIRAVATA_COMMAND}"
-            JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000"
-            shift
-        ;;
-        -security)
-            JAVA_OPTS="${JAVA_OPTS} -Djava.security.manager -Djava.security.policy=${AIRAVATA_HOME}/conf/axis2.policy -Daxis2.home=${AIRAVATA_HOME}"
-            shift
-        ;;
-	    apiserver | gfac | orchestrator | credentialstore | regserver)
-	        if [ -z ${SERVERS} ] ; then
-	            SERVERS="${var}"
-	        else
-	            SERVERS="${SERVERS},${var}"
-	        fi
-            shift
-        ;;
-        all | api-orch | execution )
-            IS_SUBSET=true
-            SUBSET="${var}"
-            shift
-            ;;
-        -d)
-	        IS_DAEMON_MODE=true
-	        shift
-	        ;;
-	    -nologo)
-	        LOGO=false
-            shift
-        ;;
-        -h)
-            echo "Usage: airavata-server-start.sh [server-name/s] [command-options]"
-            echo "Server names:"
-            echo "  apiserver           Start apiserver"
-            echo "  gfac                Start gfac server"
-            echo "  orchestrator        Start orchestrator server"
-            echo "  credentialstore     Start credentialstore server"
-            echo "  regserver           Start registry server"
-            echo "  all                 Start all servers in one JVM"
-
-            echo "command options:"
-	        echo "  -d                  Start server in daemon mode"
-            echo "  -xdebug             Start Airavata Server under JPDA debugger"
-            echo "  -nologo             Do not show airavata logo"
-            echo "  -security           Enable Java 2 security"
-	        echo "  --<key>[=<value>]   Server setting(s) to override or introduce (overrides values in airavata-server.properties)"
-            echo "  -h                  Display this help and exit"
-            shift
-            exit 0
-        ;;
-	    *)
-	        EXTRA_ARGS="${EXTRA_ARGS} ${var}"
-            shift
-        ;;
-    esac
-done
-
-#Construct Airavata command arguments in proper order.
-if ${IS_SUBSET} ; then
-    AIRAVATA_COMMAND="--servers=${SUBSET} ${AIRAVATA_COMMAND} ${EXTRA_ARGS}"
-else
-    if [ -z ${SERVERS} ] ; then
-        echo "You should provide at least one server component to start the airavata server. Please use -h option to get more details."
-        exit -1
-    else
-        AIRAVATA_COMMAND="--servers=${SERVERS} ${AIRAVATA_COMMAND} ${EXTRA_ARGS}"
-    fi
-fi
-
-#print logo file
-if ${LOGO} ; then
-	if [ -e ${LOGO_FILE} ]
-	then
-		cat ${LOGO_FILE}
-	fi
-fi
-
-
-if ${IS_DAEMON_MODE} ; then
-	echo "Starting airavata server/s in daemon mode..."
-	nohup java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
-    org.apache.airavata.server.ServerMain ${AIRAVATA_COMMAND} $* > /dev/null 2>&1 &
-else
-	java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
-    org.apache.airavata.server.ServerMain ${AIRAVATA_COMMAND} $*
-fi
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/airavata-server-stop.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/airavata-server-stop.sh b/distribution/src/main/resources/bin/airavata-server-stop.sh
deleted file mode 100644
index 7f83f48..0000000
--- a/distribution/src/main/resources/bin/airavata-server-stop.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-. `dirname $0`/setenv.sh
-cd ${AIRAVATA_HOME}/bin
-
-JAVA_OPTS=""
-AIRAVATA_COMMAND=""
-FORCE=false
-
-for var in "$@"
-do
-    case ${var} in
-    	-f | --force)
-	        FORCE=true
-            shift
-        ;;
-        -h)
-            echo "Usage: airavata-server-stop.sh [command-options]"
-            echo "command options:"
-	        echo "  -f , --force       Force stop all airavata servers."
-	        echo "  --<key>[=<value>]  Server setting(s) to override or introduce (overrides values in airavata-server.properties)"
-            echo "  -h                 Display this help and exit"
-            shift
-            exit 0
-        ;;
-	*)
-            shift
-    esac
-done
-
-if ${FORCE} ; then
-	for f in `find . -name "server_start_*"`; do
-	    # split file name using "_" underscore
-		f_split=(${f//_/ });
-		echo "Found process file : $f"
-		echo -n "    Sending kill signals to process ${f_split[2]}..."
-		out=`kill -9 ${f_split[2]} 2>&1`
-		if [ -z "$out" ]; then
-		    echo "done"
-		else
-		    echo "failed (REASON: $out)"
-		fi
-		echo -n "    Removing process file..."
-		out=`rm ${f} 2>&1`
-		if [ -z "$out" ]; then
-		    echo "done"
-		else
-		    echo "failed (REASON: $out)"
-		fi
-	done
-else
-    java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
-    org.apache.airavata.server.ServerMain stop ${AIRAVATA_COMMAND} $*
-fi

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/airavata-server.bat
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/airavata-server.bat b/distribution/src/main/resources/bin/airavata-server.bat
deleted file mode 100644
index be2c584..0000000
--- a/distribution/src/main/resources/bin/airavata-server.bat
+++ /dev/null
@@ -1,55 +0,0 @@
-@echo off
-rem Licensed to the Apache Software Foundation (ASF) under one
-rem or more contributor license agreements. See the NOTICE file
-rem distributed with this work for additional information
-rem regarding copyright ownership. The ASF licenses this file
-rem to you under the Apache License, Version 2.0 (the
-rem "License"); you may not use this file except in compliance
-rem with the License. You may obtain a copy of the License at
-rem
-rem http://www.apache.org/licenses/LICENSE-2.0
-rem
-rem Unless required by applicable law or agreed to in writing,
-rem software distributed under the License is distributed on an
-rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-rem KIND, either express or implied. See the License for the
-rem specific language governing permissions and limitations
-rem under the License.
-
-setlocal EnableDelayedExpansion
-
-call "%~dp0"setenv.bat
-
-:loop
-if ""%1""==""-xdebug"" goto xdebug
-if ""%1""==""-security"" goto security
-if ""%1""=="""" goto run
-goto help
-
-:xdebug
-set JAVA_OPTS= %JAVA_OPTS% -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000
-shift
-goto loop
-
-:security
-set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy=%AIRAVATA_HOME%\conf\axis2.policy -Daxis2.home=%AIRAVATA_HOME%
-shift
-goto loop
-
-:help
-echo  Usage: %0 [-options]
-echo.
-echo  where options include:
-echo   -xdebug    Start Airavata Server under JPDA debugger
-echo   -security  Enable Java 2 security
-echo   -h         Help
-goto end
-
-:run
-cd "%AIRAVATA_HOME%\bin"
-set LOGO_FILE="logo.txt"
-if exist "%LOGO_FILE%" type "%LOGO_FILE%"
-
-java %JAVA_OPTS% -classpath "%AIRAVATA_CLASSPATH%" org.apache.airavata.server.ServerMain %*
-
-:end

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/derby.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/derby.sh b/distribution/src/main/resources/bin/derby.sh
deleted file mode 100644
index 134f7b9..0000000
--- a/distribution/src/main/resources/bin/derby.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-
-#   http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-. `dirname $0`/setenv.sh
-export DERBY_HOME=$AIRAVATA_HOME/standalone-server
-cd $AIRAVATA_HOME/bin
-./startNetworkServer $*
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/logo.txt
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/logo.txt b/distribution/src/main/resources/bin/logo.txt
deleted file mode 100644
index e886438..0000000
--- a/distribution/src/main/resources/bin/logo.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-...._....................._..............._...._......................_.........
-.../ \..._.__...__._..___| |__...___...../ \..(_)_.__.__.___...____._|.|_.__._..
-../ _ \.| '_ \./ _` |/ __| '_ \./ _ \.../ _ \.| | '__/ _` \ \./ / _` | __/ _` |.
-./ ___ \| |_) | (_| | (__| |.| |  __/../ ___ \| | |.| (_| |\ V / (_| | || (_| |.
-/_/...\_\ .__/.\__,_|\___|_|.|_|\___|./_/...\_\_|_|..\__,_|.\_/.\__,_|\__\__,_|.
-........|_|.....................................................................
-................................................................................
-................,+????++~..~~++..+????????+??++.++~...~+=???+++.................
-..............:???????....:::...~??????????????.~..::...=????????...............
-............????????..~~..?????..??????????????.?????..~~~.~???????.............
-...........?????????I,~I~~??????.+????????????.~??????~=~..?????????~...........
-.........?????++??????..????????:.??????????I..????????..????????+????..........
-........??.....???????....???????...???????+..+??????+.I.????????.....?,........
-........????==????????..??..?????..=???????=..?????,.=+?.?????????===??=........
-......=??????????+????..+??=.???=.~??????????,.???=,???,.????=+??????????.......
-....??????????+...+I++..???,=...:??????????????.....+??..++I?+..,??????????.....
-....???????=??..........??..+??.:=:.???????......??..??=..........?=???????=....
-....??????..?...........+?..???.....???????......???.??...........~=.??????=....
-....~???~.~..............?..???.~=..,??????...7..???.?.:..............~????:....
-...7....7 ...............?..????. ...??????... .????.?.?.............I ..:.:....
-.....+7=,.+?................????:,I...?????..=.?????.?.............??~.=7+......
-..........????..............??????~...~??..~~??????..?...........+???,..........
-...........???............=.+???????,.?+:.?????????..+...........???+...........
-............??............?,.??????.,??..??????????.,............???............
-...........??,.............=.,????.?+....????????I.I..............=?............
-..........I?..................+??.:?~.....=??????..................??...........
-..........??...?...............??.:?=......??????..............?...??...........
-............++?..............?.????...?....??????.+..............++I............
-.............................?.??????~....???????.?.............................
-............................~~.??????......??????...............................
-.............................=???????......???????+.............................
-..........................=I??++?+++?......?+++++++?+...........................
-..........................,..77..77.........  ..  ...7..........................
-................................................................................

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/setenv.bat
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/setenv.bat b/distribution/src/main/resources/bin/setenv.bat
deleted file mode 100644
index 5f1fda1..0000000
--- a/distribution/src/main/resources/bin/setenv.bat
+++ /dev/null
@@ -1,33 +0,0 @@
-rem Licensed to the Apache Software Foundation (ASF) under one
-rem or more contributor license agreements. See the NOTICE file
-rem distributed with this work for additional information
-rem regarding copyright ownership. The ASF licenses this file
-rem to you under the Apache License, Version 2.0 (the
-rem "License"); you may not use this file except in compliance
-rem with the License. You may obtain a copy of the License at
-rem
-rem http://www.apache.org/licenses/LICENSE-2.0
-rem
-rem Unless required by applicable law or agreed to in writing,
-rem software distributed under the License is distributed on an
-rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-rem KIND, either express or implied. See the License for the
-rem specific language governing permissions and limitations
-rem under the License.
-
-@echo off
-
-:initialize
-if "%AIRAVATA_HOME%"=="" set AIRAVATA_HOME=%~sdp0..
-SET curDrive=%cd:~0,1%
-SET airavataDrive=%AIRAVATA_HOME:~0,1%
-if not "%curDrive%" == "%airavataDrive%" %airavataDrive%:
-goto updateClasspath
-
-rem ----- update classpath -----------------------------------------------------
-:updateClasspath
-cd %AIRAVATA_HOME%
-set AIRAVATA_CLASSPATH=
-FOR %%C in ("%AIRAVATA_HOME%\lib\*.jar") DO set AIRAVATA_CLASSPATH=!AIRAVATA_CLASSPATH!;..\lib\%%~nC%%~xC
-
-:end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/setenv.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/setenv.sh b/distribution/src/main/resources/bin/setenv.sh
deleted file mode 100755
index 9e894e1..0000000
--- a/distribution/src/main/resources/bin/setenv.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# resolve links - $0 may be a softlink
-PRG="$0"
-
-while [ -h "$PRG" ]; do
-  ls=`ls -ld "$PRG"`
-  link=`expr "$ls" : '.*-> \(.*\)$'`
-  if expr "$link" : '.*/.*' > /dev/null; then
-    PRG="$link"
-  else
-    PRG=`dirname "$PRG"`/"$link"
-  fi
-done
-
-PRGDIR=`dirname "$PRG"`
-
-# Only set AIRAVATA_HOME if not already set
-[ -z "$AIRAVATA_HOME" ] && AIRAVATA_HOME=`cd "$PRGDIR/.." ; pwd`
-
-AIRAVATA_CLASSPATH=""
-
-for f in "$AIRAVATA_HOME"/lib/*.jar
-do
-  AIRAVATA_CLASSPATH="$AIRAVATA_CLASSPATH":$f
-done
-
-export AIRAVATA_HOME
-export AIRAVATA_CLASSPATH

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/bin/startNetworkServer
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/bin/startNetworkServer b/distribution/src/main/resources/bin/startNetworkServer
deleted file mode 100644
index 808566c..0000000
--- a/distribution/src/main/resources/bin/startNetworkServer
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-
-#   http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-if [ -n "$derby_common_debug" ] ; then
-  set -x
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  Darwin*) darwin=true
-           if [ -z "$JAVA_HOME" ] ; then
-             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
-           fi
-           ;;
-esac
-
-if [ -z "$DERBY_HOME" -o ! -d "$DERBY_HOME" ] ; then
-  ## resolve links - $0 may be a link to derby's home
-  PRG="$0"
-  progname=`basename "$0"`
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-    PRG="$link"
-    else
-    PRG=`dirname "$PRG"`"/$link"
-    fi
-  done
-
-  DERBY_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  DERBY_HOME=`cd "$DERBY_HOME" && pwd`
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$DERBY_HOME" ] &&
-    DERBY_HOME=`cygpath --unix "$DERBY_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# set DERBY_LIB location
-DERBY_LIB="${DERBY_HOME}/lib"
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD=`which java 2> /dev/null `
-    if [ -z "$JAVACMD" ] ; then
-        JAVACMD=java
-    fi
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit 1
-fi
-
-# set local classpath, don't overwrite the user's
-LOCALCLASSPATH=$DERBY_LIB/derby.jar:$DERBY_LIB/derbynet.jar:$DERBY_LIB/derbytools.jar:$DERBY_LIB/derbyclient.jar
-
-# if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
-# user CLASSPATH first and derby-found jars after.
-# In that case, the user CLASSPATH will override derby-found jars
-#
-# if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
-# with derby-found jars first and user CLASSPATH after
-if [ -n "$CLASSPATH" ] ; then
-  # merge local and specified classpath 
-  if [ -z "$LOCALCLASSPATH" ] ; then 
-    LOCALCLASSPATH="$CLASSPATH"
-  elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
-    LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
-  else
-    LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
-  fi
-
-  # remove class path from launcher -cp option
-  CLASSPATH=""
-fi
-
-# For Cygwin, switch paths to appropriate format before running java
-# For PATHs convert to unix format first, then to windows format to ensure
-# both formats are supported. Probably this will fail on directories with ;
-# in the name in the path. Let's assume that paths containing ; are more
-# rare than windows style paths on cygwin.
-if $cygwin; then
-  if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
-    format=mixed
-  else
-    format=windows
-  fi
-  DERBY_HOME=`cygpath --$format "$DERBY_HOME"`
-  DERBY_LIB=`cygpath --$format "$DERBY_LIB"`
-  if [ -n "$JAVA_HOME" ]; then
-    JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
-  fi
-  LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
-  LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
-  if [ -n "$CLASSPATH" ] ; then
-    CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
-    CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
-  fi
-  CYGHOME=`cygpath --$format "$HOME"`
-fi
-
-# add a second backslash to variables terminated by a backslash under cygwin
-if $cygwin; then
-  case "$DERBY_HOME" in
-    *\\ )
-    DERBY_HOME="$DERBY_HOME\\"
-    ;;
-  esac
-  case "$CYGHOME" in
-    *\\ )
-    CYGHOME="$CYGHOME\\"
-    ;;
-  esac
-  case "$LOCALCLASSPATH" in
-    *\\ )
-    LOCALCLASSPATH="$LOCALCLASSPATH\\"
-    ;;
-  esac
-  case "$CLASSPATH" in
-    *\\ )
-    CLASSPATH="$CLASSPATH\\"
-    ;;
-  esac
-fi
-
-# Readjust classpath for MKS
-# expr match 
-if [ \( "`expr $SHELL : '.*sh.exe$'`" -gt 0 \) -a \( "$cygwin" = "false" \) ]; then
-  LOCALCLASSPATH=`echo $LOCALCLASSPATH | sed -E 's/([\d\w]*):([\d\w]*)/\1;\2/g
-'`
-fi
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-
-#   http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-derby_exec_command="exec \"$JAVACMD\" $DERBY_OPTS -classpath \"$LOCALCLASSPATH\" org.apache.derby.drda.NetworkServerControl start $@"
-eval $derby_exec_command

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/samples/registerSample.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/samples/registerSample.sh b/distribution/src/main/resources/samples/registerSample.sh
deleted file mode 100644
index 384ec0e..0000000
--- a/distribution/src/main/resources/samples/registerSample.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-. `dirname $0`/../bin/setenv.sh
-JAVA_OPTS=""
-
-java -classpath "$AIRAVATA_CLASSPATH" \
-		     org.apache.airavata.client.samples.RegisterSampleData $*

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/samples/scripts/add.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/samples/scripts/add.sh b/distribution/src/main/resources/samples/scripts/add.sh
deleted file mode 100755
index daa140b..0000000
--- a/distribution/src/main/resources/samples/scripts/add.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# add two numbers
-sleep 10
-/bin/echo  "Result=`expr $1 + $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/samples/scripts/echo.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/samples/scripts/echo.sh b/distribution/src/main/resources/samples/scripts/echo.sh
deleted file mode 100755
index 9dbaab9..0000000
--- a/distribution/src/main/resources/samples/scripts/echo.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#echo wrapper
-sleep 10
-/bin/echo "Echoed_Output=$1"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/samples/scripts/multiply.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/samples/scripts/multiply.sh b/distribution/src/main/resources/samples/scripts/multiply.sh
deleted file mode 100755
index a5b5f7f..0000000
--- a/distribution/src/main/resources/samples/scripts/multiply.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# mutiply two numbers
-sleep 10
-/bin/echo "Result=`expr $1 \* $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/samples/scripts/subtract.sh
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/samples/scripts/subtract.sh b/distribution/src/main/resources/samples/scripts/subtract.sh
deleted file mode 100755
index a21bec7..0000000
--- a/distribution/src/main/resources/samples/scripts/subtract.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# substract two numbers
-sleep 10
-/bin/echo "Result=`expr $1 - $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/pom.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/pom.xml b/modules/distribution/pom.xml
new file mode 100644
index 0000000..78d9bb9
--- /dev/null
+++ b/modules/distribution/pom.xml
@@ -0,0 +1,582 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+	license agreements. See the NOTICE file distributed with this work for additional 
+	information regarding copyright ownership. The ASF licenses this file to 
+	you under the Apache License, Version 2.0 (the� "License"); you may not use 
+	this file except in compliance with the License. You may obtain a copy of 
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+	by applicable law or agreed to in writing, software distributed under the 
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+	OF ANY ~ KIND, either express or implied. See the License for the specific 
+	language governing permissions and limitations under the License. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata</artifactId>
+        <version>0.17-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>apache-airavata-distribution</artifactId>
+    <name>Airavata server distribution</name>
+    <packaging>pom</packaging>
+    <url>http://airavata.apache.org/</url>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>unpack</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.airavata</groupId>
+                                    <artifactId>airavata-server-configuration</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>jar</type>
+                                </artifactItem>
+                            </artifactItems>
+                            <!--includes>**/*.war</includes -->
+                            <outputDirectory>${project.build.directory}/conf</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.gmaven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <version>1.4</version>
+                <executions>
+                    <execution>
+                        <id>generate-timestamp</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>
+                                import java.util.Date
+                                import java.text.MessageFormat
+
+                                project.properties['buildTimestamp'] =
+                                        MessageFormat.format("{0,date,dd-MM-yyyy}", new
+                                                Date())
+                            </source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.5.5</version>
+                <executions>
+                    <execution>
+                        <id>distribution-package</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <tarLongFileMode>posix</tarLongFileMode>
+                            <finalName>${archieve.name}-${project.version}</finalName>
+                            <descriptors>
+                                <descriptor>src/main/assembly/bin-assembly.xml</descriptor>
+                                <!-- <descriptor>src/main/assembly/src-assembly.xml</descriptor> -->
+                            </descriptors>
+                            <attach>false</attach>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.7</version>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>${airavata.bin.zip}</file>
+                                    <type>zip</type>
+                                    <classifier>bin</classifier>
+                                </artifact>
+                                <artifact>
+                                    <file>${airavata.bin.tar.gz}</file>
+                                    <type>tar.gz</type>
+                                    <classifier>bin</classifier>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbyclient</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbynet</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbytools</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk</artifactId>
+            <version>1.9.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.httpcomponents</groupId>
+                    <artifactId>httpclient</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jets3t</groupId>
+            <artifactId>jets3t</artifactId>
+            <version>0.8.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>3.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-standalone-server</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-registry-cpi</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-registry-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-messaging-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-commons</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.ws.commons.schema</groupId>
+                    <artifactId>XmlSchema</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>xerces</groupId>
+                    <artifactId>xmlParserAPIs</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.neethi</groupId>
+                    <artifactId>neethi</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-orchestrator-service</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.ws.commons.schema</groupId>
+                    <artifactId>XmlSchema</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>xerces</groupId>
+                    <artifactId>xmlParserAPIs</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.neethi</groupId>
+                    <artifactId>neethi</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-orchestrator-client</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-client</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-orchestrator-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>registry-api-stubs</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>registry-api-service</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-data-models</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-credential-store</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-impl</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+<!--        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-bes</artifactId>
+            <version>${project.version}</version>
+        </dependency>-->
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-service</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+<!--        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-workflow-model-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>-->
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-model-utils</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-api-server</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15on</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-all</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-core</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-logging-juli</artifactId>
+            <version>7.0.22</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-jasper</artifactId>
+            <version>7.0.22</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-servlet</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-json</artifactId>
+            <version>${jersey.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>stax</groupId>
+                    <artifactId>stax-api</artifactId>
+                </exclusion>
+            </exclusions>
+
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey.contribs</groupId>
+            <artifactId>jersey-multipart</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-server</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        <!--dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId>
+            <version>${jersey.version}</version> </dependency -->
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mapper-asl</artifactId>
+            <version>1.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-xc</artifactId>
+            <version>1.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-jaxrs</artifactId>
+            <version>1.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-core-asl</artifactId>
+            <version>1.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>2.9.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>xml-apis</groupId>
+                    <artifactId>xml-apis</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.ibm.icu</groupId>
+            <artifactId>icu4j</artifactId>
+            <version>3.4.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>12.0</version>
+        </dependency>
+
+        <!-- Hadoop provider related dependencies -->
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-core</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-client</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.whirr</groupId>
+            <artifactId>whirr-core</artifactId>
+            <version>0.7.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.bouncycastle</groupId>
+                    <artifactId>bcprov-jdk16</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jclouds.driver</groupId>
+                    <artifactId>jclouds-bouncycastle</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.whirr</groupId>
+            <artifactId>whirr-hadoop</artifactId>
+            <version>0.7.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-all</artifactId>
+            <version>1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.8.5</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.7</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.jopt-simple</groupId>
+            <artifactId>jopt-simple</artifactId>
+            <version>3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.ebaysf.web</groupId>
+            <artifactId>cors-filter</artifactId>
+            <version>${ebay.cors.filter}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.53</version>
+        </dependency>
+        <!-- dependency> <groupId>org.ogce</groupId> <artifactId>bcgss</artifactId>
+            <version>146</version> </dependency> -->
+        <dependency>
+            <groupId>org.apache.xmlbeans</groupId>
+            <artifactId>xmlbeans</artifactId>
+            <version>${xmlbeans.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>stax</groupId>
+                    <artifactId>stax-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+            <version>${thrift.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <!-- zookeeper dependencies -->
+
+        <dependency>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
+            <version>3.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.rabbitmq</groupId>
+            <artifactId>amqp-client</artifactId>
+            <version>${amqp.client.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <version>${curator.version}</version>
+        </dependency>
+
+        <!-- ======================== Sample =================== -->
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-client-samples</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+
+    <properties>
+        <jersey.version>1.13</jersey.version>
+        <grizzly.version>2.0.0-M3</grizzly.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <archieve.name>apache-airavata-server</archieve.name>
+        <airavata.dist.name>${archieve.name}-${project.version}</airavata.dist.name>
+        <airavata.work.dir>${project.build.directory}/tests/${airavata.dist.name}</airavata.work.dir>
+        <airavata.bin.zip>${project.build.directory}/${airavata.dist.name}-bin.zip</airavata.bin.zip>
+        <airavata.bin.tar.gz>${project.build.directory}/${airavata.dist.name}-bin.tar.gz</airavata.bin.tar.gz>
+    </properties>
+</project>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/assembly/bin-assembly.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/assembly/bin-assembly.xml b/modules/distribution/src/main/assembly/bin-assembly.xml
new file mode 100644
index 0000000..d88521d
--- /dev/null
+++ b/modules/distribution/src/main/assembly/bin-assembly.xml
@@ -0,0 +1,160 @@
+<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+	license agreements. See the NOTICE file distributed with this work for additional 
+	information regarding copyright ownership. The ASF licenses this file to 
+	you under the Apache License, Version 2.0 (the� "License"); you may not use 
+	this file except in compliance with the License. You may obtain a copy of 
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+	by applicable law or agreed to in writing, software distributed under the 
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+	OF ANY ~ KIND, either express or implied. See the License for the specific 
+	language governing permissions and limitations under the License. -->
+
+<!DOCTYPE assembly [
+        <!ELEMENT assembly (id|includeBaseDirectory|baseDirectory|formats|fileSets|dependencySets)*>
+        <!ELEMENT id (#PCDATA)>
+        <!ELEMENT includeBaseDirectory (#PCDATA)>
+        <!ELEMENT baseDirectory (#PCDATA)>
+        <!ELEMENT formats (format)*>
+        <!ELEMENT format (#PCDATA)>
+        <!ELEMENT fileSets (fileSet)*>
+        <!ELEMENT fileSet (directory|outputDirectory|fileMode|includes)*>
+        <!ELEMENT directory (#PCDATA)>
+        <!ELEMENT outputDirectory (#PCDATA)>
+        <!ELEMENT includes (include)*>
+        <!ELEMENT include (#PCDATA)>
+        <!ELEMENT dependencySets (dependencySet)*>
+        <!ELEMENT dependencySet (outputDirectory|outputFileNameMapping|includes)*>
+        ]>
+<assembly>
+    <id>bin</id>
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>${archieve.name}-${version}</baseDirectory>
+    <formats>
+        <format>tar.gz</format>
+        <format>zip</format>
+    </formats>
+
+    <fileSets>
+
+        <!-- ********************** copy release notes files ********************** -->
+        <fileSet>
+            <directory>../../../</directory>
+            <outputDirectory>.</outputDirectory>
+            <includes>
+                <include>RELEASE_NOTES</include>
+            </includes>
+        </fileSet>
+        <!-- ********************** copy licenses, readme etc. ********************** -->
+        <fileSet>
+            <directory>src/main/resources/</directory>
+            <outputDirectory>.</outputDirectory>
+            <includes>
+                <include>LICENSE</include>
+                <include>NOTICE</include>
+                <include>README</include>
+                <include>INSTALL</include>
+            </includes>
+        </fileSet>
+
+        <!-- ********************** copy database scripts ********************** -->
+        <fileSet>
+            <directory>../registry/registry-core/src/main/resources/
+            </directory>
+            <outputDirectory>bin/database_scripts
+            </outputDirectory>
+            <includes>
+                <include>*sql*</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources/bin</directory>
+            <outputDirectory>bin</outputDirectory>
+            <fileMode>777</fileMode>
+            <includes>
+                <include>*.sh</include>
+                <include>*.bat</include>
+                <include>logo.txt</include>
+                <include>startNetworkServer</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources/samples</directory>
+            <outputDirectory>samples</outputDirectory>
+            <fileMode>777</fileMode>
+            <includes>
+                <include>*.sh</include>
+                <include>**/*.sh</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/conf</directory>
+            <outputDirectory>bin</outputDirectory>
+            <includes>
+                <include>airavata-server.properties</include>
+                <include>zoo.cfg</include>
+                <include>registry.properties</include>
+                <include>log4j.properties</include>
+                <include>host.xml</include>
+                <include>persistence.xml</include>
+                <include>provenance.sql</include>
+                <include>gfac-config.yaml</include>
+                <include>PBSTemplate.xslt</include>
+                <include>SLURMTemplate.xslt</include>
+                <include>LSFTemplate.xslt</include>
+                <include>UGETemplate.xslt</include>
+                <include>ForkTemplate.xslt</include>
+                <include>gsissh.properties</include>
+                <include>airavata.jks</include>
+                <include>client_truststore.jks</include>
+                <include>airavata-default-xacml-policy.xml</include>
+            </includes>
+        </fileSet>
+
+        <!-- Create logs directory -->
+        <fileSet>
+            <directory>./</directory>
+            <outputDirectory>logs</outputDirectory>
+            <excludes>
+                <exclude>*/**</exclude>
+            </excludes>
+        </fileSet>
+
+        <!-- ********************** Copy samples ********************** -->
+        <fileSet>
+            <directory>${project.build.directory}/samples/applications
+            </directory>
+            <outputDirectory>samples</outputDirectory>
+            <includes>
+                <include>*.sh</include>
+                <include>*.bat</include>
+            </includes>
+        </fileSet>
+
+    </fileSets>
+
+    <dependencySets>
+        <dependencySet>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputDirectory>lib</outputDirectory>
+            <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.derby:derby:jar</include>
+                <include>org.apache.derby:derbytools:jar</include>
+                <include>org.apache.derby:derbynet:jar</include>
+                <include>org.apache.derby:derbyclient:jar</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputDirectory>lib</outputDirectory>
+            <includes>
+                <include>*:*:jar</include>
+            </includes>
+            <excludes>
+                <exclude>mysql:mysql-connector-java</exclude>
+            </excludes>
+        </dependencySet>
+
+    </dependencySets>
+
+</assembly>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/assembly/src-assembly.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/assembly/src-assembly.xml b/modules/distribution/src/main/assembly/src-assembly.xml
new file mode 100644
index 0000000..6a093ed
--- /dev/null
+++ b/modules/distribution/src/main/assembly/src-assembly.xml
@@ -0,0 +1,75 @@
+<!--Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<assembly>
+    <id>src</id>
+    <includeBaseDirectory>true</includeBaseDirectory> 
+    <baseDirectory>${archieve.name}-${version}</baseDirectory>
+    <formats>
+        <format>tar.gz</format>  
+        <format>zip</format>
+    </formats>
+
+    <fileSets>
+        <fileSet>
+            <directory>../..</directory>
+            <outputDirectory></outputDirectory>
+            <includes>
+                <include>NOTICE</include>
+                <include>LICENSE</include>
+                <include>README</include>
+                <include>RELEASE_NOTES</include>
+		<include>DISCLAIMER</include>
+		<include>INSTALL</include>
+            </includes>
+            <filtered>true</filtered>
+        </fileSet>
+        <fileSet>
+            <directory>../..</directory>
+            <outputDirectory></outputDirectory>
+            <useDefaultExcludes>true</useDefaultExcludes>
+            <includes>
+                <include>pom.xml</include>
+                <include>modules/**</include>
+                <include>samples/**</include>
+            </includes>
+
+            <excludes>
+                                <!-- Exclusions from org.apache.resources:apache-source-release-assembly-descriptor.
+                     Note that they assume that all sources are located under an "src" directory. This
+                     is not the case for Axis2, which doesn't use the standard Maven 2 conventions.
+                     Thus we may still encounter some issues here. -->
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.settings(/.*)?]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?cobertura\.ser]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude>
+                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude>
+            </excludes>
+
+        </fileSet>
+          </fileSets>
+</assembly>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/INSTALL
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/INSTALL b/modules/distribution/src/main/resources/INSTALL
new file mode 100644
index 0000000..53d0550
--- /dev/null
+++ b/modules/distribution/src/main/resources/INSTALL
@@ -0,0 +1,30 @@
+Installing  Apache Airavata 0.14
+-------------------------------
+
+Prerequisites
+-------------
+Java 1.5 or later
+Maven (tested on v 3.0.2)
+
+Build Apache Airavata from Source
+---------------------------------
+* Unzip/untar the source file or clone from git.
+* cd to project folder and type
+	$ mvn clean install
+	Note: in order to skip tests use the command
+			$ mvn clean install -Dmaven.test.skip=true
+* Alternatively, all  compressed binary distributions can be found at <PROJECT DIR>/modules/distribution/release/target/release-artifacts
+
+Running Tests
+-------------
+* Unit tests & integrations tests will run while Apache Airavata is built from source (without "-Dmaven.test.skip=true").
+* To run the test samples
+    - You can find the binary distributions at <PROJECT DIR>/modules/distribution/release/target/release-artifacts or from
+      the Apache Airavata download site.
+    - Extract the binary distributions and once the binary is unzipped, instructions to run the tests should be followed
+      from README files found within.
+
+Tutorials
+----------
+The airavata website has instructions for basic tutorials:
+* Describing and executing applications using Airavata - follow "XBAYA Quick-Start Tutorial" tutorial at https://cwiki.apache.org/confluence/display/AIRAVATA/XBAYA+Quick-Start+Tutorial
\ No newline at end of file


[18/48] airavata git commit: [AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Posted by la...@apache.org.
[AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Move the distrubtion to modules directory, now the build time moves back to few seconds from 15 minutes.

Test: ran mvn clean install and unpacked the distrubtion and started the server with
`airavata-server-start.sh all`, started fine.


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: a3950c99ac6cef67c864f023fbd4f4a40291c6e8
Parents: c450f40
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Fri Aug 26 08:37:25 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Sat Aug 27 11:02:07 2016 -0700

----------------------------------------------------------------------
 distribution/pom.xml                            |  582 -----
 distribution/src/main/assembly/bin-assembly.xml |  160 --
 distribution/src/main/assembly/src-assembly.xml |   75 -
 distribution/src/main/resources/INSTALL         |   30 -
 distribution/src/main/resources/LICENSE         | 2387 ------------------
 distribution/src/main/resources/NOTICE          |  163 --
 distribution/src/main/resources/README          |  145 --
 .../main/resources/bin/airavata-server-start.sh |  123 -
 .../main/resources/bin/airavata-server-stop.sh  |   71 -
 .../src/main/resources/bin/airavata-server.bat  |   55 -
 distribution/src/main/resources/bin/derby.sh    |   23 -
 distribution/src/main/resources/bin/logo.txt    |   34 -
 distribution/src/main/resources/bin/setenv.bat  |   33 -
 distribution/src/main/resources/bin/setenv.sh   |   46 -
 .../src/main/resources/bin/startNetworkServer   |  189 --
 .../main/resources/samples/registerSample.sh    |   24 -
 .../src/main/resources/samples/scripts/add.sh   |   21 -
 .../src/main/resources/samples/scripts/echo.sh  |   22 -
 .../main/resources/samples/scripts/multiply.sh  |   22 -
 .../main/resources/samples/scripts/subtract.sh  |   22 -
 modules/distribution/pom.xml                    |  582 +++++
 .../src/main/assembly/bin-assembly.xml          |  160 ++
 .../src/main/assembly/src-assembly.xml          |   75 +
 modules/distribution/src/main/resources/INSTALL |   30 +
 modules/distribution/src/main/resources/LICENSE | 2387 ++++++++++++++++++
 modules/distribution/src/main/resources/NOTICE  |  163 ++
 modules/distribution/src/main/resources/README  |  145 ++
 .../main/resources/bin/airavata-server-start.sh |  123 +
 .../main/resources/bin/airavata-server-stop.sh  |   71 +
 .../src/main/resources/bin/airavata-server.bat  |   55 +
 .../src/main/resources/bin/derby.sh             |   23 +
 .../src/main/resources/bin/logo.txt             |   34 +
 .../src/main/resources/bin/setenv.bat           |   33 +
 .../src/main/resources/bin/setenv.sh            |   46 +
 .../src/main/resources/bin/startNetworkServer   |  189 ++
 .../main/resources/samples/registerSample.sh    |   24 +
 .../src/main/resources/samples/scripts/add.sh   |   21 +
 .../src/main/resources/samples/scripts/echo.sh  |   22 +
 .../main/resources/samples/scripts/multiply.sh  |   22 +
 .../main/resources/samples/scripts/subtract.sh  |   22 +
 pom.xml                                         |   97 +-
 41 files changed, 4229 insertions(+), 4322 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/pom.xml b/distribution/pom.xml
deleted file mode 100644
index d3124eb..0000000
--- a/distribution/pom.xml
+++ /dev/null
@@ -1,582 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you under the Apache License, Version 2.0 (the� "License"); you may not use 
-	this file except in compliance with the License. You may obtain a copy of 
-	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-	by applicable law or agreed to in writing, software distributed under the 
-	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY ~ KIND, either express or implied. See the License for the specific 
-	language governing permissions and limitations under the License. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <parent>
-        <groupId>org.apache.airavata</groupId>
-        <artifactId>airavata</artifactId>
-        <version>0.17-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>apache-airavata-distribution</artifactId>
-    <name>Airavata server distribution</name>
-    <packaging>pom</packaging>
-    <url>http://airavata.apache.org/</url>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>2.8</version>
-                <executions>
-                    <execution>
-                        <id>unpack</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.airavata</groupId>
-                                    <artifactId>airavata-server-configuration</artifactId>
-                                    <version>${project.version}</version>
-                                    <type>jar</type>
-                                </artifactItem>
-                            </artifactItems>
-                            <!--includes>**/*.war</includes -->
-                            <outputDirectory>${project.build.directory}/conf</outputDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.codehaus.gmaven</groupId>
-                <artifactId>gmaven-plugin</artifactId>
-                <version>1.4</version>
-                <executions>
-                    <execution>
-                        <id>generate-timestamp</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>execute</goal>
-                        </goals>
-                        <configuration>
-                            <source>
-                                import java.util.Date
-                                import java.text.MessageFormat
-
-                                project.properties['buildTimestamp'] =
-                                        MessageFormat.format("{0,date,dd-MM-yyyy}", new
-                                                Date())
-                            </source>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>2.5.5</version>
-                <executions>
-                    <execution>
-                        <id>distribution-package</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <tarLongFileMode>posix</tarLongFileMode>
-                            <finalName>${archieve.name}-${project.version}</finalName>
-                            <descriptors>
-                                <descriptor>src/main/assembly/bin-assembly.xml</descriptor>
-                                <!-- <descriptor>src/main/assembly/src-assembly.xml</descriptor> -->
-                            </descriptors>
-                            <attach>false</attach>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <id>attach-artifacts</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>attach-artifact</goal>
-                        </goals>
-                        <configuration>
-                            <artifacts>
-                                <artifact>
-                                    <file>${airavata.bin.zip}</file>
-                                    <type>zip</type>
-                                    <classifier>bin</classifier>
-                                </artifact>
-                                <artifact>
-                                    <file>${airavata.bin.tar.gz}</file>
-                                    <type>tar.gz</type>
-                                    <classifier>bin</classifier>
-                                </artifact>
-                            </artifacts>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derby</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbyclient</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbynet</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbytools</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jcl-over-slf4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk</artifactId>
-            <version>1.9.0</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.httpcomponents</groupId>
-                    <artifactId>httpclient</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>net.java.dev.jets3t</groupId>
-            <artifactId>jets3t</artifactId>
-            <version>0.8.0</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-collections</groupId>
-            <artifactId>commons-collections</artifactId>
-            <version>3.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.6</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-standalone-server</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-registry-cpi</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-registry-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-messaging-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-commons</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.ws.commons.schema</groupId>
-                    <artifactId>XmlSchema</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>xerces</groupId>
-                    <artifactId>xmlParserAPIs</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.neethi</groupId>
-                    <artifactId>neethi</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-orchestrator-service</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.ws.commons.schema</groupId>
-                    <artifactId>XmlSchema</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>xerces</groupId>
-                    <artifactId>xmlParserAPIs</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.neethi</groupId>
-                    <artifactId>neethi</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-orchestrator-client</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-gfac-client</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-orchestrator-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>registry-api-stubs</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>registry-api-service</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-data-models</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-credential-store</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-gfac-impl</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-<!--        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-gfac-bes</artifactId>
-            <version>${project.version}</version>
-        </dependency>-->
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-gfac-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-gfac-service</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-<!--        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-workflow-model-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>-->
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-model-utils</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-api-server</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>bcprov-jdk15on</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.openjpa</groupId>
-            <artifactId>openjpa-all</artifactId>
-            <version>2.2.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.shiro</groupId>
-            <artifactId>shiro-core</artifactId>
-            <version>1.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-client</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.0.1</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tomcat.embed</groupId>
-            <artifactId>tomcat-embed-logging-juli</artifactId>
-            <version>7.0.22</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tomcat.embed</groupId>
-            <artifactId>tomcat-embed-jasper</artifactId>
-            <version>7.0.22</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-servlet</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-json</artifactId>
-            <version>${jersey.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>stax</groupId>
-                    <artifactId>stax-api</artifactId>
-                </exclusion>
-            </exclusions>
-
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey.contribs</groupId>
-            <artifactId>jersey-multipart</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-server</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <!--dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId>
-            <version>${jersey.version}</version> </dependency -->
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>1.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-xc</artifactId>
-            <version>1.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-jaxrs</artifactId>
-            <version>1.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-            <version>1.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>xerces</groupId>
-            <artifactId>xercesImpl</artifactId>
-            <version>2.9.1</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>xml-apis</groupId>
-                    <artifactId>xml-apis</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.ibm.icu</groupId>
-            <artifactId>icu4j</artifactId>
-            <version>3.4.4</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>12.0</version>
-        </dependency>
-
-        <!-- Hadoop provider related dependencies -->
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-core</artifactId>
-            <version>1.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-client</artifactId>
-            <version>1.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.whirr</groupId>
-            <artifactId>whirr-core</artifactId>
-            <version>0.7.1</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.bouncycastle</groupId>
-                    <artifactId>bcprov-jdk16</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.jclouds.driver</groupId>
-                    <artifactId>jclouds-bouncycastle</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.whirr</groupId>
-            <artifactId>whirr-hadoop</artifactId>
-            <version>0.7.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-all</artifactId>
-            <version>1.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>1.8.5</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-configuration</groupId>
-            <artifactId>commons-configuration</artifactId>
-            <version>1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.jopt-simple</groupId>
-            <artifactId>jopt-simple</artifactId>
-            <version>3.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.ebaysf.web</groupId>
-            <artifactId>cors-filter</artifactId>
-            <version>${ebay.cors.filter}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.jcraft</groupId>
-            <artifactId>jsch</artifactId>
-            <version>0.1.53</version>
-        </dependency>
-        <!-- dependency> <groupId>org.ogce</groupId> <artifactId>bcgss</artifactId>
-            <version>146</version> </dependency> -->
-        <dependency>
-            <groupId>org.apache.xmlbeans</groupId>
-            <artifactId>xmlbeans</artifactId>
-            <version>${xmlbeans.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>stax</groupId>
-                    <artifactId>stax-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-            <version>${thrift.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <!-- zookeeper dependencies -->
-
-        <dependency>
-            <groupId>org.apache.zookeeper</groupId>
-            <artifactId>zookeeper</artifactId>
-            <version>3.4.0</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-            <version>1.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.rabbitmq</groupId>
-            <artifactId>amqp-client</artifactId>
-            <version>${amqp.client.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.curator</groupId>
-            <artifactId>curator-framework</artifactId>
-            <version>${curator.version}</version>
-        </dependency>
-
-        <!-- ======================== Sample =================== -->
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-client-samples</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-
-    <properties>
-        <jersey.version>1.13</jersey.version>
-        <grizzly.version>2.0.0-M3</grizzly.version>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <archieve.name>apache-airavata-server</archieve.name>
-        <airavata.dist.name>${archieve.name}-${project.version}</airavata.dist.name>
-        <airavata.work.dir>${project.build.directory}/tests/${airavata.dist.name}</airavata.work.dir>
-        <airavata.bin.zip>${project.build.directory}/${airavata.dist.name}-bin.zip</airavata.bin.zip>
-        <airavata.bin.tar.gz>${project.build.directory}/${airavata.dist.name}-bin.tar.gz</airavata.bin.tar.gz>
-    </properties>
-</project>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/assembly/bin-assembly.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/assembly/bin-assembly.xml b/distribution/src/main/assembly/bin-assembly.xml
deleted file mode 100644
index b9146d5..0000000
--- a/distribution/src/main/assembly/bin-assembly.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you under the Apache License, Version 2.0 (the� "License"); you may not use 
-	this file except in compliance with the License. You may obtain a copy of 
-	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-	by applicable law or agreed to in writing, software distributed under the 
-	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY ~ KIND, either express or implied. See the License for the specific 
-	language governing permissions and limitations under the License. -->
-
-<!DOCTYPE assembly [
-        <!ELEMENT assembly (id|includeBaseDirectory|baseDirectory|formats|fileSets|dependencySets)*>
-        <!ELEMENT id (#PCDATA)>
-        <!ELEMENT includeBaseDirectory (#PCDATA)>
-        <!ELEMENT baseDirectory (#PCDATA)>
-        <!ELEMENT formats (format)*>
-        <!ELEMENT format (#PCDATA)>
-        <!ELEMENT fileSets (fileSet)*>
-        <!ELEMENT fileSet (directory|outputDirectory|fileMode|includes)*>
-        <!ELEMENT directory (#PCDATA)>
-        <!ELEMENT outputDirectory (#PCDATA)>
-        <!ELEMENT includes (include)*>
-        <!ELEMENT include (#PCDATA)>
-        <!ELEMENT dependencySets (dependencySet)*>
-        <!ELEMENT dependencySet (outputDirectory|outputFileNameMapping|includes)*>
-        ]>
-<assembly>
-    <id>bin</id>
-    <includeBaseDirectory>true</includeBaseDirectory>
-    <baseDirectory>${archieve.name}-${version}</baseDirectory>
-    <formats>
-        <format>tar.gz</format>
-        <format>zip</format>
-    </formats>
-
-    <fileSets>
-
-        <!-- ********************** copy release notes files ********************** -->
-        <fileSet>
-            <directory>../../../</directory>
-            <outputDirectory>.</outputDirectory>
-            <includes>
-                <include>RELEASE_NOTES</include>
-            </includes>
-        </fileSet>
-        <!-- ********************** copy licenses, readme etc. ********************** -->
-        <fileSet>
-            <directory>src/main/resources/</directory>
-            <outputDirectory>.</outputDirectory>
-            <includes>
-                <include>LICENSE</include>
-                <include>NOTICE</include>
-                <include>README</include>
-                <include>INSTALL</include>
-            </includes>
-        </fileSet>
-
-        <!-- ********************** copy database scripts ********************** -->
-        <fileSet>
-            <directory>../modules/registry/registry-core/src/main/resources/
-            </directory>
-            <outputDirectory>bin/database_scripts
-            </outputDirectory>
-            <includes>
-                <include>*sql*</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>src/main/resources/bin</directory>
-            <outputDirectory>bin</outputDirectory>
-            <fileMode>777</fileMode>
-            <includes>
-                <include>*.sh</include>
-                <include>*.bat</include>
-                <include>logo.txt</include>
-                <include>startNetworkServer</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>src/main/resources/samples</directory>
-            <outputDirectory>samples</outputDirectory>
-            <fileMode>777</fileMode>
-            <includes>
-                <include>*.sh</include>
-                <include>**/*.sh</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>${project.build.directory}/conf</directory>
-            <outputDirectory>bin</outputDirectory>
-            <includes>
-                <include>airavata-server.properties</include>
-                <include>zoo.cfg</include>
-                <include>registry.properties</include>
-                <include>log4j.properties</include>
-                <include>host.xml</include>
-                <include>persistence.xml</include>
-                <include>provenance.sql</include>
-                <include>gfac-config.yaml</include>
-                <include>PBSTemplate.xslt</include>
-                <include>SLURMTemplate.xslt</include>
-                <include>LSFTemplate.xslt</include>
-                <include>UGETemplate.xslt</include>
-                <include>ForkTemplate.xslt</include>
-                <include>gsissh.properties</include>
-                <include>airavata.jks</include>
-                <include>client_truststore.jks</include>
-                <include>airavata-default-xacml-policy.xml</include>
-            </includes>
-        </fileSet>
-
-        <!-- Create logs directory -->
-        <fileSet>
-            <directory>./</directory>
-            <outputDirectory>logs</outputDirectory>
-            <excludes>
-                <exclude>*/**</exclude>
-            </excludes>
-        </fileSet>
-
-        <!-- ********************** Copy samples ********************** -->
-        <fileSet>
-            <directory>${project.build.directory}/samples/applications
-            </directory>
-            <outputDirectory>samples</outputDirectory>
-            <includes>
-                <include>*.sh</include>
-                <include>*.bat</include>
-            </includes>
-        </fileSet>
-
-    </fileSets>
-
-    <dependencySets>
-        <dependencySet>
-            <useProjectArtifact>false</useProjectArtifact>
-            <outputDirectory>lib</outputDirectory>
-            <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
-            <includes>
-                <include>org.apache.derby:derby:jar</include>
-                <include>org.apache.derby:derbytools:jar</include>
-                <include>org.apache.derby:derbynet:jar</include>
-                <include>org.apache.derby:derbyclient:jar</include>
-            </includes>
-        </dependencySet>
-        <dependencySet>
-            <useProjectArtifact>false</useProjectArtifact>
-            <outputDirectory>lib</outputDirectory>
-            <includes>
-                <include>*:*:jar</include>
-            </includes>
-            <excludes>
-                <exclude>mysql:mysql-connector-java</exclude>
-            </excludes>
-        </dependencySet>
-
-    </dependencySets>
-
-</assembly>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/assembly/src-assembly.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/assembly/src-assembly.xml b/distribution/src/main/assembly/src-assembly.xml
deleted file mode 100644
index 6a093ed..0000000
--- a/distribution/src/main/assembly/src-assembly.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements. See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership. The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License. You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied. See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<assembly>
-    <id>src</id>
-    <includeBaseDirectory>true</includeBaseDirectory> 
-    <baseDirectory>${archieve.name}-${version}</baseDirectory>
-    <formats>
-        <format>tar.gz</format>  
-        <format>zip</format>
-    </formats>
-
-    <fileSets>
-        <fileSet>
-            <directory>../..</directory>
-            <outputDirectory></outputDirectory>
-            <includes>
-                <include>NOTICE</include>
-                <include>LICENSE</include>
-                <include>README</include>
-                <include>RELEASE_NOTES</include>
-		<include>DISCLAIMER</include>
-		<include>INSTALL</include>
-            </includes>
-            <filtered>true</filtered>
-        </fileSet>
-        <fileSet>
-            <directory>../..</directory>
-            <outputDirectory></outputDirectory>
-            <useDefaultExcludes>true</useDefaultExcludes>
-            <includes>
-                <include>pom.xml</include>
-                <include>modules/**</include>
-                <include>samples/**</include>
-            </includes>
-
-            <excludes>
-                                <!-- Exclusions from org.apache.resources:apache-source-release-assembly-descriptor.
-                     Note that they assume that all sources are located under an "src" directory. This
-                     is not the case for Axis2, which doesn't use the standard Maven 2 conventions.
-                     Thus we may still encounter some issues here. -->
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.settings(/.*)?]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?cobertura\.ser]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude>
-                <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude>
-            </excludes>
-
-        </fileSet>
-          </fileSets>
-</assembly>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/INSTALL
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/INSTALL b/distribution/src/main/resources/INSTALL
deleted file mode 100644
index 53d0550..0000000
--- a/distribution/src/main/resources/INSTALL
+++ /dev/null
@@ -1,30 +0,0 @@
-Installing  Apache Airavata 0.14
--------------------------------
-
-Prerequisites
--------------
-Java 1.5 or later
-Maven (tested on v 3.0.2)
-
-Build Apache Airavata from Source
----------------------------------
-* Unzip/untar the source file or clone from git.
-* cd to project folder and type
-	$ mvn clean install
-	Note: in order to skip tests use the command
-			$ mvn clean install -Dmaven.test.skip=true
-* Alternatively, all  compressed binary distributions can be found at <PROJECT DIR>/modules/distribution/release/target/release-artifacts
-
-Running Tests
--------------
-* Unit tests & integrations tests will run while Apache Airavata is built from source (without "-Dmaven.test.skip=true").
-* To run the test samples
-    - You can find the binary distributions at <PROJECT DIR>/modules/distribution/release/target/release-artifacts or from
-      the Apache Airavata download site.
-    - Extract the binary distributions and once the binary is unzipped, instructions to run the tests should be followed
-      from README files found within.
-
-Tutorials
-----------
-The airavata website has instructions for basic tutorials:
-* Describing and executing applications using Airavata - follow "XBAYA Quick-Start Tutorial" tutorial at https://cwiki.apache.org/confluence/display/AIRAVATA/XBAYA+Quick-Start+Tutorial
\ No newline at end of file


[23/48] airavata git commit: adding process model classes

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
new file mode 100644
index 0000000..e7cc6ee
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessErrorPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessErrorPK.class);
+    private String errorId;
+    private String processId;
+
+    @Column(name = "ERROR_ID")
+    @Id
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "PROCESS_ID")
+    @Id
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessErrorPK that = (ProcessErrorPK) o;
+
+        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
new file mode 100644
index 0000000..a63ff37
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
@@ -0,0 +1,174 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_INPUT")
+@IdClass(ProcessInputPK.class)
+public class ProcessInputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean standardInput;
+    public String userFriendlyDescription;
+    public String metaData;
+    public int inputOrder;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataStaged;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProceesId() {
+        return processId;
+    }
+
+    public void setProceseId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "INPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "INPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "STANDARD_INPUT")
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    @Column(name = "USER_FRIENDLY_DESCRIPTION")
+    public String getUserFriendlyDescription() {
+        return userFriendlyDescription;
+    }
+
+    public void setUserFriendlyDescription(String userFriendlyDescription) {
+        this.userFriendlyDescription = userFriendlyDescription;
+    }
+
+    @Lob
+    @Column(name = "METADATA")
+    public String getMetaData() {
+        return metaData;
+    }
+
+    public void setMetaData(String metaData) {
+        this.metaData = metaData;
+    }
+
+    @Column(name = "INPUT_ORDER")
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_STAGED")
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
new file mode 100644
index 0000000..188b35f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessInputPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessInputPK.class);
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessInputPK that = (ProcessInputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
new file mode 100644
index 0000000..06181bc
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
@@ -0,0 +1,165 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_OUTPUT")
+@IdClass(ProcessOutputPK.class)
+public class ProcessOutputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataMovement;
+    public String location;
+    public String searchQuery;
+    public boolean outputStreaming;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "OUTPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "OUTPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_MOVEMENT")
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    @Column(name = "LOCATION")
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    @Column(name = "SEARCH_QUERY")
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    @Column(name = "OUTPUT_STREAMING")
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
new file mode 100644
index 0000000..bde7c50
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
@@ -0,0 +1,70 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessOutputPK implements Serializable {
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessOutputPK that = (ProcessOutputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
new file mode 100644
index 0000000..11f167d
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
@@ -0,0 +1,170 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_RESOURCE_SCHEDULING")
+public class ProcessResourceSchedulingEntity {
+    private String processId;
+    private String resourceHostId;
+    private int totalCPUCount;
+    private int nodeCount;
+    private int numberOfThreads;
+    private String queueName;
+    private int wallTimeLimit;
+    private int totalPhysicalMemory;
+    private String chessisNumber;
+    private String staticWorkingDir;
+    private String overrideLoginUserName;
+    private String overrideScratchLocation;
+    private String overrideAllocationProjectNumber;
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "RESOURCE_HOST_ID")
+    public String getResourceHostId() {
+        return resourceHostId;
+    }
+
+    public void setResourceHostId(String resourceHostId) {
+        this.resourceHostId = resourceHostId;
+    }
+
+    @Column(name = "CPU_COUNT")
+    public int getTotalCPUCount() {
+        return totalCPUCount;
+    }
+
+    public void setTotalCPUCount(int totalCPUCount) {
+        this.totalCPUCount = totalCPUCount;
+    }
+
+    @Column(name = "NODE_COUNT")
+    public int getNodeCount() {
+        return nodeCount;
+    }
+
+    public void setNodeCount(int nodeCount) {
+        this.nodeCount = nodeCount;
+    }
+
+    @Column(name = "NUMBER_OF_THREADS")
+    public int getNumberOfThreads() {
+        return numberOfThreads;
+    }
+
+    public void setNumberOfThreads(int numberOfThreads) {
+        this.numberOfThreads = numberOfThreads;
+    }
+
+    @Column(name = "QUEUE_NAME")
+    public String getQueueName() {
+        return queueName;
+    }
+
+    public void setQueueName(String queueName) {
+        this.queueName = queueName;
+    }
+
+    @Column(name = "WALL_TIME_LIMIT")
+    public int getWallTimeLimit() {
+        return wallTimeLimit;
+    }
+
+    public void setWallTimeLimit(int wallTimeLimit) {
+        this.wallTimeLimit = wallTimeLimit;
+    }
+
+    @Column(name = "TOTAL_PHYSICAL_MEMORY")
+    public int getTotalPhysicalMemory() {
+        return totalPhysicalMemory;
+    }
+
+    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
+        this.totalPhysicalMemory = totalPhysicalMemory;
+    }
+
+    @Column(name = "CHESSIS_NUMBER")
+    public String getChessisNumber() {
+        return chessisNumber;
+    }
+
+    public void setChessisNumber(String chessisNumber) {
+        this.chessisNumber = chessisNumber;
+    }
+
+    @Column(name = "STATIC_WORKING_DIRECTORY")
+    public String getStaticWorkingDir() {
+        return staticWorkingDir;
+    }
+
+    public void setStaticWorkingDir(String staticWorkingDir) {
+        this.staticWorkingDir = staticWorkingDir;
+    }
+
+    @Column(name = "OVERRIDE_LOGIN_USERNAME")
+    public String getOverrideLoginUserName() {
+        return overrideLoginUserName;
+    }
+
+    public void setOverrideLoginUserName(String overrideLoginUserName) {
+        this.overrideLoginUserName = overrideLoginUserName;
+    }
+
+    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
+    public String getOverrideScratchLocation() {
+        return overrideScratchLocation;
+    }
+
+    public void setOverrideScratchLocation(String overrideScratchLocation) {
+        this.overrideScratchLocation = overrideScratchLocation;
+    }
+
+    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
+    public String getOverrideAllocationProjectNumber() {
+        return overrideAllocationProjectNumber;
+    }
+
+    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
+        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
+    }
+
+    @OneToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
new file mode 100644
index 0000000..ea816b5
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_STATUS")
+@IdClass(ProcessStatusPK.class)
+public class ProcessStatusEntity {
+    private String processId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
new file mode 100644
index 0000000..dba568a
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessStatusPK.class);
+    private String state;
+    private String processId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessStatusPK that = (ProcessStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
index b20650d..5a52dff 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -49,8 +49,11 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         Mapper mapper = ObjectMapperSingleton.getInstance();
         ExperimentEntity entity = mapper.map(experiment, ExperimentEntity.class);
 
-        if(entity.getUserConfigurationData() != null)
+        if(entity.getUserConfigurationData() != null) {
             entity.getUserConfigurationData().setExperimentId(experimentId);
+            if (entity.getUserConfigurationData().getComputeResourceSchedulingEntity() != null)
+                entity.getUserConfigurationData().getComputeResourceSchedulingEntity().setExperimentId(experimentId);
+        }
         if(entity.getExperimentInputs() != null)
             entity.getExperimentInputs().forEach(expIn->expIn.setExperimentId(experimentId));
         if(entity.getExperimentOutputs() != null)
@@ -60,6 +63,23 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         if(entity.getExperimentStatuses() != null)
             entity.getExperimentStatuses().forEach(expStatus->expStatus.setExperimentId(experimentId));
 
+        if(entity.getProcesses() != null){
+            entity.getProcesses().forEach(process->{
+                process.setExperimentId(experimentId);
+                String processId = process.getProcessId();
+                if(process.getProcessResourceSchedule() != null)
+                    process.getProcessResourceSchedule().setProcessId(processId);
+                if(process.getProcessInputs() != null)
+                    process.getProcessInputs().forEach(proInput->proInput.setProceseId(processId));
+                if(process.getProcessOutputs() != null)
+                    process.getProcessOutputs().forEach(proOutput->proOutput.setProcessId(processId));
+                if(process.getProcessError() != null)
+                    process.getProcessError().forEach(processErr->processErr.setProcessId(processId));
+                if(process.getProcessStatus() != null)
+                    process.getProcessStatus().forEach(processStat->processStat.setProcessId(processId));
+            });
+        }
+
         ExperimentEntity persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
         return mapper.map(persistedCopy, ExperimentModel.class);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
index f7d72f3..8367f97 100644
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -34,6 +34,12 @@
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentOutputEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentStatusEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessErrorEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessInputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessOutputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessResourceSchedulingEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
index 4d401a3..8c11027 100644
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -116,4 +116,112 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_STATUS(
     REASON VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID, STATE),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS(
+    PROCESS_ID VARCHAR (255),
+    EXPERIMENT_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    LAST_UPDATE_TIME BIGINT,
+    PROCESS_DETAIL VARCHAR (255),
+    APPLICATION_INTERFACE_ID VARCHAR (255),
+    APPLICATION_DEPLOYMENT_ID VARCHAR (255),
+    COMPUTE_RESOURCE_ID VARCHAR (255),
+    TASK_DAG VARCHAR (255),
+    GATEWAY_EXECUTION_ID VARCHAR (255),
+    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    USER_DN VARCHAR (255),
+    GENERATE_CERT VARCHAR (255),
+    EXPERIMENT_DATA_DIR VARCHAR (255),
+    USER_NAME VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_EMAIL (
+    PROCESS_ID VARCHAR (255),
+    EMAIL VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, EMAIL),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_RESOURCE_SCHEDULING(
+    PROCESS_ID VARCHAR (255),
+    RESOURCE_HOST_ID VARCHAR (255),
+    CPU_COUNT INT,
+    NODE_COUNT INT,
+    NUMBER_OF_THREADS INT,
+    QUEUE_NAME VARCHAR (255),
+    WALL_TIME_LIMIT INT,
+    TOTAL_PHYSICAL_MEMORY INT,
+    CHESSIS_NUMBER VARCHAR (255),
+    STATIC_WORKING_DIRECTORY VARCHAR (255),
+    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
+    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
+    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_INPUT(
+    PROCESS_ID VARCHAR (255),
+    INPUT_NAME VARCHAR (255),
+    INPUT_VALUE VARCHAR (255),
+    INPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    STANDARD_INPUT TINYINT(1),
+    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
+    METADATA VARCHAR (4096),
+    INPUT_ORDER INT,
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_STAGED TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,INPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_OUTPUT(
+    PROCESS_ID VARCHAR (255),
+    OUTPUT_NAME VARCHAR (255),
+    OUTPUT_VALUE VARCHAR (255),
+    OUTPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_MOVEMENT TINYINT(1),
+    LOCATION VARCHAR (255),
+    SEARCH_QUERY VARCHAR (255),
+    OUTPUT_STREAMING TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,OUTPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR(
+    ERROR_ID VARCHAR (255),
+    PROCESS_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    ACTUAL_ERROR_MESSAGE VARCHAR (255),
+    USER_FRIENDLY_MESSAGE VARCHAR (255),
+    TRANSIENT_OR_PERSISTENT TINYINT,
+    PRIMARY KEY (ERROR_ID, PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
+    ERROR_ID VARCHAR (255),
+    ROOT_CAUSE_ERROR_ID VARCHAR (255),
+    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
+    FOREIGN KEY(ERROR_ID) REFERENCES PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_STATUS(
+    PROCESS_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, STATE),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 3066886..f66b283 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -293,8 +293,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                addProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                addProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 addProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -305,10 +305,12 @@ public class ExperimentRegistry {
 
             ProcessStatus processStatus = new ProcessStatus();
             processStatus.setState(ProcessState.CREATED);
-            addProcessStatus(processStatus, process.getProcessId());
+            List<ProcessStatus> processStatuses = new ArrayList<>();
+            processStatuses.add(processStatus);
+            addProcessStatus(processStatuses.get(0), process.getProcessId());
 
             if(process.getProcessError() != null) {
-                addProcessError(process.getProcessError(), process.getProcessId());
+                addProcessError(process.getProcessError().get(0), process.getProcessId());
             }
         } catch (Exception e) {
             logger.error(expId, "Error while adding process...", e);
@@ -391,27 +393,27 @@ public class ExperimentRegistry {
 
     public String addProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException {
         try {
-            ProcessResource processResource = new ProcessResource();
-            processResource.setProcessId(processID);
-            ProcessStatusResource status = processResource.getProcessStatus();
-            ProcessState newState = processStatus.getState();
-            if (status == null) {
-                status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
-                status.setStatusId(getStatusID("PROCESS_STATE"));
-            }else {
-                String state = status.getState();
-                if (newState != null && !state.equals(newState.toString())){
+                ProcessResource processResource = new ProcessResource();
+                processResource.setProcessId(processID);
+                ProcessStatusResource status = processResource.getProcessStatus();
+                ProcessState newState = processStatus.getState();
+                if (status == null) {
+                    status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
                     status.setStatusId(getStatusID("PROCESS_STATE"));
+                }else {
+                    String state = status.getState();
+                    if (newState != null && !state.equals(newState.toString())){
+                        status.setStatusId(getStatusID("PROCESS_STATE"));
+                    }
                 }
-            }
-            status.setProcessId(processID);
-            status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
-            if (newState != null){
-                status.setState(newState.toString());
-            }
-            status.setReason(processStatus.getReason());
-            status.save();
-            logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
+                status.setProcessId(processID);
+                status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
+                if (newState != null){
+                    status.setState(newState.toString());
+                }
+                status.setReason(processStatus.getReason());
+                status.save();
+                logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
         } catch (Exception e) {
             logger.error(processID, "Error while adding process status...", e);
             throw new RegistryException(e);
@@ -752,8 +754,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                updateProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                updateProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 updateProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -762,10 +764,10 @@ public class ExperimentRegistry {
                 updateProcessOutputs(process.getProcessOutputs(), process.getProcessId());
             }
             if(process.getProcessStatus() != null) {
-                updateProcessStatus(process.getProcessStatus(), process.getProcessId());
+                updateProcessStatus(process.getProcessStatus().get(0), process.getProcessId());
             }
             if(process.getProcessError() != null) {
-                updateProcessError(process.getProcessError(), process.getProcessId());
+                updateProcessError(process.getProcessError().get(0), process.getProcessId());
             }
             if(process.getTasks() != null && process.getTasks().size() > 0){
                 for(TaskModel task : process.getTasks()){
@@ -864,8 +866,8 @@ public class ExperimentRegistry {
         return addProcessStatus(processStatus, processID);
     }
 
-    public String updateProcessError(ErrorModel processError, String processID) throws RegistryException {
-        return addProcessError(processError, processID);
+    public String updateProcessError(ErrorModel processErrors, String processID) throws RegistryException {
+        return addProcessError(processErrors, processID);
     }
 
     public String updateTask(TaskModel task, String taskID) throws RegistryException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 3e04fcd..533e719 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -384,16 +384,20 @@ public class ThriftDataModelConversion {
 
             ErrorModel errorModel = getErrorModel(processResource.getProcessError());
             if (errorModel != null){
-                processModel.setProcessError(errorModel);
+                List<ErrorModel> errorModels = new ArrayList<>();
+                errorModels.add(errorModel);
+                processModel.setProcessError(errorModels);
             }
             ProcessStatus processStatus = getProcessStatus(processResource.getProcessStatus());
             if (processStatus != null){
-                processModel.setProcessStatus(processStatus);
+                List<ProcessStatus> statuses = new ArrayList<>();
+                statuses.add(processStatus);
+                processModel.setProcessStatus(statuses);
             }
 
             ComputationalResourceSchedulingModel schedule = getProcessResourceSchedule(processResource.getProcessResourceSchedule());
             if (schedule != null){
-                processModel.setResourceSchedule(schedule);
+                processModel.setProcessResourceSchedule(schedule);
             }
             processModel.setTasks(getTaskModelList(processResource.getTaskList()));
             processModel.setStorageResourceId(processResource.getStorageResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index b780203..0a72923 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -44,17 +44,17 @@ struct ProcessModel {
     2: required string experimentId,
     3: optional i64 creationTime,
     4: optional i64 lastUpdateTime,
-    5: optional status_models.ProcessStatus processStatus,
+    5: optional list<status_models.ProcessStatus> processStatus,
     6: optional string processDetail,
     7: optional string applicationInterfaceId,
     8: optional string applicationDeploymentId,
     9: optional string computeResourceId,
     10: optional list<application_io_models.InputDataObjectType> processInputs,
     11: optional list<application_io_models.OutputDataObjectType> processOutputs,
-    12: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule,
+    12: optional scheduling_model.ComputationalResourceSchedulingModel processResourceSchedule,
     13: optional list<task_model.TaskModel> tasks,
     14: optional string taskDag,
-    15: optional airavata_commons.ErrorModel processError,
+    15: optional list<airavata_commons.ErrorModel> processError,
     16: optional string gatewayExecutionId,
     17: optional bool enableEmailNotification,
     18: optional list<string> emailAddresses,


[40/48] airavata git commit: fixed nonASCII in pbs email content

Posted by la...@apache.org.
fixed nonASCII in pbs email content


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 9c02fe056abad5e0e737afd44e4d6c108189b119
Parents: a0c9be8
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Sep 9 16:15:11 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Sep 9 16:15:24 2016 -0400

----------------------------------------------------------------------
 .../monitor/email/parser/LSFEmailParser.java    | 27 +++++++++-------
 .../monitor/email/parser/PBSEmailParser.java    | 29 +++++++++--------
 .../monitor/email/parser/SLURMEmailParser.java  |  8 +++--
 .../monitor/email/parser/UGEEmailParser.java    |  6 +++-
 .../email/parser/PBSEmailParserTest.java        | 33 ++++++++++++++++++++
 5 files changed, 75 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
index d6e396e..a2dd17e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
@@ -44,23 +44,28 @@ public class LSFEmailParser implements EmailParser {
     public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException {
         JobStatusResult jobStatusResult = new JobStatusResult();
         try {
-            String content = ((String) message.getContent());
-            Pattern pattern = Pattern.compile(LONESTAR_REGEX);
-            Matcher matcher = pattern.matcher(content);
-            if (matcher.find()) {
-                jobStatusResult.setJobId(matcher.group(JOBID));
-                String status = matcher.group(STATUS);
-                jobStatusResult.setState(getJobState(status, content));
-                return jobStatusResult;
-            } else {
-                log.error("[EJM]: No matched found for content => \n" + content);
-            }
+            parseContent(((String) message.getContent()), jobStatusResult);
         } catch (IOException e) {
             throw new AiravataException("i[EJM]: Error while reading content of the email message");
         }
         return jobStatusResult;
     }
 
+    private boolean parseContent(String content, JobStatusResult jobStatusResult) throws IOException, MessagingException {
+        content = content.replaceAll("[^\\x00-\\x7F]", "");
+        Pattern pattern = Pattern.compile(LONESTAR_REGEX);
+        Matcher matcher = pattern.matcher(content);
+        if (matcher.find()) {
+            jobStatusResult.setJobId(matcher.group(JOBID));
+            String status = matcher.group(STATUS);
+            jobStatusResult.setState(getJobState(status, content));
+            return true;
+        } else {
+            log.error("[EJM]: No matched found for content => \n" + content);
+        }
+        return false;
+    }
+
     private JobState getJobState(String status, String content) {
         switch (status) {
             case "Aborted":

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
index 3879daf..9e56d2f 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
@@ -39,7 +39,7 @@ public class PBSEmailParser implements EmailParser {
     public static final String EXECUTION_TERMINATED = "Execution terminated";
     public static final String ABORTED_BY_PBS_SERVER = "Aborted by PBS Server";
 
-    static final String REGEX = "[a-zA-Z ]*:[ ]*(?<" + JOBID + ">[a-zA-Z0-9-\\.]*)\\s+[a-zA-Z ]*:[ ]*(?<" +
+    static final String REGEX = "[a-zA-Z ]*:[ ]*(?<" + JOBID + ">[a-zA-Z0-9-_\\.]*)\\s+[a-zA-Z ]*:[ ]*(?<" +
             JOBNAME + ">[a-zA-Z0-9-\\.]*)\\s[\\S|\\s]*(?<" + STATUS + ">" + BEGUN_EXECUTION + "|" +
             EXECUTION_TERMINATED + "|" + ABORTED_BY_PBS_SERVER + ")";
 
@@ -51,24 +51,27 @@ public class PBSEmailParser implements EmailParser {
 //        log.info("Parsing -> " + message.getSubject());
         try {
             String content = ((String) message.getContent());
-            Pattern pattern = Pattern.compile(REGEX);
-            Matcher matcher = pattern.matcher(content);
-            if (matcher.find()) {
-                jobStatusResult.setJobId(matcher.group(JOBID));
-                jobStatusResult.setJobName(matcher.group(JOBNAME));
-                String statusLine = matcher.group(STATUS);
-                jobStatusResult.setState(getJobState(statusLine, content));
-                return jobStatusResult;
-            } else {
-                log.error("[EJM]: No matched found for content => \n" + content);
-            }
-
+            parseContent(content, jobStatusResult);
         } catch (IOException e) {
             throw new AiravataException("[EJM]: Error while reading content of the email message");
         }
         return jobStatusResult;
     }
 
+    void parseContent(String content, JobStatusResult jobStatusResult) throws MessagingException, AiravataException {
+        content = content.replaceAll("[^\\x00-\\x7F]", "");
+        Pattern pattern = Pattern.compile(REGEX);
+        Matcher matcher = pattern.matcher(content);
+        if (matcher.find()) {
+            jobStatusResult.setJobId(matcher.group(JOBID));
+            jobStatusResult.setJobName(matcher.group(JOBNAME));
+            String statusLine = matcher.group(STATUS);
+            jobStatusResult.setState(getJobState(statusLine, content));
+        } else {
+            log.error("[EJM]: No matched found for content => \n" + content);
+        }
+    }
+
     private JobState getJobState(String statusLine, String content) {
         switch (statusLine) {
             case BEGUN_EXECUTION:

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
index 792b24b..70985c2 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
@@ -49,17 +49,19 @@ public class SLURMEmailParser implements EmailParser {
     @Override
     public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException{
         JobStatusResult jobStatusResult = new JobStatusResult();
-        String subject = message.getSubject();
+        parseSubject(message.getSubject(), jobStatusResult);
+        return jobStatusResult;
+    }
+
+    private void parseSubject(String subject, JobStatusResult jobStatusResult) throws MessagingException {
         Matcher matcher = pattern.matcher(subject);
         if (matcher.find()) {
             jobStatusResult.setJobId(matcher.group(JOBID));
             jobStatusResult.setJobName(matcher.group(JOBNAME));
             jobStatusResult.setState(getJobState(matcher.group(STATUS), subject));
-            return jobStatusResult;
         } else {
             log.error("[EJM]: No matched found for subject -> " + subject);
         }
-        return jobStatusResult;
     }
 
     private JobState getJobState(String state, String subject) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
index 266456e..e43c900 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
@@ -49,6 +49,11 @@ public class UGEEmailParser implements EmailParser {
     public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException {
         JobStatusResult jobStatusResult = new JobStatusResult();
 
+        parseContent(message, jobStatusResult);
+        return jobStatusResult;
+    }
+
+    private void parseContent(Message message, JobStatusResult jobStatusResult) throws MessagingException, AiravataException {
         String subject = message.getSubject();
         Pattern pattern = Pattern.compile(REGEX);
         Matcher matcher = pattern.matcher(subject);
@@ -64,7 +69,6 @@ public class UGEEmailParser implements EmailParser {
         } catch (IOException e) {
             throw new AiravataException("[EJM]: Error while reading content of the email message");
         }
-        return jobStatusResult;
     }
 
     private JobState getJobState(String status, String content) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
new file mode 100644
index 0000000..36650b4
--- /dev/null
+++ b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
@@ -0,0 +1,33 @@
+package org.apache.airavata.gfac.monitor.email.parser;
+
+import org.apache.airavata.gfac.core.monitor.JobStatusResult;
+import org.apache.airavata.model.status.JobState;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by syodage on 9/9/16.
+ */
+public class PBSEmailParserTest {
+
+    @Test
+    public void parseContent_non_ASCII() throws Exception {
+        PBSEmailParser parser = new PBSEmailParser();
+        // test for non ascii contents
+        String nonascii = "PBS Job Id: 33.torque_server\n" +
+                "Job Name:\u2002\u2002 A2085606929\n" +
+                "Exec host:\u2002\u2002compute-0/0-9\n" +
+                "Begun execution";
+        JobStatusResult jsr = new JobStatusResult();
+        parser.parseContent(nonascii, jsr);
+        Assert.assertNotNull(jsr.getJobId());
+        Assert.assertEquals("33.torque_server", jsr.getJobId());
+        Assert.assertEquals("A2085606929", jsr.getJobName());
+        Assert.assertEquals(JobState.ACTIVE, jsr.getState());
+    }
+
+}
\ No newline at end of file


[20/48] airavata git commit: merging remote

Posted by la...@apache.org.
merging remote


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: cc009e3c6d49b98d1abbbe3dd8aceebc403a9592
Parents: 21c3e78 a3950c9
Author: scnakandala <su...@gmail.com>
Authored: Sat Aug 27 15:46:02 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Sat Aug 27 15:46:02 2016 -0400

----------------------------------------------------------------------
 distribution/pom.xml                            |  582 -----
 distribution/src/main/assembly/bin-assembly.xml |  160 --
 distribution/src/main/assembly/src-assembly.xml |   75 -
 distribution/src/main/resources/INSTALL         |   30 -
 distribution/src/main/resources/LICENSE         | 2387 ------------------
 distribution/src/main/resources/NOTICE          |  163 --
 distribution/src/main/resources/README          |  145 --
 .../main/resources/bin/airavata-server-start.sh |  123 -
 .../main/resources/bin/airavata-server-stop.sh  |   71 -
 .../src/main/resources/bin/airavata-server.bat  |   55 -
 distribution/src/main/resources/bin/derby.sh    |   23 -
 distribution/src/main/resources/bin/logo.txt    |   34 -
 distribution/src/main/resources/bin/setenv.bat  |   33 -
 distribution/src/main/resources/bin/setenv.sh   |   46 -
 .../src/main/resources/bin/startNetworkServer   |  189 --
 .../main/resources/samples/registerSample.sh    |   24 -
 .../src/main/resources/samples/scripts/add.sh   |   21 -
 .../src/main/resources/samples/scripts/echo.sh  |   22 -
 .../main/resources/samples/scripts/multiply.sh  |   22 -
 .../main/resources/samples/scripts/subtract.sh  |   22 -
 modules/distribution/pom.xml                    |  582 +++++
 .../src/main/assembly/bin-assembly.xml          |  160 ++
 .../src/main/assembly/src-assembly.xml          |   75 +
 modules/distribution/src/main/resources/INSTALL |   30 +
 modules/distribution/src/main/resources/LICENSE | 2387 ++++++++++++++++++
 modules/distribution/src/main/resources/NOTICE  |  163 ++
 modules/distribution/src/main/resources/README  |  145 ++
 .../main/resources/bin/airavata-server-start.sh |  123 +
 .../main/resources/bin/airavata-server-stop.sh  |   71 +
 .../src/main/resources/bin/airavata-server.bat  |   55 +
 .../src/main/resources/bin/derby.sh             |   23 +
 .../src/main/resources/bin/logo.txt             |   34 +
 .../src/main/resources/bin/setenv.bat           |   33 +
 .../src/main/resources/bin/setenv.sh            |   46 +
 .../src/main/resources/bin/startNetworkServer   |  189 ++
 .../main/resources/samples/registerSample.sh    |   24 +
 .../src/main/resources/samples/scripts/add.sh   |   21 +
 .../src/main/resources/samples/scripts/echo.sh  |   22 +
 .../main/resources/samples/scripts/multiply.sh  |   22 +
 .../main/resources/samples/scripts/subtract.sh  |   22 +
 pom.xml                                         |   97 +-
 41 files changed, 4229 insertions(+), 4322 deletions(-)
----------------------------------------------------------------------



[12/48] airavata git commit: adding registry refactoring effort module

Posted by la...@apache.org.
adding registry refactoring effort module


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: ad06b474c15bf5ab1738e6e259dc04b9720856a2
Parents: bfff64c
Author: scnakandala <su...@gmail.com>
Authored: Fri Aug 26 12:11:21 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Aug 26 12:11:21 2016 -0400

----------------------------------------------------------------------
 modules/registry-refactoring/pom.xml            | 127 ++++++++++
 .../org/apache/airavata/registry/core/Main.java |  75 ++++++
 .../registry/core/RegistryException.java        |  28 +++
 .../ComputeResourceSchedulingEntity.java        | 170 +++++++++++++
 .../entities/expcatalog/ExperimentEntity.java   | 203 +++++++++++++++
 .../expcatalog/ExperimentErrorEntity.java       | 116 +++++++++
 .../expcatalog/ExperimentInputEntity.java       | 171 +++++++++++++
 .../expcatalog/ExperimentOutputEntity.java      | 153 ++++++++++++
 .../expcatalog/UserConfigurationEntity.java     | 131 ++++++++++
 .../workspacecatalog/GatewayEntity.java         | 221 +++++++++++++++++
 .../workspacecatalog/NSFDemographicsEntity.java |  94 +++++++
 .../workspacecatalog/NotificationEntity.java    | 110 +++++++++
 .../workspacecatalog/ProjectEntity.java         |  92 +++++++
 .../workspacecatalog/UserProfileEntity.java     | 247 +++++++++++++++++++
 .../core/repositories/AbstractRepository.java   |  78 ++++++
 .../expcatalog/ExperimentRespository.java       |  43 ++++
 .../workspacecatalog/GatewayRepository.java     |  35 +++
 .../NotificationRepository.java                 |  35 +++
 .../workspacecatalog/ProjectRepository.java     |  35 +++
 .../workspacecatalog/UserProfileRepository.java |  43 ++++
 .../airavata/registry/core/utils/Committer.java |  27 ++
 .../airavata/registry/core/utils/JPAUtils.java  |  82 ++++++
 .../core/utils/ObjectMapperSingleton.java       |  39 +++
 .../src/main/resources/META-INF/persistence.xml |  33 +++
 .../src/main/resources/experiment_catalog.sql   | 110 +++++++++
 .../src/main/resources/workspace_catalog.sql    | 125 ++++++++++
 .../core/repositories/RepositoryTest.java       |  60 +++++
 27 files changed, 2683 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/pom.xml b/modules/registry-refactoring/pom.xml
new file mode 100644
index 0000000..b794349
--- /dev/null
+++ b/modules/registry-refactoring/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata</artifactId>
+        <version>0.17-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.airavata</groupId>
+    <artifactId>registry-refactoring</artifactId>
+
+    <properties>
+        <derby.version>10.11.1.1</derby.version>
+        <surefire.version>2.18.1</surefire.version>
+        <skipTests>false</skipTests>
+        <mysql.connector.version>5.1.34</mysql.connector.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-data-models</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.dozer</groupId>
+            <artifactId>dozer</artifactId>
+            <version>5.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-all</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>${mysql.connector.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbyclient</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbynet</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbytools</artifactId>
+            <version>${derby.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.openjpa</groupId>
+                <artifactId>openjpa-maven-plugin</artifactId>
+                <version>2.2.0</version>
+                <configuration>
+                    <includes>**/entities/*.class</includes>
+                    <excludes>**/entities/XML*.class</excludes>
+                    <addDefaultConstructor>true</addDefaultConstructor>
+                    <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>enhancer</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>enhance</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.openjpa</groupId>
+                        <artifactId>openjpa</artifactId>
+                        <version>2.2.0</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.version}</version>
+                <inherited>true</inherited>
+                <configuration>
+                    <failIfNoTests>false</failIfNoTests>
+                    <!--<skipTests>${skipTests}</skipTests>-->
+                    <skipTests>true</skipTests>
+                    <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
new file mode 100644
index 0000000..e509b47
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core;
+
+import org.apache.airavata.model.user.NSFDemographics;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
+import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
+import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
+import org.apache.airavata.registry.core.utils.JPAUtils;
+import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
+import org.dozer.Mapper;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public class Main {
+
+    public static void main(String[] args) throws IOException {
+        org.apache.airavata.model.user.UserProfile userProfile = new org.apache.airavata.model.user.UserProfile();
+        userProfile.setAiravataInternalUserId("I don't know");
+        NSFDemographics nsfDemographics = new NSFDemographics();
+        nsfDemographics.setGender("sdfsf");
+        userProfile.setNsfDemographics(nsfDemographics);
+
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        UserProfileEntity destObject =
+                mapper.map(userProfile, UserProfileEntity.class);
+
+        System.out.println(destObject.getNsfDemographics().getGender());
+
+        userProfile = mapper.map(destObject, org.apache.airavata.model.user.UserProfile.class);
+        System.out.println(userProfile.getNsfDemographics().getGender());
+
+        JPAUtils.getEntityManager();
+
+        Gateway gateway = new Gateway();
+        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
+        gateway.setGatewayId("test.com" + System.currentTimeMillis());
+        gateway.setDomain("test.com");
+
+        GatewayRepository gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
+        gateway = gatewayRepository.create(gateway);
+        System.out.println(gateway.getGatewayId());
+
+        Notification notification = new Notification();
+        notification.setNotificationId(UUID.randomUUID().toString());
+        notification.setGatewayId(gateway.getGatewayId());
+
+        NotificationRepository notificationRepository = new NotificationRepository(Notification.class, NotificationEntity.class);
+        notificationRepository.create(notification);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
new file mode 100644
index 0000000..8893b34
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
@@ -0,0 +1,28 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RegistryException extends Exception {
+    private final static Logger logger = LoggerFactory.getLogger(RegistryException.class);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
new file mode 100644
index 0000000..76eb5ea
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
@@ -0,0 +1,170 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "COMPUTE_RESOURCE_SCHEDULING")
+public class ComputeResourceSchedulingEntity {
+    private String experimentId;
+    private String resourceHostId;
+    private int totalCPUCount;
+    private int nodeCount;
+    private int numberOfThreads;
+    private String queueName;
+    private int wallTimeLimit;
+    private int totalPhysicalMemory;
+    private String chessisNumber;
+    private String staticWorkingDir;
+    private String overrideLoginUserName;
+    private String overrideScratchLocation;
+    private String overrideAllocationProjectNumber;
+    private UserConfigurationEntity userConfiguration;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "RESOURCE_HOST_ID")
+    public String getResourceHostId() {
+        return resourceHostId;
+    }
+
+    public void setResourceHostId(String resourceHostId) {
+        this.resourceHostId = resourceHostId;
+    }
+
+    @Column(name = "CPU_COUNT")
+    public int getTotalCPUCount() {
+        return totalCPUCount;
+    }
+
+    public void setTotalCPUCount(int totalCPUCount) {
+        this.totalCPUCount = totalCPUCount;
+    }
+
+    @Column(name = "NODE_COUNT")
+    public int getNodeCount() {
+        return nodeCount;
+    }
+
+    public void setNodeCount(int nodeCount) {
+        this.nodeCount = nodeCount;
+    }
+
+    @Column(name = "NUMBER_OF_THREADS")
+    public int getNumberOfThreads() {
+        return numberOfThreads;
+    }
+
+    public void setNumberOfThreads(int numberOfThreads) {
+        this.numberOfThreads = numberOfThreads;
+    }
+
+    @Column(name = "QUEUE_NAME")
+    public String getQueueName() {
+        return queueName;
+    }
+
+    public void setQueueName(String queueName) {
+        this.queueName = queueName;
+    }
+
+    @Column(name = "WALL_TIME_LIMIT")
+    public int getWallTimeLimit() {
+        return wallTimeLimit;
+    }
+
+    public void setWallTimeLimit(int wallTimeLimit) {
+        this.wallTimeLimit = wallTimeLimit;
+    }
+
+    @Column(name = "TOTAL_PHYSICAL_MEMORY")
+    public int getTotalPhysicalMemory() {
+        return totalPhysicalMemory;
+    }
+
+    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
+        this.totalPhysicalMemory = totalPhysicalMemory;
+    }
+
+    @Column(name = "CHESSIS_NUMBER")
+    public String getChessisNumber() {
+        return chessisNumber;
+    }
+
+    public void setChessisNumber(String chessisNumber) {
+        this.chessisNumber = chessisNumber;
+    }
+
+    @Column(name = "STATIC_WORKING_DIRECTORY")
+    public String getStaticWorkingDir() {
+        return staticWorkingDir;
+    }
+
+    public void setStaticWorkingDir(String staticWorkingDir) {
+        this.staticWorkingDir = staticWorkingDir;
+    }
+
+    @Column(name = "OVERRIDE_LOGIN_USERNAME")
+    public String getOverrideLoginUserName() {
+        return overrideLoginUserName;
+    }
+
+    public void setOverrideLoginUserName(String overrideLoginUserName) {
+        this.overrideLoginUserName = overrideLoginUserName;
+    }
+
+    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
+    public String getOverrideScratchLocation() {
+        return overrideScratchLocation;
+    }
+
+    public void setOverrideScratchLocation(String overrideScratchLocation) {
+        this.overrideScratchLocation = overrideScratchLocation;
+    }
+
+    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
+    public String getOverrideAllocationProjectNumber() {
+        return overrideAllocationProjectNumber;
+    }
+
+    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
+        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
+    }
+
+    @OneToOne(targetEntity = UserConfigurationEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public UserConfigurationEntity getUserConfiguration() {
+        return userConfiguration;
+    }
+
+    public void setUserConfiguration(UserConfigurationEntity userConfiguration) {
+        this.userConfiguration = userConfiguration;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
new file mode 100644
index 0000000..5b9d15a
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
@@ -0,0 +1,203 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "EXPERIMENT")
+public class ExperimentEntity {
+    public String experimentId;
+    public String projectId;
+    public String gatewayId;
+    public String experimentType;
+    public String userName;
+    public String experimentName;
+    public long creationTime;
+    public String description;
+    public String executionId;
+    public String gatewayExecutionId;
+    public String gatewayInstanceId;
+    public boolean enableEmailNotification;
+    public List<String> emailAddresses;
+
+    private List<ExperimentInputEntity> experimentInputs;
+    private List<ExperimentOutputEntity> experimentOutputs;
+    private List<ExperimentErrorEntity> experimentErrors;
+
+    private UserConfigurationEntity userConfiguration;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "PROJECT_ID")
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Column(name = "EXPERIMENT_TYPE")
+    public String getExperimentType() {
+        return experimentType;
+    }
+
+    public void setExperimentType(String experimentType) {
+        this.experimentType = experimentType;
+    }
+
+    @Column(name = "USER_NAME")
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    @Column(name = "EXPERIMENT_NAME")
+    public String getExperimentName() {
+        return experimentName;
+    }
+
+    public void setExperimentName(String experimentName) {
+        this.experimentName = experimentName;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "DESCRIPTION")
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    @Column(name = "EXECUTION_ID")
+    public String getExecutionId() {
+        return executionId;
+    }
+
+    public void setExecutionId(String executionId) {
+        this.executionId = executionId;
+    }
+
+    @Column(name = "GATEWAY_EXECUTION_ID")
+    public String getGatewayExecutionId() {
+        return gatewayExecutionId;
+    }
+
+    public void setGatewayExecutionId(String gatewayExecutionId) {
+        this.gatewayExecutionId = gatewayExecutionId;
+    }
+
+    @Column(name = "GATEWAY_INSTANCE_ID")
+    public String getGatewayInstanceId() {
+        return gatewayInstanceId;
+    }
+
+    public void setGatewayInstanceId(String gatewayInstanceId) {
+        this.gatewayInstanceId = gatewayInstanceId;
+    }
+
+    @Column(name = "ENABLE_EMAIL_NOTIFICATION")
+    public boolean isEnableEmailNotification() {
+        return enableEmailNotification;
+    }
+
+    public void setEnableEmailNotification(boolean enableEmailNotification) {
+        this.enableEmailNotification = enableEmailNotification;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="EXPERIMENT_EMAIL", joinColumns = @JoinColumn(name="EXPERIMENT_ID"))
+    public List<String> getEmailAddresses() {
+        return emailAddresses;
+    }
+
+    public void setEmailAddresses(List<String> emailAddresses) {
+        this.emailAddresses = emailAddresses;
+    }
+
+    @OneToOne(targetEntity = UserConfigurationEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public UserConfigurationEntity getUserConfiguration() {
+        return userConfiguration;
+    }
+
+    public void setUserConfiguration(UserConfigurationEntity userConfiguration) {
+        this.userConfiguration = userConfiguration;
+    }
+
+    @OneToMany(targetEntity = ExperimentInputEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ExperimentInputEntity> getExperimentInputs() {
+        return experimentInputs;
+    }
+
+    public void setExperimentInputs(List<ExperimentInputEntity> experimentInputs) {
+        this.experimentInputs = experimentInputs;
+    }
+
+    @OneToMany(targetEntity = ExperimentOutputEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ExperimentOutputEntity> getExperimentOutputs() {
+        return experimentOutputs;
+    }
+
+    public void setExperimentOutputs(List<ExperimentOutputEntity> experimentOutputs) {
+        this.experimentOutputs = experimentOutputs;
+    }
+
+    @OneToMany(targetEntity = ExperimentErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ExperimentErrorEntity> getExperimentErrors() {
+        return experimentErrors;
+    }
+
+    public void setExperimentErrors(List<ExperimentErrorEntity> experimentErrors) {
+        this.experimentErrors = experimentErrors;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
new file mode 100644
index 0000000..45c47ad
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
@@ -0,0 +1,116 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "EXPERIMENT_ERROR")
+public class ExperimentErrorEntity {
+    private String errorId;
+    private String experimentId;
+    private long creationTime;
+    private String actualErrorMessage;
+    private String userFriendlyMessage;
+    private boolean transientOrPersistent;
+    private List<String> rootCauseErrorIdList;
+
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "ERROR_ID")
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "ACTUAL_ERROR_MESSAGE")
+    public String getActualErrorMessage() {
+        return actualErrorMessage;
+    }
+
+    public void setActualErrorMessage(String actualErrorMessage) {
+        this.actualErrorMessage = actualErrorMessage;
+    }
+
+    @Column(name = "USER_FRIENDLY_MESSAGE")
+    public String getUserFriendlyMessage() {
+        return userFriendlyMessage;
+    }
+
+    public void setUserFriendlyMessage(String userFriendlyMessage) {
+        this.userFriendlyMessage = userFriendlyMessage;
+    }
+
+
+    @Column(name = "TRANSIENT_OR_PERSISTENT")
+    public boolean isTransientOrPersistent() {
+        return transientOrPersistent;
+    }
+
+    public void setTransientOrPersistent(boolean transientOrPersistent) {
+        this.transientOrPersistent = transientOrPersistent;
+    }
+
+
+    @ElementCollection
+    @CollectionTable(name="EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
+    public List<String> getRootCauseErrorIdList() {
+        return rootCauseErrorIdList;
+    }
+
+    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
+        this.rootCauseErrorIdList = rootCauseErrorIdList;
+    }
+
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
new file mode 100644
index 0000000..eeca021
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
@@ -0,0 +1,171 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "EXPERIMENT_INPUT")
+public class ExperimentInputEntity {
+    private String experimentId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean standardInput;
+    public String userFriendlyDescription;
+    public String metaData;
+    public int inputOrder;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataStaged;
+    public String storageResourceId;
+
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "INPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "INPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "STANDARD_INPUT")
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    @Column(name = "USER_FRIENDLY_DESCRIPTION")
+    public String getUserFriendlyDescription() {
+        return userFriendlyDescription;
+    }
+
+    public void setUserFriendlyDescription(String userFriendlyDescription) {
+        this.userFriendlyDescription = userFriendlyDescription;
+    }
+
+    @Column(name = "METADATA")
+    public String getMetaData() {
+        return metaData;
+    }
+
+    public void setMetaData(String metaData) {
+        this.metaData = metaData;
+    }
+
+    @Column(name = "INPUT_ORDER")
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setIsRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_STAGED")
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
new file mode 100644
index 0000000..9cb2702
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
@@ -0,0 +1,153 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "EXPERIMENT_OUTPUT")
+public class ExperimentOutputEntity {
+    private String experimentId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataMovement;
+    public String location;
+    public String searchQuery;
+    public boolean outputStreaming;
+    public String storageResourceId;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "OUTPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "OUTPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setIsRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_MOVEMENT")
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    @Column(name = "LOCATION")
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    @Column(name = "SEARCH_QUERY")
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    @Column(name = "OUTPUT_STREAMING")
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
new file mode 100644
index 0000000..06e3b37
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
@@ -0,0 +1,131 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "USER_CONFIGURATION_ENTITY")
+public class UserConfigurationEntity {
+    private String experimentId;
+    private boolean airavataAutoSchedule;
+    private boolean overrideManualScheduledParams;
+    private boolean throttleResources;
+    private String userDN;
+    private boolean generateCert;
+    private String storageId;
+    private String experimentDataDir;
+
+    private ComputeResourceSchedulingEntity computeResourceSchedulingEntity;
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "AIRAVATA_AUTO_SCHEDULE")
+    public boolean isAiravataAutoSchedule() {
+        return airavataAutoSchedule;
+    }
+
+    public void setAiravataAutoSchedule(boolean airavataAutoSchedule) {
+        this.airavataAutoSchedule = airavataAutoSchedule;
+    }
+
+    @Column(name = "OVERRIDE_MANUAL_SCHEDULED_PARAMS")
+    public boolean isOverrideManualScheduledParams() {
+        return overrideManualScheduledParams;
+    }
+
+    public void setOverrideManualScheduledParams(boolean overrideManualScheduledParams) {
+        this.overrideManualScheduledParams = overrideManualScheduledParams;
+    }
+
+    @Column(name = "THROTTLE_RESOURCE")
+    public boolean isThrottleResources() {
+        return throttleResources;
+    }
+
+    public void setThrottleResources(boolean throttleResources) {
+        this.throttleResources = throttleResources;
+    }
+
+    @Column(name = "USER_DN")
+    public String getUserDN() {
+        return userDN;
+    }
+
+    public void setUserDN(String userDN) {
+        this.userDN = userDN;
+    }
+
+    @Column(name = "GENERATE_CERT")
+    public boolean isGenerateCert() {
+        return generateCert;
+    }
+
+    public void setGenerateCert(boolean generateCert) {
+        this.generateCert = generateCert;
+    }
+
+    @Column(name = "STORAGE_ID")
+    public String getStorageId() {
+        return storageId;
+    }
+
+    public void setStorageId(String storageId) {
+        this.storageId = storageId;
+    }
+
+    @Column(name = "EXPERIMENT_DATA_DIR")
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
+    @OneToOne(targetEntity = ComputeResourceSchedulingEntity.class, cascade = CascadeType.ALL, mappedBy = "userConfiguration")
+    public ComputeResourceSchedulingEntity getComputeResourceSchedulingEntity() {
+        return computeResourceSchedulingEntity;
+    }
+
+    public void setComputeResourceSchedulingEntity(ComputeResourceSchedulingEntity computeResourceSchedulingEntity) {
+        this.computeResourceSchedulingEntity = computeResourceSchedulingEntity;
+    }
+
+    @OneToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
new file mode 100644
index 0000000..6ba10fe
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
@@ -0,0 +1,221 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.workspacecatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name="GATEWAY")
+public class GatewayEntity {
+    private String gatewayId;
+    private String gatewayName;
+    private String domain;
+    private String emailAddress;
+    private String gatewayApprovalStatus;
+    private String gatewayAcronym;
+    private String gatewayUrl;
+    private String gatewayPublicAbstract;
+    private String reviewProposalDescription;
+    private String gatewayAdminFirstName;
+    private String getGatewayAdminLastName;
+    private String gatewayAdminEmail;
+    private String identityServerUserName;
+    private String identityServerPasswordToken;
+    private String declinedReason;
+    private String oauthClientId;
+    private String getOauthClientSecret;
+    private long requestCreationTime;
+    private String requesterUsername;
+
+    @Id
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String id) {
+        this.gatewayId = id;
+    }
+
+    @Column(name = "GATEWAY_NAME")
+    public String getGatewayName() {
+        return gatewayName;
+    }
+
+    public void setGatewayName(String gatewayName) {
+        this.gatewayName = gatewayName;
+    }
+
+    @Column(name = "GATEWAY_DOMAIN")
+    public String getDomain() {
+        return domain;
+    }
+
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    @Column(name = "EMAIL_ADDRESS")
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    @Column(name = "GATEWAY_APPROVAL_STATUS")
+    public String getGatewayApprovalStatus() {
+        return gatewayApprovalStatus;
+    }
+
+    public void setGatewayApprovalStatus(String gatewayApprovalStatus) {
+        this.gatewayApprovalStatus = gatewayApprovalStatus;
+    }
+
+    @Column(name = "GATEWAY_ACRONYM")
+    public String getGatewayAcronym() {
+        return gatewayAcronym;
+    }
+
+    public void setGatewayAcronym(String gatewayAcronym) {
+        this.gatewayAcronym = gatewayAcronym;
+    }
+
+    @Column(name = "GATEWAY_URL")
+    public String getGatewayUrl() {
+        return gatewayUrl;
+    }
+
+    public void setGatewayUrl(String gatewayUrl) {
+        this.gatewayUrl = gatewayUrl;
+    }
+
+    @Lob
+    @Column(name = "GATEWAY_PUBLIC_ABSTRACT")
+    public String getGatewayPublicAbstract() {
+        return gatewayPublicAbstract;
+    }
+
+    public void setGatewayPublicAbstract(String gatewayPublicAbstract) {
+        this.gatewayPublicAbstract = gatewayPublicAbstract;
+    }
+
+    @Lob
+    @Column(name = "REVIEW_PROPOSAL_DESCRIPTION")
+    public String getReviewProposalDescription() {
+        return reviewProposalDescription;
+    }
+
+    public void setReviewProposalDescription(String reviewProposalDescription) {
+        this.reviewProposalDescription = reviewProposalDescription;
+    }
+
+    @Column(name = "GATEWAY_ADMIN_FIRST_NAME")
+    public String getGatewayAdminFirstName() {
+        return gatewayAdminFirstName;
+    }
+
+    public void setGatewayAdminFirstName(String gatewayAdminFirstName) {
+        this.gatewayAdminFirstName = gatewayAdminFirstName;
+    }
+
+    @Column(name = "GATEWAY_ADMIN_LAST_NAME")
+    public String getGetGatewayAdminLastName() {
+        return getGatewayAdminLastName;
+    }
+
+    public void setGetGatewayAdminLastName(String getGatewayAdminLastName) {
+        this.getGatewayAdminLastName = getGatewayAdminLastName;
+    }
+
+    @Column(name = "GATEWAY_ADMIN_EMAIL")
+    public String getGatewayAdminEmail() {
+        return gatewayAdminEmail;
+    }
+
+    public void setGatewayAdminEmail(String gatewayAdminEmail) {
+        this.gatewayAdminEmail = gatewayAdminEmail;
+    }
+
+    @Column(name = "IDENTITY_SERVER_USERNAME")
+    public String getIdentityServerUserName() {
+        return identityServerUserName;
+    }
+
+    public void setIdentityServerUserName(String identityServerUserName) {
+        this.identityServerUserName = identityServerUserName;
+    }
+
+    @Column(name = "IDENTITY_SERVER_PASSWORD_TOKEN")
+    public String getIdentityServerPasswordToken() {
+        return identityServerPasswordToken;
+    }
+
+    public void setIdentityServerPasswordToken(String identityServerPasswordToken) {
+        this.identityServerPasswordToken = identityServerPasswordToken;
+    }
+
+    @Column(name = "REQUESTER_USERNAME")
+    public String getRequesterUsername() {
+        return requesterUsername;
+    }
+
+    public void setRequesterUsername(String requesterUsername) {
+        this.requesterUsername = requesterUsername;
+    }
+
+    @Column(name = "DECLINED_REASON")
+    public String getDeclinedReason() {
+        return declinedReason;
+    }
+
+    public void setDeclinedReason(String declinedReason) {
+        this.declinedReason = declinedReason;
+    }
+
+    @Column(name = "OAUTH_CLIENT_ID")
+    public String getOauthClientId() {
+        return oauthClientId;
+    }
+
+    public void setOauthClientId(String oauthClientId) {
+        this.oauthClientId = oauthClientId;
+    }
+
+    @Column(name = "REQUEST_CREATION_TIME")
+    public long getRequestCreationTime() {
+        return requestCreationTime;
+    }
+
+    public void setRequestCreationTime(long requestCreationTime) {
+        this.requestCreationTime = requestCreationTime;
+    }
+
+    @Column(name = "OAUTH_CLIENT_SECRET")
+    public String getGetOauthClientSecret() {
+        return getOauthClientSecret;
+    }
+
+    public void setGetOauthClientSecret(String oauthClientSecret) {
+        this.getOauthClientSecret = oauthClientSecret;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
new file mode 100644
index 0000000..4f7aa7a
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
@@ -0,0 +1,94 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.workspacecatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "NSF_DEMOGRAPHIC")
+public class NSFDemographicsEntity {
+    private String airavataInternalUserId;
+    private String gender;
+    private List<String> ethnicities;
+    private List<String> races;
+    private List<String> disabilities;
+    private UserProfileEntity userProfile;
+
+    @Id
+    @Column(name = "AIRAVATA_INTERNAL_USER_ID")
+    public String getAiravataInternalUserId() {
+        return airavataInternalUserId;
+    }
+
+    public void setAiravataInternalUserId(String userId) {
+        this.airavataInternalUserId = userId;
+    }
+
+    @Column(name = "GENDER")
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="NSF_DEMOGRAPHIC_ETHNICITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getEthnicities() {
+        return ethnicities;
+    }
+
+    public void setEthnicities(List<String> ethnicities) {
+        this.ethnicities = ethnicities;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="NSF_DEMOGRAPHIC_RACE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getRaces() {
+        return races;
+    }
+
+    public void setRaces(List<String> races) {
+        this.races = races;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="NSF_DEMOGRAPHIC_DISABILITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getDisabilities() {
+        return disabilities;
+    }
+
+    public void setDisabilities(List<String> disabilities) {
+        this.disabilities = disabilities;
+    }
+
+    @OneToOne(targetEntity = UserProfileEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "AIRAVATA_INTERNAL_USER_ID", referencedColumnName = "AIRAVATA_INTERNAL_USER_ID")
+    public UserProfileEntity getUserProfile() {
+        return userProfile;
+    }
+
+    public void setUserProfile(UserProfileEntity userProfile) {
+        this.userProfile = userProfile;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
new file mode 100644
index 0000000..5a0805c
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
@@ -0,0 +1,110 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.workspacecatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "NOTIFICATION")
+public class NotificationEntity {
+    private String notificationId;
+    private String gatewayId;
+    private String title;
+    private String notificationMessage;
+    private long creationTime;
+    private long publishedTime;
+    private long expirationTime;
+    private String priority;
+
+    @Id
+    @Column(name = "NOTIFICATION_ID")
+    public String getNotificationId() {
+        return notificationId;
+    }
+
+    public void setNotificationId(String notificationId) {
+        this.notificationId = notificationId;
+    }
+
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Column(name = "TITLE")
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    @Lob
+    @Column(name = "NOTIFICATION_MESSAGE")
+    public String getNotificationMessage() {
+        return notificationMessage;
+    }
+
+    public void setNotificationMessage(String notificationMessage) {
+        this.notificationMessage = notificationMessage;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "PUBLISHED_TIME")
+    public long getPublishedTime() {
+        return publishedTime;
+    }
+
+    public void setPublishedTime(long publishedTime) {
+        this.publishedTime = publishedTime;
+    }
+
+    @Column(name = "EXPIRATION_TIME")
+    public long getExpirationTime() {
+        return expirationTime;
+    }
+
+    public void setExpirationTime(long expirationTime) {
+        this.expirationTime = expirationTime;
+    }
+
+    @Column(name = "PRIORITY")
+    public String getPriority() {
+        return priority;
+    }
+
+    public void setPriority(String priority) {
+        this.priority = priority;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
new file mode 100644
index 0000000..2cfdd04
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
@@ -0,0 +1,92 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.workspacecatalog;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "PROJECT")
+public class ProjectEntity {
+    private String projectID;
+    private String owner;
+    private String gatewayId;
+    private String name;
+    private String description;
+    private long creationTime;
+
+    @Id
+    @Column(name = "PROJECT_ID")
+    public String getProjectID() {
+        return projectID;
+    }
+
+    public void setProjectID(String projectID) {
+        this.projectID = projectID;
+    }
+
+    @Column(name = "OWNER")
+    public String getOwner() {
+        return owner;
+    }
+
+    public void setOwner(String owner) {
+        this.owner = owner;
+    }
+
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Column(name = "PROJECT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "DESCRIPTION")
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
new file mode 100644
index 0000000..11f6e33
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
@@ -0,0 +1,247 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.workspacecatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name="USER_PROFILE")
+public class UserProfileEntity {
+    private String airavataInternalUserId;
+    private String userId;
+    private String gatewayId;
+    private String userModelVersion;
+    private String userName;
+    private String orcidId;
+    private String country;
+    private String homeOrganization;
+    private String orginationAffiliation;
+    private long creationTime;
+    private long lastAccessTime;
+    private long validUntil;
+    private String state;
+    private String comments;
+    private List<String> labeledURI;
+    private String gpgKey;
+    private String timeZone;
+
+    private List<String> nationality;
+    private List<String> emails;
+    private List<String> phones;
+    private NSFDemographicsEntity nsfDemographics;
+
+    @Id
+    @Column(name = "AIRAVATA_INTERNAL_USER_ID")
+    public String getAiravataInternalUserId() {
+        return airavataInternalUserId;
+    }
+
+    public void setAiravataInternalUserId(String id) {
+        this.airavataInternalUserId = id;
+    }
+
+    @Column(name = "USER_ID")
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    @Column(name = "GATEWAY_ID")
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
+
+    @Column(name = "USER_MODEL_VERSION")
+    public String getUserModelVersion() {
+        return userModelVersion;
+    }
+
+    public void setUserModelVersion(String userModelVersion) {
+        this.userModelVersion = userModelVersion;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="USER_PROFILE_EMAIL", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getEmails() {
+        return emails;
+    }
+
+    public void setEmails(List<String> emails) {
+        this.emails = emails;
+    }
+
+    @Column(name = "USER_NAME")
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    @Column(name = "ORCID_ID")
+    public String getOrcidId() {
+        return orcidId;
+    }
+
+    public void setOrcidId(String orcidId) {
+        this.orcidId = orcidId;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="USER_PROFILE_PHONE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getPhones() {
+        return phones;
+    }
+
+    public void setPhones(List<String> phones) {
+        this.phones = phones;
+    }
+
+    @Column(name = "COUNTRY")
+    public String getCountry() {
+        return country;
+    }
+
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="USER_PROFILE_NATIONALITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getNationality() {
+        return nationality;
+    }
+
+    public void setNationality(List<String> nationality) {
+        this.nationality = nationality;
+    }
+
+    @Column(name = "HOME_ORGANIZATION")
+    public String getHomeOrganization() {
+        return homeOrganization;
+    }
+
+    public void setHomeOrganization(String homeOrganization) {
+        this.homeOrganization = homeOrganization;
+    }
+
+    @Column(name = "ORIGINATION_AFFILIATION")
+    public String getOrginationAffiliation() {
+        return orginationAffiliation;
+    }
+
+    public void setOrginationAffiliation(String orginationAffiliation) {
+        this.orginationAffiliation = orginationAffiliation;
+    }
+
+    @Column(name="CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_ACCESS_TIME")
+    public long getLastAccessTime() {
+        return lastAccessTime;
+    }
+
+    public void setLastAccessTime(long lastAccessTime) {
+        this.lastAccessTime = lastAccessTime;
+    }
+
+    @Column(name = "VALID_UNTIL")
+    public long getValidUntil() {
+        return validUntil;
+    }
+
+    public void setValidUntil(long validUntil) {
+        this.validUntil = validUntil;
+    }
+
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Lob
+    @Column(name = "COMMENTS")
+    public String getComments() {
+        return comments;
+    }
+
+    public void setComments(String comments) {
+        this.comments = comments;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="USER_PROFILE_LABELED_URI", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
+    public List<String> getLabeledURI() {
+        return labeledURI;
+    }
+
+    public void setLabeledURI(List<String> labeledURI) {
+        this.labeledURI = labeledURI;
+    }
+
+    @Lob
+    @Column(name = "GPG_KEY")
+    public String getGpgKey() {
+        return gpgKey;
+    }
+
+    public void setGpgKey(String gpgKey) {
+        this.gpgKey = gpgKey;
+    }
+
+    @Column(name = "TIME_ZONE")
+    public String getTimeZone() {
+        return timeZone;
+    }
+
+    public void setTimeZone(String timeZone) {
+        this.timeZone = timeZone;
+    }
+
+    @OneToOne(targetEntity = NSFDemographicsEntity.class, cascade = CascadeType.ALL, mappedBy = "userProfile")
+    public NSFDemographicsEntity getNsfDemographics() {
+        return nsfDemographics;
+    }
+
+    public void setNsfDemographics(NSFDemographicsEntity nsfDemographics) {
+        this.nsfDemographics = nsfDemographics;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
new file mode 100644
index 0000000..1e906ba
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories;
+
+import org.apache.airavata.registry.core.utils.JPAUtils;
+import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
+import org.dozer.Mapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractRepository<T, E, Id> {
+    private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class);
+
+    private Class<T> thriftGenericClass;
+    private Class<E> dbEntityGenericClass;
+
+    public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){
+        this.thriftGenericClass = thriftGenericClass;
+        this.dbEntityGenericClass = dbEntityGenericClass;
+    }
+
+    public T create(T t){
+        return update(t);
+    }
+
+    public  T update(T t){
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        E entity = mapper.map(t, dbEntityGenericClass);
+        E persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
+        return mapper.map(persistedCopy, thriftGenericClass);
+    }
+
+    public boolean delete(Id id){
+        JPAUtils.execute(entityManager -> {
+            E entity = entityManager.find(dbEntityGenericClass, id);
+            entityManager.remove(entity);
+            return entity;
+        });
+        return true;
+    }
+
+    public T get(Id id){
+        E entity = JPAUtils.execute(entityManager -> entityManager
+                .find(dbEntityGenericClass, id));
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        return mapper.map(entity, thriftGenericClass);
+    }
+
+    public List<T> select(String query, int limit, int offset){
+        List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(query).setFirstResult(offset)
+                .setMaxResults(offset).getResultList());
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        List<T> gatewayList = new ArrayList<>();
+        resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass)));
+        return gatewayList;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
new file mode 100644
index 0000000..62d0976
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
@@ -0,0 +1,43 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.expcatalog;
+
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+public class ExperimentRespository extends AbstractRepository<ExperimentModel, ExperimentEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentRespository.class);
+
+    public ExperimentRespository(Class<ExperimentModel> thriftGenericClass, Class<ExperimentEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+
+    @Override
+    public List<ExperimentModel> select(String criteria, int offset, int limit){
+        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
+                " ExperimentSummaryRepository");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
new file mode 100644
index 0000000..aed6681
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.workspacecatalog;
+
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GatewayRepository extends AbstractRepository<Gateway, GatewayEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(GatewayRepository.class);
+
+    public GatewayRepository(Class<Gateway> thriftGenericClass, Class<GatewayEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
new file mode 100644
index 0000000..8332024
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.workspacecatalog;
+
+import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NotificationRepository extends AbstractRepository<Notification, NotificationEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(NotificationRepository.class);
+
+    public NotificationRepository(Class thriftGenericClass, Class dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
new file mode 100644
index 0000000..eebf5fb
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.workspacecatalog;
+
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProjectRepository extends AbstractRepository<Project, ProjectEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(ProjectRepository.class);
+
+    public ProjectRepository(Class<Project> thriftGenericClass, Class<ProjectEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
new file mode 100644
index 0000000..f067370
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
@@ -0,0 +1,43 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.workspacecatalog;
+
+import org.apache.airavata.model.user.UserProfile;
+import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+public class UserProfileRepository extends AbstractRepository<UserProfile, UserProfileEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(UserProfileRepository.class);
+
+    public UserProfileRepository(Class<UserProfile> thriftGenericClass, Class<UserProfileEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+
+    @Override
+    public List<UserProfile> select(String query, int offset, int limit) {
+        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
+                " UserProfileSummaryRepository");
+    }
+}
\ No newline at end of file


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

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


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 35367512ba2156583c4ff527c4aa2dcf432adc61
Parents: 1dab79b 43d17ae
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Aug 24 12:40:04 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Aug 24 12:40:04 2016 -0400

----------------------------------------------------------------------
 modules/amqpwstunnel/python/amqpwstunnel.py | 583 +++++++++++++++++++++++
 modules/amqpwstunnel/python/config.json     |  10 +
 modules/amqpwstunnel/wstest.html            | 157 ++++++
 pom.xml                                     |  97 +++-
 4 files changed, 845 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[45/48] airavata git commit: [AIRAVATA-2054][WIP] create docker images for airavata deployment components

Posted by la...@apache.org.
[AIRAVATA-2054][WIP] create docker images for airavata deployment components

1. Introduce Docker images for each deployment component of airavata.
2. Deployed those in docker hub repository (scigap),
	try: docker search scigap
3. Use exhibitor docker images intead of zookeeper which is a much better
compare to using vanilla zookeeper.
http://techblog.netflix.com/2012/04/introducing-exhibitor-supervisor-system.html

4. IMHO we should never use docker images from public repository, Everything
we should create our own docker images from public images and test with those and
move to production.

5. Added a simple script(airavata/build.sh) to build airavata docker components.

      ./build.sh [component-name] - This will build a docker image for given component.

This is a temporary script we can use until AIRAVATA-2056 which integrates docker push with some CI tool like jenkins.


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 8474763b16288a571c787cb0d52c40afea62df48
Parents: 875fc27
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Sun Aug 21 00:49:58 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Mon Sep 12 23:27:26 2016 -0700

----------------------------------------------------------------------
 build.sh                                     | 65 +++++++++++++++
 deploy/images/airavata/Dockerfile            | 16 ++++
 deploy/images/exhibitor/Dockerfile           |  6 ++
 deploy/images/exhibitor/exhibitor.properties | 14 ++++
 deploy/images/java/Dockerfile                | 32 ++++++++
 deploy/images/rabbitmq/Dockerfile            |  3 +
 deploy/images/rabbitmq/rabbitmq.config       |  5 ++
 deploy/systemd/aws-metadata.service          | 19 +++++
 deploy/systemd/consul-download.service       | 11 +++
 deploy/systemd/consul.service                |  8 ++
 deploy/systemd/zookeeper.service             | 14 ++++
 pom.xml                                      | 97 ++++++++++++++++++++++-
 12 files changed, 289 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/build.sh
----------------------------------------------------------------------
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..da3c5b7
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# todo Add environment specific docker image creation and create docker image per component (api-server, orchestrator, gfac etc)
+
+echo $MAVEN_HOME
+echo $PATH
+
+cd $WORKSPACE/airavata-head/
+
+/home/jenkins/tools/maven/apache-maven-3.3.9/bin/mvn  clean install -Dmaven.test.skip=true
+if [ -d "docker-build" ]; then
+    printf '%s\n' "Removing old docker-build directory"
+    rm -rf docker-build
+fi
+
+mkdir docker-build
+cp modules/distribution/target/apache-airavata-server*.zip docker-build
+
+unzip docker-build/apache-airavata-server*.zip -d docker-build/airavata
+rm docker-build/apache-airavata-server*.zip
+
+cp deploy/images/airavata/Dockerfile docker-build/airavata/*/
+
+cd docker-build/airavata/*/
+
+# disable embedded zookeeper configuration
+echo  embedded.zk=false >> bin/airavata-server.properties
+
+component_name="all"
+if [ $# -gt 0 ]
+  then
+      docker build --build-arg COMPONENT=${component_name} -t airavata-${component_name} .
+      # docker push scigap/airavata-${component_name}
+fi
+
+docker build --build-arg COMPONENT=apiserver -t scigap/${environment}-airavata-apiserver .
+# docker push scigap/airavata-apiserver
+
+docker build --build-arg COMPONENT=gfac -t scigap/${environment}-airavata-gfac .
+# docker push scigap/airavata-gfac
+
+docker build --build-arg COMPONENT=orchestrator -t scigap/${environment}-airavata-orchestrator .
+# docker push scigap/airavata-orchestrator
+
+docker build --build-arg COMPONENT=credentialstore -t scigap/${environment}-airavata-credentialstore .
+# docker push scigap/airavata-credentialstore
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/airavata/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/airavata/Dockerfile b/deploy/images/airavata/Dockerfile
new file mode 100644
index 0000000..6b051ae
--- /dev/null
+++ b/deploy/images/airavata/Dockerfile
@@ -0,0 +1,16 @@
+#
+# To build from the airavata root dir until jenkins script or maven build to create docker image
+#
+FROM scigap/java:8
+ARG COMPONENT="all"
+
+ENV COMPONENT=$COMPONENT
+
+RUN mkdir /airavata
+COPY . /airavata
+
+WORKDIR /airavata
+
+RUN chmod +x ./bin/airavata-server-start.sh
+
+ENTRYPOINT ./bin/airavata-server-start.sh $COMPONENT

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/exhibitor/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/exhibitor/Dockerfile b/deploy/images/exhibitor/Dockerfile
new file mode 100644
index 0000000..feb7674
--- /dev/null
+++ b/deploy/images/exhibitor/Dockerfile
@@ -0,0 +1,6 @@
+FROM netflixoss/exhibitor:1.5.2
+
+ADD exhibitor.properties /exhibitor/exhibitor.properties
+
+ENTRYPOINT ["java", "-jar", "exhibitor-1.0-jar-with-dependencies.jar", "-c", "file", "--defaultconfig", "/exhibitor/exhibitor.properties"]
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/exhibitor/exhibitor.properties
----------------------------------------------------------------------
diff --git a/deploy/images/exhibitor/exhibitor.properties b/deploy/images/exhibitor/exhibitor.properties
new file mode 100644
index 0000000..b099e60
--- /dev/null
+++ b/deploy/images/exhibitor/exhibitor.properties
@@ -0,0 +1,14 @@
+java-environment=export JAVA_OPTS\="-Xms1000m -Xmx1000m"
+zookeeper-data-directory=/zookeeper/data
+cleanup-period-ms=200000
+zookeeper-install-directory=/zookeeper
+check-ms=2000
+client-port=2181
+cleanup-max-files=10
+connect-port=2888
+log4j-properties=
+observer-threshold=4
+election-port=3888
+zoo-cfg-extra=syncLimit\=5&tickTime\=2000&initLimit\=10
+auto-manage-instances-settling-period-ms=10000
+auto-manage-instances=1
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/java/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/java/Dockerfile b/deploy/images/java/Dockerfile
new file mode 100644
index 0000000..e3a5dd6
--- /dev/null
+++ b/deploy/images/java/Dockerfile
@@ -0,0 +1,32 @@
+FROM debian:stable
+
+ENV JAVA_MAJOR 8
+ENV JAVA_MINOR 102
+ENV JAVA_BUILD 14
+
+ENV JAVA_HOME /opt/jdk
+ENV PATH ${PATH}:${JAVA_HOME}/bin
+
+RUN apt-get update \
+  && apt-get install --assume-yes curl ca-certificates \
+  && apt-get clean \
+  && rm -rf /var/lib/apt/lists/* /var/log/apt/*
+
+RUN curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" \
+  http://download.oracle.com/otn-pub/java/jdk/${JAVA_MAJOR}u${JAVA_MINOR}-b${JAVA_BUILD}/server-jre-${JAVA_MAJOR}u${JAVA_MINOR}-linux-x64.tar.gz \
+  | tar -zxvf - -C /opt && \
+  ln -s /opt/jdk1.${JAVA_MAJOR}.0_${JAVA_MINOR} /opt/jdk && \
+  rm -rf /opt/jdk/man/* \
+         /opt/jdk/jre/bin/jjs \
+         /opt/jdk/jre/bin/keytool \
+         /opt/jdk/jre/bin/orbd \
+         /opt/jdk/jre/bin/pack200 \
+         /opt/jdk/jre/bin/policytool \
+         /opt/jdk/jre/bin/rmid \
+         /opt/jdk/jre/bin/rmiregistry \
+         /opt/jdk/jre/bin/servertool \
+         /opt/jdk/jre/bin/tnameserv \
+         /opt/jdk/jre/bin/unpack200 \
+         /opt/jdk/jre/lib/ext/nashorn.jar \
+         /opt/jdk/jre/lib/oblique-fonts
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/rabbitmq/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/rabbitmq/Dockerfile b/deploy/images/rabbitmq/Dockerfile
new file mode 100644
index 0000000..8dae7d4
--- /dev/null
+++ b/deploy/images/rabbitmq/Dockerfile
@@ -0,0 +1,3 @@
+FROM rabbitmq:3-management
+
+COPY rabbitmq.config /etc/rabbitmq/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/images/rabbitmq/rabbitmq.config
----------------------------------------------------------------------
diff --git a/deploy/images/rabbitmq/rabbitmq.config b/deploy/images/rabbitmq/rabbitmq.config
new file mode 100644
index 0000000..a3be93c
--- /dev/null
+++ b/deploy/images/rabbitmq/rabbitmq.config
@@ -0,0 +1,5 @@
+[
+  {rabbit, [
+    {tcp_listeners, [{"127.0.0.1", 5672}]}
+  ]}
+].

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/systemd/aws-metadata.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/aws-metadata.service b/deploy/systemd/aws-metadata.service
new file mode 100644
index 0000000..ac8ef57
--- /dev/null
+++ b/deploy/systemd/aws-metadata.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Loads AWS Metadata
+After=network-online.target
+Wants=network-online.target
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+EnvironmentFile=/etc/environment
+ExecStart=-/usr/bin/bash -c "systemctl set-environment AWS_REGION=$(curl -s http://[ip]/latest/meta-data/placement/availability-zone | sed -e 's/[a-z]$//')"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment AWS_HOSTNAME=$(curl -s http://[ip]/latest/meta-data/local-hostname)"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment AWS_ZONE=$(curl -s http://[ip]/latest/meta-data/placement/availability-zone)"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment AWS_INSTANCE_TYPE=$(curl -s http://[ip]/latest/meta-data/instance-type)"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment COREOS_PRIVATE_IPV4=${COREOS_PRIVATE_IPV4}"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment COREOS_PUBLIC_IPV4=${COREOS_PUBLIC_IPV4}"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment COREOS_FREE_DISK=$(df -l | awk '{ s+=$4 } END {print s}')"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment COREOS_TOTAL_MEM=$(cat /proc/meminfo | grep MemTotal | awk '{print $2/1024+2048}')"
+ExecStart=-/usr/bin/bash -c "systemctl set-environment COREOS_TOTAL_CPUS=$(cat /proc/cpuinfo | grep processor | wc -l | awk  '{print $s*2}')"
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/systemd/consul-download.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/consul-download.service b/deploy/systemd/consul-download.service
new file mode 100644
index 0000000..c430bb8
--- /dev/null
+++ b/deploy/systemd/consul-download.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Downloads Consul
+After=network-online.target
+Wants=network-online.target
+ConditionPathExists=!/opt/consul/0.6.3/consul
+[Service]
+Type=oneshot
+Environment=CONSUL_VERSION=0.6.3
+ExecStartPre=/usr/bin/bash -c 'wget --progress=dot -e dotbytes=10M https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip -O /tmp/consul.zip'
+ExecStartPre=/usr/bin/bash -c "mkdir -p /opt/bin /opt/consul/${CONSUL_VERSION}"
+ExecStart=/usr/bin/bash -c "/usr/bin/unzip -o /tmp/consul.zip -d /opt/consul/${CONSUL_VERSION} && ln -sf /opt/consul/${CONSUL_VERSION}/consul /opt/bin/consul"

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/systemd/consul.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/consul.service b/deploy/systemd/consul.service
new file mode 100644
index 0000000..4a887f6
--- /dev/null
+++ b/deploy/systemd/consul.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Consul Service Discovery and DNS
+After=consul-download.service aws-metadata.service
+Requires=consul-download.service aws-metadata.service
+[Service]
+EnvironmentFile=/etc/environment
+Restart=on-failure
+ExecStart=/opt/bin/consul agent -server -data-dir /var/lib/consul -bind ${COREOS_PRIVATE_IPV4} -dc ${AWS_REGION} -config-file /etc/consul/config.json -ui -client 0.0.0.0

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/deploy/systemd/zookeeper.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/zookeeper.service b/deploy/systemd/zookeeper.service
new file mode 100644
index 0000000..38e631b
--- /dev/null
+++ b/deploy/systemd/zookeeper.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Exhibitor and Zookeeper
+After=docker.service
+Requires=docker.service
+[Service]
+EnvironmentFile=/etc/environment
+TimeoutStartSec=60
+Restart=on-failure
+ExecStartPre=-/usr/bin/docker rm -f zookeeper
+ExecStartPre=-/usr/bin/docker pull scigap/exhibitor
+    ExecStart=/usr/bin/docker run --net=host --name zookeeper -v /var/lib/zookeeper/data:/zookeeper/data scigap/exhibitor --hostname ${COREOS_PRIVATE_IPV4} --port 8081
+ExecStop=/usr/bin/docker stop zookeeper
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/8474763b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3988fd0..1589171 100644
--- a/pom.xml
+++ b/pom.xml
@@ -570,8 +570,103 @@
 				<!--<module>modules/workflow</module>-->
 				<!--<module>modules/xbaya-gui</module>-->
                 		<module>modules/distribution</module>
-            </modules>
+            		</modules>
 		</profile>
+        <profile>
+            <id>jenkins</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-remote-resources-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>process</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>2.5</version>
+                        <executions>
+                            <execution>
+                                <id>copy-resources</id>
+                                <!-- here the phase you need -->
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${basedir}/target/classes/META-INF</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>${basedir}/src/main/assembly/dist</directory>
+                                            <filtering>true</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.1</version>
+                        <configuration>
+                            <source>1.8</source>
+                            <target>1.8</target>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <version>${surefire.version}</version>
+                        <configuration>
+                            <failIfNoTests>false</failIfNoTests>
+                            <skipTests>${skipTests}</skipTests>
+                            <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
+                            <!-- making sure that the sure-fire plugin doesn't run the integration
+                                tests -->
+                            <!-- Integration tests are run using the fail-safe plugin in the module
+                                pom -->
+                            <excludes>
+                                <exclude>**/IT.java</exclude>
+                                <exclude>**/*TestWithMyProxyAuth.java</exclude>
+                                <exclude>**/*TestWithSSHAuth.java</exclude>
+                                <exclude>**/*TestWithEC2Auth.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <modules>
+                <module>modules/configuration</module>
+                <module>airavata-api</module>
+                <module>modules/commons</module>
+                <module>modules/messaging</module>
+                <module>modules/gfac</module>
+                <module>modules/registry</module>
+                <module>modules/security</module>
+                <module>modules/credential-store</module>
+                <module>modules/orchestrator</module>
+                <module>modules/monitoring</module>
+                <module>modules/user-profile</module>
+                <!--<module>modules/cloud</module>-->
+                <module>modules/server</module>
+                <module>modules/workflow</module>
+                <module>modules/test-suite</module>
+                <!-- Deprecated Modules-->
+                <!--<module>modules/integration-tests</module>-->
+                <!--<module>modules/workflow-model</module>-->
+                <!--<module>modules/workflow</module>-->
+                <!--<module>modules/xbaya-gui</module>-->
+            </modules>
+        </profile>
 		<profile>
 			<id>pedantic</id>
 			<build>


[14/48] airavata git commit: [AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/NOTICE
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/NOTICE b/modules/distribution/src/main/resources/NOTICE
new file mode 100644
index 0000000..fa7cba5
--- /dev/null
+++ b/modules/distribution/src/main/resources/NOTICE
@@ -0,0 +1,163 @@
+Apache Airavata
+Copyright 2014 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+===============================================================================
+Apache Xerces Java Notice:
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - voluntary contributions made by Paul Eng on behalf of the
+       Apache Software Foundation that were originally developed at iClick, Inc.,
+       software copyright (c) 1999.
+
+================================================================================
+Apache XmlBeans Notice: 
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
+
+   Aside from contributions to the Apache XMLBeans project, this
+   software also includes:
+
+    - one or more source files from the Apache Xerces-J and Apache Axis
+      products, Copyright (c) 1999-2003 Apache Software Foundation
+
+    - W3C XML Schema documents Copyright 2001-2003 (c) World Wide Web
+      Consortium (Massachusetts Institute of Technology, European Research
+      Consortium for Informatics and Mathematics, Keio University)
+
+    - resolver.jar from Apache Xml Commons project,
+      Copyright (c) 2001-2003 Apache Software Foundation
+
+    - Piccolo XML Parser for Java from http://piccolo.sourceforge.net/,
+      Copyright 2002 Yuval Oren under the terms of the Apache Software License 2.0
+
+    - JSR-173 Streaming API for XML from http://sourceforge.net/projects/xmlpullparser/,
+      Copyright 2005 BEA under the terms of the Apache Software License 2.0
+      
+=========================================================================================
+Apache Axis2 Notice: (axis2-*, mex-1.5.1-impl)
+
+Portions Copyright 2006 International Business Machines Corp.
+Portions Copyright 2005-2007 WSO2, Inc.
+
+This product also includes schemas and specification developed by:
+- the W3C consortium (http://www.w3c.org)
+
+This product also includes WS-* schemas developed by International
+Business Machines Corporation, Microsoft Corporation, BEA Systems, 
+TIBCO Software, SAP AG, Sonic Software, and VeriSign
+
+This product also includes a WSDL developed by salesforce.com
+- Copyright 1999-2006 salesforce.com, inc.
+Portions of the included xmlbeans library were originally based on the following:
+- software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
+
+====================================================================================
+Apache Derby Notice:
+
+Portions of Derby were originally developed by
+International Business Machines Corporation and are
+licensed to the Apache Software Foundation under the
+"Software Grant and Corporate Contribution License Agreement",
+informally known as the "Derby CLA".
+The following copyright notice(s) were affixed to portions of the code
+with which this file is now or was at one time distributed
+and are placed here unaltered.
+
+(C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.
+
+(C) Copyright IBM Corp. 2003. 
+
+=======================
+
+The portion of the functionTests under 'nist' was originally 
+developed by the National Institute of Standards and Technology (NIST), 
+an agency of the United States Department of Commerce, and adapted by
+International Business Machines Corporation in accordance with the NIST
+Software Acknowledgment and Redistribution document at
+http://www.itl.nist.gov/div897/ctg/sql_form.htm
+
+========================
+
+The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
+java/stubs/jdbc3) were produced by trimming sources supplied by the
+Apache Harmony project. In addition, the Harmony SerialBlob and
+SerialClob implementations are used. The following notice covers the Harmony sources:
+
+Portions of Harmony were originally developed by
+Intel Corporation and are licensed to the Apache Software
+Foundation under the "Software Grant and Corporate Contribution
+License Agreement", informally known as the "Intel Harmony CLA".
+
+=============================================================================
+Apache Woden Notice:
+
+   This product also includes software developed by :
+   
+     - IBM Corporation (http://www.ibm.com),
+         WSDL4J was the initial code contribution for the Apache Woden
+         project and some of the WSDL4J design and code has been reused.
+     - The W3C Consortium (http://www.w3c.org),
+         Common W3C XML Schema and DTD files are packaged with Apache Woden.
+
+   Please read the different LICENSE files present in the root directory of
+   this distribution.
+
+=========================================================================
+Woodstox Notice: 
+
+This product includes software developed by the Woodstox Project 
+(http://woodstox.codehaus.org/)
+
+This product currently only contains code developed by authors
+of specific components, as identified by the source code files.
+
+Since product implements StAX API, it has dependencies to StAX API
+classes.
+
+For additional credits (generally to people who reported problems)
+see CREDITS file.
+
+===========================================================================
+Apache xml-commons xml-apis Notice:
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
+
+================================================================================================
+Apache  Xalan Notice: 
+
+Portions of this software was originally based on the following:
+     - software copyright (c) 1999-2002, Lotus Development Corporation., http://www.lotus.com.
+     - software copyright (c) 2001-2002, Sun Microsystems., http://www.sun.com.
+     - software copyright (c) 2003, IBM Corporation., http://www.ibm.com.
+     - voluntary contributions made by Ovidiu Predescu (ovidiu@cup.hp.com) on behalf of the 
+       Apache Software Foundation and was originally developed at Hewlett Packard Company. 
+================================================================================================
+Apache  OpenJPA Notice: 
+
+OpenJPA includes software developed by the SERP project
+Copyright (c) 2002-2006, A. Abram White. All rights reserved.
+
+OpenJPA includes the persistence and orm schemas from the JPA specifications.
+Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.
+OpenJPA elects to include this software in this distribution under the
+CDDL license.  You can obtain a copy of the License at:
+    https://glassfish.dev.java.net/public/CDDL+GPL.html
+The source code is available at:
+    https://glassfish.dev.java.net/source/browse/glassfish/
+
+OpenJPA includes software written by Miroslav Nachev
+OpenJPA uses test code written by Charles Tillman.
+================================================================================================
+Apache XmlSchema Notice:
+
+Portions Copyright 2006 International Business Machines Corp.
+================================================================================================

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/README
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/README b/modules/distribution/src/main/resources/README
new file mode 100644
index 0000000..c2223ff
--- /dev/null
+++ b/modules/distribution/src/main/resources/README
@@ -0,0 +1,145 @@
+Apache Airavata Source - README.txt
+Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
+--------------------------------------------------------------------------------
+
+About
+=====
+Apache Airavata, a software framework to executing and managing computational jobs on 
+distributed computing resources including local clusters, supercomputers, national grids, 
+academic and commercial clouds. Airavata builds on general concepts of service oriented computing, 
+distributed messaging, and workflow composition and orchestration. Airavata bundles a server package 
+with an API, client software development Kits and a general purpose GUI XBaya as a application registration, workflow
+construction execution and monitoring. XBaya GUI also provides capabilities to access the workflow 
+produced data.  
+
+Contact
+========
+For additional information about Apache Airavata, please contact the user or dev mailing lists:
+http://airavata.apache.org/community/mailing-lists.html
+
+Description of Airavata Directory Structure
+==================================
+    - airavata-api
+      This directory contains Airavata API related data models, api methods, generated server skeletons, client stubs, server implementations and client samples. 
+
+    - modules
+      This contains the source code of all the airavata maven projects organized as libraries, services and distributions
+
+    - samples
+      This contains all the system wide samples provided in Airavata distribution. All the sample are having its README file
+      So users have to refer each readme file before running each sample.
+
+    - tools
+      This contains source code libraries that can enhance Airavata features.
+
+    - README
+      This document.
+    
+    - RELEASE_NOTES
+      The describe the key features and know issues with the current release. 
+
+    - INSTALL
+      This document will contain information on installing Apache-Airavata.
+
+Airavata Source Distribution Directory Structure
+================================================
+
+    AIRAVATA_MASTER
+		\u251c\u2500\u2500 airavata-api
+		\u251c\u2500\u2500 modules
+		\u2502   \u251c\u2500\u2500 airavata-client
+		\u2502   \u251c\u2500\u2500 app-catalog
+		\u2502   \u251c\u2500\u2500 commons
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-schema
+		\u2502   \u2502   \u251c\u2500\u2500 utils
+		\u2502   \u2502   \u251c\u2500\u2500 workflow-execution-context
+		\u2502   \u2502   \u2514\u2500\u2500 workflow-tracking
+		\u2502   \u251c\u2500\u2500 credential-store-service
+		\u2502   \u251c\u2500\u2500 distribution
+		\u2502   \u2502   \u251c\u2500\u2500 api-server
+		\u2502   \u2502   \u251c\u2500\u2500 client
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-server
+		\u2502   \u2502   \u251c\u2500\u2500 orchestrator-server
+		\u2502   \u2502   \u251c\u2500\u2500 server
+		\u2502   \u2502   \u2514\u2500\u2500 release
+		\u2502   \u2502   \u2514\u2500\u2500 xbaya-gui
+		\u2502   \u251c\u2500\u2500 gfac
+		\u2502   \u2502   \u251c\u2500\u2500 airavata-gfac-service
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-bes
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-core
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-ec2
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-gram
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-gsissh
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-hadoop
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-local
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-monitor
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-ssh
+		\u2502   \u2502   \u251c\u2500\u2500 gfac-thrift-descriptions
+		\u2502   \u251c\u2500\u2500 integration-tests
+		\u2502   \u251c\u2500\u2500 messaging
+		\u2502   \u251c\u2500\u2500 orchestrator
+		\u2502   \u251c\u2500\u2500 registry
+		\u2502   \u2502   \u251c\u2500\u2500 airavata-jpa-registry
+		\u2502   \u2502   \u251c\u2500\u2500 registry-cpi
+		\u2502   \u251c\u2500\u2500 security
+		\u2502   \u251c\u2500\u2500 credential-store
+		\u2502   \u251c\u2500\u2500 server
+		\u2502   \u251c\u2500\u2500 test-suite
+		\u2502   \u251c\u2500\u2500 workflow-model
+		\u2502   \u2502   \u251c\u2500\u2500 workflow-engine
+		\u2502   \u2502   \u251c\u2500\u2500 workflow-model-component-node
+		\u2502   \u2502   \u2514\u2500\u2500 workflow-model-core
+		\u2502   \u251c\u2500\u2500 ws-messenger
+		\u2502   \u2502   \u251c\u2500\u2500 commons
+		\u2502   \u2502   \u251c\u2500\u2500 distribution
+		\u2502   \u2502   \u251c\u2500\u2500 messagebox
+		\u2502   \u2502   \u251c\u2500\u2500 messagebroker
+		\u2502   \u2502   \u251c\u2500\u2500 message-monitor
+		\u2502   \u2502   \u2514\u2500\u2500 samples
+		\u2502   \u2514\u2500\u2500 xbaya-gui
+		\u251c\u2500\u2500 samples
+		\u251c\u2500\u2500 tools
+		\u2502   \u251c\u2500\u2500 gsissh
+		\u2502   \u251c\u2500\u2500 gsissh-cli-tools
+		\u2502   \u251c\u2500\u2500 phoebus-integration
+		\u2502   \u2514\u2500\u2500 registry-migrate
+		\u251c\u2500\u2500 INSTALL
+		\u251c\u2500\u2500 LICENSE
+		\u251c\u2500\u2500 NOTICE
+		\u251c\u2500\u2500 README
+		\u2514\u2500\u2500 RELEASE_NOTES
+
+Available Binary Distributions
+==============================
+
+Server Distributions
+--------------------
+* Airavata Server
+  The Airavata Server binary distribution allows you to run a standalone Airavata Server which includes all the airavata services 
+  shipped with a default derby database as the backend registry. For stable purposes, a mysql configuration is recommended. 
+
+* Airavata API Server
+  This is the server that contains Airavata API Server.
+
+* Airavata Orchestrator Server
+  This is the stand-alone orchestrator server
+
+* Airavata GFac Server
+  This is the standalone GFac Server
+
+Client Distributions
+--------------------
+* Airavata XBaya
+  The Airavata XBaya distribution is a client GUI application with features to register applications as web services, construct workflows,
+  execute and monitor workflows and browse the generated results from the airavata registry.
+
+* Airavata Client
+  The Airavata Client distribution is a set of libraries and configurations files that allow a 3rd party application to programatically 
+  access Airavata functionality through Airavata API. 
+  
+ How to test and run samples
+===========================
+* If you built Airavata from source, and if you see "BUILD SUCCESS", then the test cases should have passes.
+* The test cases are beyond unit level, they startup embedded services and run through basic workflow use cases.
+* To walk through Airavata features, follow "XBAYA Quick-Start Tutorial" tutorial at https://cwiki.apache.org/confluence/display/AIRAVATA/XBAYA+Quick-Start+Tutorial.
+* For advanced use cases, please contact mailing lists - http://airavata.apache.org/community/mailing-lists.html

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/airavata-server-start.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/airavata-server-start.sh b/modules/distribution/src/main/resources/bin/airavata-server-start.sh
new file mode 100644
index 0000000..f44661b
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/airavata-server-start.sh
@@ -0,0 +1,123 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+. `dirname $0`/setenv.sh
+cd ${AIRAVATA_HOME}/bin
+LOGO_FILE="logo.txt"
+
+JAVA_OPTS=""
+AIRAVATA_COMMAND=""
+EXTRA_ARGS=""
+SERVERS=""
+IS_DAEMON_MODE=false
+LOGO=true
+IS_SUBSET=false
+SUBSET=""
+
+# parse command arguments
+for var in "$@"
+do
+    case ${var} in
+        -xdebug)
+        	AIRAVATA_COMMAND="${AIRAVATA_COMMAND}"
+            JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000"
+            shift
+        ;;
+        -security)
+            JAVA_OPTS="${JAVA_OPTS} -Djava.security.manager -Djava.security.policy=${AIRAVATA_HOME}/conf/axis2.policy -Daxis2.home=${AIRAVATA_HOME}"
+            shift
+        ;;
+	    apiserver | gfac | orchestrator | credentialstore | regserver)
+	        if [ -z ${SERVERS} ] ; then
+	            SERVERS="${var}"
+	        else
+	            SERVERS="${SERVERS},${var}"
+	        fi
+            shift
+        ;;
+        all | api-orch | execution )
+            IS_SUBSET=true
+            SUBSET="${var}"
+            shift
+            ;;
+        -d)
+	        IS_DAEMON_MODE=true
+	        shift
+	        ;;
+	    -nologo)
+	        LOGO=false
+            shift
+        ;;
+        -h)
+            echo "Usage: airavata-server-start.sh [server-name/s] [command-options]"
+            echo "Server names:"
+            echo "  apiserver           Start apiserver"
+            echo "  gfac                Start gfac server"
+            echo "  orchestrator        Start orchestrator server"
+            echo "  credentialstore     Start credentialstore server"
+            echo "  regserver           Start registry server"
+            echo "  all                 Start all servers in one JVM"
+
+            echo "command options:"
+	        echo "  -d                  Start server in daemon mode"
+            echo "  -xdebug             Start Airavata Server under JPDA debugger"
+            echo "  -nologo             Do not show airavata logo"
+            echo "  -security           Enable Java 2 security"
+	        echo "  --<key>[=<value>]   Server setting(s) to override or introduce (overrides values in airavata-server.properties)"
+            echo "  -h                  Display this help and exit"
+            shift
+            exit 0
+        ;;
+	    *)
+	        EXTRA_ARGS="${EXTRA_ARGS} ${var}"
+            shift
+        ;;
+    esac
+done
+
+#Construct Airavata command arguments in proper order.
+if ${IS_SUBSET} ; then
+    AIRAVATA_COMMAND="--servers=${SUBSET} ${AIRAVATA_COMMAND} ${EXTRA_ARGS}"
+else
+    if [ -z ${SERVERS} ] ; then
+        echo "You should provide at least one server component to start the airavata server. Please use -h option to get more details."
+        exit -1
+    else
+        AIRAVATA_COMMAND="--servers=${SERVERS} ${AIRAVATA_COMMAND} ${EXTRA_ARGS}"
+    fi
+fi
+
+#print logo file
+if ${LOGO} ; then
+	if [ -e ${LOGO_FILE} ]
+	then
+		cat ${LOGO_FILE}
+	fi
+fi
+
+
+if ${IS_DAEMON_MODE} ; then
+	echo "Starting airavata server/s in daemon mode..."
+	nohup java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
+    org.apache.airavata.server.ServerMain ${AIRAVATA_COMMAND} $* > /dev/null 2>&1 &
+else
+	java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
+    org.apache.airavata.server.ServerMain ${AIRAVATA_COMMAND} $*
+fi
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/airavata-server-stop.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/airavata-server-stop.sh b/modules/distribution/src/main/resources/bin/airavata-server-stop.sh
new file mode 100644
index 0000000..7f83f48
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/airavata-server-stop.sh
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+. `dirname $0`/setenv.sh
+cd ${AIRAVATA_HOME}/bin
+
+JAVA_OPTS=""
+AIRAVATA_COMMAND=""
+FORCE=false
+
+for var in "$@"
+do
+    case ${var} in
+    	-f | --force)
+	        FORCE=true
+            shift
+        ;;
+        -h)
+            echo "Usage: airavata-server-stop.sh [command-options]"
+            echo "command options:"
+	        echo "  -f , --force       Force stop all airavata servers."
+	        echo "  --<key>[=<value>]  Server setting(s) to override or introduce (overrides values in airavata-server.properties)"
+            echo "  -h                 Display this help and exit"
+            shift
+            exit 0
+        ;;
+	*)
+            shift
+    esac
+done
+
+if ${FORCE} ; then
+	for f in `find . -name "server_start_*"`; do
+	    # split file name using "_" underscore
+		f_split=(${f//_/ });
+		echo "Found process file : $f"
+		echo -n "    Sending kill signals to process ${f_split[2]}..."
+		out=`kill -9 ${f_split[2]} 2>&1`
+		if [ -z "$out" ]; then
+		    echo "done"
+		else
+		    echo "failed (REASON: $out)"
+		fi
+		echo -n "    Removing process file..."
+		out=`rm ${f} 2>&1`
+		if [ -z "$out" ]; then
+		    echo "done"
+		else
+		    echo "failed (REASON: $out)"
+		fi
+	done
+else
+    java ${JAVA_OPTS} -classpath "${AIRAVATA_CLASSPATH}" \
+    org.apache.airavata.server.ServerMain stop ${AIRAVATA_COMMAND} $*
+fi

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/airavata-server.bat
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/airavata-server.bat b/modules/distribution/src/main/resources/bin/airavata-server.bat
new file mode 100644
index 0000000..be2c584
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/airavata-server.bat
@@ -0,0 +1,55 @@
+@echo off
+rem Licensed to the Apache Software Foundation (ASF) under one
+rem or more contributor license agreements. See the NOTICE file
+rem distributed with this work for additional information
+rem regarding copyright ownership. The ASF licenses this file
+rem to you under the Apache License, Version 2.0 (the
+rem "License"); you may not use this file except in compliance
+rem with the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing,
+rem software distributed under the License is distributed on an
+rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+rem KIND, either express or implied. See the License for the
+rem specific language governing permissions and limitations
+rem under the License.
+
+setlocal EnableDelayedExpansion
+
+call "%~dp0"setenv.bat
+
+:loop
+if ""%1""==""-xdebug"" goto xdebug
+if ""%1""==""-security"" goto security
+if ""%1""=="""" goto run
+goto help
+
+:xdebug
+set JAVA_OPTS= %JAVA_OPTS% -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000
+shift
+goto loop
+
+:security
+set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy=%AIRAVATA_HOME%\conf\axis2.policy -Daxis2.home=%AIRAVATA_HOME%
+shift
+goto loop
+
+:help
+echo  Usage: %0 [-options]
+echo.
+echo  where options include:
+echo   -xdebug    Start Airavata Server under JPDA debugger
+echo   -security  Enable Java 2 security
+echo   -h         Help
+goto end
+
+:run
+cd "%AIRAVATA_HOME%\bin"
+set LOGO_FILE="logo.txt"
+if exist "%LOGO_FILE%" type "%LOGO_FILE%"
+
+java %JAVA_OPTS% -classpath "%AIRAVATA_CLASSPATH%" org.apache.airavata.server.ServerMain %*
+
+:end

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/derby.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/derby.sh b/modules/distribution/src/main/resources/bin/derby.sh
new file mode 100644
index 0000000..134f7b9
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/derby.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+
+#   http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+. `dirname $0`/setenv.sh
+export DERBY_HOME=$AIRAVATA_HOME/standalone-server
+cd $AIRAVATA_HOME/bin
+./startNetworkServer $*
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/logo.txt
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/logo.txt b/modules/distribution/src/main/resources/bin/logo.txt
new file mode 100644
index 0000000..e886438
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/logo.txt
@@ -0,0 +1,34 @@
+...._....................._..............._...._......................_.........
+.../ \..._.__...__._..___| |__...___...../ \..(_)_.__.__.___...____._|.|_.__._..
+../ _ \.| '_ \./ _` |/ __| '_ \./ _ \.../ _ \.| | '__/ _` \ \./ / _` | __/ _` |.
+./ ___ \| |_) | (_| | (__| |.| |  __/../ ___ \| | |.| (_| |\ V / (_| | || (_| |.
+/_/...\_\ .__/.\__,_|\___|_|.|_|\___|./_/...\_\_|_|..\__,_|.\_/.\__,_|\__\__,_|.
+........|_|.....................................................................
+................................................................................
+................,+????++~..~~++..+????????+??++.++~...~+=???+++.................
+..............:???????....:::...~??????????????.~..::...=????????...............
+............????????..~~..?????..??????????????.?????..~~~.~???????.............
+...........?????????I,~I~~??????.+????????????.~??????~=~..?????????~...........
+.........?????++??????..????????:.??????????I..????????..????????+????..........
+........??.....???????....???????...???????+..+??????+.I.????????.....?,........
+........????==????????..??..?????..=???????=..?????,.=+?.?????????===??=........
+......=??????????+????..+??=.???=.~??????????,.???=,???,.????=+??????????.......
+....??????????+...+I++..???,=...:??????????????.....+??..++I?+..,??????????.....
+....???????=??..........??..+??.:=:.???????......??..??=..........?=???????=....
+....??????..?...........+?..???.....???????......???.??...........~=.??????=....
+....~???~.~..............?..???.~=..,??????...7..???.?.:..............~????:....
+...7....7 ...............?..????. ...??????... .????.?.?.............I ..:.:....
+.....+7=,.+?................????:,I...?????..=.?????.?.............??~.=7+......
+..........????..............??????~...~??..~~??????..?...........+???,..........
+...........???............=.+???????,.?+:.?????????..+...........???+...........
+............??............?,.??????.,??..??????????.,............???............
+...........??,.............=.,????.?+....????????I.I..............=?............
+..........I?..................+??.:?~.....=??????..................??...........
+..........??...?...............??.:?=......??????..............?...??...........
+............++?..............?.????...?....??????.+..............++I............
+.............................?.??????~....???????.?.............................
+............................~~.??????......??????...............................
+.............................=???????......???????+.............................
+..........................=I??++?+++?......?+++++++?+...........................
+..........................,..77..77.........  ..  ...7..........................
+................................................................................

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/setenv.bat
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/setenv.bat b/modules/distribution/src/main/resources/bin/setenv.bat
new file mode 100644
index 0000000..5f1fda1
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/setenv.bat
@@ -0,0 +1,33 @@
+rem Licensed to the Apache Software Foundation (ASF) under one
+rem or more contributor license agreements. See the NOTICE file
+rem distributed with this work for additional information
+rem regarding copyright ownership. The ASF licenses this file
+rem to you under the Apache License, Version 2.0 (the
+rem "License"); you may not use this file except in compliance
+rem with the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing,
+rem software distributed under the License is distributed on an
+rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+rem KIND, either express or implied. See the License for the
+rem specific language governing permissions and limitations
+rem under the License.
+
+@echo off
+
+:initialize
+if "%AIRAVATA_HOME%"=="" set AIRAVATA_HOME=%~sdp0..
+SET curDrive=%cd:~0,1%
+SET airavataDrive=%AIRAVATA_HOME:~0,1%
+if not "%curDrive%" == "%airavataDrive%" %airavataDrive%:
+goto updateClasspath
+
+rem ----- update classpath -----------------------------------------------------
+:updateClasspath
+cd %AIRAVATA_HOME%
+set AIRAVATA_CLASSPATH=
+FOR %%C in ("%AIRAVATA_HOME%\lib\*.jar") DO set AIRAVATA_CLASSPATH=!AIRAVATA_CLASSPATH!;..\lib\%%~nC%%~xC
+
+:end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/setenv.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/setenv.sh b/modules/distribution/src/main/resources/bin/setenv.sh
new file mode 100755
index 0000000..9e894e1
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/setenv.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '.*/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+
+# Only set AIRAVATA_HOME if not already set
+[ -z "$AIRAVATA_HOME" ] && AIRAVATA_HOME=`cd "$PRGDIR/.." ; pwd`
+
+AIRAVATA_CLASSPATH=""
+
+for f in "$AIRAVATA_HOME"/lib/*.jar
+do
+  AIRAVATA_CLASSPATH="$AIRAVATA_CLASSPATH":$f
+done
+
+export AIRAVATA_HOME
+export AIRAVATA_CLASSPATH

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/bin/startNetworkServer
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/bin/startNetworkServer b/modules/distribution/src/main/resources/bin/startNetworkServer
new file mode 100644
index 0000000..808566c
--- /dev/null
+++ b/modules/distribution/src/main/resources/bin/startNetworkServer
@@ -0,0 +1,189 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+
+#   http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+if [ -n "$derby_common_debug" ] ; then
+  set -x
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  Darwin*) darwin=true
+           if [ -z "$JAVA_HOME" ] ; then
+             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+           fi
+           ;;
+esac
+
+if [ -z "$DERBY_HOME" -o ! -d "$DERBY_HOME" ] ; then
+  ## resolve links - $0 may be a link to derby's home
+  PRG="$0"
+  progname=`basename "$0"`
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+    else
+    PRG=`dirname "$PRG"`"/$link"
+    fi
+  done
+
+  DERBY_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  DERBY_HOME=`cd "$DERBY_HOME" && pwd`
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$DERBY_HOME" ] &&
+    DERBY_HOME=`cygpath --unix "$DERBY_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# set DERBY_LIB location
+DERBY_LIB="${DERBY_HOME}/lib"
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD=`which java 2> /dev/null `
+    if [ -z "$JAVACMD" ] ; then
+        JAVACMD=java
+    fi
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly."
+  echo "  We cannot execute $JAVACMD"
+  exit 1
+fi
+
+# set local classpath, don't overwrite the user's
+LOCALCLASSPATH=$DERBY_LIB/derby.jar:$DERBY_LIB/derbynet.jar:$DERBY_LIB/derbytools.jar:$DERBY_LIB/derbyclient.jar
+
+# if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
+# user CLASSPATH first and derby-found jars after.
+# In that case, the user CLASSPATH will override derby-found jars
+#
+# if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
+# with derby-found jars first and user CLASSPATH after
+if [ -n "$CLASSPATH" ] ; then
+  # merge local and specified classpath 
+  if [ -z "$LOCALCLASSPATH" ] ; then 
+    LOCALCLASSPATH="$CLASSPATH"
+  elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
+    LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
+  else
+    LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
+  fi
+
+  # remove class path from launcher -cp option
+  CLASSPATH=""
+fi
+
+# For Cygwin, switch paths to appropriate format before running java
+# For PATHs convert to unix format first, then to windows format to ensure
+# both formats are supported. Probably this will fail on directories with ;
+# in the name in the path. Let's assume that paths containing ; are more
+# rare than windows style paths on cygwin.
+if $cygwin; then
+  if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
+    format=mixed
+  else
+    format=windows
+  fi
+  DERBY_HOME=`cygpath --$format "$DERBY_HOME"`
+  DERBY_LIB=`cygpath --$format "$DERBY_LIB"`
+  if [ -n "$JAVA_HOME" ]; then
+    JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
+  fi
+  LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
+  LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
+  if [ -n "$CLASSPATH" ] ; then
+    CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
+    CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
+  fi
+  CYGHOME=`cygpath --$format "$HOME"`
+fi
+
+# add a second backslash to variables terminated by a backslash under cygwin
+if $cygwin; then
+  case "$DERBY_HOME" in
+    *\\ )
+    DERBY_HOME="$DERBY_HOME\\"
+    ;;
+  esac
+  case "$CYGHOME" in
+    *\\ )
+    CYGHOME="$CYGHOME\\"
+    ;;
+  esac
+  case "$LOCALCLASSPATH" in
+    *\\ )
+    LOCALCLASSPATH="$LOCALCLASSPATH\\"
+    ;;
+  esac
+  case "$CLASSPATH" in
+    *\\ )
+    CLASSPATH="$CLASSPATH\\"
+    ;;
+  esac
+fi
+
+# Readjust classpath for MKS
+# expr match 
+if [ \( "`expr $SHELL : '.*sh.exe$'`" -gt 0 \) -a \( "$cygwin" = "false" \) ]; then
+  LOCALCLASSPATH=`echo $LOCALCLASSPATH | sed -E 's/([\d\w]*):([\d\w]*)/\1;\2/g
+'`
+fi
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+
+#   http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+derby_exec_command="exec \"$JAVACMD\" $DERBY_OPTS -classpath \"$LOCALCLASSPATH\" org.apache.derby.drda.NetworkServerControl start $@"
+eval $derby_exec_command

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/samples/registerSample.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/samples/registerSample.sh b/modules/distribution/src/main/resources/samples/registerSample.sh
new file mode 100644
index 0000000..384ec0e
--- /dev/null
+++ b/modules/distribution/src/main/resources/samples/registerSample.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+. `dirname $0`/../bin/setenv.sh
+JAVA_OPTS=""
+
+java -classpath "$AIRAVATA_CLASSPATH" \
+		     org.apache.airavata.client.samples.RegisterSampleData $*

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/samples/scripts/add.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/samples/scripts/add.sh b/modules/distribution/src/main/resources/samples/scripts/add.sh
new file mode 100755
index 0000000..daa140b
--- /dev/null
+++ b/modules/distribution/src/main/resources/samples/scripts/add.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# add two numbers
+sleep 10
+/bin/echo  "Result=`expr $1 + $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/samples/scripts/echo.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/samples/scripts/echo.sh b/modules/distribution/src/main/resources/samples/scripts/echo.sh
new file mode 100755
index 0000000..9dbaab9
--- /dev/null
+++ b/modules/distribution/src/main/resources/samples/scripts/echo.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#echo wrapper
+sleep 10
+/bin/echo "Echoed_Output=$1"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/samples/scripts/multiply.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/samples/scripts/multiply.sh b/modules/distribution/src/main/resources/samples/scripts/multiply.sh
new file mode 100755
index 0000000..a5b5f7f
--- /dev/null
+++ b/modules/distribution/src/main/resources/samples/scripts/multiply.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# mutiply two numbers
+sleep 10
+/bin/echo "Result=`expr $1 \* $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/samples/scripts/subtract.sh
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/samples/scripts/subtract.sh b/modules/distribution/src/main/resources/samples/scripts/subtract.sh
new file mode 100755
index 0000000..a21bec7
--- /dev/null
+++ b/modules/distribution/src/main/resources/samples/scripts/subtract.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# substract two numbers
+sleep 10
+/bin/echo "Result=`expr $1 - $2`"

http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fb19cf9..f3f0e8d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -551,7 +551,7 @@
 				<module>modules/configuration</module>
 				<module>airavata-api</module>
 				<module>modules/commons</module>
-                <module>modules/messaging</module>
+                		<module>modules/messaging</module>
 				<module>modules/gfac</module>
 				<module>modules/registry</module>
 				<module>modules/security</module>
@@ -570,102 +570,9 @@
 				<!--<module>modules/workflow-model</module>-->
 				<!--<module>modules/workflow</module>-->
 				<!--<module>modules/xbaya-gui</module>-->
-                <module>distribution</module>
+                		<module>modules/distribution</module>
             </modules>
 		</profile>
-        <profile>
-            <id>jenkins</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-remote-resources-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>process</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <artifactId>maven-resources-plugin</artifactId>
-                        <version>2.5</version>
-                        <executions>
-                            <execution>
-                                <id>copy-resources</id>
-                                <!-- here the phase you need -->
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>copy-resources</goal>
-                                </goals>
-                                <configuration>
-                                    <outputDirectory>${basedir}/target/classes/META-INF</outputDirectory>
-                                    <resources>
-                                        <resource>
-                                            <directory>${basedir}/src/main/assembly/dist</directory>
-                                            <filtering>true</filtering>
-                                        </resource>
-                                    </resources>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <version>3.1</version>
-                        <configuration>
-                            <source>1.8</source>
-                            <target>1.8</target>
-                        </configuration>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <version>${surefire.version}</version>
-                        <configuration>
-                            <failIfNoTests>false</failIfNoTests>
-                            <skipTests>${skipTests}</skipTests>
-                            <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
-                            <!-- making sure that the sure-fire plugin doesn't run the integration
-                                tests -->
-                            <!-- Integration tests are run using the fail-safe plugin in the module
-                                pom -->
-                            <excludes>
-                                <exclude>**/IT.java</exclude>
-                                <exclude>**/*TestWithMyProxyAuth.java</exclude>
-                                <exclude>**/*TestWithSSHAuth.java</exclude>
-                                <exclude>**/*TestWithEC2Auth.java</exclude>
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <modules>
-                <module>modules/configuration</module>
-                <module>airavata-api</module>
-                <module>modules/commons</module>
-                <module>modules/messaging</module>
-                <module>modules/gfac</module>
-                <module>modules/registry</module>
-                <module>modules/security</module>
-                <module>modules/credential-store</module>
-                <module>modules/orchestrator</module>
-                <module>modules/monitoring</module>
-                <module>modules/user-profile</module>
-                <!--<module>modules/cloud</module>-->
-                <module>modules/server</module>
-                <module>modules/workflow</module>
-                <module>modules/test-suite</module>
-				<module>modules/group-manager</module>
-				<!-- enable distribution when AIRAVATA-2057 is fixed -->
-				<!--<module>distribution</module>-->
-            </modules>
-        </profile>
 		<profile>
 			<id>pedantic</id>
 			<build>


[43/48] airavata git commit: update experiment error model, AIRAVATA-2096

Posted by la...@apache.org.
update experiment error model, AIRAVATA-2096


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 96e31a99f8f9b0b9b7be3826bc4e8d417c2e1c42
Parents: 5dbf84c
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Sep 12 16:38:46 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Sep 12 16:38:46 2016 -0400

----------------------------------------------------------------------
 .../src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/96e31a99/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index a57252e..2b623e8 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -891,6 +891,7 @@ public class GFacEngineImpl implements GFacEngine {
         errorModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
         try {
             GFacUtils.saveProcessError(pc, errorModel);
+            GFacUtils.saveExperimentError(pc, errorModel);
         } catch (GFacException e1) {
             log.error("Error while updating error model for process:" + pc.getProcessId());
         }


[04/48] airavata git commit: merging jeffs gsoc project

Posted by la...@apache.org.
merging jeffs gsoc project


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: ff18106ab2559d053392c6b3e8a2c6e3172f9ad4
Parents: ef310d3 7b14e0f
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 22 23:36:46 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 22 23:36:46 2016 -0400

----------------------------------------------------------------------
 modules/amqpwstunnel/python/amqpwstunnel.py | 583 +++++++++++++++++++++++
 modules/amqpwstunnel/python/config.json     |  10 +
 modules/amqpwstunnel/wstest.html            | 157 ++++++
 3 files changed, 750 insertions(+)
----------------------------------------------------------------------



[30/48] airavata git commit: Fixed saving current time as reservation start and endtime

Posted by la...@apache.org.
Fixed saving current time as reservation start and endtime


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 2b3dec80736c0542346c70a6d6ab122d9f6448d5
Parents: cc009e3
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Aug 31 10:12:01 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Aug 31 10:12:01 2016 -0400

----------------------------------------------------------------------
 .../app/catalog/impl/GwyResourceProfileImpl.java  | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/2b3dec80/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/GwyResourceProfileImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/GwyResourceProfileImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/GwyResourceProfileImpl.java
index bbf300a..b2d31a4 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/GwyResourceProfileImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/impl/GwyResourceProfileImpl.java
@@ -84,8 +84,13 @@ public class GwyResourceProfileImpl implements GwyResourceProfile {
                     resource.setScratchLocation(preference.getScratchLocation());
                     resource.setQualityOfService(preference.getQualityOfService());
                     resource.setReservation(preference.getReservation());
-                    resource.setReservationStartTime(AiravataUtils.getTime(preference.getReservationStartTime()));
-                    resource.setReservationEndTime(AiravataUtils.getTime(preference.getReservationEndTime()));
+                    if(preference.getReservationStartTime() > 0){
+                        resource.setReservationStartTime(AiravataUtils.getTime(preference.getReservationStartTime()));
+                    }
+
+                    if (preference.getReservationEndTime() > 0) {
+                        resource.setReservationEndTime(AiravataUtils.getTime(preference.getReservationEndTime()));
+                    }
                     resource.save();
                 }
             }
@@ -144,8 +149,13 @@ public class GwyResourceProfileImpl implements GwyResourceProfile {
                     resource.setUsageReportingGatewayId(preference.getUsageReportingGatewayId());
                     resource.setQualityOfService(preference.getQualityOfService());
                     resource.setReservation(preference.getReservation());
-                    resource.setReservationStartTime(AiravataUtils.getTime(preference.getReservationStartTime()));
-                    resource.setReservationEndTime(AiravataUtils.getTime(preference.getReservationEndTime()));
+                    if(preference.getReservationStartTime() > 0){
+                        resource.setReservationStartTime(AiravataUtils.getTime(preference.getReservationStartTime()));
+                    }
+
+                    if (preference.getReservationEndTime() > 0) {
+                        resource.setReservationEndTime(AiravataUtils.getTime(preference.getReservationEndTime()));
+                    }
                     resource.save();
                 }
             }


[29/48] airavata git commit: making errors and statuses list in Process and Task models

Posted by la...@apache.org.
making errors and statuses list in Process and Task models


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: b46fd511789f4f58a6e2a89f0e608240c844baad
Parents: eee49d3
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 29 16:06:08 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 29 16:06:08 2016 -0400

----------------------------------------------------------------------
 .../resources/lib/airavata/job_model_types.cpp  |  86 ++++--
 .../resources/lib/airavata/job_model_types.h    |   4 +-
 .../resources/lib/airavata/task_model_types.cpp | 242 ++++++++-------
 .../resources/lib/airavata/task_model_types.h   |   8 +-
 .../resources/lib/Airavata/Model/Task/Types.php | 102 +++++--
 .../resources/lib/Airavata/Model/job/Types.php  |  41 ++-
 .../lib/apache/airavata/model/job/ttypes.py     |  20 +-
 .../lib/apache/airavata/model/task/ttypes.py    |  54 ++--
 .../org/apache/airavata/model/job/JobModel.java | 142 +++++----
 .../airavata/model/process/ProcessModel.java    | 177 +++++------
 .../apache/airavata/model/task/TaskModel.java   | 302 ++++++++++++-------
 .../apache/airavata/gfac/core/GFacUtils.java    |   9 +-
 .../gfac/core/context/ProcessContext.java       |  10 +-
 .../airavata/gfac/core/context/TaskContext.java |  17 +-
 .../airavata/gfac/impl/GFacEngineImpl.java      |  25 +-
 .../airavata/gfac/impl/task/ArchiveTask.java    |   5 +-
 .../gfac/impl/task/BESJobSubmissionTask.java    |  10 +-
 .../airavata/gfac/impl/task/DataStageTask.java  |   8 +-
 .../impl/task/DefaultJobSubmissionTask.java     |  26 +-
 .../gfac/impl/task/EnvironmentSetupTask.java    |   3 +-
 .../gfac/impl/task/ForkJobSubmissionTask.java   |  13 +-
 .../gfac/impl/task/SCPDataStageTask.java        |  16 +-
 .../gfac/impl/task/utils/StreamData.java        |   8 +-
 .../gfac/monitor/email/EmailBasedMonitor.java   |   4 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |  12 +-
 .../core/entities/expcatalog/JobEntity.java     |  10 +-
 .../core/entities/expcatalog/ProcessEntity.java |  20 +-
 .../core/entities/expcatalog/TaskEntity.java    |  20 +-
 .../expcatalog/ExperimentRepository.java        |   8 +-
 .../catalog/impl/ExperimentRegistry.java        |  32 +-
 .../utils/ThriftDataModelConversion.java        |  16 +-
 .../service/handler/RegistryServerHandler.java  |   2 +-
 .../experiment-catalog-models/job_model.thrift  |   2 +-
 .../process_model.thrift                        |   4 +-
 .../experiment-catalog-models/task_model.thrift |   4 +-
 35 files changed, 864 insertions(+), 598 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
index 50bdd6d..b411913 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
@@ -56,7 +56,7 @@ void JobModel::__set_creationTime(const int64_t val) {
 __isset.creationTime = true;
 }
 
-void JobModel::__set_jobStatus(const  ::apache::airavata::model::status::JobStatus& val) {
+void JobModel::__set_jobStatus(const std::vector< ::apache::airavata::model::status::JobStatus> & val) {
   this->jobStatus = val;
 __isset.jobStatus = true;
 }
@@ -157,8 +157,20 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 6:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->jobStatus.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->jobStatus.clear();
+            uint32_t _size0;
+            ::apache::thrift::protocol::TType _etype3;
+            xfer += iprot->readListBegin(_etype3, _size0);
+            this->jobStatus.resize(_size0);
+            uint32_t _i4;
+            for (_i4 = 0; _i4 < _size0; ++_i4)
+            {
+              xfer += this->jobStatus[_i4].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.jobStatus = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -259,8 +271,16 @@ uint32_t JobModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.jobStatus) {
-    xfer += oprot->writeFieldBegin("jobStatus", ::apache::thrift::protocol::T_STRUCT, 6);
-    xfer += this->jobStatus.write(oprot);
+    xfer += oprot->writeFieldBegin("jobStatus", ::apache::thrift::protocol::T_LIST, 6);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->jobStatus.size()));
+      std::vector< ::apache::airavata::model::status::JobStatus> ::const_iterator _iter5;
+      for (_iter5 = this->jobStatus.begin(); _iter5 != this->jobStatus.end(); ++_iter5)
+      {
+        xfer += (*_iter5).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.computeResourceConsumed) {
@@ -315,35 +335,35 @@ void swap(JobModel &a, JobModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-JobModel::JobModel(const JobModel& other0) {
-  jobId = other0.jobId;
-  taskId = other0.taskId;
-  processId = other0.processId;
-  jobDescription = other0.jobDescription;
-  creationTime = other0.creationTime;
-  jobStatus = other0.jobStatus;
-  computeResourceConsumed = other0.computeResourceConsumed;
-  jobName = other0.jobName;
-  workingDir = other0.workingDir;
-  stdOut = other0.stdOut;
-  stdErr = other0.stdErr;
-  exitCode = other0.exitCode;
-  __isset = other0.__isset;
+JobModel::JobModel(const JobModel& other6) {
+  jobId = other6.jobId;
+  taskId = other6.taskId;
+  processId = other6.processId;
+  jobDescription = other6.jobDescription;
+  creationTime = other6.creationTime;
+  jobStatus = other6.jobStatus;
+  computeResourceConsumed = other6.computeResourceConsumed;
+  jobName = other6.jobName;
+  workingDir = other6.workingDir;
+  stdOut = other6.stdOut;
+  stdErr = other6.stdErr;
+  exitCode = other6.exitCode;
+  __isset = other6.__isset;
 }
-JobModel& JobModel::operator=(const JobModel& other1) {
-  jobId = other1.jobId;
-  taskId = other1.taskId;
-  processId = other1.processId;
-  jobDescription = other1.jobDescription;
-  creationTime = other1.creationTime;
-  jobStatus = other1.jobStatus;
-  computeResourceConsumed = other1.computeResourceConsumed;
-  jobName = other1.jobName;
-  workingDir = other1.workingDir;
-  stdOut = other1.stdOut;
-  stdErr = other1.stdErr;
-  exitCode = other1.exitCode;
-  __isset = other1.__isset;
+JobModel& JobModel::operator=(const JobModel& other7) {
+  jobId = other7.jobId;
+  taskId = other7.taskId;
+  processId = other7.processId;
+  jobDescription = other7.jobDescription;
+  creationTime = other7.creationTime;
+  jobStatus = other7.jobStatus;
+  computeResourceConsumed = other7.computeResourceConsumed;
+  jobName = other7.jobName;
+  workingDir = other7.workingDir;
+  stdOut = other7.stdOut;
+  stdErr = other7.stdErr;
+  exitCode = other7.exitCode;
+  __isset = other7.__isset;
   return *this;
 }
 void JobModel::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
index 6b98e32..00ba9fe 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
@@ -65,7 +65,7 @@ class JobModel {
   std::string processId;
   std::string jobDescription;
   int64_t creationTime;
-   ::apache::airavata::model::status::JobStatus jobStatus;
+  std::vector< ::apache::airavata::model::status::JobStatus>  jobStatus;
   std::string computeResourceConsumed;
   std::string jobName;
   std::string workingDir;
@@ -85,7 +85,7 @@ class JobModel {
 
   void __set_creationTime(const int64_t val);
 
-  void __set_jobStatus(const  ::apache::airavata::model::status::JobStatus& val);
+  void __set_jobStatus(const std::vector< ::apache::airavata::model::status::JobStatus> & val);
 
   void __set_computeResourceConsumed(const std::string& val);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
index f208387..e73eca8 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
@@ -85,7 +85,7 @@ void TaskModel::__set_lastUpdateTime(const int64_t val) {
   this->lastUpdateTime = val;
 }
 
-void TaskModel::__set_taskStatus(const  ::apache::airavata::model::status::TaskStatus& val) {
+void TaskModel::__set_taskStatus(const std::vector< ::apache::airavata::model::status::TaskStatus> & val) {
   this->taskStatus = val;
 }
 
@@ -99,7 +99,7 @@ void TaskModel::__set_subTaskModel(const std::string& val) {
 __isset.subTaskModel = true;
 }
 
-void TaskModel::__set_taskError(const  ::apache::airavata::model::commons::ErrorModel& val) {
+void TaskModel::__set_taskError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
   this->taskError = val;
 __isset.taskError = true;
 }
@@ -179,8 +179,20 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 6:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->taskStatus.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->taskStatus.clear();
+            uint32_t _size1;
+            ::apache::thrift::protocol::TType _etype4;
+            xfer += iprot->readListBegin(_etype4, _size1);
+            this->taskStatus.resize(_size1);
+            uint32_t _i5;
+            for (_i5 = 0; _i5 < _size1; ++_i5)
+            {
+              xfer += this->taskStatus[_i5].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           isset_taskStatus = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -203,8 +215,20 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 9:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->taskError.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->taskError.clear();
+            uint32_t _size6;
+            ::apache::thrift::protocol::TType _etype9;
+            xfer += iprot->readListBegin(_etype9, _size6);
+            this->taskError.resize(_size6);
+            uint32_t _i10;
+            for (_i10 = 0; _i10 < _size6; ++_i10)
+            {
+              xfer += this->taskError[_i10].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.taskError = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -214,14 +238,14 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->jobs.clear();
-            uint32_t _size1;
-            ::apache::thrift::protocol::TType _etype4;
-            xfer += iprot->readListBegin(_etype4, _size1);
-            this->jobs.resize(_size1);
-            uint32_t _i5;
-            for (_i5 = 0; _i5 < _size1; ++_i5)
+            uint32_t _size11;
+            ::apache::thrift::protocol::TType _etype14;
+            xfer += iprot->readListBegin(_etype14, _size11);
+            this->jobs.resize(_size11);
+            uint32_t _i15;
+            for (_i15 = 0; _i15 < _size11; ++_i15)
             {
-              xfer += this->jobs[_i5].read(iprot);
+              xfer += this->jobs[_i15].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -279,8 +303,16 @@ uint32_t TaskModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeI64(this->lastUpdateTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("taskStatus", ::apache::thrift::protocol::T_STRUCT, 6);
-  xfer += this->taskStatus.write(oprot);
+  xfer += oprot->writeFieldBegin("taskStatus", ::apache::thrift::protocol::T_LIST, 6);
+  {
+    xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskStatus.size()));
+    std::vector< ::apache::airavata::model::status::TaskStatus> ::const_iterator _iter16;
+    for (_iter16 = this->taskStatus.begin(); _iter16 != this->taskStatus.end(); ++_iter16)
+    {
+      xfer += (*_iter16).write(oprot);
+    }
+    xfer += oprot->writeListEnd();
+  }
   xfer += oprot->writeFieldEnd();
 
   if (this->__isset.taskDetail) {
@@ -294,18 +326,26 @@ uint32_t TaskModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.taskError) {
-    xfer += oprot->writeFieldBegin("taskError", ::apache::thrift::protocol::T_STRUCT, 9);
-    xfer += this->taskError.write(oprot);
+    xfer += oprot->writeFieldBegin("taskError", ::apache::thrift::protocol::T_LIST, 9);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskError.size()));
+      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter17;
+      for (_iter17 = this->taskError.begin(); _iter17 != this->taskError.end(); ++_iter17)
+      {
+        xfer += (*_iter17).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.jobs) {
     xfer += oprot->writeFieldBegin("jobs", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->jobs.size()));
-      std::vector< ::apache::airavata::model::job::JobModel> ::const_iterator _iter6;
-      for (_iter6 = this->jobs.begin(); _iter6 != this->jobs.end(); ++_iter6)
+      std::vector< ::apache::airavata::model::job::JobModel> ::const_iterator _iter18;
+      for (_iter18 = this->jobs.begin(); _iter18 != this->jobs.end(); ++_iter18)
       {
-        xfer += (*_iter6).write(oprot);
+        xfer += (*_iter18).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -331,31 +371,31 @@ void swap(TaskModel &a, TaskModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-TaskModel::TaskModel(const TaskModel& other7) {
-  taskId = other7.taskId;
-  taskType = other7.taskType;
-  parentProcessId = other7.parentProcessId;
-  creationTime = other7.creationTime;
-  lastUpdateTime = other7.lastUpdateTime;
-  taskStatus = other7.taskStatus;
-  taskDetail = other7.taskDetail;
-  subTaskModel = other7.subTaskModel;
-  taskError = other7.taskError;
-  jobs = other7.jobs;
-  __isset = other7.__isset;
-}
-TaskModel& TaskModel::operator=(const TaskModel& other8) {
-  taskId = other8.taskId;
-  taskType = other8.taskType;
-  parentProcessId = other8.parentProcessId;
-  creationTime = other8.creationTime;
-  lastUpdateTime = other8.lastUpdateTime;
-  taskStatus = other8.taskStatus;
-  taskDetail = other8.taskDetail;
-  subTaskModel = other8.subTaskModel;
-  taskError = other8.taskError;
-  jobs = other8.jobs;
-  __isset = other8.__isset;
+TaskModel::TaskModel(const TaskModel& other19) {
+  taskId = other19.taskId;
+  taskType = other19.taskType;
+  parentProcessId = other19.parentProcessId;
+  creationTime = other19.creationTime;
+  lastUpdateTime = other19.lastUpdateTime;
+  taskStatus = other19.taskStatus;
+  taskDetail = other19.taskDetail;
+  subTaskModel = other19.subTaskModel;
+  taskError = other19.taskError;
+  jobs = other19.jobs;
+  __isset = other19.__isset;
+}
+TaskModel& TaskModel::operator=(const TaskModel& other20) {
+  taskId = other20.taskId;
+  taskType = other20.taskType;
+  parentProcessId = other20.parentProcessId;
+  creationTime = other20.creationTime;
+  lastUpdateTime = other20.lastUpdateTime;
+  taskStatus = other20.taskStatus;
+  taskDetail = other20.taskDetail;
+  subTaskModel = other20.subTaskModel;
+  taskError = other20.taskError;
+  jobs = other20.jobs;
+  __isset = other20.__isset;
   return *this;
 }
 void TaskModel::printTo(std::ostream& out) const {
@@ -458,9 +498,9 @@ uint32_t DataStagingTaskModel::read(::apache::thrift::protocol::TProtocol* iprot
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast9;
-          xfer += iprot->readI32(ecast9);
-          this->type = (DataStageType::type)ecast9;
+          int32_t ecast21;
+          xfer += iprot->readI32(ecast21);
+          this->type = (DataStageType::type)ecast21;
           isset_type = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -584,27 +624,27 @@ void swap(DataStagingTaskModel &a, DataStagingTaskModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-DataStagingTaskModel::DataStagingTaskModel(const DataStagingTaskModel& other10) {
-  source = other10.source;
-  destination = other10.destination;
-  type = other10.type;
-  transferStartTime = other10.transferStartTime;
-  transferEndTime = other10.transferEndTime;
-  transferRate = other10.transferRate;
-  processInput = other10.processInput;
-  processOutput = other10.processOutput;
-  __isset = other10.__isset;
-}
-DataStagingTaskModel& DataStagingTaskModel::operator=(const DataStagingTaskModel& other11) {
-  source = other11.source;
-  destination = other11.destination;
-  type = other11.type;
-  transferStartTime = other11.transferStartTime;
-  transferEndTime = other11.transferEndTime;
-  transferRate = other11.transferRate;
-  processInput = other11.processInput;
-  processOutput = other11.processOutput;
-  __isset = other11.__isset;
+DataStagingTaskModel::DataStagingTaskModel(const DataStagingTaskModel& other22) {
+  source = other22.source;
+  destination = other22.destination;
+  type = other22.type;
+  transferStartTime = other22.transferStartTime;
+  transferEndTime = other22.transferEndTime;
+  transferRate = other22.transferRate;
+  processInput = other22.processInput;
+  processOutput = other22.processOutput;
+  __isset = other22.__isset;
+}
+DataStagingTaskModel& DataStagingTaskModel::operator=(const DataStagingTaskModel& other23) {
+  source = other23.source;
+  destination = other23.destination;
+  type = other23.type;
+  transferStartTime = other23.transferStartTime;
+  transferEndTime = other23.transferEndTime;
+  transferRate = other23.transferRate;
+  processInput = other23.processInput;
+  processOutput = other23.processOutput;
+  __isset = other23.__isset;
   return *this;
 }
 void DataStagingTaskModel::printTo(std::ostream& out) const {
@@ -667,9 +707,9 @@ uint32_t EnvironmentSetupTaskModel::read(::apache::thrift::protocol::TProtocol*
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast12;
-          xfer += iprot->readI32(ecast12);
-          this->protocol = ( ::apache::airavata::model::data::movement::SecurityProtocol::type)ecast12;
+          int32_t ecast24;
+          xfer += iprot->readI32(ecast24);
+          this->protocol = ( ::apache::airavata::model::data::movement::SecurityProtocol::type)ecast24;
           isset_protocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -715,13 +755,13 @@ void swap(EnvironmentSetupTaskModel &a, EnvironmentSetupTaskModel &b) {
   swap(a.protocol, b.protocol);
 }
 
-EnvironmentSetupTaskModel::EnvironmentSetupTaskModel(const EnvironmentSetupTaskModel& other13) {
-  location = other13.location;
-  protocol = other13.protocol;
+EnvironmentSetupTaskModel::EnvironmentSetupTaskModel(const EnvironmentSetupTaskModel& other25) {
+  location = other25.location;
+  protocol = other25.protocol;
 }
-EnvironmentSetupTaskModel& EnvironmentSetupTaskModel::operator=(const EnvironmentSetupTaskModel& other14) {
-  location = other14.location;
-  protocol = other14.protocol;
+EnvironmentSetupTaskModel& EnvironmentSetupTaskModel::operator=(const EnvironmentSetupTaskModel& other26) {
+  location = other26.location;
+  protocol = other26.protocol;
   return *this;
 }
 void EnvironmentSetupTaskModel::printTo(std::ostream& out) const {
@@ -775,9 +815,9 @@ uint32_t JobSubmissionTaskModel::read(::apache::thrift::protocol::TProtocol* ipr
     {
       case 1:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast15;
-          xfer += iprot->readI32(ecast15);
-          this->jobSubmissionProtocol = ( ::apache::airavata::model::appcatalog::computeresource::JobSubmissionProtocol::type)ecast15;
+          int32_t ecast27;
+          xfer += iprot->readI32(ecast27);
+          this->jobSubmissionProtocol = ( ::apache::airavata::model::appcatalog::computeresource::JobSubmissionProtocol::type)ecast27;
           isset_jobSubmissionProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -785,9 +825,9 @@ uint32_t JobSubmissionTaskModel::read(::apache::thrift::protocol::TProtocol* ipr
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast16;
-          xfer += iprot->readI32(ecast16);
-          this->monitorMode = ( ::apache::airavata::model::appcatalog::computeresource::MonitorMode::type)ecast16;
+          int32_t ecast28;
+          xfer += iprot->readI32(ecast28);
+          this->monitorMode = ( ::apache::airavata::model::appcatalog::computeresource::MonitorMode::type)ecast28;
           isset_monitorMode = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -848,17 +888,17 @@ void swap(JobSubmissionTaskModel &a, JobSubmissionTaskModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-JobSubmissionTaskModel::JobSubmissionTaskModel(const JobSubmissionTaskModel& other17) {
-  jobSubmissionProtocol = other17.jobSubmissionProtocol;
-  monitorMode = other17.monitorMode;
-  wallTime = other17.wallTime;
-  __isset = other17.__isset;
+JobSubmissionTaskModel::JobSubmissionTaskModel(const JobSubmissionTaskModel& other29) {
+  jobSubmissionProtocol = other29.jobSubmissionProtocol;
+  monitorMode = other29.monitorMode;
+  wallTime = other29.wallTime;
+  __isset = other29.__isset;
 }
-JobSubmissionTaskModel& JobSubmissionTaskModel::operator=(const JobSubmissionTaskModel& other18) {
-  jobSubmissionProtocol = other18.jobSubmissionProtocol;
-  monitorMode = other18.monitorMode;
-  wallTime = other18.wallTime;
-  __isset = other18.__isset;
+JobSubmissionTaskModel& JobSubmissionTaskModel::operator=(const JobSubmissionTaskModel& other30) {
+  jobSubmissionProtocol = other30.jobSubmissionProtocol;
+  monitorMode = other30.monitorMode;
+  wallTime = other30.wallTime;
+  __isset = other30.__isset;
   return *this;
 }
 void JobSubmissionTaskModel::printTo(std::ostream& out) const {
@@ -903,9 +943,9 @@ uint32_t MonitorTaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
     {
       case 1:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast19;
-          xfer += iprot->readI32(ecast19);
-          this->monitorMode = ( ::apache::airavata::model::appcatalog::computeresource::MonitorMode::type)ecast19;
+          int32_t ecast31;
+          xfer += iprot->readI32(ecast31);
+          this->monitorMode = ( ::apache::airavata::model::appcatalog::computeresource::MonitorMode::type)ecast31;
           isset_monitorMode = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -944,11 +984,11 @@ void swap(MonitorTaskModel &a, MonitorTaskModel &b) {
   swap(a.monitorMode, b.monitorMode);
 }
 
-MonitorTaskModel::MonitorTaskModel(const MonitorTaskModel& other20) {
-  monitorMode = other20.monitorMode;
+MonitorTaskModel::MonitorTaskModel(const MonitorTaskModel& other32) {
+  monitorMode = other32.monitorMode;
 }
-MonitorTaskModel& MonitorTaskModel::operator=(const MonitorTaskModel& other21) {
-  monitorMode = other21.monitorMode;
+MonitorTaskModel& MonitorTaskModel::operator=(const MonitorTaskModel& other33) {
+  monitorMode = other33.monitorMode;
   return *this;
 }
 void MonitorTaskModel::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
index 8f18441..8a98904 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
@@ -97,10 +97,10 @@ class TaskModel {
   std::string parentProcessId;
   int64_t creationTime;
   int64_t lastUpdateTime;
-   ::apache::airavata::model::status::TaskStatus taskStatus;
+  std::vector< ::apache::airavata::model::status::TaskStatus>  taskStatus;
   std::string taskDetail;
   std::string subTaskModel;
-   ::apache::airavata::model::commons::ErrorModel taskError;
+  std::vector< ::apache::airavata::model::commons::ErrorModel>  taskError;
   std::vector< ::apache::airavata::model::job::JobModel>  jobs;
 
   _TaskModel__isset __isset;
@@ -115,13 +115,13 @@ class TaskModel {
 
   void __set_lastUpdateTime(const int64_t val);
 
-  void __set_taskStatus(const  ::apache::airavata::model::status::TaskStatus& val);
+  void __set_taskStatus(const std::vector< ::apache::airavata::model::status::TaskStatus> & val);
 
   void __set_taskDetail(const std::string& val);
 
   void __set_subTaskModel(const std::string& val);
 
-  void __set_taskError(const  ::apache::airavata::model::commons::ErrorModel& val);
+  void __set_taskError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 
   void __set_jobs(const std::vector< ::apache::airavata::model::job::JobModel> & val);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
index 2997652..b655020 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
@@ -89,7 +89,7 @@ class TaskModel {
    */
   public $lastUpdateTime = null;
   /**
-   * @var \Airavata\Model\Status\TaskStatus
+   * @var \Airavata\Model\Status\TaskStatus[]
    */
   public $taskStatus = null;
   /**
@@ -101,7 +101,7 @@ class TaskModel {
    */
   public $subTaskModel = null;
   /**
-   * @var \Airavata\Model\Commons\ErrorModel
+   * @var \Airavata\Model\Commons\ErrorModel[]
    */
   public $taskError = null;
   /**
@@ -134,8 +134,12 @@ class TaskModel {
           ),
         6 => array(
           'var' => 'taskStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\TaskStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\TaskStatus',
+            ),
           ),
         7 => array(
           'var' => 'taskDetail',
@@ -147,8 +151,12 @@ class TaskModel {
           ),
         9 => array(
           'var' => 'taskError',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Commons\ErrorModel',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Commons\ErrorModel',
+            ),
           ),
         10 => array(
           'var' => 'jobs',
@@ -250,9 +258,19 @@ class TaskModel {
           }
           break;
         case 6:
-          if ($ftype == TType::STRUCT) {
-            $this->taskStatus = new \Airavata\Model\Status\TaskStatus();
-            $xfer += $this->taskStatus->read($input);
+          if ($ftype == TType::LST) {
+            $this->taskStatus = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Status\TaskStatus();
+              $xfer += $elem5->read($input);
+              $this->taskStatus []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -272,9 +290,19 @@ class TaskModel {
           }
           break;
         case 9:
-          if ($ftype == TType::STRUCT) {
-            $this->taskError = new \Airavata\Model\Commons\ErrorModel();
-            $xfer += $this->taskError->read($input);
+          if ($ftype == TType::LST) {
+            $this->taskError = array();
+            $_size6 = 0;
+            $_etype9 = 0;
+            $xfer += $input->readListBegin($_etype9, $_size6);
+            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
+            {
+              $elem11 = null;
+              $elem11 = new \Airavata\Model\Commons\ErrorModel();
+              $xfer += $elem11->read($input);
+              $this->taskError []= $elem11;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -282,15 +310,15 @@ class TaskModel {
         case 10:
           if ($ftype == TType::LST) {
             $this->jobs = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            $_size12 = 0;
+            $_etype15 = 0;
+            $xfer += $input->readListBegin($_etype15, $_size12);
+            for ($_i16 = 0; $_i16 < $_size12; ++$_i16)
             {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Job\JobModel();
-              $xfer += $elem5->read($input);
-              $this->jobs []= $elem5;
+              $elem17 = null;
+              $elem17 = new \Airavata\Model\Job\JobModel();
+              $xfer += $elem17->read($input);
+              $this->jobs []= $elem17;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -336,11 +364,20 @@ class TaskModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->taskStatus !== null) {
-      if (!is_object($this->taskStatus)) {
+      if (!is_array($this->taskStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('taskStatus', TType::STRUCT, 6);
-      $xfer += $this->taskStatus->write($output);
+      $xfer += $output->writeFieldBegin('taskStatus', TType::LST, 6);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->taskStatus));
+        {
+          foreach ($this->taskStatus as $iter18)
+          {
+            $xfer += $iter18->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->taskDetail !== null) {
@@ -354,11 +391,20 @@ class TaskModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->taskError !== null) {
-      if (!is_object($this->taskError)) {
+      if (!is_array($this->taskError)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('taskError', TType::STRUCT, 9);
-      $xfer += $this->taskError->write($output);
+      $xfer += $output->writeFieldBegin('taskError', TType::LST, 9);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->taskError));
+        {
+          foreach ($this->taskError as $iter19)
+          {
+            $xfer += $iter19->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->jobs !== null) {
@@ -369,9 +415,9 @@ class TaskModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->jobs));
         {
-          foreach ($this->jobs as $iter6)
+          foreach ($this->jobs as $iter20)
           {
-            $xfer += $iter6->write($output);
+            $xfer += $iter20->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
index 22453c1..8f50b70 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
@@ -41,7 +41,7 @@ class JobModel {
    */
   public $creationTime = null;
   /**
-   * @var \Airavata\Model\Status\JobStatus
+   * @var \Airavata\Model\Status\JobStatus[]
    */
   public $jobStatus = null;
   /**
@@ -94,8 +94,12 @@ class JobModel {
           ),
         6 => array(
           'var' => 'jobStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\JobStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\JobStatus',
+            ),
           ),
         7 => array(
           'var' => 'computeResourceConsumed',
@@ -218,9 +222,19 @@ class JobModel {
           }
           break;
         case 6:
-          if ($ftype == TType::STRUCT) {
-            $this->jobStatus = new \Airavata\Model\Status\JobStatus();
-            $xfer += $this->jobStatus->read($input);
+          if ($ftype == TType::LST) {
+            $this->jobStatus = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Status\JobStatus();
+              $xfer += $elem5->read($input);
+              $this->jobStatus []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -306,11 +320,20 @@ class JobModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->jobStatus !== null) {
-      if (!is_object($this->jobStatus)) {
+      if (!is_array($this->jobStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('jobStatus', TType::STRUCT, 6);
-      $xfer += $this->jobStatus->write($output);
+      $xfer += $output->writeFieldBegin('jobStatus', TType::LST, 6);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->jobStatus));
+        {
+          foreach ($this->jobStatus as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->computeResourceConsumed !== null) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
index 8c8f881..111d241 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
@@ -43,7 +43,7 @@ class JobModel:
     (3, TType.STRING, 'processId', None, None, ), # 3
     (4, TType.STRING, 'jobDescription', None, None, ), # 4
     (5, TType.I64, 'creationTime', None, None, ), # 5
-    (6, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 6
+    (6, TType.LIST, 'jobStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec)), None, ), # 6
     (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
     (8, TType.STRING, 'jobName', None, None, ), # 8
     (9, TType.STRING, 'workingDir', None, None, ), # 9
@@ -101,9 +101,14 @@ class JobModel:
         else:
           iprot.skip(ftype)
       elif fid == 6:
-        if ftype == TType.STRUCT:
-          self.jobStatus = apache.airavata.model.status.ttypes.JobStatus()
-          self.jobStatus.read(iprot)
+        if ftype == TType.LIST:
+          self.jobStatus = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.status.ttypes.JobStatus()
+            _elem5.read(iprot)
+            self.jobStatus.append(_elem5)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 7:
@@ -167,8 +172,11 @@ class JobModel:
       oprot.writeI64(self.creationTime)
       oprot.writeFieldEnd()
     if self.jobStatus is not None:
-      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 6)
-      self.jobStatus.write(oprot)
+      oprot.writeFieldBegin('jobStatus', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobStatus))
+      for iter6 in self.jobStatus:
+        iter6.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.computeResourceConsumed is not None:
       oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py
index ff6d729..9699f7b 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/task/ttypes.py
@@ -108,10 +108,10 @@ class TaskModel:
     (3, TType.STRING, 'parentProcessId', None, None, ), # 3
     (4, TType.I64, 'creationTime', None, None, ), # 4
     (5, TType.I64, 'lastUpdateTime', None, None, ), # 5
-    (6, TType.STRUCT, 'taskStatus', (apache.airavata.model.status.ttypes.TaskStatus, apache.airavata.model.status.ttypes.TaskStatus.thrift_spec), None, ), # 6
+    (6, TType.LIST, 'taskStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.TaskStatus, apache.airavata.model.status.ttypes.TaskStatus.thrift_spec)), None, ), # 6
     (7, TType.STRING, 'taskDetail', None, None, ), # 7
     (8, TType.STRING, 'subTaskModel', None, None, ), # 8
-    (9, TType.STRUCT, 'taskError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 9
+    (9, TType.LIST, 'taskError', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 9
     (10, TType.LIST, 'jobs', (TType.STRUCT,(apache.airavata.model.job.ttypes.JobModel, apache.airavata.model.job.ttypes.JobModel.thrift_spec)), None, ), # 10
   )
 
@@ -162,9 +162,14 @@ class TaskModel:
         else:
           iprot.skip(ftype)
       elif fid == 6:
-        if ftype == TType.STRUCT:
-          self.taskStatus = apache.airavata.model.status.ttypes.TaskStatus()
-          self.taskStatus.read(iprot)
+        if ftype == TType.LIST:
+          self.taskStatus = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.status.ttypes.TaskStatus()
+            _elem5.read(iprot)
+            self.taskStatus.append(_elem5)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 7:
@@ -178,19 +183,24 @@ class TaskModel:
         else:
           iprot.skip(ftype)
       elif fid == 9:
-        if ftype == TType.STRUCT:
-          self.taskError = apache.airavata.model.commons.ttypes.ErrorModel()
-          self.taskError.read(iprot)
+        if ftype == TType.LIST:
+          self.taskError = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem11.read(iprot)
+            self.taskError.append(_elem11)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 10:
         if ftype == TType.LIST:
           self.jobs = []
-          (_etype3, _size0) = iprot.readListBegin()
-          for _i4 in xrange(_size0):
-            _elem5 = apache.airavata.model.job.ttypes.JobModel()
-            _elem5.read(iprot)
-            self.jobs.append(_elem5)
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.job.ttypes.JobModel()
+            _elem17.read(iprot)
+            self.jobs.append(_elem17)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -225,8 +235,11 @@ class TaskModel:
       oprot.writeI64(self.lastUpdateTime)
       oprot.writeFieldEnd()
     if self.taskStatus is not None:
-      oprot.writeFieldBegin('taskStatus', TType.STRUCT, 6)
-      self.taskStatus.write(oprot)
+      oprot.writeFieldBegin('taskStatus', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.taskStatus))
+      for iter18 in self.taskStatus:
+        iter18.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.taskDetail is not None:
       oprot.writeFieldBegin('taskDetail', TType.STRING, 7)
@@ -237,14 +250,17 @@ class TaskModel:
       oprot.writeString(self.subTaskModel)
       oprot.writeFieldEnd()
     if self.taskError is not None:
-      oprot.writeFieldBegin('taskError', TType.STRUCT, 9)
-      self.taskError.write(oprot)
+      oprot.writeFieldBegin('taskError', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.taskError))
+      for iter19 in self.taskError:
+        iter19.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.jobs is not None:
       oprot.writeFieldBegin('jobs', TType.LIST, 10)
       oprot.writeListBegin(TType.STRUCT, len(self.jobs))
-      for iter6 in self.jobs:
-        iter6.write(oprot)
+      for iter20 in self.jobs:
+        iter20.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
index f624be9..d14c50e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
@@ -23,32 +23,15 @@
  */
 package org.apache.airavata.model.job;
 
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-
 import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
+
 import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.*;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 @Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
@@ -60,7 +43,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
   private static final org.apache.thrift.protocol.TField PROCESS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("processId", org.apache.thrift.protocol.TType.STRING, (short)3);
   private static final org.apache.thrift.protocol.TField JOB_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("jobDescription", org.apache.thrift.protocol.TType.STRING, (short)4);
   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)5);
-  private static final org.apache.thrift.protocol.TField JOB_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("jobStatus", org.apache.thrift.protocol.TType.STRUCT, (short)6);
+  private static final org.apache.thrift.protocol.TField JOB_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("jobStatuses", org.apache.thrift.protocol.TType.LIST, (short)6);
   private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_CONSUMED_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceConsumed", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField JOB_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("jobName", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField WORKING_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("workingDir", org.apache.thrift.protocol.TType.STRING, (short)9);
@@ -79,7 +62,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
   private String processId; // required
   private String jobDescription; // required
   private long creationTime; // optional
-  private org.apache.airavata.model.status.JobStatus jobStatus; // optional
+  private List<org.apache.airavata.model.status.JobStatus> jobStatuses; // optional
   private String computeResourceConsumed; // optional
   private String jobName; // optional
   private String workingDir; // optional
@@ -94,7 +77,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     PROCESS_ID((short)3, "processId"),
     JOB_DESCRIPTION((short)4, "jobDescription"),
     CREATION_TIME((short)5, "creationTime"),
-    JOB_STATUS((short)6, "jobStatus"),
+    JOB_STATUS((short)6, "jobStatuses"),
     COMPUTE_RESOURCE_CONSUMED((short)7, "computeResourceConsumed"),
     JOB_NAME((short)8, "jobName"),
     WORKING_DIR((short)9, "workingDir"),
@@ -196,8 +179,9 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.CREATION_TIME, new org.apache.thrift.meta_data.FieldMetaData("creationTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.JOB_STATUS, new org.apache.thrift.meta_data.FieldMetaData("jobStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.JobStatus.class)));
+    tmpMap.put(_Fields.JOB_STATUS, new org.apache.thrift.meta_data.FieldMetaData("jobStatuses", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.JobStatus.class))));
     tmpMap.put(_Fields.COMPUTE_RESOURCE_CONSUMED, new org.apache.thrift.meta_data.FieldMetaData("computeResourceConsumed", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.JOB_NAME, new org.apache.thrift.meta_data.FieldMetaData("jobName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -249,7 +233,11 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     }
     this.creationTime = other.creationTime;
     if (other.isSetJobStatus()) {
-      this.jobStatus = new org.apache.airavata.model.status.JobStatus(other.jobStatus);
+      List<org.apache.airavata.model.status.JobStatus> __this__jobStatus = new ArrayList<org.apache.airavata.model.status.JobStatus>(other.jobStatuses.size());
+      for (org.apache.airavata.model.status.JobStatus other_element : other.jobStatuses) {
+        __this__jobStatus.add(new org.apache.airavata.model.status.JobStatus(other_element));
+      }
+      this.jobStatuses = __this__jobStatus;
     }
     if (other.isSetComputeResourceConsumed()) {
       this.computeResourceConsumed = other.computeResourceConsumed;
@@ -281,7 +269,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     this.jobDescription = null;
     setCreationTimeIsSet(false);
     this.creationTime = 0;
-    this.jobStatus = null;
+    this.jobStatuses = null;
     this.computeResourceConsumed = null;
     this.jobName = null;
     this.workingDir = null;
@@ -405,26 +393,41 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATIONTIME_ISSET_ID, value);
   }
 
-  public org.apache.airavata.model.status.JobStatus getJobStatus() {
-    return this.jobStatus;
+  public int getJobStatusSize() {
+    return (this.jobStatuses == null) ? 0 : this.jobStatuses.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.status.JobStatus> getJobStatusIterator() {
+    return (this.jobStatuses == null) ? null : this.jobStatuses.iterator();
   }
 
-  public void setJobStatus(org.apache.airavata.model.status.JobStatus jobStatus) {
-    this.jobStatus = jobStatus;
+  public void addToJobStatus(org.apache.airavata.model.status.JobStatus elem) {
+    if (this.jobStatuses == null) {
+      this.jobStatuses = new ArrayList<org.apache.airavata.model.status.JobStatus>();
+    }
+    this.jobStatuses.add(elem);
+  }
+
+  public List<org.apache.airavata.model.status.JobStatus> getJobStatuses() {
+    return this.jobStatuses;
+  }
+
+  public void setJobStatuses(List<org.apache.airavata.model.status.JobStatus> jobStatuses) {
+    this.jobStatuses = jobStatuses;
   }
 
   public void unsetJobStatus() {
-    this.jobStatus = null;
+    this.jobStatuses = null;
   }
 
-  /** Returns true if field jobStatus is set (has been assigned a value) and false otherwise */
+  /** Returns true if field jobStatuses is set (has been assigned a value) and false otherwise */
   public boolean isSetJobStatus() {
-    return this.jobStatus != null;
+    return this.jobStatuses != null;
   }
 
   public void setJobStatusIsSet(boolean value) {
     if (!value) {
-      this.jobStatus = null;
+      this.jobStatuses = null;
     }
   }
 
@@ -611,7 +614,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       if (value == null) {
         unsetJobStatus();
       } else {
-        setJobStatus((org.apache.airavata.model.status.JobStatus)value);
+        setJobStatuses((List<org.apache.airavata.model.status.JobStatus>) value);
       }
       break;
 
@@ -684,7 +687,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       return getCreationTime();
 
     case JOB_STATUS:
-      return getJobStatus();
+      return getJobStatuses();
 
     case COMPUTE_RESOURCE_CONSUMED:
       return getComputeResourceConsumed();
@@ -806,7 +809,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     if (this_present_jobStatus || that_present_jobStatus) {
       if (!(this_present_jobStatus && that_present_jobStatus))
         return false;
-      if (!this.jobStatus.equals(that.jobStatus))
+      if (!this.jobStatuses.equals(that.jobStatuses))
         return false;
     }
 
@@ -899,7 +902,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     boolean present_jobStatus = true && (isSetJobStatus());
     list.add(present_jobStatus);
     if (present_jobStatus)
-      list.add(jobStatus);
+      list.add(jobStatuses);
 
     boolean present_computeResourceConsumed = true && (isSetComputeResourceConsumed());
     list.add(present_computeResourceConsumed);
@@ -997,7 +1000,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       return lastComparison;
     }
     if (isSetJobStatus()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.jobStatus, other.jobStatus);
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.jobStatuses, other.jobStatuses);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -1121,11 +1124,11 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     }
     if (isSetJobStatus()) {
       if (!first) sb.append(", ");
-      sb.append("jobStatus:");
-      if (this.jobStatus == null) {
+      sb.append("jobStatuses:");
+      if (this.jobStatuses == null) {
         sb.append("null");
       } else {
-        sb.append(this.jobStatus);
+        sb.append(this.jobStatuses);
       }
       first = false;
     }
@@ -1208,9 +1211,6 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     }
 
     // check for sub-struct validity
-    if (jobStatus != null) {
-      jobStatus.validate();
-    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -1290,9 +1290,19 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
             }
             break;
           case 6: // JOB_STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.jobStatus = new org.apache.airavata.model.status.JobStatus();
-              struct.jobStatus.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.jobStatuses = new ArrayList<org.apache.airavata.model.status.JobStatus>(_list0.size);
+                org.apache.airavata.model.status.JobStatus _elem1;
+                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                {
+                  _elem1 = new org.apache.airavata.model.status.JobStatus();
+                  _elem1.read(iprot);
+                  struct.jobStatuses.add(_elem1);
+                }
+                iprot.readListEnd();
+              }
               struct.setJobStatusIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -1384,10 +1394,17 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         oprot.writeI64(struct.creationTime);
         oprot.writeFieldEnd();
       }
-      if (struct.jobStatus != null) {
+      if (struct.jobStatuses != null) {
         if (struct.isSetJobStatus()) {
           oprot.writeFieldBegin(JOB_STATUS_FIELD_DESC);
-          struct.jobStatus.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.jobStatuses.size()));
+            for (org.apache.airavata.model.status.JobStatus _iter3 : struct.jobStatuses)
+            {
+              _iter3.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -1482,7 +1499,13 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         oprot.writeI64(struct.creationTime);
       }
       if (struct.isSetJobStatus()) {
-        struct.jobStatus.write(oprot);
+        {
+          oprot.writeI32(struct.jobStatuses.size());
+          for (org.apache.airavata.model.status.JobStatus _iter4 : struct.jobStatuses)
+          {
+            _iter4.write(oprot);
+          }
+        }
       }
       if (struct.isSetComputeResourceConsumed()) {
         oprot.writeString(struct.computeResourceConsumed);
@@ -1521,8 +1544,17 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         struct.setCreationTimeIsSet(true);
       }
       if (incoming.get(1)) {
-        struct.jobStatus = new org.apache.airavata.model.status.JobStatus();
-        struct.jobStatus.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list5 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.jobStatuses = new ArrayList<org.apache.airavata.model.status.JobStatus>(_list5.size);
+          org.apache.airavata.model.status.JobStatus _elem6;
+          for (int _i7 = 0; _i7 < _list5.size; ++_i7)
+          {
+            _elem6 = new org.apache.airavata.model.status.JobStatus();
+            _elem6.read(iprot);
+            struct.jobStatuses.add(_elem6);
+          }
+        }
         struct.setJobStatusIsSet(true);
       }
       if (incoming.get(2)) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 471d7c5..00db295 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -23,32 +23,15 @@
  */
 package org.apache.airavata.model.process;
 
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-
 import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
+
 import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.*;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**
@@ -68,7 +51,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentId", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)3);
   private static final org.apache.thrift.protocol.TField LAST_UPDATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdateTime", org.apache.thrift.protocol.TType.I64, (short)4);
-  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.LIST, (short)5);
+  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatuses", org.apache.thrift.protocol.TType.LIST, (short)5);
   private static final org.apache.thrift.protocol.TField PROCESS_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("processDetail", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField APPLICATION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField APPLICATION_DEPLOYMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationDeploymentId", org.apache.thrift.protocol.TType.STRING, (short)8);
@@ -78,7 +61,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField PROCESS_RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("processResourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
   private static final org.apache.thrift.protocol.TField TASKS_FIELD_DESC = new org.apache.thrift.protocol.TField("tasks", org.apache.thrift.protocol.TType.LIST, (short)13);
   private static final org.apache.thrift.protocol.TField TASK_DAG_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDag", org.apache.thrift.protocol.TType.STRING, (short)14);
-  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.LIST, (short)15);
+  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processErrors", org.apache.thrift.protocol.TType.LIST, (short)15);
   private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)16);
   private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)17);
   private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)18);
@@ -98,7 +81,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String experimentId; // required
   private long creationTime; // optional
   private long lastUpdateTime; // optional
-  private List<org.apache.airavata.model.status.ProcessStatus> processStatus; // optional
+  private List<org.apache.airavata.model.status.ProcessStatus> processStatuses; // optional
   private String processDetail; // optional
   private String applicationInterfaceId; // optional
   private String applicationDeploymentId; // optional
@@ -108,7 +91,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel processResourceSchedule; // optional
   private List<org.apache.airavata.model.task.TaskModel> tasks; // optional
   private String taskDag; // optional
-  private List<org.apache.airavata.model.commons.ErrorModel> processError; // optional
+  private List<org.apache.airavata.model.commons.ErrorModel> processErrors; // optional
   private String gatewayExecutionId; // optional
   private boolean enableEmailNotification; // optional
   private List<String> emailAddresses; // optional
@@ -124,7 +107,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     EXPERIMENT_ID((short)2, "experimentId"),
     CREATION_TIME((short)3, "creationTime"),
     LAST_UPDATE_TIME((short)4, "lastUpdateTime"),
-    PROCESS_STATUS((short)5, "processStatus"),
+    PROCESS_STATUS((short)5, "processStatuses"),
     PROCESS_DETAIL((short)6, "processDetail"),
     APPLICATION_INTERFACE_ID((short)7, "applicationInterfaceId"),
     APPLICATION_DEPLOYMENT_ID((short)8, "applicationDeploymentId"),
@@ -134,7 +117,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     PROCESS_RESOURCE_SCHEDULE((short)12, "processResourceSchedule"),
     TASKS((short)13, "tasks"),
     TASK_DAG((short)14, "taskDag"),
-    PROCESS_ERROR((short)15, "processError"),
+    PROCESS_ERROR((short)15, "processErrors"),
     GATEWAY_EXECUTION_ID((short)16, "gatewayExecutionId"),
     ENABLE_EMAIL_NOTIFICATION((short)17, "enableEmailNotification"),
     EMAIL_ADDRESSES((short)18, "emailAddresses"),
@@ -260,7 +243,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.LAST_UPDATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastUpdateTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.PROCESS_STATUS, new org.apache.thrift.meta_data.FieldMetaData("processStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PROCESS_STATUS, new org.apache.thrift.meta_data.FieldMetaData("processStatuses", org.apache.thrift.TFieldRequirementType.OPTIONAL,
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class))));
     tmpMap.put(_Fields.PROCESS_DETAIL, new org.apache.thrift.meta_data.FieldMetaData("processDetail", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -284,7 +267,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.task.TaskModel.class))));
     tmpMap.put(_Fields.TASK_DAG, new org.apache.thrift.meta_data.FieldMetaData("taskDag", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.PROCESS_ERROR, new org.apache.thrift.meta_data.FieldMetaData("processError", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PROCESS_ERROR, new org.apache.thrift.meta_data.FieldMetaData("processErrors", org.apache.thrift.TFieldRequirementType.OPTIONAL,
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class))));
     tmpMap.put(_Fields.GATEWAY_EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayExecutionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -338,11 +321,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.creationTime = other.creationTime;
     this.lastUpdateTime = other.lastUpdateTime;
     if (other.isSetProcessStatus()) {
-      List<org.apache.airavata.model.status.ProcessStatus> __this__processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(other.processStatus.size());
-      for (org.apache.airavata.model.status.ProcessStatus other_element : other.processStatus) {
+      List<org.apache.airavata.model.status.ProcessStatus> __this__processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(other.processStatuses.size());
+      for (org.apache.airavata.model.status.ProcessStatus other_element : other.processStatuses) {
         __this__processStatus.add(new org.apache.airavata.model.status.ProcessStatus(other_element));
       }
-      this.processStatus = __this__processStatus;
+      this.processStatuses = __this__processStatus;
     }
     if (other.isSetProcessDetail()) {
       this.processDetail = other.processDetail;
@@ -384,11 +367,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       this.taskDag = other.taskDag;
     }
     if (other.isSetProcessError()) {
-      List<org.apache.airavata.model.commons.ErrorModel> __this__processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.processError.size());
-      for (org.apache.airavata.model.commons.ErrorModel other_element : other.processError) {
+      List<org.apache.airavata.model.commons.ErrorModel> __this__processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.processErrors.size());
+      for (org.apache.airavata.model.commons.ErrorModel other_element : other.processErrors) {
         __this__processError.add(new org.apache.airavata.model.commons.ErrorModel(other_element));
       }
-      this.processError = __this__processError;
+      this.processErrors = __this__processError;
     }
     if (other.isSetGatewayExecutionId()) {
       this.gatewayExecutionId = other.gatewayExecutionId;
@@ -426,7 +409,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.creationTime = 0;
     setLastUpdateTimeIsSet(false);
     this.lastUpdateTime = 0;
-    this.processStatus = null;
+    this.processStatuses = null;
     this.processDetail = null;
     this.applicationInterfaceId = null;
     this.applicationDeploymentId = null;
@@ -436,7 +419,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.processResourceSchedule = null;
     this.tasks = null;
     this.taskDag = null;
-    this.processError = null;
+    this.processErrors = null;
     this.gatewayExecutionId = null;
     setEnableEmailNotificationIsSet(false);
     this.enableEmailNotification = false;
@@ -540,40 +523,40 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   }
 
   public int getProcessStatusSize() {
-    return (this.processStatus == null) ? 0 : this.processStatus.size();
+    return (this.processStatuses == null) ? 0 : this.processStatuses.size();
   }
 
   public java.util.Iterator<org.apache.airavata.model.status.ProcessStatus> getProcessStatusIterator() {
-    return (this.processStatus == null) ? null : this.processStatus.iterator();
+    return (this.processStatuses == null) ? null : this.processStatuses.iterator();
   }
 
   public void addToProcessStatus(org.apache.airavata.model.status.ProcessStatus elem) {
-    if (this.processStatus == null) {
-      this.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>();
+    if (this.processStatuses == null) {
+      this.processStatuses = new ArrayList<org.apache.airavata.model.status.ProcessStatus>();
     }
-    this.processStatus.add(elem);
+    this.processStatuses.add(elem);
   }
 
-  public List<org.apache.airavata.model.status.ProcessStatus> getProcessStatus() {
-    return this.processStatus;
+  public List<org.apache.airavata.model.status.ProcessStatus> getProcessStatuses() {
+    return this.processStatuses;
   }
 
-  public void setProcessStatus(List<org.apache.airavata.model.status.ProcessStatus> processStatus) {
-    this.processStatus = processStatus;
+  public void setProcessStatuses(List<org.apache.airavata.model.status.ProcessStatus> processStatuses) {
+    this.processStatuses = processStatuses;
   }
 
   public void unsetProcessStatus() {
-    this.processStatus = null;
+    this.processStatuses = null;
   }
 
-  /** Returns true if field processStatus is set (has been assigned a value) and false otherwise */
+  /** Returns true if field processStatuses is set (has been assigned a value) and false otherwise */
   public boolean isSetProcessStatus() {
-    return this.processStatus != null;
+    return this.processStatuses != null;
   }
 
   public void setProcessStatusIsSet(boolean value) {
     if (!value) {
-      this.processStatus = null;
+      this.processStatuses = null;
     }
   }
 
@@ -830,40 +813,40 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   }
 
   public int getProcessErrorSize() {
-    return (this.processError == null) ? 0 : this.processError.size();
+    return (this.processErrors == null) ? 0 : this.processErrors.size();
   }
 
   public java.util.Iterator<org.apache.airavata.model.commons.ErrorModel> getProcessErrorIterator() {
-    return (this.processError == null) ? null : this.processError.iterator();
+    return (this.processErrors == null) ? null : this.processErrors.iterator();
   }
 
   public void addToProcessError(org.apache.airavata.model.commons.ErrorModel elem) {
-    if (this.processError == null) {
-      this.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>();
+    if (this.processErrors == null) {
+      this.processErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>();
     }
-    this.processError.add(elem);
+    this.processErrors.add(elem);
   }
 
-  public List<org.apache.airavata.model.commons.ErrorModel> getProcessError() {
-    return this.processError;
+  public List<org.apache.airavata.model.commons.ErrorModel> getProcessErrors() {
+    return this.processErrors;
   }
 
-  public void setProcessError(List<org.apache.airavata.model.commons.ErrorModel> processError) {
-    this.processError = processError;
+  public void setProcessErrors(List<org.apache.airavata.model.commons.ErrorModel> processErrors) {
+    this.processErrors = processErrors;
   }
 
   public void unsetProcessError() {
-    this.processError = null;
+    this.processErrors = null;
   }
 
-  /** Returns true if field processError is set (has been assigned a value) and false otherwise */
+  /** Returns true if field processErrors is set (has been assigned a value) and false otherwise */
   public boolean isSetProcessError() {
-    return this.processError != null;
+    return this.processErrors != null;
   }
 
   public void setProcessErrorIsSet(boolean value) {
     if (!value) {
-      this.processError = null;
+      this.processErrors = null;
     }
   }
 
@@ -1102,7 +1085,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessStatus();
       } else {
-        setProcessStatus((List<org.apache.airavata.model.status.ProcessStatus>)value);
+        setProcessStatuses((List<org.apache.airavata.model.status.ProcessStatus>) value);
       }
       break;
 
@@ -1182,7 +1165,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessError();
       } else {
-        setProcessError((List<org.apache.airavata.model.commons.ErrorModel>)value);
+        setProcessErrors((List<org.apache.airavata.model.commons.ErrorModel>) value);
       }
       break;
 
@@ -1268,7 +1251,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return getLastUpdateTime();
 
     case PROCESS_STATUS:
-      return getProcessStatus();
+      return getProcessStatuses();
 
     case PROCESS_DETAIL:
       return getProcessDetail();
@@ -1298,7 +1281,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return getTaskDag();
 
     case PROCESS_ERROR:
-      return getProcessError();
+      return getProcessErrors();
 
     case GATEWAY_EXECUTION_ID:
       return getGatewayExecutionId();
@@ -1439,7 +1422,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (this_present_processStatus || that_present_processStatus) {
       if (!(this_present_processStatus && that_present_processStatus))
         return false;
-      if (!this.processStatus.equals(that.processStatus))
+      if (!this.processStatuses.equals(that.processStatuses))
         return false;
     }
 
@@ -1529,7 +1512,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (this_present_processError || that_present_processError) {
       if (!(this_present_processError && that_present_processError))
         return false;
-      if (!this.processError.equals(that.processError))
+      if (!this.processErrors.equals(that.processErrors))
         return false;
     }
 
@@ -1635,7 +1618,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     boolean present_processStatus = true && (isSetProcessStatus());
     list.add(present_processStatus);
     if (present_processStatus)
-      list.add(processStatus);
+      list.add(processStatuses);
 
     boolean present_processDetail = true && (isSetProcessDetail());
     list.add(present_processDetail);
@@ -1685,7 +1668,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     boolean present_processError = true && (isSetProcessError());
     list.add(present_processError);
     if (present_processError)
-      list.add(processError);
+      list.add(processErrors);
 
     boolean present_gatewayExecutionId = true && (isSetGatewayExecutionId());
     list.add(present_gatewayExecutionId);
@@ -1783,7 +1766,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return lastComparison;
     }
     if (isSetProcessStatus()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processStatus, other.processStatus);
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processStatuses, other.processStatuses);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -1883,7 +1866,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return lastComparison;
     }
     if (isSetProcessError()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processError, other.processError);
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processErrors, other.processErrors);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -2017,11 +2000,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
     if (isSetProcessStatus()) {
       if (!first) sb.append(", ");
-      sb.append("processStatus:");
-      if (this.processStatus == null) {
+      sb.append("processStatuses:");
+      if (this.processStatuses == null) {
         sb.append("null");
       } else {
-        sb.append(this.processStatus);
+        sb.append(this.processStatuses);
       }
       first = false;
     }
@@ -2117,11 +2100,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
     if (isSetProcessError()) {
       if (!first) sb.append(", ");
-      sb.append("processError:");
-      if (this.processError == null) {
+      sb.append("processErrors:");
+      if (this.processErrors == null) {
         sb.append("null");
       } else {
-        sb.append(this.processError);
+        sb.append(this.processErrors);
       }
       first = false;
     }
@@ -2289,13 +2272,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list0.size);
+                struct.processStatuses = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list0.size);
                 org.apache.airavata.model.status.ProcessStatus _elem1;
                 for (int _i2 = 0; _i2 < _list0.size; ++_i2)
                 {
                   _elem1 = new org.apache.airavata.model.status.ProcessStatus();
                   _elem1.read(iprot);
-                  struct.processStatus.add(_elem1);
+                  struct.processStatuses.add(_elem1);
                 }
                 iprot.readListEnd();
               }
@@ -2414,13 +2397,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
-                struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list12.size);
+                struct.processErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list12.size);
                 org.apache.airavata.model.commons.ErrorModel _elem13;
                 for (int _i14 = 0; _i14 < _list12.size; ++_i14)
                 {
                   _elem13 = new org.apache.airavata.model.commons.ErrorModel();
                   _elem13.read(iprot);
-                  struct.processError.add(_elem13);
+                  struct.processErrors.add(_elem13);
                 }
                 iprot.readListEnd();
               }
@@ -2536,12 +2519,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeI64(struct.lastUpdateTime);
         oprot.writeFieldEnd();
       }
-      if (struct.processStatus != null) {
+      if (struct.processStatuses != null) {
         if (struct.isSetProcessStatus()) {
           oprot.writeFieldBegin(PROCESS_STATUS_FIELD_DESC);
           {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processStatus.size()));
-            for (org.apache.airavata.model.status.ProcessStatus _iter18 : struct.processStatus)
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processStatuses.size()));
+            for (org.apache.airavata.model.status.ProcessStatus _iter18 : struct.processStatuses)
             {
               _iter18.write(oprot);
             }
@@ -2634,12 +2617,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldEnd();
         }
       }
-      if (struct.processError != null) {
+      if (struct.processErrors != null) {
         if (struct.isSetProcessError()) {
           oprot.writeFieldBegin(PROCESS_ERROR_FIELD_DESC);
           {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processError.size()));
-            for (org.apache.airavata.model.commons.ErrorModel _iter22 : struct.processError)
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processErrors.size()));
+            for (org.apache.airavata.model.commons.ErrorModel _iter22 : struct.processErrors)
             {
               _iter22.write(oprot);
             }
@@ -2799,8 +2782,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (struct.isSetProcessStatus()) {
         {
-          oprot.writeI32(struct.processStatus.size());
-          for (org.apache.airavata.model.status.ProcessStatus _iter24 : struct.processStatus)
+          oprot.writeI32(struct.processStatuses.size());
+          for (org.apache.airavata.model.status.ProcessStatus _iter24 : struct.processStatuses)
           {
             _iter24.write(oprot);
           }
@@ -2853,8 +2836,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (struct.isSetProcessError()) {
         {
-          oprot.writeI32(struct.processError.size());
-          for (org.apache.airavata.model.commons.ErrorModel _iter28 : struct.processError)
+          oprot.writeI32(struct.processErrors.size());
+          for (org.apache.airavata.model.commons.ErrorModel _iter28 : struct.processErrors)
           {
             _iter28.write(oprot);
           }
@@ -2911,13 +2894,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (incoming.get(2)) {
         {
           org.apache.thrift.protocol.TList _list30 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list30.size);
+          struct.processStatuses = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list30.size);
           org.apache.airavata.model.status.ProcessStatus _elem31;
           for (int _i32 = 0; _i32 < _list30.size; ++_i32)
           {
             _elem31 = new org.apache.airavata.model.status.ProcessStatus();
             _elem31.read(iprot);
-            struct.processStatus.add(_elem31);
+            struct.processStatuses.add(_elem31);
           }
         }
         struct.setProcessStatusIsSet(true);
@@ -2992,13 +2975,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (incoming.get(12)) {
         {
           org.apache.thrift.protocol.TList _list42 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list42.size);
+          struct.processErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list42.size);
           org.apache.airavata.model.commons.ErrorModel _elem43;
           for (int _i44 = 0; _i44 < _list42.size; ++_i44)
           {
             _elem43 = new org.apache.airavata.model.commons.ErrorModel();
             _elem43.read(iprot);
-            struct.processError.add(_elem43);
+            struct.processErrors.add(_elem43);
           }
         }
         struct.setProcessErrorIsSet(true);


[44/48] airavata git commit: merge hotfix

Posted by la...@apache.org.
merge hotfix


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 875fc27d49ebfcd342f442dd75ca885b40b0a7ec
Parents: 9c02fe0 96e31a9
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Sep 12 16:49:10 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Sep 12 16:49:10 2016 -0400

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      | 46 ++++++++++++++++++--
 .../airavata/gfac/server/GfacServerHandler.java |  1 +
 2 files changed, 43 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/875fc27d/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/airavata/blob/875fc27d/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
----------------------------------------------------------------------


[09/48] airavata git commit: making experiment status a list in ExperimentModel

Posted by la...@apache.org.
making experiment status a list in ExperimentModel


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 415e9b701599b44999ca35306a53052012e44e63
Parents: 3536751
Author: scnakandala <su...@gmail.com>
Authored: Thu Aug 25 15:28:32 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Aug 25 15:28:32 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  43 +-
 .../lib/airavata/experiment_model_types.cpp     | 406 ++++++++++---------
 .../lib/airavata/experiment_model_types.h       |   4 +-
 .../lib/Airavata/Model/Experiment/Types.php     | 205 +++++-----
 .../apache/airavata/model/experiment/ttypes.py  | 144 +++----
 .../client/samples/CreateLaunchBES.java         |  19 +-
 .../client/samples/CreateLaunchExperiment.java  |  14 +-
 .../model/experiment/ExperimentModel.java       | 219 ++++++----
 .../model/experiment/ExperimentStatistics.java  | 216 +++++-----
 .../impl/ExperimentStatusValidator.java         |   5 +-
 .../server/OrchestratorServerHandler.java       |  32 +-
 modules/registry/registry-core/pom.xml          |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   2 +-
 .../core/experiment/catalog/model/Gateway.java  |   2 +-
 .../utils/ThriftDataModelConversion.java        |   4 +-
 .../service/handler/RegistryServerHandler.java  |   2 +-
 .../experiment_model.thrift                     |   2 +-
 17 files changed, 685 insertions(+), 636 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index b21be18..83eb771 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -48,14 +48,7 @@ import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
@@ -64,27 +57,11 @@ import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.airavata_commonsConstants;
 import org.apache.airavata.model.data.movement.DMType;
-import org.apache.airavata.model.data.movement.DataMovementInterface;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
-import org.apache.airavata.model.data.movement.GridFTPDataMovement;
-import org.apache.airavata.model.data.movement.LOCALDataMovement;
-import org.apache.airavata.model.data.movement.SCPDataMovement;
-import org.apache.airavata.model.data.movement.UnicoreDataMovement;
+import org.apache.airavata.model.data.movement.*;
 import org.apache.airavata.model.data.replica.DataProductModel;
 import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataErrorType;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.AuthorizationException;
-import org.apache.airavata.model.error.ExperimentNotFoundException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.error.ProjectNotFoundException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentSearchFields;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
-import org.apache.airavata.model.experiment.ProjectSearchFields;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
+import org.apache.airavata.model.error.*;
+import org.apache.airavata.model.experiment.*;
 import org.apache.airavata.model.group.GroupModel;
 import org.apache.airavata.model.group.ResourcePermissionType;
 import org.apache.airavata.model.group.ResourceType;
@@ -107,11 +84,7 @@ import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
 
 public class AiravataServerHandler implements Airavata.Iface {
     private static final Logger logger = LoggerFactory.getLogger(AiravataServerHandler.class);
@@ -934,7 +907,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 }
             }
 
-            if(!(experimentModel.getExperimentStatus().getState() == ExperimentState.CREATED)){
+            if(!(experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED)){
                 logger.error("Error while deleting the experiment");
                 throw new RegistryServiceException("Experiment is not in CREATED state. Hence cannot deleted. ID:"+ experimentId);
             }
@@ -1454,9 +1427,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 logger.error(airavataExperimentId, "Error while cancelling experiment {}, experiment doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
             }
-            switch (existingExperiment.getExperimentStatus().getState()) {
+            switch (existingExperiment.getExperimentStatus().get(0).getState()) {
                 case COMPLETED: case CANCELED: case FAILED: case CANCELING:
-                    logger.warn("Can't terminate already {} experiment", existingExperiment.getExperimentStatus().getState().name());
+                    logger.warn("Can't terminate already {} experiment", existingExperiment.getExperimentStatus().get(0).getState().name());
                     break;
                 case CREATED:
                     logger.warn("Experiment termination is only allowed for launched experiments.");

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
index 0bf0ac2..1980b28 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
@@ -415,7 +415,7 @@ void ExperimentModel::__set_experimentOutputs(const std::vector< ::apache::airav
 __isset.experimentOutputs = true;
 }
 
-void ExperimentModel::__set_experimentStatus(const  ::apache::airavata::model::status::ExperimentStatus& val) {
+void ExperimentModel::__set_experimentStatus(const std::vector< ::apache::airavata::model::status::ExperimentStatus> & val) {
   this->experimentStatus = val;
 __isset.experimentStatus = true;
 }
@@ -624,45 +624,57 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 17:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->experimentStatus.read(iprot);
-          this->__isset.experimentStatus = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->errors.clear();
+            this->experimentStatus.clear();
             uint32_t _size18;
             ::apache::thrift::protocol::TType _etype21;
             xfer += iprot->readListBegin(_etype21, _size18);
-            this->errors.resize(_size18);
+            this->experimentStatus.resize(_size18);
             uint32_t _i22;
             for (_i22 = 0; _i22 < _size18; ++_i22)
             {
-              xfer += this->errors[_i22].read(iprot);
+              xfer += this->experimentStatus[_i22].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.errors = true;
+          this->__isset.experimentStatus = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 19:
+      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->processes.clear();
+            this->errors.clear();
             uint32_t _size23;
             ::apache::thrift::protocol::TType _etype26;
             xfer += iprot->readListBegin(_etype26, _size23);
-            this->processes.resize(_size23);
+            this->errors.resize(_size23);
             uint32_t _i27;
             for (_i27 = 0; _i27 < _size23; ++_i27)
             {
-              xfer += this->processes[_i27].read(iprot);
+              xfer += this->errors[_i27].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.errors = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 19:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processes.clear();
+            uint32_t _size28;
+            ::apache::thrift::protocol::TType _etype31;
+            xfer += iprot->readListBegin(_etype31, _size28);
+            this->processes.resize(_size28);
+            uint32_t _i32;
+            for (_i32 = 0; _i32 < _size28; ++_i32)
+            {
+              xfer += this->processes[_i32].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -758,10 +770,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("emailAddresses", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->emailAddresses.size()));
-      std::vector<std::string> ::const_iterator _iter28;
-      for (_iter28 = this->emailAddresses.begin(); _iter28 != this->emailAddresses.end(); ++_iter28)
+      std::vector<std::string> ::const_iterator _iter33;
+      for (_iter33 = this->emailAddresses.begin(); _iter33 != this->emailAddresses.end(); ++_iter33)
       {
-        xfer += oprot->writeString((*_iter28));
+        xfer += oprot->writeString((*_iter33));
       }
       xfer += oprot->writeListEnd();
     }
@@ -776,10 +788,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("experimentInputs", ::apache::thrift::protocol::T_LIST, 15);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentInputs.size()));
-      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter29;
-      for (_iter29 = this->experimentInputs.begin(); _iter29 != this->experimentInputs.end(); ++_iter29)
+      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter34;
+      for (_iter34 = this->experimentInputs.begin(); _iter34 != this->experimentInputs.end(); ++_iter34)
       {
-        xfer += (*_iter29).write(oprot);
+        xfer += (*_iter34).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -789,28 +801,36 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("experimentOutputs", ::apache::thrift::protocol::T_LIST, 16);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentOutputs.size()));
-      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter30;
-      for (_iter30 = this->experimentOutputs.begin(); _iter30 != this->experimentOutputs.end(); ++_iter30)
+      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter35;
+      for (_iter35 = this->experimentOutputs.begin(); _iter35 != this->experimentOutputs.end(); ++_iter35)
       {
-        xfer += (*_iter30).write(oprot);
+        xfer += (*_iter35).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.experimentStatus) {
-    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_STRUCT, 17);
-    xfer += this->experimentStatus.write(oprot);
+    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_LIST, 17);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentStatus.size()));
+      std::vector< ::apache::airavata::model::status::ExperimentStatus> ::const_iterator _iter36;
+      for (_iter36 = this->experimentStatus.begin(); _iter36 != this->experimentStatus.end(); ++_iter36)
+      {
+        xfer += (*_iter36).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.errors) {
     xfer += oprot->writeFieldBegin("errors", ::apache::thrift::protocol::T_LIST, 18);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->errors.size()));
-      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter31;
-      for (_iter31 = this->errors.begin(); _iter31 != this->errors.end(); ++_iter31)
+      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter37;
+      for (_iter37 = this->errors.begin(); _iter37 != this->errors.end(); ++_iter37)
       {
-        xfer += (*_iter31).write(oprot);
+        xfer += (*_iter37).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -820,10 +840,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("processes", ::apache::thrift::protocol::T_LIST, 19);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processes.size()));
-      std::vector< ::apache::airavata::model::process::ProcessModel> ::const_iterator _iter32;
-      for (_iter32 = this->processes.begin(); _iter32 != this->processes.end(); ++_iter32)
+      std::vector< ::apache::airavata::model::process::ProcessModel> ::const_iterator _iter38;
+      for (_iter38 = this->processes.begin(); _iter38 != this->processes.end(); ++_iter38)
       {
-        xfer += (*_iter32).write(oprot);
+        xfer += (*_iter38).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -858,49 +878,49 @@ void swap(ExperimentModel &a, ExperimentModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentModel::ExperimentModel(const ExperimentModel& other33) {
-  experimentId = other33.experimentId;
-  projectId = other33.projectId;
-  gatewayId = other33.gatewayId;
-  experimentType = other33.experimentType;
-  userName = other33.userName;
-  experimentName = other33.experimentName;
-  creationTime = other33.creationTime;
-  description = other33.description;
-  executionId = other33.executionId;
-  gatewayExecutionId = other33.gatewayExecutionId;
-  gatewayInstanceId = other33.gatewayInstanceId;
-  enableEmailNotification = other33.enableEmailNotification;
-  emailAddresses = other33.emailAddresses;
-  userConfigurationData = other33.userConfigurationData;
-  experimentInputs = other33.experimentInputs;
-  experimentOutputs = other33.experimentOutputs;
-  experimentStatus = other33.experimentStatus;
-  errors = other33.errors;
-  processes = other33.processes;
-  __isset = other33.__isset;
-}
-ExperimentModel& ExperimentModel::operator=(const ExperimentModel& other34) {
-  experimentId = other34.experimentId;
-  projectId = other34.projectId;
-  gatewayId = other34.gatewayId;
-  experimentType = other34.experimentType;
-  userName = other34.userName;
-  experimentName = other34.experimentName;
-  creationTime = other34.creationTime;
-  description = other34.description;
-  executionId = other34.executionId;
-  gatewayExecutionId = other34.gatewayExecutionId;
-  gatewayInstanceId = other34.gatewayInstanceId;
-  enableEmailNotification = other34.enableEmailNotification;
-  emailAddresses = other34.emailAddresses;
-  userConfigurationData = other34.userConfigurationData;
-  experimentInputs = other34.experimentInputs;
-  experimentOutputs = other34.experimentOutputs;
-  experimentStatus = other34.experimentStatus;
-  errors = other34.errors;
-  processes = other34.processes;
-  __isset = other34.__isset;
+ExperimentModel::ExperimentModel(const ExperimentModel& other39) {
+  experimentId = other39.experimentId;
+  projectId = other39.projectId;
+  gatewayId = other39.gatewayId;
+  experimentType = other39.experimentType;
+  userName = other39.userName;
+  experimentName = other39.experimentName;
+  creationTime = other39.creationTime;
+  description = other39.description;
+  executionId = other39.executionId;
+  gatewayExecutionId = other39.gatewayExecutionId;
+  gatewayInstanceId = other39.gatewayInstanceId;
+  enableEmailNotification = other39.enableEmailNotification;
+  emailAddresses = other39.emailAddresses;
+  userConfigurationData = other39.userConfigurationData;
+  experimentInputs = other39.experimentInputs;
+  experimentOutputs = other39.experimentOutputs;
+  experimentStatus = other39.experimentStatus;
+  errors = other39.errors;
+  processes = other39.processes;
+  __isset = other39.__isset;
+}
+ExperimentModel& ExperimentModel::operator=(const ExperimentModel& other40) {
+  experimentId = other40.experimentId;
+  projectId = other40.projectId;
+  gatewayId = other40.gatewayId;
+  experimentType = other40.experimentType;
+  userName = other40.userName;
+  experimentName = other40.experimentName;
+  creationTime = other40.creationTime;
+  description = other40.description;
+  executionId = other40.executionId;
+  gatewayExecutionId = other40.gatewayExecutionId;
+  gatewayInstanceId = other40.gatewayInstanceId;
+  enableEmailNotification = other40.enableEmailNotification;
+  emailAddresses = other40.emailAddresses;
+  userConfigurationData = other40.userConfigurationData;
+  experimentInputs = other40.experimentInputs;
+  experimentOutputs = other40.experimentOutputs;
+  experimentStatus = other40.experimentStatus;
+  errors = other40.errors;
+  processes = other40.processes;
+  __isset = other40.__isset;
   return *this;
 }
 void ExperimentModel::printTo(std::ostream& out) const {
@@ -1195,33 +1215,33 @@ void swap(ExperimentSummaryModel &a, ExperimentSummaryModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentSummaryModel::ExperimentSummaryModel(const ExperimentSummaryModel& other35) {
-  experimentId = other35.experimentId;
-  projectId = other35.projectId;
-  gatewayId = other35.gatewayId;
-  creationTime = other35.creationTime;
-  userName = other35.userName;
-  name = other35.name;
-  description = other35.description;
-  executionId = other35.executionId;
-  resourceHostId = other35.resourceHostId;
-  experimentStatus = other35.experimentStatus;
-  statusUpdateTime = other35.statusUpdateTime;
-  __isset = other35.__isset;
-}
-ExperimentSummaryModel& ExperimentSummaryModel::operator=(const ExperimentSummaryModel& other36) {
-  experimentId = other36.experimentId;
-  projectId = other36.projectId;
-  gatewayId = other36.gatewayId;
-  creationTime = other36.creationTime;
-  userName = other36.userName;
-  name = other36.name;
-  description = other36.description;
-  executionId = other36.executionId;
-  resourceHostId = other36.resourceHostId;
-  experimentStatus = other36.experimentStatus;
-  statusUpdateTime = other36.statusUpdateTime;
-  __isset = other36.__isset;
+ExperimentSummaryModel::ExperimentSummaryModel(const ExperimentSummaryModel& other41) {
+  experimentId = other41.experimentId;
+  projectId = other41.projectId;
+  gatewayId = other41.gatewayId;
+  creationTime = other41.creationTime;
+  userName = other41.userName;
+  name = other41.name;
+  description = other41.description;
+  executionId = other41.executionId;
+  resourceHostId = other41.resourceHostId;
+  experimentStatus = other41.experimentStatus;
+  statusUpdateTime = other41.statusUpdateTime;
+  __isset = other41.__isset;
+}
+ExperimentSummaryModel& ExperimentSummaryModel::operator=(const ExperimentSummaryModel& other42) {
+  experimentId = other42.experimentId;
+  projectId = other42.projectId;
+  gatewayId = other42.gatewayId;
+  creationTime = other42.creationTime;
+  userName = other42.userName;
+  name = other42.name;
+  description = other42.description;
+  executionId = other42.executionId;
+  resourceHostId = other42.resourceHostId;
+  experimentStatus = other42.experimentStatus;
+  statusUpdateTime = other42.statusUpdateTime;
+  __isset = other42.__isset;
   return *this;
 }
 void ExperimentSummaryModel::printTo(std::ostream& out) const {
@@ -1379,14 +1399,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->allExperiments.clear();
-            uint32_t _size37;
-            ::apache::thrift::protocol::TType _etype40;
-            xfer += iprot->readListBegin(_etype40, _size37);
-            this->allExperiments.resize(_size37);
-            uint32_t _i41;
-            for (_i41 = 0; _i41 < _size37; ++_i41)
+            uint32_t _size43;
+            ::apache::thrift::protocol::TType _etype46;
+            xfer += iprot->readListBegin(_etype46, _size43);
+            this->allExperiments.resize(_size43);
+            uint32_t _i47;
+            for (_i47 = 0; _i47 < _size43; ++_i47)
             {
-              xfer += this->allExperiments[_i41].read(iprot);
+              xfer += this->allExperiments[_i47].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1399,14 +1419,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->completedExperiments.clear();
-            uint32_t _size42;
-            ::apache::thrift::protocol::TType _etype45;
-            xfer += iprot->readListBegin(_etype45, _size42);
-            this->completedExperiments.resize(_size42);
-            uint32_t _i46;
-            for (_i46 = 0; _i46 < _size42; ++_i46)
+            uint32_t _size48;
+            ::apache::thrift::protocol::TType _etype51;
+            xfer += iprot->readListBegin(_etype51, _size48);
+            this->completedExperiments.resize(_size48);
+            uint32_t _i52;
+            for (_i52 = 0; _i52 < _size48; ++_i52)
             {
-              xfer += this->completedExperiments[_i46].read(iprot);
+              xfer += this->completedExperiments[_i52].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1419,14 +1439,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->failedExperiments.clear();
-            uint32_t _size47;
-            ::apache::thrift::protocol::TType _etype50;
-            xfer += iprot->readListBegin(_etype50, _size47);
-            this->failedExperiments.resize(_size47);
-            uint32_t _i51;
-            for (_i51 = 0; _i51 < _size47; ++_i51)
+            uint32_t _size53;
+            ::apache::thrift::protocol::TType _etype56;
+            xfer += iprot->readListBegin(_etype56, _size53);
+            this->failedExperiments.resize(_size53);
+            uint32_t _i57;
+            for (_i57 = 0; _i57 < _size53; ++_i57)
             {
-              xfer += this->failedExperiments[_i51].read(iprot);
+              xfer += this->failedExperiments[_i57].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1439,14 +1459,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->cancelledExperiments.clear();
-            uint32_t _size52;
-            ::apache::thrift::protocol::TType _etype55;
-            xfer += iprot->readListBegin(_etype55, _size52);
-            this->cancelledExperiments.resize(_size52);
-            uint32_t _i56;
-            for (_i56 = 0; _i56 < _size52; ++_i56)
+            uint32_t _size58;
+            ::apache::thrift::protocol::TType _etype61;
+            xfer += iprot->readListBegin(_etype61, _size58);
+            this->cancelledExperiments.resize(_size58);
+            uint32_t _i62;
+            for (_i62 = 0; _i62 < _size58; ++_i62)
             {
-              xfer += this->cancelledExperiments[_i56].read(iprot);
+              xfer += this->cancelledExperiments[_i62].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1459,14 +1479,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->createdExperiments.clear();
-            uint32_t _size57;
-            ::apache::thrift::protocol::TType _etype60;
-            xfer += iprot->readListBegin(_etype60, _size57);
-            this->createdExperiments.resize(_size57);
-            uint32_t _i61;
-            for (_i61 = 0; _i61 < _size57; ++_i61)
+            uint32_t _size63;
+            ::apache::thrift::protocol::TType _etype66;
+            xfer += iprot->readListBegin(_etype66, _size63);
+            this->createdExperiments.resize(_size63);
+            uint32_t _i67;
+            for (_i67 = 0; _i67 < _size63; ++_i67)
             {
-              xfer += this->createdExperiments[_i61].read(iprot);
+              xfer += this->createdExperiments[_i67].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1479,14 +1499,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->runningExperiments.clear();
-            uint32_t _size62;
-            ::apache::thrift::protocol::TType _etype65;
-            xfer += iprot->readListBegin(_etype65, _size62);
-            this->runningExperiments.resize(_size62);
-            uint32_t _i66;
-            for (_i66 = 0; _i66 < _size62; ++_i66)
+            uint32_t _size68;
+            ::apache::thrift::protocol::TType _etype71;
+            xfer += iprot->readListBegin(_etype71, _size68);
+            this->runningExperiments.resize(_size68);
+            uint32_t _i72;
+            for (_i72 = 0; _i72 < _size68; ++_i72)
             {
-              xfer += this->runningExperiments[_i66].read(iprot);
+              xfer += this->runningExperiments[_i72].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1552,10 +1572,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
   xfer += oprot->writeFieldBegin("allExperiments", ::apache::thrift::protocol::T_LIST, 7);
   {
     xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->allExperiments.size()));
-    std::vector<ExperimentSummaryModel> ::const_iterator _iter67;
-    for (_iter67 = this->allExperiments.begin(); _iter67 != this->allExperiments.end(); ++_iter67)
+    std::vector<ExperimentSummaryModel> ::const_iterator _iter73;
+    for (_iter73 = this->allExperiments.begin(); _iter73 != this->allExperiments.end(); ++_iter73)
     {
-      xfer += (*_iter67).write(oprot);
+      xfer += (*_iter73).write(oprot);
     }
     xfer += oprot->writeListEnd();
   }
@@ -1565,10 +1585,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("completedExperiments", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->completedExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter68;
-      for (_iter68 = this->completedExperiments.begin(); _iter68 != this->completedExperiments.end(); ++_iter68)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter74;
+      for (_iter74 = this->completedExperiments.begin(); _iter74 != this->completedExperiments.end(); ++_iter74)
       {
-        xfer += (*_iter68).write(oprot);
+        xfer += (*_iter74).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1578,10 +1598,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("failedExperiments", ::apache::thrift::protocol::T_LIST, 9);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->failedExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter69;
-      for (_iter69 = this->failedExperiments.begin(); _iter69 != this->failedExperiments.end(); ++_iter69)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter75;
+      for (_iter75 = this->failedExperiments.begin(); _iter75 != this->failedExperiments.end(); ++_iter75)
       {
-        xfer += (*_iter69).write(oprot);
+        xfer += (*_iter75).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1591,10 +1611,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("cancelledExperiments", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->cancelledExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter70;
-      for (_iter70 = this->cancelledExperiments.begin(); _iter70 != this->cancelledExperiments.end(); ++_iter70)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter76;
+      for (_iter76 = this->cancelledExperiments.begin(); _iter76 != this->cancelledExperiments.end(); ++_iter76)
       {
-        xfer += (*_iter70).write(oprot);
+        xfer += (*_iter76).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1604,10 +1624,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("createdExperiments", ::apache::thrift::protocol::T_LIST, 11);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->createdExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter71;
-      for (_iter71 = this->createdExperiments.begin(); _iter71 != this->createdExperiments.end(); ++_iter71)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter77;
+      for (_iter77 = this->createdExperiments.begin(); _iter77 != this->createdExperiments.end(); ++_iter77)
       {
-        xfer += (*_iter71).write(oprot);
+        xfer += (*_iter77).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1617,10 +1637,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("runningExperiments", ::apache::thrift::protocol::T_LIST, 12);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->runningExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter72;
-      for (_iter72 = this->runningExperiments.begin(); _iter72 != this->runningExperiments.end(); ++_iter72)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter78;
+      for (_iter78 = this->runningExperiments.begin(); _iter78 != this->runningExperiments.end(); ++_iter78)
       {
-        xfer += (*_iter72).write(oprot);
+        xfer += (*_iter78).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1648,35 +1668,35 @@ void swap(ExperimentStatistics &a, ExperimentStatistics &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentStatistics::ExperimentStatistics(const ExperimentStatistics& other73) {
-  allExperimentCount = other73.allExperimentCount;
-  completedExperimentCount = other73.completedExperimentCount;
-  cancelledExperimentCount = other73.cancelledExperimentCount;
-  failedExperimentCount = other73.failedExperimentCount;
-  createdExperimentCount = other73.createdExperimentCount;
-  runningExperimentCount = other73.runningExperimentCount;
-  allExperiments = other73.allExperiments;
-  completedExperiments = other73.completedExperiments;
-  failedExperiments = other73.failedExperiments;
-  cancelledExperiments = other73.cancelledExperiments;
-  createdExperiments = other73.createdExperiments;
-  runningExperiments = other73.runningExperiments;
-  __isset = other73.__isset;
-}
-ExperimentStatistics& ExperimentStatistics::operator=(const ExperimentStatistics& other74) {
-  allExperimentCount = other74.allExperimentCount;
-  completedExperimentCount = other74.completedExperimentCount;
-  cancelledExperimentCount = other74.cancelledExperimentCount;
-  failedExperimentCount = other74.failedExperimentCount;
-  createdExperimentCount = other74.createdExperimentCount;
-  runningExperimentCount = other74.runningExperimentCount;
-  allExperiments = other74.allExperiments;
-  completedExperiments = other74.completedExperiments;
-  failedExperiments = other74.failedExperiments;
-  cancelledExperiments = other74.cancelledExperiments;
-  createdExperiments = other74.createdExperiments;
-  runningExperiments = other74.runningExperiments;
-  __isset = other74.__isset;
+ExperimentStatistics::ExperimentStatistics(const ExperimentStatistics& other79) {
+  allExperimentCount = other79.allExperimentCount;
+  completedExperimentCount = other79.completedExperimentCount;
+  cancelledExperimentCount = other79.cancelledExperimentCount;
+  failedExperimentCount = other79.failedExperimentCount;
+  createdExperimentCount = other79.createdExperimentCount;
+  runningExperimentCount = other79.runningExperimentCount;
+  allExperiments = other79.allExperiments;
+  completedExperiments = other79.completedExperiments;
+  failedExperiments = other79.failedExperiments;
+  cancelledExperiments = other79.cancelledExperiments;
+  createdExperiments = other79.createdExperiments;
+  runningExperiments = other79.runningExperiments;
+  __isset = other79.__isset;
+}
+ExperimentStatistics& ExperimentStatistics::operator=(const ExperimentStatistics& other80) {
+  allExperimentCount = other80.allExperimentCount;
+  completedExperimentCount = other80.completedExperimentCount;
+  cancelledExperimentCount = other80.cancelledExperimentCount;
+  failedExperimentCount = other80.failedExperimentCount;
+  createdExperimentCount = other80.createdExperimentCount;
+  runningExperimentCount = other80.runningExperimentCount;
+  allExperiments = other80.allExperiments;
+  completedExperiments = other80.completedExperiments;
+  failedExperiments = other80.failedExperiments;
+  cancelledExperiments = other80.cancelledExperiments;
+  createdExperiments = other80.createdExperiments;
+  runningExperiments = other80.runningExperiments;
+  __isset = other80.__isset;
   return *this;
 }
 void ExperimentStatistics::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
index c3e6fc0..c6368e3 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
@@ -231,7 +231,7 @@ class ExperimentModel {
   UserConfigurationDataModel userConfigurationData;
   std::vector< ::apache::airavata::model::application::io::InputDataObjectType>  experimentInputs;
   std::vector< ::apache::airavata::model::application::io::OutputDataObjectType>  experimentOutputs;
-   ::apache::airavata::model::status::ExperimentStatus experimentStatus;
+  std::vector< ::apache::airavata::model::status::ExperimentStatus>  experimentStatus;
   std::vector< ::apache::airavata::model::commons::ErrorModel>  errors;
   std::vector< ::apache::airavata::model::process::ProcessModel>  processes;
 
@@ -269,7 +269,7 @@ class ExperimentModel {
 
   void __set_experimentOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val);
 
-  void __set_experimentStatus(const  ::apache::airavata::model::status::ExperimentStatus& val);
+  void __set_experimentStatus(const std::vector< ::apache::airavata::model::status::ExperimentStatus> & val);
 
   void __set_errors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
index 5018139..3e1dc12 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
@@ -407,7 +407,7 @@ class ExperimentModel {
    */
   public $experimentOutputs = null;
   /**
-   * @var \Airavata\Model\Status\ExperimentStatus
+   * @var \Airavata\Model\Status\ExperimentStatus[]
    */
   public $experimentStatus = null;
   /**
@@ -503,8 +503,12 @@ class ExperimentModel {
           ),
         17 => array(
           'var' => 'experimentStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\ExperimentStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\ExperimentStatus',
+            ),
           ),
         18 => array(
           'var' => 'errors',
@@ -752,43 +756,53 @@ class ExperimentModel {
           }
           break;
         case 17:
-          if ($ftype == TType::STRUCT) {
-            $this->experimentStatus = new \Airavata\Model\Status\ExperimentStatus();
-            $xfer += $this->experimentStatus->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 18:
           if ($ftype == TType::LST) {
-            $this->errors = array();
+            $this->experimentStatus = array();
             $_size18 = 0;
             $_etype21 = 0;
             $xfer += $input->readListBegin($_etype21, $_size18);
             for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
             {
               $elem23 = null;
-              $elem23 = new \Airavata\Model\Commons\ErrorModel();
+              $elem23 = new \Airavata\Model\Status\ExperimentStatus();
               $xfer += $elem23->read($input);
-              $this->errors []= $elem23;
+              $this->experimentStatus []= $elem23;
             }
             $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 19:
+        case 18:
           if ($ftype == TType::LST) {
-            $this->processes = array();
+            $this->errors = array();
             $_size24 = 0;
             $_etype27 = 0;
             $xfer += $input->readListBegin($_etype27, $_size24);
             for ($_i28 = 0; $_i28 < $_size24; ++$_i28)
             {
               $elem29 = null;
-              $elem29 = new \Airavata\Model\Process\ProcessModel();
+              $elem29 = new \Airavata\Model\Commons\ErrorModel();
               $xfer += $elem29->read($input);
-              $this->processes []= $elem29;
+              $this->errors []= $elem29;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 19:
+          if ($ftype == TType::LST) {
+            $this->processes = array();
+            $_size30 = 0;
+            $_etype33 = 0;
+            $xfer += $input->readListBegin($_etype33, $_size30);
+            for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
+            {
+              $elem35 = null;
+              $elem35 = new \Airavata\Model\Process\ProcessModel();
+              $xfer += $elem35->read($input);
+              $this->processes []= $elem35;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -876,9 +890,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRING, count($this->emailAddresses));
         {
-          foreach ($this->emailAddresses as $iter30)
+          foreach ($this->emailAddresses as $iter36)
           {
-            $xfer += $output->writeString($iter30);
+            $xfer += $output->writeString($iter36);
           }
         }
         $output->writeListEnd();
@@ -901,9 +915,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentInputs));
         {
-          foreach ($this->experimentInputs as $iter31)
+          foreach ($this->experimentInputs as $iter37)
           {
-            $xfer += $iter31->write($output);
+            $xfer += $iter37->write($output);
           }
         }
         $output->writeListEnd();
@@ -918,9 +932,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentOutputs));
         {
-          foreach ($this->experimentOutputs as $iter32)
+          foreach ($this->experimentOutputs as $iter38)
           {
-            $xfer += $iter32->write($output);
+            $xfer += $iter38->write($output);
           }
         }
         $output->writeListEnd();
@@ -928,11 +942,20 @@ class ExperimentModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->experimentStatus !== null) {
-      if (!is_object($this->experimentStatus)) {
+      if (!is_array($this->experimentStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('experimentStatus', TType::STRUCT, 17);
-      $xfer += $this->experimentStatus->write($output);
+      $xfer += $output->writeFieldBegin('experimentStatus', TType::LST, 17);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->experimentStatus));
+        {
+          foreach ($this->experimentStatus as $iter39)
+          {
+            $xfer += $iter39->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->errors !== null) {
@@ -943,9 +966,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->errors));
         {
-          foreach ($this->errors as $iter33)
+          foreach ($this->errors as $iter40)
           {
-            $xfer += $iter33->write($output);
+            $xfer += $iter40->write($output);
           }
         }
         $output->writeListEnd();
@@ -960,9 +983,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processes));
         {
-          foreach ($this->processes as $iter34)
+          foreach ($this->processes as $iter41)
           {
-            $xfer += $iter34->write($output);
+            $xfer += $iter41->write($output);
           }
         }
         $output->writeListEnd();
@@ -1520,15 +1543,15 @@ class ExperimentStatistics {
         case 7:
           if ($ftype == TType::LST) {
             $this->allExperiments = array();
-            $_size35 = 0;
-            $_etype38 = 0;
-            $xfer += $input->readListBegin($_etype38, $_size35);
-            for ($_i39 = 0; $_i39 < $_size35; ++$_i39)
+            $_size42 = 0;
+            $_etype45 = 0;
+            $xfer += $input->readListBegin($_etype45, $_size42);
+            for ($_i46 = 0; $_i46 < $_size42; ++$_i46)
             {
-              $elem40 = null;
-              $elem40 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem40->read($input);
-              $this->allExperiments []= $elem40;
+              $elem47 = null;
+              $elem47 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem47->read($input);
+              $this->allExperiments []= $elem47;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1538,15 +1561,15 @@ class ExperimentStatistics {
         case 8:
           if ($ftype == TType::LST) {
             $this->completedExperiments = array();
-            $_size41 = 0;
-            $_etype44 = 0;
-            $xfer += $input->readListBegin($_etype44, $_size41);
-            for ($_i45 = 0; $_i45 < $_size41; ++$_i45)
+            $_size48 = 0;
+            $_etype51 = 0;
+            $xfer += $input->readListBegin($_etype51, $_size48);
+            for ($_i52 = 0; $_i52 < $_size48; ++$_i52)
             {
-              $elem46 = null;
-              $elem46 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem46->read($input);
-              $this->completedExperiments []= $elem46;
+              $elem53 = null;
+              $elem53 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem53->read($input);
+              $this->completedExperiments []= $elem53;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1556,15 +1579,15 @@ class ExperimentStatistics {
         case 9:
           if ($ftype == TType::LST) {
             $this->failedExperiments = array();
-            $_size47 = 0;
-            $_etype50 = 0;
-            $xfer += $input->readListBegin($_etype50, $_size47);
-            for ($_i51 = 0; $_i51 < $_size47; ++$_i51)
+            $_size54 = 0;
+            $_etype57 = 0;
+            $xfer += $input->readListBegin($_etype57, $_size54);
+            for ($_i58 = 0; $_i58 < $_size54; ++$_i58)
             {
-              $elem52 = null;
-              $elem52 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem52->read($input);
-              $this->failedExperiments []= $elem52;
+              $elem59 = null;
+              $elem59 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem59->read($input);
+              $this->failedExperiments []= $elem59;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1574,15 +1597,15 @@ class ExperimentStatistics {
         case 10:
           if ($ftype == TType::LST) {
             $this->cancelledExperiments = array();
-            $_size53 = 0;
-            $_etype56 = 0;
-            $xfer += $input->readListBegin($_etype56, $_size53);
-            for ($_i57 = 0; $_i57 < $_size53; ++$_i57)
+            $_size60 = 0;
+            $_etype63 = 0;
+            $xfer += $input->readListBegin($_etype63, $_size60);
+            for ($_i64 = 0; $_i64 < $_size60; ++$_i64)
             {
-              $elem58 = null;
-              $elem58 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem58->read($input);
-              $this->cancelledExperiments []= $elem58;
+              $elem65 = null;
+              $elem65 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem65->read($input);
+              $this->cancelledExperiments []= $elem65;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1592,15 +1615,15 @@ class ExperimentStatistics {
         case 11:
           if ($ftype == TType::LST) {
             $this->createdExperiments = array();
-            $_size59 = 0;
-            $_etype62 = 0;
-            $xfer += $input->readListBegin($_etype62, $_size59);
-            for ($_i63 = 0; $_i63 < $_size59; ++$_i63)
+            $_size66 = 0;
+            $_etype69 = 0;
+            $xfer += $input->readListBegin($_etype69, $_size66);
+            for ($_i70 = 0; $_i70 < $_size66; ++$_i70)
             {
-              $elem64 = null;
-              $elem64 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem64->read($input);
-              $this->createdExperiments []= $elem64;
+              $elem71 = null;
+              $elem71 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem71->read($input);
+              $this->createdExperiments []= $elem71;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1610,15 +1633,15 @@ class ExperimentStatistics {
         case 12:
           if ($ftype == TType::LST) {
             $this->runningExperiments = array();
-            $_size65 = 0;
-            $_etype68 = 0;
-            $xfer += $input->readListBegin($_etype68, $_size65);
-            for ($_i69 = 0; $_i69 < $_size65; ++$_i69)
+            $_size72 = 0;
+            $_etype75 = 0;
+            $xfer += $input->readListBegin($_etype75, $_size72);
+            for ($_i76 = 0; $_i76 < $_size72; ++$_i76)
             {
-              $elem70 = null;
-              $elem70 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem70->read($input);
-              $this->runningExperiments []= $elem70;
+              $elem77 = null;
+              $elem77 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem77->read($input);
+              $this->runningExperiments []= $elem77;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1676,9 +1699,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->allExperiments));
         {
-          foreach ($this->allExperiments as $iter71)
+          foreach ($this->allExperiments as $iter78)
           {
-            $xfer += $iter71->write($output);
+            $xfer += $iter78->write($output);
           }
         }
         $output->writeListEnd();
@@ -1693,9 +1716,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->completedExperiments));
         {
-          foreach ($this->completedExperiments as $iter72)
+          foreach ($this->completedExperiments as $iter79)
           {
-            $xfer += $iter72->write($output);
+            $xfer += $iter79->write($output);
           }
         }
         $output->writeListEnd();
@@ -1710,9 +1733,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->failedExperiments));
         {
-          foreach ($this->failedExperiments as $iter73)
+          foreach ($this->failedExperiments as $iter80)
           {
-            $xfer += $iter73->write($output);
+            $xfer += $iter80->write($output);
           }
         }
         $output->writeListEnd();
@@ -1727,9 +1750,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->cancelledExperiments));
         {
-          foreach ($this->cancelledExperiments as $iter74)
+          foreach ($this->cancelledExperiments as $iter81)
           {
-            $xfer += $iter74->write($output);
+            $xfer += $iter81->write($output);
           }
         }
         $output->writeListEnd();
@@ -1744,9 +1767,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->createdExperiments));
         {
-          foreach ($this->createdExperiments as $iter75)
+          foreach ($this->createdExperiments as $iter82)
           {
-            $xfer += $iter75->write($output);
+            $xfer += $iter82->write($output);
           }
         }
         $output->writeListEnd();
@@ -1761,9 +1784,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->runningExperiments));
         {
-          foreach ($this->runningExperiments as $iter76)
+          foreach ($this->runningExperiments as $iter83)
           {
-            $xfer += $iter76->write($output);
+            $xfer += $iter83->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
index 75f6271..80ff4b1 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
@@ -315,7 +315,7 @@ class ExperimentModel:
     (14, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 14
     (15, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 15
     (16, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 16
-    (17, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 17
+    (17, TType.LIST, 'experimentStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec)), None, ), # 17
     (18, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 18
     (19, TType.LIST, 'processes', (TType.STRUCT,(apache.airavata.model.process.ttypes.ProcessModel, apache.airavata.model.process.ttypes.ProcessModel.thrift_spec)), None, ), # 19
   )
@@ -449,30 +449,35 @@ class ExperimentModel:
         else:
           iprot.skip(ftype)
       elif fid == 17:
-        if ftype == TType.STRUCT:
-          self.experimentStatus = apache.airavata.model.status.ttypes.ExperimentStatus()
-          self.experimentStatus.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 18:
         if ftype == TType.LIST:
-          self.errors = []
+          self.experimentStatus = []
           (_etype21, _size18) = iprot.readListBegin()
           for _i22 in xrange(_size18):
-            _elem23 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem23 = apache.airavata.model.status.ttypes.ExperimentStatus()
             _elem23.read(iprot)
-            self.errors.append(_elem23)
+            self.experimentStatus.append(_elem23)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 19:
+      elif fid == 18:
         if ftype == TType.LIST:
-          self.processes = []
+          self.errors = []
           (_etype27, _size24) = iprot.readListBegin()
           for _i28 in xrange(_size24):
-            _elem29 = apache.airavata.model.process.ttypes.ProcessModel()
+            _elem29 = apache.airavata.model.commons.ttypes.ErrorModel()
             _elem29.read(iprot)
-            self.processes.append(_elem29)
+            self.errors.append(_elem29)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.LIST:
+          self.processes = []
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = apache.airavata.model.process.ttypes.ProcessModel()
+            _elem35.read(iprot)
+            self.processes.append(_elem35)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -537,8 +542,8 @@ class ExperimentModel:
     if self.emailAddresses is not None:
       oprot.writeFieldBegin('emailAddresses', TType.LIST, 13)
       oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
-      for iter30 in self.emailAddresses:
-        oprot.writeString(iter30)
+      for iter36 in self.emailAddresses:
+        oprot.writeString(iter36)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.userConfigurationData is not None:
@@ -548,33 +553,36 @@ class ExperimentModel:
     if self.experimentInputs is not None:
       oprot.writeFieldBegin('experimentInputs', TType.LIST, 15)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
-      for iter31 in self.experimentInputs:
-        iter31.write(oprot)
+      for iter37 in self.experimentInputs:
+        iter37.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentOutputs is not None:
       oprot.writeFieldBegin('experimentOutputs', TType.LIST, 16)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
-      for iter32 in self.experimentOutputs:
-        iter32.write(oprot)
+      for iter38 in self.experimentOutputs:
+        iter38.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentStatus is not None:
-      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 17)
-      self.experimentStatus.write(oprot)
+      oprot.writeFieldBegin('experimentStatus', TType.LIST, 17)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentStatus))
+      for iter39 in self.experimentStatus:
+        iter39.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.errors is not None:
       oprot.writeFieldBegin('errors', TType.LIST, 18)
       oprot.writeListBegin(TType.STRUCT, len(self.errors))
-      for iter33 in self.errors:
-        iter33.write(oprot)
+      for iter40 in self.errors:
+        iter40.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processes is not None:
       oprot.writeFieldBegin('processes', TType.LIST, 19)
       oprot.writeListBegin(TType.STRUCT, len(self.processes))
-      for iter34 in self.processes:
-        iter34.write(oprot)
+      for iter41 in self.processes:
+        iter41.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -925,66 +933,66 @@ class ExperimentStatistics:
       elif fid == 7:
         if ftype == TType.LIST:
           self.allExperiments = []
-          (_etype38, _size35) = iprot.readListBegin()
-          for _i39 in xrange(_size35):
-            _elem40 = ExperimentSummaryModel()
-            _elem40.read(iprot)
-            self.allExperiments.append(_elem40)
+          (_etype45, _size42) = iprot.readListBegin()
+          for _i46 in xrange(_size42):
+            _elem47 = ExperimentSummaryModel()
+            _elem47.read(iprot)
+            self.allExperiments.append(_elem47)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 8:
         if ftype == TType.LIST:
           self.completedExperiments = []
-          (_etype44, _size41) = iprot.readListBegin()
-          for _i45 in xrange(_size41):
-            _elem46 = ExperimentSummaryModel()
-            _elem46.read(iprot)
-            self.completedExperiments.append(_elem46)
+          (_etype51, _size48) = iprot.readListBegin()
+          for _i52 in xrange(_size48):
+            _elem53 = ExperimentSummaryModel()
+            _elem53.read(iprot)
+            self.completedExperiments.append(_elem53)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 9:
         if ftype == TType.LIST:
           self.failedExperiments = []
-          (_etype50, _size47) = iprot.readListBegin()
-          for _i51 in xrange(_size47):
-            _elem52 = ExperimentSummaryModel()
-            _elem52.read(iprot)
-            self.failedExperiments.append(_elem52)
+          (_etype57, _size54) = iprot.readListBegin()
+          for _i58 in xrange(_size54):
+            _elem59 = ExperimentSummaryModel()
+            _elem59.read(iprot)
+            self.failedExperiments.append(_elem59)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 10:
         if ftype == TType.LIST:
           self.cancelledExperiments = []
-          (_etype56, _size53) = iprot.readListBegin()
-          for _i57 in xrange(_size53):
-            _elem58 = ExperimentSummaryModel()
-            _elem58.read(iprot)
-            self.cancelledExperiments.append(_elem58)
+          (_etype63, _size60) = iprot.readListBegin()
+          for _i64 in xrange(_size60):
+            _elem65 = ExperimentSummaryModel()
+            _elem65.read(iprot)
+            self.cancelledExperiments.append(_elem65)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 11:
         if ftype == TType.LIST:
           self.createdExperiments = []
-          (_etype62, _size59) = iprot.readListBegin()
-          for _i63 in xrange(_size59):
-            _elem64 = ExperimentSummaryModel()
-            _elem64.read(iprot)
-            self.createdExperiments.append(_elem64)
+          (_etype69, _size66) = iprot.readListBegin()
+          for _i70 in xrange(_size66):
+            _elem71 = ExperimentSummaryModel()
+            _elem71.read(iprot)
+            self.createdExperiments.append(_elem71)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 12:
         if ftype == TType.LIST:
           self.runningExperiments = []
-          (_etype68, _size65) = iprot.readListBegin()
-          for _i69 in xrange(_size65):
-            _elem70 = ExperimentSummaryModel()
-            _elem70.read(iprot)
-            self.runningExperiments.append(_elem70)
+          (_etype75, _size72) = iprot.readListBegin()
+          for _i76 in xrange(_size72):
+            _elem77 = ExperimentSummaryModel()
+            _elem77.read(iprot)
+            self.runningExperiments.append(_elem77)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -1025,43 +1033,43 @@ class ExperimentStatistics:
     if self.allExperiments is not None:
       oprot.writeFieldBegin('allExperiments', TType.LIST, 7)
       oprot.writeListBegin(TType.STRUCT, len(self.allExperiments))
-      for iter71 in self.allExperiments:
-        iter71.write(oprot)
+      for iter78 in self.allExperiments:
+        iter78.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.completedExperiments is not None:
       oprot.writeFieldBegin('completedExperiments', TType.LIST, 8)
       oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments))
-      for iter72 in self.completedExperiments:
-        iter72.write(oprot)
+      for iter79 in self.completedExperiments:
+        iter79.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.failedExperiments is not None:
       oprot.writeFieldBegin('failedExperiments', TType.LIST, 9)
       oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments))
-      for iter73 in self.failedExperiments:
-        iter73.write(oprot)
+      for iter80 in self.failedExperiments:
+        iter80.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.cancelledExperiments is not None:
       oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 10)
       oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments))
-      for iter74 in self.cancelledExperiments:
-        iter74.write(oprot)
+      for iter81 in self.cancelledExperiments:
+        iter81.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.createdExperiments is not None:
       oprot.writeFieldBegin('createdExperiments', TType.LIST, 11)
       oprot.writeListBegin(TType.STRUCT, len(self.createdExperiments))
-      for iter75 in self.createdExperiments:
-        iter75.write(oprot)
+      for iter82 in self.createdExperiments:
+        iter82.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.runningExperiments is not None:
       oprot.writeFieldBegin('runningExperiments', TType.LIST, 12)
       oprot.writeListBegin(TType.STRUCT, len(self.runningExperiments))
-      for iter76 in self.runningExperiments:
-        iter76.write(oprot)
+      for iter83 in self.runningExperiments:
+        iter83.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
index dc869c2..b37bd29 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
@@ -20,10 +20,6 @@
  */
 package org.apache.airavata.client.samples;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.tools.RegisterSampleApplications;
@@ -36,23 +32,22 @@ import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.data.movement.SecurityProtocol;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataErrorType;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.ExperimentNotFoundException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
+import org.apache.airavata.model.error.*;
+import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.security.AuthzToken;
 import org.apache.airavata.model.util.ExperimentModelUtil;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 public class CreateLaunchBES {
  
     public static final String THRIFT_SERVER_HOST = "localhost";
@@ -167,7 +162,7 @@ public class CreateLaunchBES {
             Thread.sleep(10000);
             for (String exId : experimentIds) {
                 ExperimentModel experiment = airavataClient.getExperiment(new AuthzToken(""), exId);
-                System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().getState().name());
+                System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().get(0).getState().name());
             }
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index 11c84a4..aff662b 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -25,7 +25,10 @@ import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.tools.RegisterSampleApplications;
 import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
-import org.apache.airavata.model.appcatalog.computeresource.*;
+import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
@@ -33,7 +36,6 @@ import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.data.movement.SecurityProtocol;
 import org.apache.airavata.model.error.*;
 import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.security.AuthzToken;
@@ -211,12 +213,12 @@ public class CreateLaunchExperiment {
                 allNotFinished = false;
                 for (String exId : experimentIds) {
                     ExperimentModel experiment = airavataClient.getExperiment(new AuthzToken(""), exId);
-                    if(!experiment.getExperimentStatus().getState().equals(ExperimentState.COMPLETED)&&
-                            !experiment.getExperimentStatus().getState().equals(ExperimentState.FAILED)
-                            &&!experiment.getExperimentStatus().getState().equals(ExperimentState.CANCELED)){
+                    if(!experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.COMPLETED)&&
+                            !experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.FAILED)
+                            &&!experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.CANCELED)){
                         allNotFinished = true;
                     }
-                    System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().getState().name());
+                    System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().get(0).getState().name());
                 }
                 System.out.println("----------------------------------------------------");
                 Thread.sleep(10000);


[27/48] airavata git commit: making errors and statuses list in Process and Task models

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 533e719..8740737 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -386,13 +386,13 @@ public class ThriftDataModelConversion {
             if (errorModel != null){
                 List<ErrorModel> errorModels = new ArrayList<>();
                 errorModels.add(errorModel);
-                processModel.setProcessError(errorModels);
+                processModel.setProcessErrors(errorModels);
             }
             ProcessStatus processStatus = getProcessStatus(processResource.getProcessStatus());
             if (processStatus != null){
                 List<ProcessStatus> statuses = new ArrayList<>();
                 statuses.add(processStatus);
-                processModel.setProcessStatus(statuses);
+                processModel.setProcessStatuses(statuses);
             }
 
             ComputationalResourceSchedulingModel schedule = getProcessResourceSchedule(processResource.getProcessResourceSchedule());
@@ -431,11 +431,15 @@ public class ThriftDataModelConversion {
 
         TaskStatus taskStatus = getTaskStatus(taskResource.getTaskStatus());
         if (taskStatus != null){
-            model.setTaskStatus(taskStatus);
+            List<TaskStatus> taskStatuses = new ArrayList<>();
+            taskStatuses.add(taskStatus);
+            model.setTaskStatuses(taskStatuses);
         }
         ErrorModel errorModel = getErrorModel(taskResource.getTaskError());
         if (errorModel != null) {
-            model.setTaskError(errorModel);
+            List<ErrorModel> errors = new ArrayList<>();
+            errors.add(errorModel);
+            model.setTaskErrors(errors);
         }
 
         return model;
@@ -453,7 +457,9 @@ public class ThriftDataModelConversion {
         model.setWorkingDir(jobResource.getWorkingDir());
         JobStatus jobStatus = getJobStatus(jobResource.getJobStatus());
         if (jobStatus != null){
-            model.setJobStatus(jobStatus);
+            List<JobStatus> jobStatuses = new ArrayList<>();
+            jobStatuses.add(jobStatus);
+            model.setJobStatuses(jobStatuses);
         }
         model.setExitCode(jobResource.getExitCode());
         model.setStdOut(jobResource.getStdOut());

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 67344d7..076208d 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -720,7 +720,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
                                 for (Object jobObject : jobs) {
                                     JobModel jobModel = (JobModel) jobObject;
                                     String jobID = jobModel.getJobId();
-                                    JobStatus status = jobModel.getJobStatus();
+                                    JobStatus status = jobModel.getJobStatuses().get(0);
                                     if (status != null){
                                         jobStatus.put(jobID, status);
                                     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/thrift-interface-descriptions/data-models/experiment-catalog-models/job_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/job_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/job_model.thrift
index f908c5e..9e7154e 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/job_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/job_model.thrift
@@ -31,7 +31,7 @@ struct JobModel {
     3: required string processId,
     4: required string jobDescription,
     5: optional i64 creationTime,
-    6: optional status_models.JobStatus jobStatus,
+    6: optional list<status_models.JobStatus> jobStatuses,
     7: optional string computeResourceConsumed,
     8: optional string jobName,
     9: optional string workingDir,

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index 0a72923..ac78837 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -44,7 +44,7 @@ struct ProcessModel {
     2: required string experimentId,
     3: optional i64 creationTime,
     4: optional i64 lastUpdateTime,
-    5: optional list<status_models.ProcessStatus> processStatus,
+    5: optional list<status_models.ProcessStatus> processStatuses,
     6: optional string processDetail,
     7: optional string applicationInterfaceId,
     8: optional string applicationDeploymentId,
@@ -54,7 +54,7 @@ struct ProcessModel {
     12: optional scheduling_model.ComputationalResourceSchedulingModel processResourceSchedule,
     13: optional list<task_model.TaskModel> tasks,
     14: optional string taskDag,
-    15: optional list<airavata_commons.ErrorModel> processError,
+    15: optional list<airavata_commons.ErrorModel> processErrors,
     16: optional string gatewayExecutionId,
     17: optional bool enableEmailNotification,
     18: optional list<string> emailAddresses,

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/thrift-interface-descriptions/data-models/experiment-catalog-models/task_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/task_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/task_model.thrift
index faaf93b..1d95d01 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/task_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/task_model.thrift
@@ -58,10 +58,10 @@ struct TaskModel {
     3: required string parentProcessId,
     4: required i64 creationTime,
     5: required i64 lastUpdateTime,
-    6: required status_models.TaskStatus taskStatus,
+    6: required list<status_models.TaskStatus> taskStatuses,
     7: optional string taskDetail,
     8: optional binary subTaskModel,
-    9: optional airavata_commons.ErrorModel taskError,
+    9: optional list<airavata_commons.ErrorModel> taskErrors,
     10: optional list<job_model.JobModel> jobs
 }
 


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

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


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 729a15fa96a056381ce382aeed9c9e459e5511df
Parents: ea4c2f6 6b9b441
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Aug 31 15:58:19 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Aug 31 15:58:19 2016 -0400

----------------------------------------------------------------------
 .../resources/lib/airavata/job_model_types.cpp  |  86 +--
 .../resources/lib/airavata/job_model_types.h    |   4 +-
 .../lib/airavata/process_model_types.cpp        | 260 ++++++----
 .../lib/airavata/process_model_types.h          |  20 +-
 .../resources/lib/airavata/task_model_types.cpp | 242 +++++----
 .../resources/lib/airavata/task_model_types.h   |   8 +-
 .../lib/airavata/user_profile_model_types.cpp   |  89 ++--
 .../lib/airavata/user_profile_model_types.h     |   7 +-
 .../lib/Airavata/Model/Process/Types.php        | 180 ++++---
 .../resources/lib/Airavata/Model/Task/Types.php | 102 +++-
 .../resources/lib/Airavata/Model/User/Types.php | 121 +++--
 .../resources/lib/Airavata/Model/job/Types.php  |  41 +-
 .../lib/apache/airavata/model/job/ttypes.py     |  20 +-
 .../lib/apache/airavata/model/process/ttypes.py | 114 ++--
 .../lib/apache/airavata/model/task/ttypes.py    |  54 +-
 .../lib/apache/airavata/model/user/ttypes.py    | 117 +++--
 .../org/apache/airavata/model/job/JobModel.java | 142 +++--
 .../airavata/model/process/ProcessModel.java    | 519 +++++++++++--------
 .../apache/airavata/model/task/TaskModel.java   | 302 +++++++----
 .../apache/airavata/model/user/UserProfile.java |  24 +-
 .../model/util/ExperimentModelUtil.java         |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |  11 +-
 .../gfac/core/context/ProcessContext.java       |  21 +-
 .../airavata/gfac/core/context/TaskContext.java |  17 +-
 .../org/apache/airavata/gfac/impl/Factory.java  |   4 +-
 .../airavata/gfac/impl/GFacEngineImpl.java      |  25 +-
 .../airavata/gfac/impl/task/ArchiveTask.java    |   5 +-
 .../gfac/impl/task/BESJobSubmissionTask.java    |  10 +-
 .../airavata/gfac/impl/task/DataStageTask.java  |   8 +-
 .../gfac/impl/task/DataStreamingTask.java       |   2 +-
 .../impl/task/DefaultJobSubmissionTask.java     |  26 +-
 .../gfac/impl/task/EnvironmentSetupTask.java    |   3 +-
 .../gfac/impl/task/ForkJobSubmissionTask.java   |  13 +-
 .../gfac/impl/task/SCPDataStageTask.java        |  16 +-
 .../gfac/impl/task/utils/StreamData.java        |   8 +-
 .../task/utils/bes/ApplicationProcessor.java    |   2 +-
 .../impl/task/utils/bes/ResourceProcessor.java  |   2 +-
 .../gfac/monitor/email/EmailBasedMonitor.java   |   4 +-
 .../core/utils/OrchestratorUtils.java           |   4 +-
 .../validator/impl/BatchQueueValidator.java     |   2 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |  14 +-
 .../server/OrchestratorServerHandler.java       |   6 +-
 .../org/apache/airavata/registry/core/Main.java |  75 ---
 .../ComputeResourceSchedulingEntity.java        |   2 +-
 .../entities/expcatalog/ExperimentEntity.java   |  35 +-
 .../expcatalog/ExperimentErrorEntity.java       |   4 +-
 .../entities/expcatalog/ExperimentErrorPK.java  |  75 +++
 .../expcatalog/ExperimentInputEntity.java       |   7 +-
 .../entities/expcatalog/ExperimentInputPK.java  |  74 +++
 .../expcatalog/ExperimentOutputEntity.java      |  24 +-
 .../entities/expcatalog/ExperimentOutputPK.java |  74 +++
 .../expcatalog/ExperimentStatusEntity.java      |  83 +++
 .../entities/expcatalog/ExperimentStatusPK.java |  74 +++
 .../core/entities/expcatalog/JobEntity.java     | 165 ++++++
 .../entities/expcatalog/JobStatusEntity.java    |  83 +++
 .../core/entities/expcatalog/JobStatusPK.java   |  74 +++
 .../core/entities/expcatalog/ProcessEntity.java | 276 ++++++++++
 .../entities/expcatalog/ProcessErrorEntity.java | 118 +++++
 .../entities/expcatalog/ProcessErrorPK.java     |  75 +++
 .../entities/expcatalog/ProcessInputEntity.java | 174 +++++++
 .../entities/expcatalog/ProcessInputPK.java     |  74 +++
 .../expcatalog/ProcessOutputEntity.java         | 165 ++++++
 .../entities/expcatalog/ProcessOutputPK.java    |  70 +++
 .../ProcessResourceSchedulingEntity.java        | 170 ++++++
 .../expcatalog/ProcessStatusEntity.java         |  83 +++
 .../entities/expcatalog/ProcessStatusPK.java    |  74 +++
 .../core/entities/expcatalog/TaskEntity.java    | 147 ++++++
 .../entities/expcatalog/TaskErrorEntity.java    | 118 +++++
 .../core/entities/expcatalog/TaskErrorPK.java   |  75 +++
 .../entities/expcatalog/TaskStatusEntity.java   |  83 +++
 .../core/entities/expcatalog/TaskStatusPK.java  |  74 +++
 .../expcatalog/UserConfigurationEntity.java     |   2 +-
 .../workspacecatalog/GatewayEntity.java         |   2 +-
 .../workspacecatalog/NSFDemographicsEntity.java |   2 +-
 .../workspacecatalog/NotificationEntity.java    |   2 +-
 .../workspacecatalog/ProjectEntity.java         |   2 +-
 .../workspacecatalog/UserProfileEntity.java     |   2 +-
 .../expcatalog/ExperimentRepository.java        | 101 ++++
 .../expcatalog/ExperimentRespository.java       |  43 --
 .../src/main/resources/META-INF/persistence.xml |  17 +
 .../src/main/resources/experiment_catalog.sql   | 257 +++++++--
 .../src/main/resources/workspace_catalog.sql    |  48 +-
 .../core/repositories/RepositoryTest.java       |  40 ++
 .../catalog/impl/ExperimentRegistry.java        |  86 +--
 .../utils/ThriftDataModelConversion.java        |  22 +-
 .../service/handler/RegistryServerHandler.java  |   2 +-
 .../experiment-catalog-models/job_model.thrift  |   2 +-
 .../process_model.thrift                        |   6 +-
 .../experiment-catalog-models/task_model.thrift |   4 +-
 .../user-group-models/user_profile_model.thrift |  35 +-
 90 files changed, 4627 insertions(+), 1330 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/729a15fa/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------


[15/48] airavata git commit: [AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/modules/distribution/src/main/resources/LICENSE
----------------------------------------------------------------------
diff --git a/modules/distribution/src/main/resources/LICENSE b/modules/distribution/src/main/resources/LICENSE
new file mode 100644
index 0000000..56f7cc2
--- /dev/null
+++ b/modules/distribution/src/main/resources/LICENSE
@@ -0,0 +1,2387 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+===================================================================================
+The Apache Airavata distribution includes a number of run time 
+dependencies with separate copyright notices and license terms. Your use of the
+Apache Airavata code is subject to the terms and conditions of the following licenses.
+===================================================================================
+
+===============================================================================
+The following components come under Apache Software License 2.0
+===============================================================================
+
+apache axiom, apache axis2, apache commons, apache derby, apache geronimo,
+apache httpcore components, apache log4j, apache xmlbeans, apache xmlschema,
+aws-java-sdk-1.1.8.jar, bcel-5.1.jar, Codehaus Jackson (jackson-core-asl-1.9.2.jar,
+jackson-jaxrs-1.9.2.jar, jackson-mapper-asl-1.9.2.jar, jackson-xc-1.9.2.jar, 
+jets3t-0.8.0.jar, jettison-1.0-RC2.jar, neethi-2.0.4.jar, PDFBox libraries 
+(pdfbox, jempbox, fontbox), wstx-asl-3.2.4.jar
+
+- Bean Validation API (http://beanvalidation.org) javax.validation:validation-api:jar:1.1.0.Final
+- Hibernate Validator Engine (http://validator.hibernate.org/hibernate-validator) org.hibernate:hibernate-validator:jar:4.3.0.Final
+- GSS-API implementation for SSL with proxies (https://github.com/jglobus/JGlobus/gss) org.jglobus:gss:jar:2.0.6
+- SSL support (https://github.com/jglobus/JGlobus/jsse) org.jglobus:jsse:jar:2.0.6
+- myproxy (https://github.com/jglobus/JGlobus/myproxy) org.jglobus:myproxy:jar:2.0.6
+- SSL and proxy certificate support (https://github.com/jglobus/JGlobus/ssl-proxies) org.jglobus:ssl-proxies:jar:2.0.6
+- Bouncy Castle for GSS (https://github.com/jsiwek/BouncyCastleSSLv3) org.ogce:bcgss:jar:146
+- StAX API (http://stax.codehaus.org/) stax:stax-api:jar:1.0.1
+- Commons Codec (http://commons.apache.org/codec/) commons-codec:commons-codec:jar:1.4
+- Commons IO (http://commons.apache.org/io/) commons-io:commons-io:jar:1.4
+- Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.6
+- Commons Logging (http://commons.apache.org/logging) commons-logging:commons-logging:jar:1.1.1
+- XmlBeans (http://xmlbeans.apache.org) org.apache.xmlbeans:xmlbeans:jar:2.5.0
+
+===============================================================================
+The following components use Apache based Licenses
+===============================================================================
+
+===============================================================================
+For: jdom-1.0.jar
+    Containing Project URL: http://www.jdom.org/
+/*-- 
+
+ $Id: LICENSE.txt,v 1.11 2004/02/06 09:32:57 jhunter Exp $
+
+ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions, and the following disclaimer.
+ 
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions, and the disclaimer that follows 
+    these conditions in the documentation and/or other materials 
+    provided with the distribution.
+
+ 3. The name "JDOM" must not be used to endorse or promote products
+    derived from this software without prior written permission.  For
+    written permission, please contact <request_AT_jdom_DOT_org>.
+ 
+ 4. Products derived from this software may not be called "JDOM", nor
+    may "JDOM" appear in their name, without prior written permission
+    from the JDOM Project Management <request_AT_jdom_DOT_org>.
+ 
+ In addition, we request (but do not require) that you include in the 
+ end-user documentation provided with the redistribution and/or in the 
+ software itself an acknowledgement equivalent to the following:
+     "This product includes software developed by the
+      JDOM Project (http://www.jdom.org/)."
+ Alternatively, the acknowledgment may be graphical using the logos 
+ available at http://www.jdom.org/images/logos.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED.  IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many 
+ individuals on behalf of the JDOM Project and was originally 
+ created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
+ Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
+ on the JDOM Project, please see <http://www.jdom.org/>. 
+
+ */
+
+===============================================================================
+
+ASM bytecode manipulation library (asm)
+    Containing Project URL: http://asm.ow2.org/
+
+    Copyright (c) 2000-2005 INRIA, France Telecom
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    1. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    3. Neither the name of the copyright holders nor the names of its
+       contributors may be used to endorse or promote products derived from
+       this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+    THE POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+
+For: cryptix-asn1-versionless.jar, cryptix32-versionless.jar
+    Containing Project URL: http://www.cryptix.org/
+
+Cryptix General License
+
+Copyright (c) 1995-2005 The Cryptix Foundation Limited.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  1. Redistributions of source code must retain the copyright notice,
+     this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND
+CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+The following components come under Extreme! Lab Software License
+===============================================================================
+
+XPP3
+    Containing Project URL: http://www.extreme.indiana.edu/xgws/xsoap/xpp/
+xsul, xsul5, xutil
+    Containing Project URL: http://www.extreme.indiana.edu/xgws/xsul/
+wsmg
+    Containing Project URL: http://www.extreme.indiana.edu/xgws/messenger/index.html
+gpel, weps-beans, pegasuswebservice, mapReduce-service-client, atomixmiser
+    Containing Project URL: http://www.extreme.indiana.edu/xgws/
+    
+Indiana University Extreme! Lab Software License
+
+Version 1.1.1
+
+Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any,
+   must include the following acknowledgment:
+
+  "This product includes software developed by the Indiana University
+  Extreme! Lab (http://www.extreme.indiana.edu/)."
+
+Alternately, this acknowledgment may appear in the software itself,
+if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab"
+must not be used to endorse or promote products derived from this
+software without prior written permission. For written permission,
+please contact http://www.extreme.indiana.edu/.
+
+5. Products derived from this software may not use "Indiana Univeristy"
+name nor may "Indiana Univeristy" appear in their name, without prior
+written permission of the Indiana University.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================== 
+The following components are MIT Licensed 
+========================================================================
+
+SLF4J,log4j-over-slf4j, jcl-over-slf4j, slf4j-api,mockito-all-1.8.5,jopt-simple-3.2.jar
+    Containing Project URL: http://www.slf4j.org/
+
+Copyright (c) 2004-2008 QOS.ch
+ All rights reserved.
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+========================================================================
+
+For dom4j-1.6.1.jar:
+    Containing Project URL: http://dom4j.sourceforge.net/
+Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions of source code must retain copyright
+   statements and notices.  Redistributions must also contain a
+   copy of this document.
+ 
+2. Redistributions in binary form must reproduce the
+   above copyright notice, this list of conditions and the
+   following disclaimer in the documentation and/or other
+   materials provided with the distribution.
+ 
+3. The name "DOM4J" must not be used to endorse or promote
+   products derived from this Software without prior written
+   permission of MetaStuff, Ltd.  For written permission,
+   please contact dom4j-info@metastuff.com.
+ 
+4. Products derived from this Software may not be called "DOM4J"
+   nor may "DOM4J" appear in their names without prior written
+   permission of MetaStuff, Ltd. DOM4J is a registered
+   trademark of MetaStuff, Ltd.
+ 
+5. Due credit should be given to the DOM4J Project - 
+   http://www.dom4j.org
+ 
+THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+====================================================================================================
+
+For Bouncy Castle:
+    Containing Project URL: http://www.bouncycastle.org/
+
+Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
+
+Permission iss software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=======================================================================================================
+
+For: The International Components for Unicode (icu4j-2.6.1.jar)
+    Containing Project URL: http://site.icu-project.org/
+
+    Copyright (c) 1995-2009 International Business Machines Corporation
+    and others
+
+    All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, and/or sell copies of the Software, and to permit persons
+    to whom the Software is furnished to do so, provided that the above
+    copyright notice(s) and this permission notice appear in all copies
+    of the Software and that both the above copyright notice(s) and this
+    permission notice appear in supporting documentation.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+    IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+    BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+    OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+    SOFTWARE.
+
+    Except as contained in this notice, the name of a copyright holder shall
+    not be used in advertising or otherwise to promote the sale, use or other
+    dealings in this Software without prior written authorization of the
+    copyright holder.
+    
+====================================================================== 
+The following components are CDDL based License 
+======================================================================
+
+For activation-1.1.jar, jaxb-api-2.1.jar, mail-1.4.jar, junit, 
+Servlet Specification 2.5 API (servlet-api-2.5-6.1.14.jar),
+Classfish Jasper API (jsp-api-2.1-6.1.14.jar), and
+JSP2.1 Jasper implementation from Glassfish (jsp-2.1-6.1.14.jar), 
+Jersey from Glassfish (jersey-client-1.13.jar, jersey-core-1.13.jar,
+jersey-json-1.13.jar, jersey-multipart-1.13.jar) and JSP2.1 Jasper 
+implementation from Glassfish (jsp-2.1-6.1.14.jar),whirr-core-0.7.1.jar, whirr-hadoop-0.7.1.jar:
+ 
+NOTE: jersey is dual licensed (http://jersey.java.net/CDDL+GPL.html), 
+Apahce Airavata elects to include jersey in this distribution under the
+[CDDLv_1.0] license.
+
+    COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+    1. Definitions.
+
+    1.1. Contributor means each individual or entity that creates or
+    contributes to the creation of Modifications.
+
+    1.2. Contributor Version means the combination of the Original Software,
+    prior Modifications used by a Contributor (if any), and the Modifications
+    made by that particular Contributor.
+
+    1.3. Covered Software means (a) the Original Software, or
+    (b) Modifications, or (c) the combination of files containing Original
+    Software with files containing Modifications, in each case including
+    portions thereof.
+
+    1.4. Executable means the Covered Software in any form other than Source
+    Code.
+
+    1.5. Initial Developer means the individual or entity that first makes
+    Original Software available under this License.
+
+    1.6. Larger Work means a work which combines Covered Software or portions
+    thereof with code not governed by the terms of this License.
+
+    1.7. License means this document.
+
+    1.8. Licensable means having the right to grant, to the maximum extent
+    possible, whether at the time of the initial grant or subsequently
+    acquired, any and all of the rights conveyed herein.
+
+    1.9. Modifications means the Source Code and Executable form of any of
+    the following: A. Any file that results from an addition to, deletion
+    from or modification of the contents of a file containing Original
+    Software or previous Modifications; B. Any new file that contains any
+    part of the Original Software or previous Modification; or C. Any new
+    file that is contributed or otherwise made available under the terms of
+    this License.
+
+    1.10. Original Software means the Source Code and Executable form of
+    computer software code that is originally released under this License.
+
+    1.11. Patent Claims means any patent claim(s), now owned or hereafter
+    acquired, including without limitation, method, process, and apparatus
+    claims, in any patent Licensable by grantor.
+
+    1.12. Source Code means (a) the common form of computer software code in
+    which modifications are made and (b) associated documentation included in
+    or with such code.
+
+    1.13. You (or Your) means an individual or a legal entity exercising
+    rights under, and complying with all of the terms of, this License. For
+    legal entities, You includes any entity which controls, is controlled by,
+    or is under common control with You. For purposes of this definition,
+    control means (a) the power, direct or indirect, to cause the direction
+    or management of such entity, whether by contract or otherwise, or
+    (b) ownership of more than fifty percent (50%) of the outstanding shares
+    or beneficial ownership of such entity.
+
+    2. License Grants.
+
+    2.1. The Initial Developer Grant. Conditioned upon Your compliance with
+    Section 3.1 below and subject to third party intellectual property
+    claims, the Initial Developer hereby grants You a world-wide,
+    royalty-free, non-exclusive license:
+
+    (a) under intellectual property rights (other than patent or trademark)
+        Licensable by Initial Developer, to use, reproduce, modify, display,
+        perform, sublicense and distribute the Original Software (or portions
+        thereof), with or without Modifications, and/or as part of a Larger
+        Work; and
+
+    (b) under Patent Claims infringed by the making, using or selling of
+        Original Software, to make, have made, use, practice, sell, and offer
+        for sale, and/or otherwise dispose of the Original Software (or
+        portions thereof);
+
+    (c) The licenses granted in Sections 2.1(a) and (b) are effective on the
+        date Initial Developer first distributes or otherwise makes the
+        Original Software available to a third party under the terms of
+        this License;
+
+    (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
+        (1) for code that You delete from the Original Software, or (2) for
+        infringements caused by: (i) the modification of the Original
+        Software, or (ii) the combination of the Original Software with other
+        software or devices.
+
+    2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1
+    below and subject to third party intellectual property claims, each
+    Contributor hereby grants You a world-wide, royalty-free, non-exclusive
+    license:
+
+    (a) under intellectual property rights (other than patent or trademark)
+        Licensable by Contributor to use, reproduce, modify, display, perform,
+        sublicense and distribute the Modifications created by such
+        Contributor (or portions thereof), either on an unmodified basis,
+        with other Modifications, as Covered Software and/or as part of a
+        Larger Work; and
+
+    (b) under Patent Claims infringed by the making, using, or selling of
+        Modifications made by that Contributor either alone and/or in
+        combination with its Contributor Version (or portions of such
+        combination), to make, use, sell, offer for sale, have made, and/or
+        otherwise dispose of: (1) Modifications made by that Contributor (or
+        portions thereof); and (2) the combination of Modifications made by
+        that Contributor with its Contributor Version (or portions of such
+        combination).
+
+    (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on
+        the date Contributor first distributes or otherwise makes the
+        Modifications available to a third party.
+
+    (d) Notwithstanding Section 2.2(b) above, no patent license is granted:
+        (1) for any code that Contributor has deleted from the Contributor
+        Version; (2) for infringements caused by: (i) third party
+        modifications of Contributor Version, or (ii) the combination of
+        Modifications made by that Contributor with other software (except
+        as part of the Contributor Version) or other devices; or (3) under
+        Patent Claims infringed by Covered Software in the absence of
+        Modifications made by that Contributor.
+
+    3. Distribution Obligations.
+
+    3.1. Availability of Source Code. Any Covered Software that You distribute
+    or otherwise make available in Executable form must also be made available
+    in Source Code form and that Source Code form must be distributed only
+    under the terms of this License. You must include a copy of this License
+    with every copy of the Source Code form of the Covered Software You
+    distribute or otherwise make available. You must inform recipients of any
+    such Covered Software in Executable form as to how they can obtain such
+    Covered Software in Source Code form in a reasonable manner on or through
+    a medium customarily used for software exchange.
+
+    3.2. Modifications. The Modifications that You create or to which You
+    contribute are governed by the terms of this License. You represent that
+    You believe Your Modifications are Your original creation(s) and/or You
+    have sufficient rights to grant the rights conveyed by this License.
+
+    3.3. Required Notices. You must include a notice in each of Your
+    Modifications that identifies You as the Contributor of the Modification.
+    You may not remove or alter any copyright, patent or trademark notices
+    contained within the Covered Software, or any notices of licensing or any
+    descriptive text giving attribution to any Contributor or the Initial
+    Developer.
+
+    3.4. Application of Additional Terms. You may not offer or impose any
+    terms on any Covered Software in Source Code form that alters or restricts
+    the applicable version of this License or the recipients rights hereunder.
+    You may choose to offer, and to charge a fee for, warranty, support,
+    indemnity or liability obligations to one or more recipients of Covered
+    Software. However, you may do so only on Your own behalf, and not on
+    behalf of the Initial Developer or any Contributor. You must make it
+    absolutely clear that any such warranty, support, indemnity or liability
+    obligation is offered by You alone, and You hereby agree to indemnify the
+    Initial Developer and every Contributor for any liability incurred by the
+    Initial Developer or such Contributor as a result of warranty, support,
+    indemnity or liability terms You offer.
+
+    3.5. Distribution of Executable Versions. You may distribute the
+    Executable form of the Covered Software under the terms of this License or
+    under the terms of a license of Your choice, which may contain terms
+    different from this License, provided that You are in compliance with the
+    terms of this License and that the license for the Executable form does
+    not attempt to limit or alter the recipients rights in the Source Code
+    form from the rights set forth in this License. If You distribute the
+    Covered Software in Executable form under a different license, You must
+    make it absolutely clear that any terms which differ from this License
+    are offered by You alone, not by the Initial Developer or Contributor.
+    You hereby agree to indemnify the Initial Developer and every Contributor
+    for any liability incurred by the Initial Developer or such Contributor as
+    a result of any such terms You offer.
+
+    3.6. Larger Works. You may create a Larger Work by combining Covered
+    Software with other code not governed by the terms of this License and
+    distribute the Larger Work as a single product. In such a case, You must
+    make sure the requirements of this License are fulfilled for the Covered
+    Software.
+
+    4. Versions of the License.
+
+    4.1. New Versions. Sun Microsystems, Inc. is the initial license steward
+    and may publish revised and/or new versions of this License from time to
+    time. Each version will be given a distinguishing version number. Except
+    as provided in Section 4.3, no one other than the license steward has the
+    right to modify this License.
+
+    4.2. Effect of New Versions. You may always continue to use, distribute
+    or otherwise make the Covered Software available under the terms of the
+    version of the License under which You originally received the Covered
+    Software. If the Initial Developer includes a notice in the Original
+    Software prohibiting it from being distributed or otherwise made
+    available under any subsequent version of the License, You must
+    distribute and make the Covered Software available under the terms of
+    the version of the License under which You originally received the
+    Covered Software. Otherwise, You may also choose to use, distribute or
+    otherwise make the Covered Software available under the terms of any
+    subsequent version of the License published by the license steward.
+
+    4.3. Modified Versions. When You are an Initial Developer and You want
+    to create a new license for Your Original Software, You may create and
+    use a modified version of this License if You: (a) rename the license and
+    remove any references to the name of the license steward (except to note
+    that the license differs from this License); and (b) otherwise make it
+    clear that the license contains terms which differ from this License.
+
+    5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE
+    ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+    IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+    SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
+    OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
+    THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
+    DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER
+    CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
+    CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF
+    THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER
+    EXCEPT UNDER THIS DISCLAIMER.
+
+    6. TERMINATION.
+
+    6.1. This License and the rights granted hereunder will terminate
+    automatically if You fail to comply with terms herein and fail to cure
+    such breach within 30 days of becoming aware of the breach. Provisions
+    which, by their nature, must remain in effect beyond the termination of
+    this License shall survive.
+
+    6.2. If You assert a patent infringement claim (excluding declaratory
+    judgment actions) against Initial Developer or a Contributor (the Initial
+    Developer or Contributor against whom You assert such claim is referred
+    to as Participant) alleging that the Participant Software (meaning the
+    Contributor Version where the Participant is a Contributor or the
+    Original Software where the Participant is the Initial Developer)
+    directly or indirectly infringes any patent, then any and all rights
+    granted directly or indirectly to You by such Participant, the Initial
+    Developer (if the Initial Developer is not the Participant) and all
+    Contributors under Sections 2.1 and/or 2.2 of this License shall, upon
+    60 days notice from Participant terminate prospectively and automatically
+    at the expiration of such 60 day notice period, unless if within such
+    60 day period You withdraw Your claim with respect to the Participant
+    Software against such Participant either unilaterally or pursuant to a
+    written agreement with Participant.
+
+    6.3. In the event of termination under Sections 6.1 or 6.2 above, all end
+    user licenses that have been validly granted by You or any distributor
+    hereunder prior to termination (excluding licenses granted to You by any
+    distributor) shall survive termination.
+
+    7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+    THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL
+    YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+    COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY
+    PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF
+    ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS,
+    LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY
+    AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
+    BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+    LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+    RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+    PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+    OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
+    AND LIMITATION MAY NOT APPLY TO YOU.
+
+    8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item,
+    as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of
+    commercial computer software (as that term is defined at 48 C.F.R.
+    252.227-7014(a)(1)) and commercial computer software documentation as such
+    terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R.
+    12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
+    Government End Users acquire Covered Software with only those rights set
+    forth herein. This U.S. Government Rights clause is in lieu of, and
+    supersedes, any other FAR, DFAR, or other clause or provision that
+    addresses Government rights in computer software under this License.
+
+    9. MISCELLANEOUS. This License represents the complete agreement
+    concerning subject matter hereof. If any provision of this License is
+    held to be unenforceable, such provision shall be reformed only to the
+    extent necessary to make it enforceable. This License shall be governed
+    by the law of the jurisdiction specified in a notice contained within
+    the Original Software (except to the extent applicable law, if any,
+    provides otherwise), excluding such jurisdictions conflict-of-law
+    provisions. Any litigation relating to this License shall be subject to
+    the jurisdiction of the courts located in the jurisdiction and venue
+    specified in a notice contained within the Original Software, with the
+    losing party responsible for costs, including, without limitation, court
+    costs and reasonable attorneys fees and expenses. The application of the
+    United Nations Convention on Contracts for the International Sale of
+    Goods is expressly excluded. Any law or regulation which provides that
+    the language of a contract shall be construed against the drafter shall
+    not apply to this License. You agree that You alone are responsible for
+    compliance with the United States export administration regulations (and
+    the export control laws and regulation of any other countries) when You
+    use, distribute or otherwise make available any Covered Software.
+
+    10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the
+    Contributors, each party is responsible for claims and damages arising,
+    directly or indirectly, out of its utilization of rights under this
+    License and You agree to work with Initial Developer and Contributors
+    to distribute such responsibility on an equitable basis. Nothing herein
+    is intended or shall be deemed to constitute any admission of liability.
+
+    NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
+    LICENSE (CDDL) The code released under the CDDL shall be governed by the
+    laws of the State of California (excluding conflict-of-law provisions).
+    Any litigation relating to this License shall be subject to the
+    jurisdiction of the Federal Courts of the Northern District of California
+    and the state courts of the State of California, with venue lying in
+    Santa Clara County, California.
+
+
+==============================================================================
+
+For: jaxb-xjc-2.1.7.jar
+    Containing Project URL: 
+
+Copyright (c) 2004 Kohsuke Kawaguchi
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=============================================================================== 
+The following components are BSD Licensed 
+=============================================================================== 
+
+For jibx-bind-1.2.1.jar,jibx-run-1.2.1.jar, antlr-2.7.7.jar,hamcrest-all-1.1.jar,whirr-core-0.7.1.jar, whirr-hadoop-0.7.1.jar:
+    Containing Project URL: http://jibx.sourceforge.net, http://www.antlr.org/
+
+Copyright (c) 2003-2007, Dennis M. Sosnoski
+All rights reserved.
+
+Copyright (c) 2010 Terence Parr
+All rights reserved.
+
+[The BSD License]
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of JiBX nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==============================================================================
+
+For YFilter:
+    Containing Project URL: http://yfilter.cs.umass.edu/
+
+YFilter 1.0 COPYRIGHT, LICENSE and DISCLAIMER
+
+Copyright (c) 2002, 2004, Regents of the University of California All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, this
+    list of conditions and the following disclaimer in the documentation and/or other
+    materials provided with the distribution.
+    * Neither the name of the University of California at Berkeley nor the names of
+    its contributors may be used to endorse or promote products derived from this
+    software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==========================================================================================
+For jaxen-1.1.1.jar:
+    Containing Project URL: http://jaxen.codehaus.org/
+
+ Copyright 2003-2006 The Werken Company. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+  * Neither the name of the Jaxen Project nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================== 
+The following components are CPL Licensed 
+=============================================================================== 
+
+For wsdl4j-1.6.2.jar:
+    Containing Project URL: http://sourceforge.net/projects/wsdl4j/
+
+Common Public License Version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC\u2028LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM\u2028CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+1. DEFINITIONS
+"Contribution" means:
+a) in the case of the initial Contributor, the initial code and\u2028documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are\u2028distributed by that particular Contributor. A Contribution 'originates' from a\u2028Contributor if it was added to the Program by such Contributor itself or anyone\u2028acting on such Contributor's behalf. Contributions do not include additions to\u2028the Program which: (i) are separate modules of software distributed in\u2028conjunction with the Program under their own license agreement, and (ii) are not\u2028derivative works of the Program.
+"Contributor" means any person or entity that distributes the Program.
+"Licensed Patents " mean patent claims licensable by a Contributor which are\u2028necessarily infringed by the use or sale of its Contribution alone or when\u2028combined with the Program.
+"Program" means the Contributions distributed in accordance with this Agreement.
+"Recipient" means anyone who receives the Program under this Agreement,\u2028including all Contributors.
+2. GRANT OF RIGHTS
+a) Subject to the terms of this Agreement, each Contributor hereby grants\u2028Recipient a non-exclusive, worldwide, royalty-free copyright license to\u2028reproduce, prepare derivative works of, publicly display, publicly perform,\u2028distribute and sublicense the Contribution of such Contributor, if any, and such\u2028derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants\u2028Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed\u2028Patents to make, use, sell, offer to sell, import and otherwise transfer the\u2028Contribution of such Contributor, if any, in source code and object code form.\u2028This patent license shall apply to the combination of the Contribution and the\u2028Program if, at the time the Contribution is added by the Contributor, such\u2028addition of the Contribution causes such combination to be covered by the\u2028Licensed Patents. The patent license shall not apply to any other combinations\u2028which include the Contribution. No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants the licenses\u2028to its Contributions set forth herein, no assurances are provided by any\u2028Contributor that the Program does not infringe the patent or other intellectual\u2028property rights of any other entity. Each Contributor disclaims any liability to\u2028Recipient for claims brought by any other entity based on infringement of\u2028intellectual property rights or otherwise. As a condition to exercising the\u2028rights and licenses granted hereunder, each Recipient hereby assumes sole\u2028responsibility to secure any other intellectual property rights needed, if any.\u2028For example, if a third party patent license is required to allow Recipient to\u2028distribute the Program, it is Recipient's responsibility to acquire that license\u2028before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient\u2028copyright rights in its Contribution, if any, to grant the copyright license set\u2028forth in this Agreement.
+3. REQUIREMENTS
+A Contributor may choose to distribute the Program in object code form under its\u2028own license agreement, provided that:
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and\u2028conditions, express and implied, including warranties or conditions of title and\u2028non-infringement, and implied warranties or conditions of merchantability and\u2028fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for\u2028damages, including direct, indirect, special, incidental and consequential\u2028damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement are offered\u2028by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such\u2028Contributor, and informs licensees how to obtain it in a reasonable manner on or\u2028through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of the Program.
+Contributors may not remove or alter any copyright notices contained within the\u2028Program.
+Each Contributor must identify itself as the originator of its Contribution, if\u2028any, in a manner that reasonably allows subsequent Recipients to identify the\u2028originator of the Contribution.
+4. COMMERCIAL DISTRIBUTION
+Commercial distributors of software may accept certain responsibilities with\u2028respect to end users, business partners and the like. While this license is\u2028intended to facilitate the commercial use of the Program, the Contributor who\u2028includes the Program in a commercial product offering should do so in a manner\u2028which does not create potential liability for other Contributors. Therefore, if\u2028a Contributor includes the Program in a commercial product offering, such\u2028Contributor ("Commercial Contributor") hereby agrees to defend and indemnify\u2028every other Contributor ("Indemnified Contributor") against any losses, damages\u2028and costs (collectively "Losses") arising from claims, lawsuits and other legal\u2028actions brought by a third party against the Indemnified Contributor to the\u2028extent caused by the acts or omissions of such Commercial Contributor in\u2028connection with its distribution of the Program in a commercial product\u2028offering. The obligations in this section do not ap
 ply to any claims or Losses\u2028relating to any actual or alleged intellectual property infringement. In order\u2028to qualify, an Indemnified Contributor must: a) promptly notify the Commercial\u2028Contributor in writing of such claim, and b) allow the Commercial Contributor to\u2028control, and cooperate with the Commercial Contributor in, the defense and any\u2028related settlement negotiations. The Indemnified Contributor may participate in\u2028any such claim at its own expense.
+For example, a Contributor might include the Program in a commercial product\u2028offering, Product X. That Contributor is then a Commercial Contributor. If that\u2028Commercial Contributor then makes performance claims, or offers warranties\u2028related to Product X, those performance claims and warranties are such\u2028Commercial Contributor's responsibility alone. Under this section, the\u2028Commercial Contributor would have to defend claims against the other\u2028Contributors related to those performance claims and warranties, and if a court\u2028requires any other Contributor to pay any damages as a result, the Commercial\u2028Contributor must pay those damages.
+5. NO WARRANTY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN\u2028"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR\u2028IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,\u2028NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each\u2028Recipient is solely responsible for determining the appropriateness of using and\u2028distributing the Program and assumes all risks associated with its exercise of\u2028rights under this Agreement, including but not limited to the risks and costs of\u2028program errors, compliance with applicable laws, damage to or loss of data,\u2028programs or equipment, and unavailability or interruption of operations.
+6. DISCLAIMER OF LIABILITY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY\u2028CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,\u2028SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST\u2028PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\u2028STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\u2028OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS\u2028GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+7. GENERAL
+If any provision of this Agreement is invalid or unenforceable under applicable\u2028law, it shall not affect the validity or enforceability of the remainder of the\u2028terms of this Agreement, and without further action by the parties hereto, such\u2028provision shall be reformed to the minimum extent necessary to make such\u2028provision valid and enforceable.
+If Recipient institutes patent litigation against a Contributor with respect to\u2028a patent applicable to software (including a cross-claim or counterclaim in a\u2028lawsuit), then any patent licenses granted by that Contributor to such Recipient\u2028under this Agreement shall terminate as of the date such litigation is filed. In\u2028addition, if Recipient institutes patent litigation against any entity\u2028(including a cross-claim or counterclaim in a lawsuit) alleging that the Program\u2028itself (excluding combinations of the Program with other software or hardware)\u2028infringes such Recipient's patent(s), then such Recipient's rights granted under\u2028Section 2(b) shall terminate as of the date such litigation is filed.
+All Recipient's rights under this Agreement shall terminate if it fails to\u2028comply with any of the material terms or conditions of this Agreement and does\u2028not cure such failure in a reasonable period of time after becoming aware of\u2028such noncompliance. If all Recipient's rights under this Agreement terminate,\u2028Recipient agrees to cease use and distribution of the Program as soon as\u2028reasonably practicable. However, Recipient's obligations under this Agreement\u2028and any licenses granted by Recipient relating to the Program shall continue and\u2028survive.
+Everyone is permitted to copy and distribute copies of this Agreement, but in\u2028order to avoid inconsistency the Agreement is copyrighted and may only be\u2028modified in the following manner. The Agreement Steward reserves the right to\u2028publish new versions (including revisions) of this Agreement from time to time.\u2028No one other than the Agreement Steward has the right to modify this Agreement.\u2028IBM is the initial Agreement Steward. IBM may assign the responsibility to serve\u2028as the Agreement Steward to a suitable separate entity. Each new version of the\u2028Agreement will be given a distinguishing version number. The Program (including\u2028Contributions) may always be distributed subject to the version of the Agreement\u2028under which it was received. In addition, after a new version of the Agreement\u2028is published, Contributor may elect to distribute the Program (including its\u2028Contributions) under the new version. Except as expressly stated in Sections\u20282(a) and 2(b) above, Recipie
 nt receives no rights or licenses to the\u2028intellectual property of any Contributor under this Agreement, whether\u2028expressly, by implication, estoppel or otherwise. All rights in the Program not\u2028expressly granted under this Agreement are reserved.
+This Agreement is governed by the laws of the State of New York and the\u2028intellectual property laws of the United States of America. No party to this\u2028Agreement will bring a legal action under this Agreement more than one year\u2028after the cause of action arose. Each party waives its rights to a jury trial in\u2028any resulting litigation.
+
+==========================================================================================
+==========================================================================================
+
+For puretls:
+    Containing Project URL: 
+
+  This package is a SSLv3/TLS implementation written by Eric Rescorla
+   <ek...@rtfm.com> and licensed by Claymore Systems, Inc.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+   3. Neither the name of Claymore Systems, Inc. nor the name of Eric
+      Rescorla may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+   THIS SOFTWARE IS PROVIDED BY CLAYMORE SYSTEMS AND CONTRIBUTORS ``AS IS'' AND
+   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+   SUCH DAMAGE.
+
+==============================================================================
+
+For xml-api,woden-api-1.0M8.jar,woden-impl-dom-1.0M8.jar:
+    Containing Project URL: 
+
+For the W3C schema and DTD files in the org.apache.woden.resolver package:
+
+W3C� DOCUMENT LICENSE
+http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
+
+Public documents on the W3C site are provided by the copyright holders under
+the following license. By using and/or copying this document, or the W3C
+document from which this statement is linked, you (the licensee) agree that
+you have read, understood, and will comply with the following terms and
+conditions:
+
+Permission to copy, and distribute the contents of this document, or the W3C
+document from which this statement is linked, in any medium for any purpose
+and without fee or royalty is hereby granted, provided that you include the
+following on ALL copies of the document, or portions thereof, that you use:
+
+  1. A link or URL to the original W3C document.
+  2. The pre-existing copyright notice of the original author, or if it
+     doesn't exist, a notice (hypertext is preferred, but a textual
+     representation is permitted) of the form: "Copyright � [$date-of-document]
+     World Wide Web Consortium, (Massachusetts Institute of Technology,
+     European Research Consortium for Informatics and Mathematics, Keio
+     University). All Rights Reserved.
+     http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231"
+  3. If it exists, the STATUS of the W3C document.
+
+When space permits, inclusion of the full text of this NOTICE should be
+provided. We request that authorship attribution be provided in any software,
+documents, or other items or products that you create pursuant to the
+implementation of the contents of this document, or any portion thereof.
+
+No right to create modifications or derivatives of W3C documents is granted
+pursuant to this license. However, if additional requirements (documented in
+the Copyright FAQ) are satisfied, the right to create modifications or
+derivatives is sometimes granted by the W3C to individuals complying with
+those requirements.
+
+THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE
+FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
+INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
+
+The name and trademarks of copyright holders may NOT be used in advertising
+or publicity pertaining to this document or its contents without specific,
+written prior permission. Title to copyright in this document will at all
+times remain with copyright holders.
+
+This formulation of W3C's notice and license became active on December 31 2002. 
+This version removes the copyright ownership notice such that this license can 
+be used with materials other than those owned by the W3C, reflects that ERCIM is 
+now a host of the W3C, includes references to this specific dated version of the 
+license, and removes the ambiguous grant of "use". Otherwise, this version is the 
+same as the previous version and is written so as to preserve the Free Software 
+Foundation's assessment of GPL compatibility and OSI's certification under the 
+Open Source Definition. Please see our Copyright FAQ for common questions about 
+using materials from our site, including specific terms and conditions for packages 
+like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed 
+o site-policy@w3.org.
+
+Joseph Reagle <si...@w3.org>
+ 
+Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $ 
+
+==========================================================================================
+
+XML API library, org.w3c classes (xml-apis)
+    Containing Project URL: 
+
+    DOM Java Language Binding:
+    http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/java-binding.html
+
+    W3C IPR SOFTWARE NOTICE
+    Copyright (C) 2000 World Wide Web Consortium, (Massachusetts Institute of
+    Technology, Institut National de Recherche en Informatique et en
+    Automatique, Keio University). All Rights Reserved.
+
+    The DOM bindings are published under the W3C Software Copyright Notice
+    and License. The software license requires "Notice of any changes or
+    modifications to the W3C files, including the date changes were made."
+    Consequently, modified versions of the DOM bindings must document that
+    they do not conform to the W3C standard; in the case of the IDL binding,
+    the pragma prefix can no longer be 'w3c.org'; in the case of the Java
+    binding, the package names can no longer be in the 'org.w3c' package.
+
+    Note: The original version of the W3C Software Copyright Notice and
+    License could be found at
+    http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+    Copyright (C) 1994-2000 World Wide Web Consortium, (Massachusetts
+    Institute of Technology, Institut National de Recherche en Informatique
+    et en Automatique, Keio University). All Rights Reserved.
+    http://www.w3.org/Consortium/Legal/
+
+    This W3C work (including software, documents, or other related items) is
+    being provided by the copyright holders under the following license. By
+    obtaining, using and/or copying this work, you (the licensee) agree that
+    you have read, understood, and will comply with the following terms and
+    conditions:
+
+    Permission to use, copy, and modify this software and its documentation,
+    with or without modification, for any purpose and without fee or royalty
+    is hereby granted, provided that you include the following on ALL copies
+    of the software and documentation or portions thereof, including
+    modifications, that you make:
+
+      1. The full text of this NOTICE in a location viewable to users of the
+         redistributed or derivative work.
+
+      2. Any pre-existing intellectual property disclaimers, notices, or
+         terms and conditions. If none exist, a short notice of the following
+         form (hypertext is preferred, text is permitted) should be used
+         within the body of any redistributed or derivative code:
+         "Copyright (C) [$date-of-software] World Wide Web Consortium,
+         (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved. http://www.w3.org/Consortium/Legal/"
+
+      3. Notice of any changes or modifications to the W3C files, including
+         the date changes were made. (We recommend you provide URIs to the
+         location from which the code is derived.)
+
+    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+    MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
+    NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+    PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+    ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+    OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+    DOCUMENTATION.
+
+    The name and trademarks of copyright holders may NOT be used in
+    advertising or publicity pertaining to the software without specific,
+    written prior permission. Title to copyright in this software and any
+    associated documentation will at all times remain with copyright holders.
+
+=============================================================================== 
+The following components come under the Eclipse Public 1.0 License 
+=============================================================================== 
+Eclipse JDT Core (core-3.1.1.jar)
+
+-AspectJ runtime (http://www.aspectj.org) org.aspectj:aspectjrt:jar:1.6.12
+    License: Eclipse Public License - v 1.0  (http://www.eclipse.org/legal/epl-v10.html)
+
+  Eclipse Public License - v 1.0
+
+    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+    THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+    1. DEFINITIONS
+
+    "Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and
+       documentation distributed under this Agreement, and
+
+    b) in the case of each subsequent Contributor:
+
+       i) changes to the Program, and
+
+       ii) additions to the Program;
+
+       where such changes and/or additions to the Program originate from and
+       are distributed by that particular Contributor. A Contribution
+       'originates' from a Contributor if it was added to the Program by
+       such Contributor itself or anyone acting on such Contributor's behalf.
+       Contributions do not include additions to the Program which: (i) are
+       separate modules of software distributed in conjunction with the
+       Program under their own license agreement, and (ii) are not derivative
+       works of the Program.
+
+    "Contributor" means any person or entity that distributes the Program.
+
+    "Licensed Patents " mean patent claims licensable by a Contributor which
+    are necessarily infringed by the use or sale of its Contribution alone or
+    when combined with the Program.
+
+    "Program" means the Contributions distributed in accordance with this
+    Agreement.
+
+    "Recipient" means anyone who receives the Program under this Agreement,
+    including all Contributors.
+
+    2. GRANT OF RIGHTS
+
+    a) Subject to the terms of this Agreement, each Contributor hereby grants
+       Recipient a non-exclusive, worldwide, royalty-free copyright license to
+       reproduce, prepare derivative works of, publicly display, publicly
+       perform, distribute and sublicense the Contribution of such
+       Contributor, if any, and such derivative works, in source code and
+       object code form.
+
+    b) Subject to the terms of this Agreement, each Contributor hereby grants
+       Recipient a non-exclusive, worldwide, royalty-free patent license under
+       Licensed Patents to make, use, sell, offer to sell, import and
+       otherwise transfer the Contribution of such Contributor, if any, in
+       source code and object code form. This patent license shall apply to
+       the combination of the Contribution and the Program if, at the time
+       the Contribution is added by the Contributor, such addition of the
+       Contribution causes such combination to be covered by the Licensed
+       Patents. The patent license shall not apply to any other combinations
+       which include the Contribution. No hardware per se is licensed hereunder.
+
+    c) Recipient understands that although each Contributor grants the
+       licenses to its Contributions set forth herein, no assurances are
+       provided by any Contributor that the Program does not infringe the
+       patent or other intellectual property rights of any other entity. Each
+       Contributor disclaims any liability to Recipient for claims brought by
+       any other entity based on infringement of intellectual property rights
+       or otherwise. As a condition to exercising the rights and licenses
+       granted hereunder, each Recipient hereby assumes sole responsibility
+       to secure any other intellectual property rights needed, if any. For
+       example, if a third party patent license is required to allow Recipient
+       to distribute the Program, it is Recipient's responsibility to acquire
+       that license before distributing the Program.
+
+    d) Each Contributor represents that to its knowledge it has sufficient
+       copyright rights in its Contribution, if any, to grant the copyright
+       license set forth in this Agreement.
+
+    3. REQUIREMENTS
+
+    A Contributor may choose to distribute the Program in object code form
+    under its own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+       i)   effectively disclaims on behalf of all Contributors all warranties
+            and conditions, express and implied, including warranties or
+            conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular
+            purpose;
+
+       ii)  effectively excludes on behalf of all Contributors all liability
+            for damages, including direct, indirect, special, incidental and
+            consequential damages, such as lost profits;
+
+       iii) states that any provisions which differ from this Agreement are
+            offered by that Contributor alone and not by any other party; and
+
+       iv)  states that source code for the Program is available from such
+            Contributor, and informs licensees how to obtain it in a
+            reasonable manner on or through a medium customarily used for
+            software exchange.
+
+    When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and
+
+    b) a copy of this Agreement must be included with each copy of the
+       Program.
+
+    Contributors may not remove or alter any copyright notices contained
+    within the Program.
+
+    Each Contributor must identify itself as the originator of its
+    Contribution, if any, in a manner that reasonably allows subsequent
+    Recipients to identify the originator of the Contribution.
+
+    4. COMMERCIAL DISTRIBUTION
+
+    Commercial distributors of software may accept certain responsibilities
+    with respect to end users, business partners and the like. While this
+    license is intended to facilitate the commercial use of the Program,
+    the Contributor who includes the Program in a commercial product offering
+    should do so in a manner which does not create potential liability for
+    other Contributors. Therefore, if a Contributor includes the Program in
+    a commercial product offering, such Contributor ("Commercial Contributor")
+    hereby agrees to defend and indemnify every other Contributor
+    ("Indemnified Contributor") against any losses, damages and costs
+    (collectively "Losses") arising from claims, lawsuits and other legal
+    actions brought by a third party against the Indemnified Contributor to
+    the extent caused by the acts or omissions of such Commercial Contributor
+    in connection with its distribution of the Program in a commercial
+    product offering. The obligations in this section do not apply to any
+    claims or Losses relating to any actual or alleged intellectual property
+    infringement. In order to qualify, an Indemnified Contributor must:
+    a) promptly notify the Commercial Contributor in writing of such claim,
+    and b) allow the Commercial Contributor to control, and cooperate with
+    the Commercial Contributor in, the defense and any related settlement
+    negotiations. The Indemnified Contributor may participate in any such
+    claim at its own expense.
+
+    For example, a Contributor might include the Program in a commercial
+    product offering, Product X. That Contributor is then a Commercial
+    Contributor. If that Commercial Contributor then makes performance claims,
+    or offers warranties related to Product X, those performance claims and
+    warranties are such Commercial Contributor's responsibility alone. Under
+    this section, the Commercial Contributor would have to defend claims
+    against the other Contributors related to those performance claims and
+    warranties, and if a court requires any other Contributor to pay any
+    damages as a result, the Commercial Contributor must pay those damages.
+
+    5. NO WARRANTY
+
+    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+    ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
+    EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
+    CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
+    PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
+    the appropriateness of using and distributing the Program and assumes all
+    risks associated with its exercise of rights under this Agreement ,
+    including but not limited to the risks and costs of program errors,
+    compliance with applicable laws, damage to or loss of data, programs or
+    equipment, and unavailability or interruption of operations.
+
+    6. DISCLAIMER OF LIABILITY
+
+    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+    ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+    WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+    DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+    HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+    7. GENERAL
+
+    If any provision of this Agreement is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of
+    the remainder of the terms of this Agreement, and without further action
+    by the parties hereto, such provision shall be reformed to the minimum
+    extent necessary to make such provision valid and enforceable.
+
+    If Recipient institutes patent litigation against any entity (including
+    a cross-claim or counterclaim in a lawsuit) alleging that the Program
+    itself (excluding combinations of the Program with other software or
+    hardware) infringes such Recipient's patent(s), then such Recipient's
+    rights granted under Section 2(b) shall terminate as of the date such
+    litigation is filed.
+
+    All Recipient's rights under this Agreement shall terminate if it fails
+    to comply with any of the material terms or conditions of this Agreement
+    and does not cure such failure in a reasonable period of time after
+    becoming aware of such noncompliance. If all Recipient's rights under
+    this Agreement terminate, Recipient agrees to cease use and distribution
+    of the Program as soon as reasonably practicable. However, Recipient's
+    obligations under this Agreement and any licenses granted by Recipient
+    relating to the Program shall continue and survive.
+
+    Everyone is permitted to copy and di

<TRUNCATED>

[11/48] airavata git commit: adding registry refactoring effort module

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
new file mode 100644
index 0000000..07f8244
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
@@ -0,0 +1,27 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.utils;
+
+@FunctionalInterface
+public interface Committer<T, R>  {
+
+    R commit(T t);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
new file mode 100644
index 0000000..382d66b
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.*;
+import java.util.HashMap;
+import java.util.Map;
+
+public class JPAUtils {
+    private final static Logger logger = LoggerFactory.getLogger(JPAUtils.class);
+    private static final String PERSISTENCE_UNIT_NAME = "airavata_catalog";
+    @PersistenceUnit(unitName = "airavata_catalog")
+    protected static EntityManagerFactory factory;
+    @PersistenceContext(unitName = "airavata_catalog")
+    private static EntityManager entityManager;
+
+    public static EntityManager getEntityManager(){
+        if (factory == null) {
+            //FIXME
+            String connectionProperties = "DriverClassName=com.mysql.jdbc.Driver," +
+                    "Url=jdbc:mysql://localhost:3306/airavata_catalog," +
+                    "Username=root," +
+                    "Password=";
+            logger.info(connectionProperties);
+            Map<String, String> properties = new HashMap<String, String>();
+            properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");
+            properties.put("openjpa.ConnectionProperties", connectionProperties);
+            properties.put("openjpa.DynamicEnhancementAgent", "true");
+            properties.put("openjpa.RuntimeUnenhancedClasses", "warn");
+            properties.put("openjpa.RemoteCommitProvider", "sjvm");
+            properties.put("openjpa.Log", "DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
+            properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
+            properties.put("openjpa.jdbc.QuerySQLCache", "false");
+            properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72," +
+                    " PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000,  autoReconnect=true");
+            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
+        }
+
+        entityManager = factory.createEntityManager();
+        return entityManager;
+    }
+
+    public static <R> R execute(Committer<EntityManager, R> committer){
+        EntityManager entityManager = JPAUtils.getEntityManager();
+        try {
+            entityManager.getTransaction().begin();
+            R r = committer.commit(entityManager);
+            entityManager.getTransaction().commit();
+            return  r;
+        }finally {
+            if (entityManager != null && entityManager.isOpen()) {
+                if (entityManager.getTransaction().isActive()) {
+                    entityManager.getTransaction().rollback();
+                }
+                entityManager.close();
+            }
+        }
+    }
+
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
new file mode 100644
index 0000000..9189460
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
@@ -0,0 +1,39 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.utils;
+
+import org.dozer.DozerBeanMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ObjectMapperSingleton extends DozerBeanMapper{
+    private final static Logger logger = LoggerFactory.getLogger(ObjectMapperSingleton.class);
+
+    private static ObjectMapperSingleton instance;
+
+    private ObjectMapperSingleton(){}
+
+    public static ObjectMapperSingleton getInstance(){
+        if(instance == null)
+            instance = new ObjectMapperSingleton();
+        return instance;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..8c6bddb
--- /dev/null
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+* -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+    <persistence-unit name="airavata_catalog">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity</class>
+        <class>org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity</class>
+        <class>org.apache.airavata.registry.core.entities.workspacecatalog.NSFDemographicsEntity</class>
+        <class>org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity</class>
+        <class>org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    </persistence-unit>
+</persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
new file mode 100644
index 0000000..95b7c54
--- /dev/null
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -0,0 +1,110 @@
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT(
+    EXPERIMENT_ID VARCHAR (255),
+    PROJECT_ID VARCHAR (255),
+    GATEWAY_ID VARCHAR (255),
+    EXPERIMENT_TYPE VARCHAR (255),
+    USER_ID VARCHAR (255),
+    EXPERIMENT_NAME VARCHAR (255),
+    CREATION_TIME BIGINT,
+    DESCRIPTION VARCHAR (255),
+    EXECUTION_ID VARCHAR (255),
+    GATEWAY_EXECUTION_ID VARCHAR (255),
+    GATEWAY_INSTANCE_ID VARCHAR (255),
+    ENABLE_EMAIL_NOTIFICATION TINYINT,
+    PRIMARY KEY (EXPERIMENT_ID),
+    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID),
+    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID),
+    FOREIGN KEY (USER_ID) REFERENCES USER_PROFILE(USER_ID)
+)
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_EMAIL (
+    EXPERIMENT_ID VARCHAR (255),
+    EMAIL VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID, EMAIL),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS USER_CONFIGURATION(
+    EXPERIMENT_ID VARCHAR (255),
+    AIRAVATA_AUTO_SCHEDULE TINYINT,
+    OVERRIDE_MANUAL_SCHEDULED_PARAMS TINYINT,
+    THROTTLE_RESOURCE TINYINT,
+    USER_DN VARCHAR (255),
+    GENERATE_CERT TINYINT,
+    STORAGE_ID VARCHAR (255),
+    EXPERIMENT_DATA_DIR VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+)
+
+CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_SCHEDULING(
+    EXPERIMENT_ID VARCHAR (255),
+    RESOURCE_HOST_ID VARCHAR (255),
+    CPU_COUNT INT,
+    NODE_COUNT INT,
+    NUMBER_OF_THREADS INT,
+    QUEUE_NAME VARCHAR (255),
+    WALL_TIME_LIMIT INT,
+    TOTAL_PHYSICAL_MEMORY INT,
+    CHESSIS_NUMBER VARCHAR (255),
+    STATIC_WORKING_DIRECTORY VARCHAR (255),
+    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
+    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
+    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES USER_CONFIGURATION(EXPERIMENT_ID)
+)
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_INPUT(
+    EXPERIMENT_ID VARCHAR (255),
+    INPUT_NAME VARCHAR (255),
+    INPUT_VALUE VARCHAR (255),
+    INPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    STANDARD_INPUT TINYINT,
+    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
+    METADATA VARCHAR (4096),
+    INPUT_ORDER INT,
+    REQUIRED TINYINT,
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT,
+    DATA_STAGED TINYINT,
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID,INPUT_NAME),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
+)
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_OUTPUT(
+    EXPERIMENT_ID VARCHAR (255),
+    OUTPUT_NAME VARCHAR (255),
+    OUTPUT_VALUE VARCHAR (255),
+    OUTPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT (255),
+    REQUIRED TINYINT,
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT,
+    DATA_MOVEMENT TINYINT,
+    LOCATION VARCHAR (255),
+    SEARCH_QUERY VARCHAR (255),
+    OUTPUT_STREAMING TINYINT,
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID,OUTPUT_NAME),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
+)
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR(
+    ERROR_ID VARCHAR (255),
+    EXPERIMENT_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    ACTUAL_ERROR_MESSAGE VARCHAR (255),
+    USER_FRIENDLY_MESSAGE VARCHAR (255),
+    TRANSIENT_OR_PERSISTENT TINYINT,
+    PRIMARY KEY (ERROR_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
+)
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID(
+    ERROR_ID VARCHAR (255),
+    ROOT_CAUSE_ERROR_ID VARCHAR (255),
+    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
+    FOREIGN KEY(ERROR_ID) REFERENCES EXPERIMENT_ERROR(ERROR_ID)
+)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
new file mode 100644
index 0000000..4ea7cd2
--- /dev/null
+++ b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
@@ -0,0 +1,125 @@
+
+CREATE TABLE IF NOT  EXISTS GATEWAY(
+    GATEWAY_ID VARCHAR (255),
+    GATEWAY_NAME VARCHAR (255),
+    GATEWAY_DOMAIN VARCHAR (255),
+    EMAIL_ADDRESS VARCHAR (255),
+    GATEWAY_APPROVAL_STATUS VARCHAR (255),
+    GATEWAY_ACRONYM VARCHAR (255),
+    GATEWAY_URL VARCHAR (255),
+    GATEWAY_PUBLIC_ABSTRACT TEXT,
+    REVIEW_PROPOSAL_DESCRIPTION TEXT,
+    GATEWAY_ADMIN_FIRST_NAME VARCHAR(255),
+    GATEWAY_ADMIN_LAST_NAME VARCHAR(255),
+    GATEWAY_ADMIN_EMAIL VARCHAR(255),
+    IDENTITY_SERVER_USERNAME VARCHAR(255),
+    IDENTITY_SERVER_PASSWORD_TOKEN VARCHAR(255),
+    DECLINED_REASON VARCHAR(255),
+    OAUTH_CLIENT_ID VARCHAR(255),
+    OAUTH_CLIENT_SECRET VARCHAR(255),
+    REQUEST_CREATION_TIME BIGINT,
+    REQUESTER_USERNAME VARCHAR(255),
+    PRIMARY KEY (GATEWAY_ID)
+);
+
+CREATE TABLE IF NOT EXISTS NOTIFICATION (
+    NOTIFICATION_ID VARCHAR (255),
+    GATEWAY_ID VARCHAR (255),
+    TITLE VARCHAR (255),
+    NOTIFICATION_MESSAGE TEXT,
+    CREATION_TIME BIGINT,
+    PUBLISHED_TIME BIGINT,
+    EXPIRATION_TIME BIGINT,
+    PRIORITY VARCHAR (255),
+    PRIMARY KEY (NOTIFICATION_ID),
+    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS USER_PROFILE (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    USER_ID VARCHAR (255),
+    GATEWAY_ID VARCHAR (255),
+    USER_MODEL_VERSION VARCHAR (255),
+    USER_NAME VARCHAR (255),
+    ORCID_ID VARCHAR (255),
+    COUNTRY VARCHAR (255),
+    HOME_ORGANIZATION VARCHAR (255),
+    ORIGINATION_AFFILIATION VARCHAR (255),
+    CREATION_TIME BIGINT,
+    LAST_ACCESS_TIME BIGINT,
+    VALID_UNTIL BIGINT,
+    STATE VARCHAR (255),
+    COMMENTS TEXT,
+    GPG_KEY VARCHAR (8192),
+    TIME_ZONE VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
+    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID)
+);
+
+CREATE TABLE IF NOT EXISTS USER_PROFILE_EMAIL (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    EMAIL VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS USER_PROFILE_PHONE (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    PHONE VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS USER_PROFILE_NATIONALITY (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    NATIONALITY VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS USER_PROFILE_LABELED_URI (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    LABELED_URI VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    GENDER VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_ETHNICITY (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    ETHNICITY VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_RACE (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    RACE VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_DISABILITY (
+    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
+    DISABILITY VARCHAR (255),
+    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ),
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROJECT(
+    PROJECT_ID VARCHAR (255),
+    OWNER VARCHAR (255),
+    GATEWAY_ID VARCHAR (255),
+    PROJECT_NAME VARCHAR (255),
+    DESCRIPTION VARCHAR (255),
+    CREATION_TIME BIGINT,
+    PRIMARY KEY (PROJECT_ID),
+    FOREIGN KEY(OWNER) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID),
+    FOREIGN KEY(GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID)
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ad06b474/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
new file mode 100644
index 0000000..3561d5a
--- /dev/null
+++ b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories;
+
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
+import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.UUID;
+
+public class RepositoryTest {
+    private final static Logger logger = LoggerFactory.getLogger(RepositoryTest.class);
+
+    @Test
+    public void test(){
+        Gateway gateway = new Gateway();
+        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
+        gateway.setGatewayId("test.com" + System.currentTimeMillis());
+        gateway.setDomain("test.com");
+
+        GatewayRepository gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
+        gateway = gatewayRepository.create(gateway);
+        Assert.assertTrue(!gateway.getGatewayId().isEmpty());
+
+        Notification notification = new Notification();
+        notification.setGatewayId(gateway.getGatewayId());
+        notification.setNotificationId(UUID.randomUUID().toString());
+
+        NotificationRepository notificationRepository = new NotificationRepository(Notification.class, NotificationEntity.class);
+        notificationRepository.create(notification);
+
+        notificationRepository.get(notification.getNotificationId());
+    }
+}
\ No newline at end of file


[28/48] airavata git commit: making errors and statuses list in Process and Task models

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
index 3d6450f..5ebdacf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
@@ -23,32 +23,16 @@
  */
 package org.apache.airavata.model.task;
 
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-
 import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
+
 import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.nio.ByteBuffer;
+import java.util.*;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**
@@ -69,10 +53,10 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
   private static final org.apache.thrift.protocol.TField PARENT_PROCESS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("parentProcessId", org.apache.thrift.protocol.TType.STRING, (short)3);
   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)4);
   private static final org.apache.thrift.protocol.TField LAST_UPDATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdateTime", org.apache.thrift.protocol.TType.I64, (short)5);
-  private static final org.apache.thrift.protocol.TField TASK_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("taskStatus", org.apache.thrift.protocol.TType.STRUCT, (short)6);
+  private static final org.apache.thrift.protocol.TField TASK_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("taskStatuses", org.apache.thrift.protocol.TType.LIST, (short)6);
   private static final org.apache.thrift.protocol.TField TASK_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDetail", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField SUB_TASK_MODEL_FIELD_DESC = new org.apache.thrift.protocol.TField("subTaskModel", org.apache.thrift.protocol.TType.STRING, (short)8);
-  private static final org.apache.thrift.protocol.TField TASK_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("taskError", org.apache.thrift.protocol.TType.STRUCT, (short)9);
+  private static final org.apache.thrift.protocol.TField TASK_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("taskErrors", org.apache.thrift.protocol.TType.LIST, (short)9);
   private static final org.apache.thrift.protocol.TField JOBS_FIELD_DESC = new org.apache.thrift.protocol.TField("jobs", org.apache.thrift.protocol.TType.LIST, (short)10);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
@@ -86,10 +70,10 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
   private String parentProcessId; // required
   private long creationTime; // required
   private long lastUpdateTime; // required
-  private org.apache.airavata.model.status.TaskStatus taskStatus; // required
+  private List<org.apache.airavata.model.status.TaskStatus> taskStatuses; // required
   private String taskDetail; // optional
   private ByteBuffer subTaskModel; // optional
-  private org.apache.airavata.model.commons.ErrorModel taskError; // optional
+  private List<org.apache.airavata.model.commons.ErrorModel> taskErrors; // optional
   private List<org.apache.airavata.model.job.JobModel> jobs; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -103,10 +87,10 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     PARENT_PROCESS_ID((short)3, "parentProcessId"),
     CREATION_TIME((short)4, "creationTime"),
     LAST_UPDATE_TIME((short)5, "lastUpdateTime"),
-    TASK_STATUS((short)6, "taskStatus"),
+    TASK_STATUS((short)6, "taskStatuses"),
     TASK_DETAIL((short)7, "taskDetail"),
     SUB_TASK_MODEL((short)8, "subTaskModel"),
-    TASK_ERROR((short)9, "taskError"),
+    TASK_ERROR((short)9, "taskErrors"),
     JOBS((short)10, "jobs");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
@@ -199,14 +183,16 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.LAST_UPDATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastUpdateTime", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.TASK_STATUS, new org.apache.thrift.meta_data.FieldMetaData("taskStatus", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.TaskStatus.class)));
+    tmpMap.put(_Fields.TASK_STATUS, new org.apache.thrift.meta_data.FieldMetaData("taskStatuses", org.apache.thrift.TFieldRequirementType.REQUIRED,
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.TaskStatus.class))));
     tmpMap.put(_Fields.TASK_DETAIL, new org.apache.thrift.meta_data.FieldMetaData("taskDetail", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.SUB_TASK_MODEL, new org.apache.thrift.meta_data.FieldMetaData("subTaskModel", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
-    tmpMap.put(_Fields.TASK_ERROR, new org.apache.thrift.meta_data.FieldMetaData("taskError", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class)));
+    tmpMap.put(_Fields.TASK_ERROR, new org.apache.thrift.meta_data.FieldMetaData("taskErrors", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class))));
     tmpMap.put(_Fields.JOBS, new org.apache.thrift.meta_data.FieldMetaData("jobs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.job.JobModel.class))));
@@ -225,7 +211,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     String parentProcessId,
     long creationTime,
     long lastUpdateTime,
-    org.apache.airavata.model.status.TaskStatus taskStatus)
+    List<org.apache.airavata.model.status.TaskStatus> taskStatus)
   {
     this();
     this.taskId = taskId;
@@ -235,7 +221,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     setCreationTimeIsSet(true);
     this.lastUpdateTime = lastUpdateTime;
     setLastUpdateTimeIsSet(true);
-    this.taskStatus = taskStatus;
+    this.taskStatuses = taskStatus;
   }
 
   /**
@@ -255,7 +241,11 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     this.creationTime = other.creationTime;
     this.lastUpdateTime = other.lastUpdateTime;
     if (other.isSetTaskStatus()) {
-      this.taskStatus = new org.apache.airavata.model.status.TaskStatus(other.taskStatus);
+      List<org.apache.airavata.model.status.TaskStatus> __this__taskStatus = new ArrayList<org.apache.airavata.model.status.TaskStatus>(other.taskStatuses.size());
+      for (org.apache.airavata.model.status.TaskStatus other_element : other.taskStatuses) {
+        __this__taskStatus.add(new org.apache.airavata.model.status.TaskStatus(other_element));
+      }
+      this.taskStatuses = __this__taskStatus;
     }
     if (other.isSetTaskDetail()) {
       this.taskDetail = other.taskDetail;
@@ -264,7 +254,11 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       this.subTaskModel = org.apache.thrift.TBaseHelper.copyBinary(other.subTaskModel);
     }
     if (other.isSetTaskError()) {
-      this.taskError = new org.apache.airavata.model.commons.ErrorModel(other.taskError);
+      List<org.apache.airavata.model.commons.ErrorModel> __this__taskError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.taskErrors.size());
+      for (org.apache.airavata.model.commons.ErrorModel other_element : other.taskErrors) {
+        __this__taskError.add(new org.apache.airavata.model.commons.ErrorModel(other_element));
+      }
+      this.taskErrors = __this__taskError;
     }
     if (other.isSetJobs()) {
       List<org.apache.airavata.model.job.JobModel> __this__jobs = new ArrayList<org.apache.airavata.model.job.JobModel>(other.jobs.size());
@@ -289,10 +283,10 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     this.creationTime = 0;
     setLastUpdateTimeIsSet(false);
     this.lastUpdateTime = 0;
-    this.taskStatus = null;
+    this.taskStatuses = null;
     this.taskDetail = null;
     this.subTaskModel = null;
-    this.taskError = null;
+    this.taskErrors = null;
     this.jobs = null;
   }
 
@@ -417,26 +411,41 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID, value);
   }
 
-  public org.apache.airavata.model.status.TaskStatus getTaskStatus() {
-    return this.taskStatus;
+  public int getTaskStatusSize() {
+    return (this.taskStatuses == null) ? 0 : this.taskStatuses.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.status.TaskStatus> getTaskStatusIterator() {
+    return (this.taskStatuses == null) ? null : this.taskStatuses.iterator();
+  }
+
+  public void addToTaskStatus(org.apache.airavata.model.status.TaskStatus elem) {
+    if (this.taskStatuses == null) {
+      this.taskStatuses = new ArrayList<org.apache.airavata.model.status.TaskStatus>();
+    }
+    this.taskStatuses.add(elem);
+  }
+
+  public List<org.apache.airavata.model.status.TaskStatus> getTaskStatuses() {
+    return this.taskStatuses;
   }
 
-  public void setTaskStatus(org.apache.airavata.model.status.TaskStatus taskStatus) {
-    this.taskStatus = taskStatus;
+  public void setTaskStatuses(List<org.apache.airavata.model.status.TaskStatus> taskStatuses) {
+    this.taskStatuses = taskStatuses;
   }
 
   public void unsetTaskStatus() {
-    this.taskStatus = null;
+    this.taskStatuses = null;
   }
 
-  /** Returns true if field taskStatus is set (has been assigned a value) and false otherwise */
+  /** Returns true if field taskStatuses is set (has been assigned a value) and false otherwise */
   public boolean isSetTaskStatus() {
-    return this.taskStatus != null;
+    return this.taskStatuses != null;
   }
 
   public void setTaskStatusIsSet(boolean value) {
     if (!value) {
-      this.taskStatus = null;
+      this.taskStatuses = null;
     }
   }
 
@@ -495,26 +504,41 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     }
   }
 
-  public org.apache.airavata.model.commons.ErrorModel getTaskError() {
-    return this.taskError;
+  public int getTaskErrorSize() {
+    return (this.taskErrors == null) ? 0 : this.taskErrors.size();
   }
 
-  public void setTaskError(org.apache.airavata.model.commons.ErrorModel taskError) {
-    this.taskError = taskError;
+  public java.util.Iterator<org.apache.airavata.model.commons.ErrorModel> getTaskErrorIterator() {
+    return (this.taskErrors == null) ? null : this.taskErrors.iterator();
+  }
+
+  public void addToTaskError(org.apache.airavata.model.commons.ErrorModel elem) {
+    if (this.taskErrors == null) {
+      this.taskErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>();
+    }
+    this.taskErrors.add(elem);
+  }
+
+  public List<org.apache.airavata.model.commons.ErrorModel> getTaskErrors() {
+    return this.taskErrors;
+  }
+
+  public void setTaskErrors(List<org.apache.airavata.model.commons.ErrorModel> taskErrors) {
+    this.taskErrors = taskErrors;
   }
 
   public void unsetTaskError() {
-    this.taskError = null;
+    this.taskErrors = null;
   }
 
-  /** Returns true if field taskError is set (has been assigned a value) and false otherwise */
+  /** Returns true if field taskErrors is set (has been assigned a value) and false otherwise */
   public boolean isSetTaskError() {
-    return this.taskError != null;
+    return this.taskErrors != null;
   }
 
   public void setTaskErrorIsSet(boolean value) {
     if (!value) {
-      this.taskError = null;
+      this.taskErrors = null;
     }
   }
 
@@ -602,7 +626,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       if (value == null) {
         unsetTaskStatus();
       } else {
-        setTaskStatus((org.apache.airavata.model.status.TaskStatus)value);
+        setTaskStatuses((List<org.apache.airavata.model.status.TaskStatus>) value);
       }
       break;
 
@@ -626,7 +650,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       if (value == null) {
         unsetTaskError();
       } else {
-        setTaskError((org.apache.airavata.model.commons.ErrorModel)value);
+        setTaskErrors((List<org.apache.airavata.model.commons.ErrorModel>) value);
       }
       break;
 
@@ -659,7 +683,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       return getLastUpdateTime();
 
     case TASK_STATUS:
-      return getTaskStatus();
+      return getTaskStatuses();
 
     case TASK_DETAIL:
       return getTaskDetail();
@@ -668,7 +692,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       return getSubTaskModel();
 
     case TASK_ERROR:
-      return getTaskError();
+      return getTaskErrors();
 
     case JOBS:
       return getJobs();
@@ -771,7 +795,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     if (this_present_taskStatus || that_present_taskStatus) {
       if (!(this_present_taskStatus && that_present_taskStatus))
         return false;
-      if (!this.taskStatus.equals(that.taskStatus))
+      if (!this.taskStatuses.equals(that.taskStatuses))
         return false;
     }
 
@@ -798,7 +822,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     if (this_present_taskError || that_present_taskError) {
       if (!(this_present_taskError && that_present_taskError))
         return false;
-      if (!this.taskError.equals(that.taskError))
+      if (!this.taskErrors.equals(that.taskErrors))
         return false;
     }
 
@@ -846,7 +870,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     boolean present_taskStatus = true && (isSetTaskStatus());
     list.add(present_taskStatus);
     if (present_taskStatus)
-      list.add(taskStatus);
+      list.add(taskStatuses);
 
     boolean present_taskDetail = true && (isSetTaskDetail());
     list.add(present_taskDetail);
@@ -861,7 +885,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     boolean present_taskError = true && (isSetTaskError());
     list.add(present_taskError);
     if (present_taskError)
-      list.add(taskError);
+      list.add(taskErrors);
 
     boolean present_jobs = true && (isSetJobs());
     list.add(present_jobs);
@@ -934,7 +958,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       return lastComparison;
     }
     if (isSetTaskStatus()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskStatus, other.taskStatus);
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskStatuses, other.taskStatuses);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -964,7 +988,7 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       return lastComparison;
     }
     if (isSetTaskError()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskError, other.taskError);
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskErrors, other.taskErrors);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -1031,11 +1055,11 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     sb.append(this.lastUpdateTime);
     first = false;
     if (!first) sb.append(", ");
-    sb.append("taskStatus:");
-    if (this.taskStatus == null) {
+    sb.append("taskStatuses:");
+    if (this.taskStatuses == null) {
       sb.append("null");
     } else {
-      sb.append(this.taskStatus);
+      sb.append(this.taskStatuses);
     }
     first = false;
     if (isSetTaskDetail()) {
@@ -1060,11 +1084,11 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     }
     if (isSetTaskError()) {
       if (!first) sb.append(", ");
-      sb.append("taskError:");
-      if (this.taskError == null) {
+      sb.append("taskErrors:");
+      if (this.taskErrors == null) {
         sb.append("null");
       } else {
-        sb.append(this.taskError);
+        sb.append(this.taskErrors);
       }
       first = false;
     }
@@ -1105,16 +1129,10 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
     }
 
     if (!isSetTaskStatus()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'taskStatus' is unset! Struct:" + toString());
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'taskStatuses' is unset! Struct:" + toString());
     }
 
     // check for sub-struct validity
-    if (taskStatus != null) {
-      taskStatus.validate();
-    }
-    if (taskError != null) {
-      taskError.validate();
-    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -1194,9 +1212,19 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
             }
             break;
           case 6: // TASK_STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.taskStatus = new org.apache.airavata.model.status.TaskStatus();
-              struct.taskStatus.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.taskStatuses = new ArrayList<org.apache.airavata.model.status.TaskStatus>(_list0.size);
+                org.apache.airavata.model.status.TaskStatus _elem1;
+                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                {
+                  _elem1 = new org.apache.airavata.model.status.TaskStatus();
+                  _elem1.read(iprot);
+                  struct.taskStatuses.add(_elem1);
+                }
+                iprot.readListEnd();
+              }
               struct.setTaskStatusIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -1219,9 +1247,19 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
             }
             break;
           case 9: // TASK_ERROR
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.taskError = new org.apache.airavata.model.commons.ErrorModel();
-              struct.taskError.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
+                struct.taskErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list3.size);
+                org.apache.airavata.model.commons.ErrorModel _elem4;
+                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
+                {
+                  _elem4 = new org.apache.airavata.model.commons.ErrorModel();
+                  _elem4.read(iprot);
+                  struct.taskErrors.add(_elem4);
+                }
+                iprot.readListEnd();
+              }
               struct.setTaskErrorIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -1230,14 +1268,14 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
           case 10: // JOBS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.jobs = new ArrayList<org.apache.airavata.model.job.JobModel>(_list0.size);
-                org.apache.airavata.model.job.JobModel _elem1;
-                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
+                struct.jobs = new ArrayList<org.apache.airavata.model.job.JobModel>(_list6.size);
+                org.apache.airavata.model.job.JobModel _elem7;
+                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
                 {
-                  _elem1 = new org.apache.airavata.model.job.JobModel();
-                  _elem1.read(iprot);
-                  struct.jobs.add(_elem1);
+                  _elem7 = new org.apache.airavata.model.job.JobModel();
+                  _elem7.read(iprot);
+                  struct.jobs.add(_elem7);
                 }
                 iprot.readListEnd();
               }
@@ -1280,9 +1318,16 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       oprot.writeFieldBegin(LAST_UPDATE_TIME_FIELD_DESC);
       oprot.writeI64(struct.lastUpdateTime);
       oprot.writeFieldEnd();
-      if (struct.taskStatus != null) {
+      if (struct.taskStatuses != null) {
         oprot.writeFieldBegin(TASK_STATUS_FIELD_DESC);
-        struct.taskStatus.write(oprot);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.taskStatuses.size()));
+          for (org.apache.airavata.model.status.TaskStatus _iter9 : struct.taskStatuses)
+          {
+            _iter9.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
         oprot.writeFieldEnd();
       }
       if (struct.taskDetail != null) {
@@ -1299,10 +1344,17 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
           oprot.writeFieldEnd();
         }
       }
-      if (struct.taskError != null) {
+      if (struct.taskErrors != null) {
         if (struct.isSetTaskError()) {
           oprot.writeFieldBegin(TASK_ERROR_FIELD_DESC);
-          struct.taskError.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.taskErrors.size()));
+            for (org.apache.airavata.model.commons.ErrorModel _iter10 : struct.taskErrors)
+            {
+              _iter10.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -1311,9 +1363,9 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
           oprot.writeFieldBegin(JOBS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.jobs.size()));
-            for (org.apache.airavata.model.job.JobModel _iter3 : struct.jobs)
+            for (org.apache.airavata.model.job.JobModel _iter11 : struct.jobs)
             {
-              _iter3.write(oprot);
+              _iter11.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1342,7 +1394,13 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       oprot.writeString(struct.parentProcessId);
       oprot.writeI64(struct.creationTime);
       oprot.writeI64(struct.lastUpdateTime);
-      struct.taskStatus.write(oprot);
+      {
+        oprot.writeI32(struct.taskStatuses.size());
+        for (org.apache.airavata.model.status.TaskStatus _iter12 : struct.taskStatuses)
+        {
+          _iter12.write(oprot);
+        }
+      }
       BitSet optionals = new BitSet();
       if (struct.isSetTaskDetail()) {
         optionals.set(0);
@@ -1364,14 +1422,20 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
         oprot.writeBinary(struct.subTaskModel);
       }
       if (struct.isSetTaskError()) {
-        struct.taskError.write(oprot);
+        {
+          oprot.writeI32(struct.taskErrors.size());
+          for (org.apache.airavata.model.commons.ErrorModel _iter13 : struct.taskErrors)
+          {
+            _iter13.write(oprot);
+          }
+        }
       }
       if (struct.isSetJobs()) {
         {
           oprot.writeI32(struct.jobs.size());
-          for (org.apache.airavata.model.job.JobModel _iter4 : struct.jobs)
+          for (org.apache.airavata.model.job.JobModel _iter14 : struct.jobs)
           {
-            _iter4.write(oprot);
+            _iter14.write(oprot);
           }
         }
       }
@@ -1390,8 +1454,17 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
       struct.setCreationTimeIsSet(true);
       struct.lastUpdateTime = iprot.readI64();
       struct.setLastUpdateTimeIsSet(true);
-      struct.taskStatus = new org.apache.airavata.model.status.TaskStatus();
-      struct.taskStatus.read(iprot);
+      {
+        org.apache.thrift.protocol.TList _list15 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.taskStatuses = new ArrayList<org.apache.airavata.model.status.TaskStatus>(_list15.size);
+        org.apache.airavata.model.status.TaskStatus _elem16;
+        for (int _i17 = 0; _i17 < _list15.size; ++_i17)
+        {
+          _elem16 = new org.apache.airavata.model.status.TaskStatus();
+          _elem16.read(iprot);
+          struct.taskStatuses.add(_elem16);
+        }
+      }
       struct.setTaskStatusIsSet(true);
       BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
@@ -1403,20 +1476,29 @@ public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._
         struct.setSubTaskModelIsSet(true);
       }
       if (incoming.get(2)) {
-        struct.taskError = new org.apache.airavata.model.commons.ErrorModel();
-        struct.taskError.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list18 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.taskErrors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list18.size);
+          org.apache.airavata.model.commons.ErrorModel _elem19;
+          for (int _i20 = 0; _i20 < _list18.size; ++_i20)
+          {
+            _elem19 = new org.apache.airavata.model.commons.ErrorModel();
+            _elem19.read(iprot);
+            struct.taskErrors.add(_elem19);
+          }
+        }
         struct.setTaskErrorIsSet(true);
       }
       if (incoming.get(3)) {
         {
-          org.apache.thrift.protocol.TList _list5 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.jobs = new ArrayList<org.apache.airavata.model.job.JobModel>(_list5.size);
-          org.apache.airavata.model.job.JobModel _elem6;
-          for (int _i7 = 0; _i7 < _list5.size; ++_i7)
+          org.apache.thrift.protocol.TList _list21 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.jobs = new ArrayList<org.apache.airavata.model.job.JobModel>(_list21.size);
+          org.apache.airavata.model.job.JobModel _elem22;
+          for (int _i23 = 0; _i23 < _list21.size; ++_i23)
           {
-            _elem6 = new org.apache.airavata.model.job.JobModel();
-            _elem6.read(iprot);
-            struct.jobs.add(_elem6);
+            _elem22 = new org.apache.airavata.model.job.JobModel();
+            _elem22.read(iprot);
+            struct.jobs.add(_elem22);
           }
         }
         struct.setJobsIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0015a21..0fc54fe 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -210,9 +210,14 @@ public class GFacUtils {
 	public static void saveJobStatus(ProcessContext processContext, JobModel jobModel) throws GFacException {
 		try {
             // first we save job jobModel to the registry for sa and then save the job status.
-			JobStatus jobStatus = jobModel.getJobStatus();
+            JobStatus jobStatus = null;
+            if(jobModel.getJobStatuses() != null)
+			    jobStatus = jobModel.getJobStatuses().get(0);
+
             ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog();
-            jobModel.setJobStatus(jobStatus);
+            List<JobStatus> statuses = new ArrayList<>();
+            statuses.add(jobStatus);
+            jobModel.setJobStatuses(statuses);
             if (jobStatus.getTimeOfStateChange() == 0 || jobStatus.getTimeOfStateChange() > 0 ){
                 jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index 0e8c1f0..8a2cc4e 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -362,8 +362,8 @@ public class ProcessContext {
 	}
 
 	public ProcessState getProcessState() {
-		if(processModel.getProcessStatus() != null && processModel.getProcessStatus().size() > 0)
-			return processModel.getProcessStatus().get(0).getState();
+		if(processModel.getProcessStatuses() != null && processModel.getProcessStatuses().size() > 0)
+			return processModel.getProcessStatuses().get(0).getState();
 		else
 			return null;
 	}
@@ -374,13 +374,13 @@ public class ProcessContext {
 					getProcessState().name(), status.getState().name());
 			List<ProcessStatus> processStatuses = new ArrayList<>();
 			processStatuses.add(status);
-			processModel.setProcessStatus(processStatuses);
+			processModel.setProcessStatuses(processStatuses);
 		}
 	}
 
 	public ProcessStatus getProcessStatus(){
-		if(processModel.getProcessStatus() != null)
-			return processModel.getProcessStatus().get(0);
+		if(processModel.getProcessStatuses() != null)
+			return processModel.getProcessStatuses().get(0);
 		else
 			return null;
 	}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/TaskContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/TaskContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/TaskContext.java
index 1a276b3..6f95d3d 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/TaskContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/TaskContext.java
@@ -30,6 +30,9 @@ import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class TaskContext {
 	private static final Logger log = LoggerFactory.getLogger(TaskContext.class);
 
@@ -64,15 +67,23 @@ public class TaskContext {
 		log.info("expId: {}, processId: {}, taskId: {}, type: {}:- Task status changed {} -> {}", parentProcessContext
 				.getExperimentId(), parentProcessContext.getProcessId(), getTaskId(), getTaskType().name(),
 				getTaskState().name(), taskStatus .getState().name());
-		taskModel.setTaskStatus(taskStatus);
+		List<TaskStatus> taskStatuses = new ArrayList<>();
+		taskStatuses.add(taskStatus);
+		taskModel.setTaskStatuses(taskStatuses);
 	}
 
 	public TaskStatus getTaskStatus() {
-		return taskModel.getTaskStatus();
+		if(taskModel.getTaskStatuses() != null)
+			return taskModel.getTaskStatuses().get(0);
+		else
+			return null;
 	}
 
 	public TaskState getTaskState() {
-		return taskModel.getTaskStatus().getState();
+		if(taskModel.getTaskStatuses() != null)
+			return taskModel.getTaskStatuses().get(0).getState();
+		else
+			return null;
 	}
 
 	public TaskTypes getTaskType() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index f64e521..90acacc 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -37,7 +37,6 @@ import org.apache.airavata.gfac.core.monitor.JobMonitor;
 import org.apache.airavata.gfac.core.task.JobSubmissionTask;
 import org.apache.airavata.gfac.core.task.Task;
 import org.apache.airavata.gfac.core.task.TaskException;
-import org.apache.airavata.gfac.impl.task.DataStageTask;
 import org.apache.airavata.gfac.impl.task.DataStreamingTask;
 import org.apache.airavata.gfac.impl.task.EnvironmentSetupTask;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
@@ -53,19 +52,9 @@ import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.data.movement.SecurityProtocol;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.JobState;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.status.ProcessState;
-import org.apache.airavata.model.status.ProcessStatus;
-import org.apache.airavata.model.status.TaskState;
-import org.apache.airavata.model.status.TaskStatus;
+import org.apache.airavata.model.status.*;
 import org.apache.airavata.model.task.*;
-import org.apache.airavata.registry.cpi.AppCatalog;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.apache.airavata.registry.cpi.ExpCatChildDataType;
-import org.apache.airavata.registry.cpi.ExperimentCatalog;
-import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
-import org.apache.airavata.registry.cpi.RegistryException;
+import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.registry.cpi.utils.Constants;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.utils.ZKPaths;
@@ -339,7 +328,7 @@ public class GFacEngineImpl implements GFacEngine {
                     executeJobSubmission(taskContext, processContext.isRecovery());
                     // Don't put any checkpoint in between JobSubmission and Monitoring tasks
 
-                    JobStatus jobStatus = processContext.getJobModel().getJobStatus();
+                    JobStatus jobStatus = processContext.getJobModel().getJobStatuses().get(0);
                     if (jobStatus != null && (jobStatus.getJobState() == JobState.SUBMITTED
                             || jobStatus.getJobState() == JobState.QUEUED || jobStatus.getJobState() == JobState.ACTIVE)) {
 
@@ -350,7 +339,7 @@ public class GFacEngineImpl implements GFacEngine {
                                     if (output.isOutputStreaming()){
                                         TaskModel streamingTaskModel = new TaskModel();
                                         streamingTaskModel.setTaskType(TaskTypes.OUTPUT_FETCHING);
-                                        streamingTaskModel.setTaskStatus(new TaskStatus(TaskState.CREATED));
+                                        streamingTaskModel.setTaskStatuses(Arrays.asList(new TaskStatus(TaskState.CREATED)));
                                         streamingTaskModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
                                         streamingTaskModel.setParentProcessId(processContext.getProcessId());
                                         TaskContext streamingTaskContext = getTaskContext(processContext);
@@ -589,7 +578,7 @@ public class GFacEngineImpl implements GFacEngine {
         TaskModel taskModel = null;
         for (String taskId : taskExecutionOrder) {
             taskModel = taskMap.get(taskId);
-            TaskState state = taskModel.getTaskStatus().getState();
+            TaskState state = taskModel.getTaskStatuses().get(0).getState();
             if (state == TaskState.CREATED || state == TaskState.EXECUTING) {
                 recoverTaskId = taskId;
                 break;
@@ -786,7 +775,7 @@ public class GFacEngineImpl implements GFacEngine {
         taskModel.setLastUpdateTime(taskModel.getCreationTime());
         TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
         taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-        taskModel.setTaskStatus(taskStatus);
+        taskModel.setTaskStatuses(Arrays.asList(taskStatus));
         taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
         taskCtx.setTaskModel(taskModel);
         return taskCtx;
@@ -803,7 +792,7 @@ public class GFacEngineImpl implements GFacEngine {
         taskModel.setLastUpdateTime(taskModel.getCreationTime());
         TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
         taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-        taskModel.setTaskStatus(taskStatus);
+        taskModel.setTaskStatuses(Arrays.asList(taskStatus));
         taskModel.setTaskType(TaskTypes.DATA_STAGING);
         // create data staging sub task model
         String remoteOutputDir = processContext.getOutputDir();

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java
index 755eed5..df22654 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java
@@ -54,6 +54,7 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 import java.util.Map;
 
 public class ArchiveTask implements Task {
@@ -89,7 +90,7 @@ public class ArchiveTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
             return status;
         }
 
@@ -159,7 +160,7 @@ public class ArchiveTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         }
         return status;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
index 6529395..a4dcb5d 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java
@@ -35,7 +35,6 @@ import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.SSHApiException;
 import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
-import org.apache.airavata.gfac.core.authentication.SSHKeyAuthentication;
 import org.apache.airavata.gfac.core.cluster.ServerInfo;
 import org.apache.airavata.gfac.core.context.ProcessContext;
 import org.apache.airavata.gfac.core.context.TaskContext;
@@ -73,6 +72,7 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
@@ -169,7 +169,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
             log.info("JobID: " + jobId);
             jobDetails.setJobId(jobId);
             jobDetails.setJobDescription(activityEpr.toString());
-            jobDetails.setJobStatus(new JobStatus(JobState.SUBMITTED));
+            jobDetails.setJobStatuses(Arrays.asList(new JobStatus(JobState.SUBMITTED)));
             processContext.setJobModel(jobDetails);
             GFacUtils.saveJobModel(processContext, jobDetails);
             GFacUtils.saveJobStatus(processContext, jobDetails);
@@ -198,7 +198,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
                 log.error(error);
 
                 JobState applicationJobStatus = JobState.FAILED;
-                jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
+                jobDetails.setJobStatuses(Arrays.asList(new JobStatus(applicationJobStatus)));
                 sendNotification(processContext, jobDetails);
                 try {Thread.sleep(5000);} catch (InterruptedException e) {}
 
@@ -208,7 +208,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
 
             } else if (activityStatus.getState() == ActivityStateEnumeration.CANCELLED) {
                 JobState applicationJobStatus = JobState.CANCELED;
-                jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
+                jobDetails.setJobStatuses(Arrays.asList(new JobStatus(applicationJobStatus)));
                 GFacUtils.saveJobStatus(processContext, jobDetails);
                 throw new GFacException(
                         processContext.getExperimentId() + "Job Canceled");
@@ -218,7 +218,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask {
                 } catch (InterruptedException ignored) {
                 }
                 JobState applicationJobStatus = JobState.COMPLETE;
-                jobDetails.setJobStatus(new JobStatus(applicationJobStatus));
+                jobDetails.setJobStatuses(Arrays.asList(new JobStatus(applicationJobStatus)));
                 GFacUtils.saveJobStatus(processContext, jobDetails);
                 log.info("Job Id: {}, exit code: {}, exit status: {}", jobDetails.getJobId(),
                         activityStatus.getExitCode(), ActivityStateEnumeration.FINISHED.toString());

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStageTask.java
index 69e8d77..8c6a125 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStageTask.java
@@ -20,7 +20,6 @@
  */
 package org.apache.airavata.gfac.impl.task;
 
-import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.gfac.core.SSHApiException;
 import org.apache.airavata.gfac.core.context.TaskContext;
 import org.apache.airavata.gfac.core.task.Task;
@@ -37,6 +36,7 @@ import org.slf4j.LoggerFactory;
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 import java.util.Map;
 
 public class DataStageTask implements Task {
@@ -83,7 +83,7 @@ public class DataStageTask implements Task {
 				ErrorModel errorModel = new ErrorModel();
 				errorModel.setActualErrorMessage(e.getMessage());
 				errorModel.setUserFriendlyMessage(msg);
-				taskContext.getTaskModel().setTaskError(errorModel);
+				taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 			} catch (TException e) {
 				String msg = "Invalid task invocation";
 				log.error(msg, e);
@@ -92,7 +92,7 @@ public class DataStageTask implements Task {
 				ErrorModel errorModel = new ErrorModel();
 				errorModel.setActualErrorMessage(e.getMessage());
 				errorModel.setUserFriendlyMessage(msg);
-				taskContext.getTaskModel().setTaskError(errorModel);
+				taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 			} catch (URISyntaxException e) {
 				String msg = "source or destination is not a valid URI";
 				log.error(msg, e);
@@ -101,7 +101,7 @@ public class DataStageTask implements Task {
 				ErrorModel errorModel = new ErrorModel();
 				errorModel.setActualErrorMessage(e.getMessage());
 				errorModel.setUserFriendlyMessage(msg);
-				taskContext.getTaskModel().setTaskError(errorModel);
+				taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 			}
 		}
 		return status;

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
index b7f150f..a131ef5 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
@@ -24,7 +24,6 @@ package org.apache.airavata.gfac.impl.task;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.gfac.core.*;
-import org.apache.airavata.gfac.core.cluster.CommandInfo;
 import org.apache.airavata.gfac.core.cluster.JobSubmissionOutput;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
@@ -49,6 +48,9 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 public class DefaultJobSubmissionTask implements JobSubmissionTask {
@@ -92,8 +94,10 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
                 if (exitCode != 0 || jobSubmissionOutput.isJobSubmissionFailed()) {
 					jobModel.setJobId(DEFAULT_JOB_ID);
 					if (jobSubmissionOutput.isJobSubmissionFailed()) {
-						jobModel.setJobStatus(new JobStatus(JobState.FAILED));
-						jobModel.getJobStatus().setReason(jobSubmissionOutput.getFailureReason());
+						List<JobStatus> statusList = new ArrayList<>();
+						statusList.add(new JobStatus(JobState.FAILED));
+						statusList.get(0).setReason(jobSubmissionOutput.getFailureReason());
+						jobModel.setJobStatuses(statusList);
 						GFacUtils.saveJobModel(processContext, jobModel);
 						log.error("expId: {}, processid: {}, taskId: {} :- Job submission failed for job name {}",
                                 experimentId, taskContext.getProcessId(), taskContext.getTaskId(), jobModel.getJobName());
@@ -150,13 +154,13 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
                             .getComputeResourceDescription();
                     jobStatus.setReason("Successfully Submitted to " + computeResourceDescription.getHostName());
                     jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-				    jobModel.setJobStatus(jobStatus);
+				    jobModel.setJobStatuses(Arrays.asList(jobStatus));
 				    GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
 				    if (verifyJobSubmissionByJobId(remoteCluster, jobId)) {
 					    jobStatus.setJobState(JobState.QUEUED);
 					    jobStatus.setReason("Verification step succeeded");
                         jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-					    jobModel.setJobStatus(jobStatus);
+					    jobModel.setJobStatuses(Arrays.asList(jobStatus));
 					    GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
 				    }
                     // doing gateway reporting
@@ -184,7 +188,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 							jobStatus.setJobState(JobState.QUEUED);
 							jobStatus.setReason("Verification step succeeded");
 							jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-							jobModel.setJobStatus(jobStatus);
+							jobModel.setJobStatuses(Arrays.asList(jobStatus));
 							GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
 							taskStatus.setState(TaskState.COMPLETED);
 							taskStatus.setReason("Submitted job to compute resource");
@@ -233,7 +237,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    ErrorModel errorModel = new ErrorModel();
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
+		    taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 	    } catch (ApplicationSettingsException | GFacException e) {
 		    String msg = "Error occurred while creating job descriptor";
 		    log.error(msg, e);
@@ -243,7 +247,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    ErrorModel errorModel = new ErrorModel();
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
+		    taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 	    } catch (SSHApiException e) {
 		    String msg = "Error occurred while submitting the job";
 		    log.error(msg, e);
@@ -253,7 +257,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    ErrorModel errorModel = new ErrorModel();
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
+		    taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 	    } catch (IOException e) {
 		    String msg = "Error while reading the content of the job file";
 		    log.error(msg, e);
@@ -263,7 +267,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    ErrorModel errorModel = new ErrorModel();
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
+		    taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 	    } catch (InterruptedException e) {
 		    String msg = "Error occurred while verifying the job submission";
 		    log.error(msg, e);
@@ -273,7 +277,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    ErrorModel errorModel = new ErrorModel();
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
+		    taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 	    } catch (RegistryException e) {
             e.printStackTrace();
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/EnvironmentSetupTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/EnvironmentSetupTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/EnvironmentSetupTask.java
index 1256e48..7de0282 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/EnvironmentSetupTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/EnvironmentSetupTask.java
@@ -32,6 +32,7 @@ import org.apache.airavata.model.task.TaskTypes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Arrays;
 import java.util.Map;
 
 public class EnvironmentSetupTask implements Task {
@@ -57,7 +58,7 @@ public class EnvironmentSetupTask implements Task {
 			ErrorModel errorModel = new ErrorModel();
 			errorModel.setActualErrorMessage(e.getMessage());
 			errorModel.setUserFriendlyMessage(msg);
-			taskContext.getTaskModel().setTaskError(errorModel);
+			taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
 		}
 		return status;
 	}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
index 59a36e1..b57b68d 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
@@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Map;
 
 public class ForkJobSubmissionTask implements JobSubmissionTask {
@@ -87,7 +88,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
                     jobStatus.setReason("Successfully Submitted to " + taskContext.getParentProcessContext()
                             .getComputeResourceDescription().getHostName());
                     jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-                    jobModel.setJobStatus(jobStatus);
+                    jobModel.setJobStatuses(Arrays.asList(jobStatus));
                     GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
                     taskStatus = new TaskStatus(TaskState.COMPLETED);
                     taskStatus.setReason("Submitted job to compute resource");
@@ -124,7 +125,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (AppCatalogException e) {
             String msg = "Error while instantiating app catalog";
             log.error(msg, e);
@@ -133,7 +134,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (GFacException e) {
             String msg = "Error occurred while creating job descriptor";
             log.error(msg, e);
@@ -142,7 +143,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (SSHApiException e) {
             String msg = "Error occurred while submitting the job";
             log.error(msg, e);
@@ -151,7 +152,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (IOException e) {
             String msg = "Error while reading the content of the job file";
             log.error(msg, e);
@@ -160,7 +161,7 @@ public class ForkJobSubmissionTask implements JobSubmissionTask {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         }
         return taskStatus;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index 904d486..6a8800e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@ -24,7 +24,6 @@ import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.SSHApiException;
@@ -57,6 +56,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 import java.util.Map;
 
 /**
@@ -179,7 +179,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
             return status;
         } catch (ApplicationSettingsException | FileNotFoundException e) {
             String msg = "Failed while reading credentials";
@@ -189,7 +189,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (URISyntaxException e) {
             String msg = "Source or destination uri is not correct source : " + subTaskModel.getSource() + ", " +
                     "destination : " + subTaskModel.getDestination();
@@ -199,7 +199,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (SSHApiException e) {
             String msg = e.getMessage();
             log.error(msg, e);
@@ -208,7 +208,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (AiravataException e) {
             String msg = "Error while creating ssh session with client";
             log.error(msg, e);
@@ -217,7 +217,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (JSchException | IOException e) {
             String msg = "Failed to do scp with client";
             log.error(msg, e);
@@ -226,7 +226,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         } catch (GFacException e) {
             String msg = "Failed update experiment and process inputs and outputs";
             log.error(msg, e);
@@ -235,7 +235,7 @@ public class SCPDataStageTask implements Task {
             ErrorModel errorModel = new ErrorModel();
             errorModel.setActualErrorMessage(e.getMessage());
             errorModel.setUserFriendlyMessage(msg);
-            taskContext.getTaskModel().setTaskError(errorModel);
+            taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel));
         }
         return status;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
index 76b678a..375e570 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/StreamData.java
@@ -24,15 +24,11 @@ package org.apache.airavata.gfac.impl.task.utils;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.credential.store.credential.Credential;
-import org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential;
-import org.apache.airavata.credential.store.store.CredentialReader;
 import org.apache.airavata.credential.store.store.CredentialStoreException;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.SSHApiException;
 import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
-import org.apache.airavata.gfac.core.authentication.SSHKeyAuthentication;
 import org.apache.airavata.gfac.core.cluster.CommandInfo;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
@@ -40,7 +36,6 @@ import org.apache.airavata.gfac.core.cluster.ServerInfo;
 import org.apache.airavata.gfac.core.context.TaskContext;
 import org.apache.airavata.gfac.impl.Factory;
 import org.apache.airavata.gfac.impl.SSHUtils;
-import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.status.JobState;
 import org.apache.airavata.model.status.JobStatus;
 import org.apache.airavata.model.task.DataStagingTaskModel;
@@ -48,7 +43,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -78,7 +72,7 @@ public class StreamData extends TimerTask  {
     public void run() {
         try {
             // output staging should start when the job is in active state
-            JobStatus jobStatus = taskContext.getParentProcessContext().getJobModel().getJobStatus();
+            JobStatus jobStatus = taskContext.getParentProcessContext().getJobModel().getJobStatuses().get(0);
             if (jobStatus != null && jobStatus.getJobState().equals(JobState.ACTIVE)){
                 runOutputStaging();
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index b2df00b..b24aa75 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -135,7 +135,7 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
                     newJobStatus.setReason("Moving job status to cancel, as we didn't see any email from this job " +
                             "for a while after execute job cancel command. This may happen if job was in queued state " +
                             "when we run the cancel command");
-                    jobModel.setJobStatus(newJobStatus);
+                    jobModel.setJobStatuses(Arrays.asList(newJobStatus));
                     GFacUtils.saveJobStatus(pc, jobModel);
                 }
                 ProcessStatus pStatus = new ProcessStatus(ProcessState.CANCELLING);
@@ -374,7 +374,7 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
         }
 	    if (jobStatus.getJobState() != null) {
 		    try {
-			    jobModel.setJobStatus(jobStatus);
+			    jobModel.setJobStatuses(Arrays.asList(jobStatus));
 			    log.info("[EJM]: Publishing status changes to amqp. " + jobDetails);
 			    GFacUtils.saveJobStatus(parentProcessContext, jobModel);
 		    } catch (GFacException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index 73a6aef..b1218e4 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -217,7 +217,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         // FIXME
 //        List<JobDetails> jobDetailsList = task.getJobDetailsList();
 //        for(JobDetails jobDetails:jobDetailsList) {
-//            JobState jobState = jobDetails.getJobStatus().getJobState();
+//            JobState jobState = jobDetails.getJobStatuses().getJobState();
 //            if (jobState.getValue() > 4){
 //                logger.error("Cannot cancel the job, because current job state is : " + jobState.toString() +
 //                "jobId: " + jobDetails.getJobID() + " Job Name: " + jobDetails.getJobName());
@@ -346,7 +346,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         List<String> envTaskIds = new ArrayList<>();
         TaskModel envSetupTask = new TaskModel();
         envSetupTask.setTaskType(TaskTypes.ENV_SETUP);
-        envSetupTask.setTaskStatus(new TaskStatus(TaskState.CREATED));
+        envSetupTask.setTaskStatuses(Arrays.asList(new TaskStatus(TaskState.CREATED)));
         envSetupTask.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
         envSetupTask.setParentProcessId(processModel.getProcessId());
         EnvironmentSetupTaskModel envSetupSubModel = new EnvironmentSetupTaskModel();
@@ -487,7 +487,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         taskModel.setLastUpdateTime(taskModel.getCreationTime());
         TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
         taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-        taskModel.setTaskStatus(taskStatus);
+        taskModel.setTaskStatuses(Arrays.asList(taskStatus));
         taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
         JobSubmissionTaskModel submissionSubTask = new JobSubmissionTaskModel();
         submissionSubTask.setMonitorMode(monitorMode);
@@ -508,7 +508,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
             monitorTaskModel.setLastUpdateTime(monitorTaskModel.getCreationTime());
             TaskStatus monitorTaskStatus = new TaskStatus(TaskState.CREATED);
             monitorTaskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-            monitorTaskModel.setTaskStatus(monitorTaskStatus);
+            monitorTaskModel.setTaskStatuses(Arrays.asList(monitorTaskStatus));
             monitorTaskModel.setTaskType(TaskTypes.MONITORING);
             MonitorTaskModel monitorSubTaskModel = new MonitorTaskModel();
             monitorSubTaskModel.setMonitorMode(monitorMode);
@@ -538,7 +538,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         taskModel.setLastUpdateTime(taskModel.getCreationTime());
         TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
         taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-        taskModel.setTaskStatus(taskStatus);
+        taskModel.setTaskStatuses(Arrays.asList(taskStatus));
         taskModel.setTaskType(TaskTypes.DATA_STAGING);
         // create data staging sub task model
         DataStagingTaskModel submodel = new DataStagingTaskModel();
@@ -576,7 +576,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
             taskModel.setLastUpdateTime(taskModel.getCreationTime());
             TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
             taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-            taskModel.setTaskStatus(taskStatus);
+            taskModel.setTaskStatuses(Arrays.asList(taskStatus));
             taskModel.setTaskType(TaskTypes.DATA_STAGING);
             ComputeResourcePreference computeResourcePreference = OrchestratorUtils.getComputeResourcePreference(orchestratorContext, processModel, gatewayId);
             ComputeResourceDescription computeResource = orchestratorContext.getRegistry().getAppCatalog().getComputeResource().getComputeResource(processModel.getComputeResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
index a66295e..763f5da 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
@@ -38,7 +38,7 @@ public class JobEntity {
     private String stdErr;
     private int exitCode;
 
-    private List<JobStatusEntity> jobStatus;
+    private List<JobStatusEntity> jobStatuses;
 
     private TaskEntity task;
 
@@ -145,12 +145,12 @@ public class JobEntity {
     }
 
     @OneToMany(targetEntity = JobStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "job")
-    public List<JobStatusEntity> getJobStatus() {
-        return jobStatus;
+    public List<JobStatusEntity> getJobStatuses() {
+        return jobStatuses;
     }
 
-    public void setJobStatus(List<JobStatusEntity> jobStatus) {
-        this.jobStatus = jobStatus;
+    public void setJobStatuses(List<JobStatusEntity> jobStatus) {
+        this.jobStatuses = jobStatus;
     }
 
     @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
index 109041e..a379ef6 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
@@ -45,8 +45,8 @@ public class ProcessEntity {
     private String experimentDataDir;
     private String userName;
 
-    private List<ProcessStatusEntity> processStatus;
-    private List<ProcessErrorEntity> processError;
+    private List<ProcessStatusEntity> processStatuses;
+    private List<ProcessErrorEntity> processErrors;
     private List<ProcessInputEntity> processInputs;
     private List<ProcessOutputEntity> processOutputs;
     private ProcessResourceSchedulingEntity processResourceSchedule;
@@ -211,21 +211,21 @@ public class ProcessEntity {
     }
 
     @OneToMany(targetEntity = ProcessStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessStatusEntity> getProcessStatus() {
-        return processStatus;
+    public List<ProcessStatusEntity> getProcessStatuses() {
+        return processStatuses;
     }
 
-    public void setProcessStatus(List<ProcessStatusEntity> processStatus) {
-        this.processStatus = processStatus;
+    public void setProcessStatuses(List<ProcessStatusEntity> processStatus) {
+        this.processStatuses = processStatus;
     }
 
     @OneToMany(targetEntity = ProcessErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessErrorEntity> getProcessError() {
-        return processError;
+    public List<ProcessErrorEntity> getProcessErrors() {
+        return processErrors;
     }
 
-    public void setProcessError(List<ProcessErrorEntity> processError) {
-        this.processError = processError;
+    public void setProcessErrors(List<ProcessErrorEntity> processError) {
+        this.processErrors = processError;
     }
 
     @OneToMany(targetEntity = ProcessInputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
index f01fa10..8e4be82 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
@@ -37,8 +37,8 @@ public class TaskEntity {
     private String taskDetail;
     private ByteBuffer subTaskModel;
 
-    private List<TaskStatusEntity> taskStatus;
-    private List<TaskErrorEntity> taskError;
+    private List<TaskStatusEntity> taskStatuses;
+    private List<TaskErrorEntity> taskErrors;
     private List<JobEntity> jobs;
 
     private ProcessEntity process;
@@ -109,21 +109,21 @@ public class TaskEntity {
     }
 
     @OneToMany(targetEntity = TaskStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
-    public List<TaskStatusEntity> getTaskStatus() {
-        return taskStatus;
+    public List<TaskStatusEntity> getTaskStatuses() {
+        return taskStatuses;
     }
 
-    public void setTaskStatus(List<TaskStatusEntity> taskStatus) {
-        this.taskStatus = taskStatus;
+    public void setTaskStatuses(List<TaskStatusEntity> taskStatus) {
+        this.taskStatuses = taskStatus;
     }
 
     @OneToMany(targetEntity = TaskErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
-    public List<TaskErrorEntity> getTaskError() {
-        return taskError;
+    public List<TaskErrorEntity> getTaskErrors() {
+        return taskErrors;
     }
 
-    public void setTaskError(List<TaskErrorEntity> taskError) {
-        this.taskError = taskError;
+    public void setTaskErrors(List<TaskErrorEntity> taskError) {
+        this.taskErrors = taskError;
     }
 
     @OneToMany(targetEntity = JobEntity.class, cascade = CascadeType.ALL, mappedBy = "task")

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
index d30b1de..a79a462 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -73,10 +73,10 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
                     process.getProcessInputs().forEach(proInput->proInput.setProceseId(processId));
                 if(process.getProcessOutputs() != null)
                     process.getProcessOutputs().forEach(proOutput->proOutput.setProcessId(processId));
-                if(process.getProcessError() != null)
-                    process.getProcessError().forEach(processErr->processErr.setProcessId(processId));
-                if(process.getProcessStatus() != null)
-                    process.getProcessStatus().forEach(processStat->processStat.setProcessId(processId));
+                if(process.getProcessErrors() != null)
+                    process.getProcessErrors().forEach(processErr->processErr.setProcessId(processId));
+                if(process.getProcessStatuses() != null)
+                    process.getProcessStatuses().forEach(processStat->processStat.setProcessId(processId));
 
                 if(process.getTasks() != null){
                     process.getTasks().forEach(task->{

http://git-wip-us.apache.org/repos/asf/airavata/blob/b46fd511/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index f66b283..8465af4 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -309,8 +309,8 @@ public class ExperimentRegistry {
             processStatuses.add(processStatus);
             addProcessStatus(processStatuses.get(0), process.getProcessId());
 
-            if(process.getProcessError() != null) {
-                addProcessError(process.getProcessError().get(0), process.getProcessId());
+            if(process.getProcessErrors() != null) {
+                addProcessError(process.getProcessErrors().get(0), process.getProcessId());
             }
         } catch (Exception e) {
             logger.error(expId, "Error while adding process...", e);
@@ -463,8 +463,8 @@ public class ExperimentRegistry {
             taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
 	        addTaskStatus(taskStatus, task.getTaskId());
 
-            if(task.getTaskError() != null) {
-                addTaskError(task.getTaskError(), task.getTaskId());
+            if(task.getTaskErrors() != null) {
+                addTaskError(task.getTaskErrors().get(0), task.getTaskId());
             }
         } catch (Exception e) {
             logger.error(processID, "Error while adding task...", e);
@@ -763,11 +763,11 @@ public class ExperimentRegistry {
             if(process.getProcessOutputs() != null && process.getProcessOutputs().size() > 0) {
                 updateProcessOutputs(process.getProcessOutputs(), process.getProcessId());
             }
-            if(process.getProcessStatus() != null) {
-                updateProcessStatus(process.getProcessStatus().get(0), process.getProcessId());
+            if(process.getProcessStatuses() != null) {
+                updateProcessStatus(process.getProcessStatuses().get(0), process.getProcessId());
             }
-            if(process.getProcessError() != null) {
-                updateProcessError(process.getProcessError().get(0), process.getProcessId());
+            if(process.getProcessErrors() != null) {
+                updateProcessError(process.getProcessErrors().get(0), process.getProcessId());
             }
             if(process.getTasks() != null && process.getTasks().size() > 0){
                 for(TaskModel task : process.getTasks()){
@@ -883,11 +883,11 @@ public class ExperimentRegistry {
             taskResource.setSubTaskModel(task.getSubTaskModel());
             taskResource.save();
 
-            if(task.getTaskError() != null) {
-                updateTaskError(task.getTaskError(), task.getTaskId());
+            if(task.getTaskErrors() != null) {
+                updateTaskError(task.getTaskErrors().get(0), task.getTaskId());
             }
-            if(task.getTaskError() != null) {
-                updateTaskError(task.getTaskError(), task.getTaskId());
+            if(task.getTaskErrors() != null) {
+                updateTaskError(task.getTaskErrors().get(0), task.getTaskId());
             }
         } catch (Exception e) {
             logger.error(taskID, "Error while adding task...", e);
@@ -1252,7 +1252,9 @@ public class ExperimentRegistry {
 	                if (latestSR != null) {
 		                JobStatus jobStatus = new JobStatus(JobState.valueOf(latestSR.getState()));
 		                jobStatus.setReason(latestSR.getReason());
-		                jobModel.setJobStatus(jobStatus);
+                        List<JobStatus> statuses = new ArrayList<>();
+                        statuses.add(jobStatus);
+		                jobModel.setJobStatuses(statuses);
 	                }
 	                jobs.add(jobModel);
                 }
@@ -1267,7 +1269,9 @@ public class ExperimentRegistry {
                     if (latestSR != null) {
                         JobStatus jobStatus = new JobStatus(JobState.valueOf(latestSR.getState()));
                         jobStatus.setReason(latestSR.getReason());
-                        jobModel.setJobStatus(jobStatus);
+                        List<JobStatus> statuses = new ArrayList<>();
+                        statuses.add(jobStatus);
+                        jobModel.setJobStatuses(statuses);
                     }
                     jobs.add(jobModel);
                 }


[21/48] airavata git commit: updating the registry refactoring code

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
index 3561d5a..342b73c 100644
--- a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
+++ b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
@@ -20,13 +20,23 @@
 */
 package org.apache.airavata.registry.core.repositories;
 
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.model.experiment.UserConfigurationDataModel;
+import org.apache.airavata.model.user.UserProfile;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.GatewayApprovalStatus;
 import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
 import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
 import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
+import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity;
+import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
+import org.apache.airavata.registry.core.repositories.expcatalog.ExperimentRepository;
 import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
 import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.ProjectRepository;
+import org.apache.airavata.registry.core.repositories.workspacecatalog.UserProfileRepository;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -56,5 +66,35 @@ public class RepositoryTest {
         notificationRepository.create(notification);
 
         notificationRepository.get(notification.getNotificationId());
+
+        UserProfile userProfile = new UserProfile();
+        userProfile.setAiravataInternalUserId(UUID.randomUUID().toString());
+        userProfile.setGatewayId(gateway.getGatewayId());
+        UserProfileRepository userProfileRepository = new UserProfileRepository(UserProfile.class, UserProfileEntity.class);
+        userProfileRepository.create(userProfile);
+
+
+        Project project = new Project();
+        project.setProjectID(UUID.randomUUID().toString());
+        project.setOwner(userProfile.getAiravataInternalUserId());
+        project.setGatewayId(gateway.getGatewayId());
+        project.setName("Project Name");
+
+        ProjectRepository projectRepository = new ProjectRepository(Project.class, ProjectEntity.class);
+        projectRepository.create(project);
+
+        ExperimentModel experiment = new ExperimentModel();
+        experiment.setExperimentId(UUID.randomUUID().toString());
+        experiment.setUserName(userProfile.getAiravataInternalUserId());
+        experiment.setProjectId(project.getProjectID());
+        experiment.setGatewayId(gateway.getGatewayId());
+        experiment.setExperimentName("Dummy Experiment");
+
+        UserConfigurationDataModel userConfigurationData = new UserConfigurationDataModel();
+        userConfigurationData.setExperimentDataDir("some/path");
+        experiment.setUserConfigurationData(userConfigurationData);
+
+        ExperimentRepository experimentRepository = new ExperimentRepository(ExperimentModel.class, ExperimentEntity.class);
+        experimentRepository.create(experiment);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/thrift-interface-descriptions/data-models/user-group-models/user_profile_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/user-group-models/user_profile_model.thrift b/thrift-interface-descriptions/data-models/user-group-models/user_profile_model.thrift
index e0c939d..e6b17ba 100644
--- a/thrift-interface-descriptions/data-models/user-group-models/user_profile_model.thrift
+++ b/thrift-interface-descriptions/data-models/user-group-models/user_profile_model.thrift
@@ -164,21 +164,22 @@ struct UserProfile {
     1: required string userModelVersion = USER_PROFILE_VERSION,
     2: required string airavataInternalUserId = airavata_commons.DEFAULT_ID,
     3: required string userId,
-    4: required list<string> emails,
-    5: optional string userName,
-    6: optional string orcidId,
-    7: optional list<string> phones,
-    8: optional string country,
-    9: optional list<string> nationality,
-    10: optional string homeOrganization,
-    11: optional string orginationAffiliation,
-    12: required string creationTime,
-    13: required string lastAccessTime,
-    14: required string validUntil,
-    15: required Status State,
-    16: optional string comments,
-    17: optional list<string> labeledURI,
-    18: optional string gpgKey,
-    19: optional string timeZone,
-    20: optional NSFDemographics nsfDemographics
+    4: required string gatewayId,
+    5: required list<string> emails,
+    6: optional string userName,
+    7: optional string orcidId,
+    8: optional list<string> phones,
+    9: optional string country,
+    10: optional list<string> nationality,
+    11: optional string homeOrganization,
+    12: optional string orginationAffiliation,
+    13: required string creationTime,
+    14: required string lastAccessTime,
+    15: required string validUntil,
+    16: required Status State,
+    17: optional string comments,
+    18: optional list<string> labeledURI,
+    19: optional string gpgKey,
+    20: optional string timeZone,
+    21: optional NSFDemographics nsfDemographics
 }
\ No newline at end of file


[33/48] airavata git commit: Added Fixed for reservations

Posted by la...@apache.org.
Added Fixed for reservations


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: ea4c2f67ccd08395f2829ee372bb53858a0a14dd
Parents: 2b3dec8
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Aug 31 15:58:12 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Aug 31 15:58:12 2016 -0400

----------------------------------------------------------------------
 .../src/main/java/org/apache/airavata/gfac/core/GFacUtils.java | 5 ++++-
 .../test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ea4c2f67/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0ed836f..da5e8db 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -461,7 +461,10 @@ public class GFacUtils {
                 jobDescriptor.setNodes(totalNodeCount);
             }
             // qos per queue
-            jobDescriptor.setQoS(getQoS(crp.getQualityOfService(), scheduling.getQueueName()));
+            String qoS = getQoS(crp.getQualityOfService(), scheduling.getQueueName());
+            if (qoS != null) {
+                jobDescriptor.setQoS(qoS);
+            }
             if (totalCPUCount > 0) {
                 int ppn = totalCPUCount / totalNodeCount;
                 jobDescriptor.setProcessesPerNode(ppn);

http://git-wip-us.apache.org/repos/asf/airavata/blob/ea4c2f67/modules/gfac/gfac-core/src/test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java
index ecea66f..3262f86 100644
--- a/modules/gfac/gfac-core/src/test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java
+++ b/modules/gfac/gfac-core/src/test/java/org/apache/airavata/gfac/core/GFacUtilsTest.java
@@ -40,4 +40,10 @@ public class GFacUtilsTest {
     }
 
 
+    @Test
+    public void testGetQoS_3() throws Exception {
+        String qos = "shared=oneweek";
+        String shared = GFacUtils.getQoS(qos, "compute");
+        Assert.assertNull(shared);
+    }
 }
\ No newline at end of file


[26/48] airavata git commit: adding job and task database models

Posted by la...@apache.org.
adding job and task database models


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: eee49d36c2ea2e9ab379c2ebfb2bd51a0ab647e6
Parents: 171c042
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 29 15:13:53 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 29 15:13:53 2016 -0400

----------------------------------------------------------------------
 .../ComputeResourceSchedulingEntity.java        |   2 +-
 .../entities/expcatalog/ExperimentEntity.java   |   4 +-
 .../expcatalog/ExperimentErrorEntity.java       |   2 +-
 .../expcatalog/ExperimentInputEntity.java       |   2 +-
 .../expcatalog/ExperimentOutputEntity.java      |   2 +-
 .../expcatalog/ExperimentStatusEntity.java      |   2 +-
 .../core/entities/expcatalog/JobEntity.java     | 165 +++++++++++++++++++
 .../entities/expcatalog/JobStatusEntity.java    |  83 ++++++++++
 .../core/entities/expcatalog/JobStatusPK.java   |  74 +++++++++
 .../core/entities/expcatalog/ProcessEntity.java |  12 +-
 .../entities/expcatalog/ProcessErrorEntity.java |   4 +-
 .../entities/expcatalog/ProcessInputEntity.java |   2 +-
 .../expcatalog/ProcessOutputEntity.java         |   2 +-
 .../ProcessResourceSchedulingEntity.java        |   2 +-
 .../expcatalog/ProcessStatusEntity.java         |   2 +-
 .../core/entities/expcatalog/TaskEntity.java    | 147 +++++++++++++++++
 .../entities/expcatalog/TaskErrorEntity.java    | 118 +++++++++++++
 .../core/entities/expcatalog/TaskErrorPK.java   |  75 +++++++++
 .../entities/expcatalog/TaskStatusEntity.java   |  83 ++++++++++
 .../core/entities/expcatalog/TaskStatusPK.java  |  74 +++++++++
 .../expcatalog/UserConfigurationEntity.java     |   2 +-
 .../workspacecatalog/GatewayEntity.java         |   2 +-
 .../workspacecatalog/NSFDemographicsEntity.java |   2 +-
 .../workspacecatalog/NotificationEntity.java    |   2 +-
 .../workspacecatalog/ProjectEntity.java         |   2 +-
 .../workspacecatalog/UserProfileEntity.java     |   2 +-
 .../expcatalog/ExperimentRepository.java        |   9 +
 .../src/main/resources/META-INF/persistence.xml |   5 +
 .../src/main/resources/experiment_catalog.sql   | 132 ++++++++++-----
 .../src/main/resources/workspace_catalog.sql    |  48 +++---
 30 files changed, 982 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
index 76eb5ea..bfbb3e2 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "COMPUTE_RESOURCE_SCHEDULING")
+@Table(name = "EXPCAT_COMPUTE_RESOURCE_SCHEDULING")
 public class ComputeResourceSchedulingEntity {
     private String experimentId;
     private String resourceHostId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
index a0686f8..e7ea3f6 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
@@ -24,7 +24,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name = "EXPERIMENT")
+@Table(name = "EXPCAT_EXPERIMENT")
 public class ExperimentEntity {
     public String experimentId;
     public String projectId;
@@ -159,7 +159,7 @@ public class ExperimentEntity {
     }
 
     @ElementCollection
-    @CollectionTable(name="EXPERIMENT_EMAIL", joinColumns = @JoinColumn(name="EXPERIMENT_ID"))
+    @CollectionTable(name="EXPCAT_EXPERIMENT_EMAIL", joinColumns = @JoinColumn(name="EXPERIMENT_ID"))
     public List<String> getEmailAddresses() {
         return emailAddresses;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
index 374a156..37df525 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
@@ -24,7 +24,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name = "EXPERIMENT_ERROR")
+@Table(name = "EXPCAT_EXPERIMENT_ERROR")
 @IdClass(ExperimentErrorPK.class)
 public class ExperimentErrorEntity {
     private String errorId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
index 7850c17..4a9b2c0 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "EXPERIMENT_INPUT")
+@Table(name = "EXPCAT_EXPERIMENT_INPUT")
 @IdClass(ExperimentInputPK.class)
 public class ExperimentInputEntity {
     private String experimentId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
index 891cf79..871fcd7 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "EXPERIMENT_OUTPUT")
+@Table(name = "EXPCAT_EXPERIMENT_OUTPUT")
 @IdClass(ExperimentOutputPK.class)
 public class ExperimentOutputEntity {
     private String experimentId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
index 48b822f..7a73e78 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "EXPERIMENT_STATUS")
+@Table(name = "EXPCAT_EXPERIMENT_STATUS")
 @IdClass(ExperimentStatusPK.class)
 public class ExperimentStatusEntity {
     private String experimentId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
new file mode 100644
index 0000000..a66295e
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
@@ -0,0 +1,165 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "EXPCAT_JOB")
+public class JobEntity {
+    private String jobId;
+    private String taskId;
+    private String processId;
+    private String jobDescription;
+    private long creationTime;
+    private String computeResourceConsumed;
+    private String jobName;
+    private String workingDir;
+    private String stdOut;
+    private String stdErr;
+    private int exitCode;
+
+    private List<JobStatusEntity> jobStatus;
+
+    private TaskEntity task;
+
+    @Id
+    @Column(name = "JOB_ID")
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    @Column(name = "TASK_ID")
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "JOB_DESCRIPTION")
+    public String getJobDescription() {
+        return jobDescription;
+    }
+
+    public void setJobDescription(String jobDescription) {
+        this.jobDescription = jobDescription;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "COMPUTE_RESOURCE_CONSUMED")
+    public String getComputeResourceConsumed() {
+        return computeResourceConsumed;
+    }
+
+    public void setComputeResourceConsumed(String computeResourceConsumed) {
+        this.computeResourceConsumed = computeResourceConsumed;
+    }
+
+    @Column(name = "JOB_NAME")
+    public String getJobName() {
+        return jobName;
+    }
+
+    public void setJobName(String jobName) {
+        this.jobName = jobName;
+    }
+
+    @Column(name = "WORKING_DIR")
+    public String getWorkingDir() {
+        return workingDir;
+    }
+
+    public void setWorkingDir(String workingDir) {
+        this.workingDir = workingDir;
+    }
+
+    @Lob
+    @Column(name = "STDOUT")
+    public String getStdOut() {
+        return stdOut;
+    }
+
+    public void setStdOut(String stdOut) {
+        this.stdOut = stdOut;
+    }
+
+    @Lob
+    @Column(name = "STDERR")
+    public String getStdErr() {
+        return stdErr;
+    }
+
+    public void setStdErr(String stdErr) {
+        this.stdErr = stdErr;
+    }
+
+    @Column(name = "EXIT_CODE")
+    public int getExitCode() {
+        return exitCode;
+    }
+
+    public void setExitCode(int exitCode) {
+        this.exitCode = exitCode;
+    }
+
+    @OneToMany(targetEntity = JobStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "job")
+    public List<JobStatusEntity> getJobStatus() {
+        return jobStatus;
+    }
+
+    public void setJobStatus(List<JobStatusEntity> jobStatus) {
+        this.jobStatus = jobStatus;
+    }
+
+    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
+    public TaskEntity getTask() {
+        return task;
+    }
+
+    public void setTask(TaskEntity task) {
+        this.task = task;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
new file mode 100644
index 0000000..bcc902b
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "EXPCAT_JOB_STATUS")
+@IdClass(JobStatusPK.class)
+public class JobStatusEntity {
+    private String jobId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private JobEntity job;
+
+    @Id
+    @Column(name = "JOB_ID")
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = JobEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "JOB_ID", referencedColumnName = "JOB_ID")
+    public JobEntity getJob() {
+        return job;
+    }
+
+    public void setJob(JobEntity job) {
+        this.job = job;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
new file mode 100644
index 0000000..fa8964f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class JobStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(JobStatusPK.class);
+    private String state;
+    private String jobId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "JOB_ID")
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        JobStatusPK that = (JobStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getJobId() != null ? getJobId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
index d7c6cca..109041e 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
@@ -25,7 +25,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name = "PROCESS")
+@Table(name = "EXPCAT_PROCESS")
 public class ProcessEntity {
     private String processId;
     private String experimentId;
@@ -50,6 +50,7 @@ public class ProcessEntity {
     private List<ProcessInputEntity> processInputs;
     private List<ProcessOutputEntity> processOutputs;
     private ProcessResourceSchedulingEntity processResourceSchedule;
+    private List<TaskEntity> tasks;
 
     private ExperimentEntity experiment;
 
@@ -254,6 +255,15 @@ public class ProcessEntity {
         this.processResourceSchedule = proceeResourceSchedule;
     }
 
+    @OneToMany(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<TaskEntity> getTasks() {
+        return tasks;
+    }
+
+    public void setTasks(List<TaskEntity> tasks) {
+        this.tasks = tasks;
+    }
+
     @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
     @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
     public ExperimentEntity getExperiment() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
index bae331f..60ad9b2 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
@@ -24,7 +24,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name = "PROCESS_ERROR")
+@Table(name = "EXPCAT_PROCESS_ERROR")
 @IdClass(ProcessErrorPK.class)
 public class ProcessErrorEntity {
     private String errorId;
@@ -96,7 +96,7 @@ public class ProcessErrorEntity {
 
 
     @ElementCollection
-    @CollectionTable(name="EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
+    @CollectionTable(name="EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
     public List<String> getRootCauseErrorIdList() {
         return rootCauseErrorIdList;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
index a63ff37..850c4a9 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "PROCESS_INPUT")
+@Table(name = "EXPCAT_PROCESS_INPUT")
 @IdClass(ProcessInputPK.class)
 public class ProcessInputEntity {
     private String processId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
index 06181bc..4226f7a 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "PROCESS_OUTPUT")
+@Table(name = "EXPCAT_PROCESS_OUTPUT")
 @IdClass(ProcessOutputPK.class)
 public class ProcessOutputEntity {
     private String processId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
index 11f167d..3a64f42 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "PROCESS_RESOURCE_SCHEDULING")
+@Table(name = "EXPCAT_PROCESS_RESOURCE_SCHEDULING")
 public class ProcessResourceSchedulingEntity {
     private String processId;
     private String resourceHostId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
index ea816b5..7a3c30e 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "PROCESS_STATUS")
+@Table(name = "EXPCAT_PROCESS_STATUS")
 @IdClass(ProcessStatusPK.class)
 public class ProcessStatusEntity {
     private String processId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
new file mode 100644
index 0000000..f01fa10
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
@@ -0,0 +1,147 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.apache.airavata.model.task.TaskTypes;
+
+import javax.persistence.*;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+@Entity
+@Table(name = "EXPCAT_TASK")
+public class TaskEntity {
+    private String taskId;
+    private TaskTypes taskType;
+    private String parentProcessId;
+    private long creationTime;
+    private long lastUpdateTime;
+    private String taskDetail;
+    private ByteBuffer subTaskModel;
+
+    private List<TaskStatusEntity> taskStatus;
+    private List<TaskErrorEntity> taskError;
+    private List<JobEntity> jobs;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "TASK_ID")
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    @Column(name = "TASK_TYPE")
+    public TaskTypes getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(TaskTypes taskType) {
+        this.taskType = taskType;
+    }
+
+    @Column(name = "PARENT_PROCESS_ID")
+    public String getParentProcessId() {
+        return parentProcessId;
+    }
+
+    public void setParentProcessId(String parentProcessId) {
+        this.parentProcessId = parentProcessId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_UPDATE_TIME")
+    public long getLastUpdateTime() {
+        return lastUpdateTime;
+    }
+
+    public void setLastUpdateTime(long lastUpdateTime) {
+        this.lastUpdateTime = lastUpdateTime;
+    }
+
+    @Column(name = "TASK_DETAIL")
+    public String getTaskDetail() {
+        return taskDetail;
+    }
+
+    public void setTaskDetail(String taskDetail) {
+        this.taskDetail = taskDetail;
+    }
+
+    @Lob
+    @Column(name = "SUB_TASK_MODEL")
+    public ByteBuffer getSubTaskModel() {
+        return subTaskModel;
+    }
+
+    public void setSubTaskModel(ByteBuffer subTaskModel) {
+        this.subTaskModel = subTaskModel;
+    }
+
+    @OneToMany(targetEntity = TaskStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
+    public List<TaskStatusEntity> getTaskStatus() {
+        return taskStatus;
+    }
+
+    public void setTaskStatus(List<TaskStatusEntity> taskStatus) {
+        this.taskStatus = taskStatus;
+    }
+
+    @OneToMany(targetEntity = TaskErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
+    public List<TaskErrorEntity> getTaskError() {
+        return taskError;
+    }
+
+    public void setTaskError(List<TaskErrorEntity> taskError) {
+        this.taskError = taskError;
+    }
+
+    @OneToMany(targetEntity = JobEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
+    public List<JobEntity> getJobs() {
+        return jobs;
+    }
+
+    public void setJobs(List<JobEntity> jobs) {
+        this.jobs = jobs;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PARENT_PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
new file mode 100644
index 0000000..d269ab7
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
@@ -0,0 +1,118 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "EXPCAT_TASK_ERROR")
+@IdClass(TaskErrorPK.class)
+public class TaskErrorEntity {
+    private String errorId;
+    private String taskId;
+    private long creationTime;
+    private String actualErrorMessage;
+    private String userFriendlyMessage;
+    private boolean transientOrPersistent;
+    private List<String> rootCauseErrorIdList;
+
+    private TaskEntity task;
+
+    @Id
+    @Column(name = "ERROR_ID")
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Id
+    @Column(name = "TASK_ID")
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "ACTUAL_ERROR_MESSAGE")
+    public String getActualErrorMessage() {
+        return actualErrorMessage;
+    }
+
+    public void setActualErrorMessage(String actualErrorMessage) {
+        this.actualErrorMessage = actualErrorMessage;
+    }
+
+    @Column(name = "USER_FRIENDLY_MESSAGE")
+    public String getUserFriendlyMessage() {
+        return userFriendlyMessage;
+    }
+
+    public void setUserFriendlyMessage(String userFriendlyMessage) {
+        this.userFriendlyMessage = userFriendlyMessage;
+    }
+
+
+    @Column(name = "TRANSIENT_OR_PERSISTENT")
+    public boolean isTransientOrPersistent() {
+        return transientOrPersistent;
+    }
+
+    public void setTransientOrPersistent(boolean transientOrPersistent) {
+        this.transientOrPersistent = transientOrPersistent;
+    }
+
+
+    @ElementCollection
+    @CollectionTable(name="EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
+    public List<String> getRootCauseErrorIdList() {
+        return rootCauseErrorIdList;
+    }
+
+    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
+        this.rootCauseErrorIdList = rootCauseErrorIdList;
+    }
+
+
+    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
+    public TaskEntity getTask() {
+        return task;
+    }
+
+    public void setTask(TaskEntity task) {
+        this.task = task;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
new file mode 100644
index 0000000..e504f83
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class TaskErrorPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(TaskErrorPK.class);
+    private String errorId;
+    private String taskId;
+
+    @Column(name = "ERROR_ID")
+    @Id
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "TASK_ID")
+    @Id
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String processId) {
+        this.taskId = taskId;
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        TaskErrorPK that = (TaskErrorPK) o;
+
+        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
+        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
+        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
new file mode 100644
index 0000000..2465b48
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "EXPCAT_TASK_STATUS")
+@IdClass(TaskStatusPK.class)
+public class TaskStatusEntity {
+    private String taskId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private TaskEntity task;
+
+    @Id
+    @Column(name = "TASK_ID")
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
+    public TaskEntity getTask() {
+        return task;
+    }
+
+    public void setTask(TaskEntity task) {
+        this.task = task;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
new file mode 100644
index 0000000..167d8a7
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class TaskStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(TaskStatusPK.class);
+    private String state;
+    private String taskId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "TASK_ID")
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        TaskStatusPK that = (TaskStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
index 7d27251..b685312 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "USER_CONFIGURATION")
+@Table(name = "EXPCAT_USER_CONFIGURATION")
 public class UserConfigurationEntity {
     private String experimentId;
     private boolean airavataAutoSchedule;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
index 6ba10fe..c4f1f59 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.workspacecatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name="GATEWAY")
+@Table(name="WORKSPACE_GATEWAY")
 public class GatewayEntity {
     private String gatewayId;
     private String gatewayName;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
index 4f7aa7a..0bcbafa 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
@@ -24,7 +24,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name = "NSF_DEMOGRAPHIC")
+@Table(name = "WORKSPACE_NSF_DEMOGRAPHIC")
 public class NSFDemographicsEntity {
     private String airavataInternalUserId;
     private String gender;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
index 5a0805c..67f8af2 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.workspacecatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "NOTIFICATION")
+@Table(name = "WORKSPACE_NOTIFICATION")
 public class NotificationEntity {
     private String notificationId;
     private String gatewayId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
index 2cfdd04..31e0868 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
@@ -26,7 +26,7 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 
 @Entity
-@Table(name = "PROJECT")
+@Table(name = "WORKSPACE_PROJECT")
 public class ProjectEntity {
     private String projectID;
     private String owner;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
index 11f6e33..7dd51ed 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
@@ -24,7 +24,7 @@ import javax.persistence.*;
 import java.util.List;
 
 @Entity
-@Table(name="USER_PROFILE")
+@Table(name="WORKSPACE_USER_PROFILE")
 public class UserProfileEntity {
     private String airavataInternalUserId;
     private String userId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
index 5a52dff..d30b1de 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -77,6 +77,15 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
                     process.getProcessError().forEach(processErr->processErr.setProcessId(processId));
                 if(process.getProcessStatus() != null)
                     process.getProcessStatus().forEach(processStat->processStat.setProcessId(processId));
+
+                if(process.getTasks() != null){
+                    process.getTasks().forEach(task->{
+                        String taskId = task.getTaskId();
+                        task.setParentProcessId(processId);
+
+
+                    });
+                }
             });
         }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
index 8367f97..ac9a08f 100644
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -40,6 +40,11 @@
         <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessOutputEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessResourceSchedulingEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskErrorEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskStatusEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.JobEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.JobStatusEntity</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
index 8c11027..3140cd1 100644
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -1,10 +1,10 @@
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT(
     EXPERIMENT_ID VARCHAR (255),
     PROJECT_ID VARCHAR (255),
     GATEWAY_ID VARCHAR (255),
     EXPERIMENT_TYPE VARCHAR (255),
-    USER_ID VARCHAR (255),
+    USER_NAME VARCHAR (255),
     EXPERIMENT_NAME VARCHAR (255),
     CREATION_TIME BIGINT,
     DESCRIPTION VARCHAR (255),
@@ -13,19 +13,19 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT(
     GATEWAY_INSTANCE_ID VARCHAR (255),
     ENABLE_EMAIL_NOTIFICATION TINYINT(1),
     PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
-    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-    FOREIGN KEY (USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROJECT_ID) REFERENCES WORKSPACE_PROJECT(PROJECT_ID) ON DELETE CASCADE,
+    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+    FOREIGN KEY (USER_NAME) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_EMAIL (
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_EMAIL (
     EXPERIMENT_ID VARCHAR (255),
     EMAIL VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID, EMAIL),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_CONFIGURATION(
+CREATE TABLE IF NOT EXISTS EXPCAT_USER_CONFIGURATION(
     EXPERIMENT_ID VARCHAR (255),
     AIRAVATA_AUTO_SCHEDULE TINYINT(1),
     OVERRIDE_MANUAL_SCHEDULED_PARAMS TINYINT(1),
@@ -35,10 +35,10 @@ CREATE TABLE IF NOT EXISTS USER_CONFIGURATION(
     STORAGE_ID VARCHAR (255),
     EXPERIMENT_DATA_DIR VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_SCHEDULING(
+CREATE TABLE IF NOT EXISTS EXPCAT_COMPUTE_RESOURCE_SCHEDULING(
     EXPERIMENT_ID VARCHAR (255),
     RESOURCE_HOST_ID VARCHAR (255),
     CPU_COUNT INT,
@@ -53,10 +53,10 @@ CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_SCHEDULING(
     OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
     OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES USER_CONFIGURATION(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_USER_CONFIGURATION(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_INPUT(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_INPUT(
     EXPERIMENT_ID VARCHAR (255),
     INPUT_NAME VARCHAR (255),
     INPUT_VALUE VARCHAR (255),
@@ -71,10 +71,10 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_INPUT(
     DATA_STAGED TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID,INPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_OUTPUT(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_OUTPUT(
     EXPERIMENT_ID VARCHAR (255),
     OUTPUT_NAME VARCHAR (255),
     OUTPUT_VALUE VARCHAR (255),
@@ -88,10 +88,10 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_OUTPUT(
     OUTPUT_STREAMING TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID,OUTPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_ERROR(
     ERROR_ID VARCHAR (255),
     EXPERIMENT_ID VARCHAR (255),
     CREATION_TIME BIGINT,
@@ -99,26 +99,26 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR(
     USER_FRIENDLY_MESSAGE VARCHAR (255),
     TRANSIENT_OR_PERSISTENT TINYINT,
     PRIMARY KEY (ERROR_ID, EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID(
     ERROR_ID VARCHAR (255),
     ROOT_CAUSE_ERROR_ID VARCHAR (255),
     PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
-    FOREIGN KEY(ERROR_ID) REFERENCES EXPERIMENT_ERROR(ERROR_ID) ON DELETE CASCADE
+    FOREIGN KEY(ERROR_ID) REFERENCES EXPCAT_EXPERIMENT_ERROR(ERROR_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS EXPERIMENT_STATUS(
+CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_STATUS(
     EXPERIMENT_ID VARCHAR (255),
     STATE VARCHAR (255),
     TIME_OF_STATE_CHANGE BIGINT,
     REASON VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID, STATE),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS(
     PROCESS_ID VARCHAR (255),
     EXPERIMENT_ID VARCHAR (255),
     CREATION_TIME BIGINT,
@@ -136,17 +136,17 @@ CREATE TABLE IF NOT EXISTS PROCESS(
     EXPERIMENT_DATA_DIR VARCHAR (255),
     USER_NAME VARCHAR (255),
     PRIMARY KEY (PROCESS_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_EMAIL (
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_EMAIL (
     PROCESS_ID VARCHAR (255),
     EMAIL VARCHAR (255),
     PRIMARY KEY (PROCESS_ID, EMAIL),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_RESOURCE_SCHEDULING(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_RESOURCE_SCHEDULING(
     PROCESS_ID VARCHAR (255),
     RESOURCE_HOST_ID VARCHAR (255),
     CPU_COUNT INT,
@@ -161,10 +161,10 @@ CREATE TABLE IF NOT EXISTS PROCESS_RESOURCE_SCHEDULING(
     OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
     OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
     PRIMARY KEY (PROCESS_ID),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_INPUT(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_INPUT(
     PROCESS_ID VARCHAR (255),
     INPUT_NAME VARCHAR (255),
     INPUT_VALUE VARCHAR (255),
@@ -179,10 +179,10 @@ CREATE TABLE IF NOT EXISTS PROCESS_INPUT(
     DATA_STAGED TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (PROCESS_ID,INPUT_NAME),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_OUTPUT(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_OUTPUT(
     PROCESS_ID VARCHAR (255),
     OUTPUT_NAME VARCHAR (255),
     OUTPUT_VALUE VARCHAR (255),
@@ -196,10 +196,10 @@ CREATE TABLE IF NOT EXISTS PROCESS_OUTPUT(
     OUTPUT_STREAMING TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (PROCESS_ID,OUTPUT_NAME),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_ERROR(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_ERROR(
     ERROR_ID VARCHAR (255),
     PROCESS_ID VARCHAR (255),
     CREATION_TIME BIGINT,
@@ -207,21 +207,79 @@ CREATE TABLE IF NOT EXISTS PROCESS_ERROR(
     USER_FRIENDLY_MESSAGE VARCHAR (255),
     TRANSIENT_OR_PERSISTENT TINYINT,
     PRIMARY KEY (ERROR_ID, PROCESS_ID),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
     ERROR_ID VARCHAR (255),
     ROOT_CAUSE_ERROR_ID VARCHAR (255),
     PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
-    FOREIGN KEY(ERROR_ID) REFERENCES PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
+    FOREIGN KEY(ERROR_ID) REFERENCES EXPCAT_PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROCESS_STATUS(
+CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_STATUS(
     PROCESS_ID VARCHAR (255),
     STATE VARCHAR (255),
     TIME_OF_STATE_CHANGE BIGINT,
     REASON VARCHAR (255),
     PRIMARY KEY (PROCESS_ID, STATE),
-    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS EXPCAT_TASK(
+    TASK_ID VARCHAR (255),
+    TASK_TYPE VARCHAR (255),
+    PARENT_PROCESS_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    LAST_UPDATE_TIME BIGINT,
+    TASK_DETAIL VARCHAR (255),
+    SUB_TASK_MODEL BLOB,
+    PRIMARY KEY (TASK_ID),
+    FOREIGN KEY (PARENT_PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID)
+);
+
+CREATE TABLE IF NOT EXISTS EXPCAT_TASK_ERROR(
+    ERROR_ID VARCHAR (255),
+    TASK_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    ACTUAL_ERROR_MESSAGE VARCHAR (255),
+    USER_FRIENDLY_MESSAGE VARCHAR (255),
+    TRANSIENT_OR_PERSISTENT TINYINT,
+    PRIMARY KEY (ERROR_ID, TASK_ID),
+    FOREIGN KEY (TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS EXPCAT_TASK_STATUS(
+    TASK_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (TASK_ID, STATE),
+    FOREIGN KEY (TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS EXPCAT_JOB(
+    JOB_ID VARCHAR (255),
+    TASK_ID VARCHAR (255),
+    PROCESS_ID VARCHAR (255),
+    JOB_DESCRIPTION VARCHAR (255),
+    CREATION_TIME BIGINT,
+    COMPUTE_RESOURCE_CONSUMED VARCHAR (255),
+    JOB_NAME VARCHAR (255),
+    WORKING_DIR VARCHAR (255),
+    STDOUT TEXT,
+    STDERR TEXT,
+    EXIT_CODE INT(11),
+    PRIMARY KEY(JOB_ID),
+    FOREIGN KEY(TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID),
+    FOREIGN KEY(PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID)
+);
+
+CREATE TABLE IF NOT EXISTS EXPCAT_JOB_STATUS(
+    JOB_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (JOB_ID, STATE),
+    FOREIGN KEY (JOB_ID) REFERENCES EXPCAT_JOB(JOB_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/eee49d36/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
index 8b87bc2..debdba4 100644
--- a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
@@ -1,5 +1,5 @@
 
-CREATE TABLE IF NOT  EXISTS GATEWAY(
+CREATE TABLE IF NOT  EXISTS WORKSPACE_GATEWAY(
     GATEWAY_ID VARCHAR (255),
     GATEWAY_NAME VARCHAR (255),
     GATEWAY_DOMAIN VARCHAR (255),
@@ -22,7 +22,7 @@ CREATE TABLE IF NOT  EXISTS GATEWAY(
     PRIMARY KEY (GATEWAY_ID)
 );
 
-CREATE TABLE IF NOT EXISTS NOTIFICATION (
+CREATE TABLE IF NOT EXISTS WORKSPACE_NOTIFICATION (
     NOTIFICATION_ID VARCHAR (255),
     GATEWAY_ID VARCHAR (255),
     TITLE VARCHAR (255),
@@ -32,10 +32,10 @@ CREATE TABLE IF NOT EXISTS NOTIFICATION (
     EXPIRATION_TIME BIGINT,
     PRIORITY VARCHAR (255),
     PRIMARY KEY (NOTIFICATION_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
+    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_PROFILE (
+CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     USER_ID VARCHAR (255),
     GATEWAY_ID VARCHAR (255),
@@ -53,66 +53,66 @@ CREATE TABLE IF NOT EXISTS USER_PROFILE (
     GPG_KEY VARCHAR (8192),
     TIME_ZONE VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
+    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_PROFILE_EMAIL (
+CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_EMAIL (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     EMAIL VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_PROFILE_PHONE (
+CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_PHONE (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     PHONE VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_PROFILE_NATIONALITY (
+CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_NATIONALITY (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     NATIONALITY VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS USER_PROFILE_LABELED_URI (
+CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_LABELED_URI (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     LABELED_URI VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC (
+CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     GENDER VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_ETHNICITY (
+CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_ETHNICITY (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     ETHNICITY VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_RACE (
+CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_RACE (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     RACE VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_DISABILITY (
+CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_DISABILITY (
     AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
     DISABILITY VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE IF NOT EXISTS PROJECT(
+CREATE TABLE IF NOT EXISTS WORKSPACE_PROJECT(
     PROJECT_ID VARCHAR (255),
     OWNER VARCHAR (255),
     GATEWAY_ID VARCHAR (255),
@@ -120,6 +120,6 @@ CREATE TABLE IF NOT EXISTS PROJECT(
     DESCRIPTION VARCHAR (255),
     CREATION_TIME BIGINT,
     PRIMARY KEY (PROJECT_ID),
-    FOREIGN KEY(OWNER) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY(GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
+    FOREIGN KEY(OWNER) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID),
+    FOREIGN KEY(GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
 );
\ No newline at end of file


[24/48] airavata git commit: adding process model classes

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 158edb0..471d7c5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -68,17 +68,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentId", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)3);
   private static final org.apache.thrift.protocol.TField LAST_UPDATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdateTime", org.apache.thrift.protocol.TType.I64, (short)4);
-  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.STRUCT, (short)5);
+  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.LIST, (short)5);
   private static final org.apache.thrift.protocol.TField PROCESS_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("processDetail", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField APPLICATION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField APPLICATION_DEPLOYMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationDeploymentId", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceId", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField PROCESS_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processInputs", org.apache.thrift.protocol.TType.LIST, (short)10);
   private static final org.apache.thrift.protocol.TField PROCESS_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processOutputs", org.apache.thrift.protocol.TType.LIST, (short)11);
-  private static final org.apache.thrift.protocol.TField RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
+  private static final org.apache.thrift.protocol.TField PROCESS_RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("processResourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
   private static final org.apache.thrift.protocol.TField TASKS_FIELD_DESC = new org.apache.thrift.protocol.TField("tasks", org.apache.thrift.protocol.TType.LIST, (short)13);
   private static final org.apache.thrift.protocol.TField TASK_DAG_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDag", org.apache.thrift.protocol.TType.STRING, (short)14);
-  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.STRUCT, (short)15);
+  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.LIST, (short)15);
   private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)16);
   private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)17);
   private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)18);
@@ -98,17 +98,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String experimentId; // required
   private long creationTime; // optional
   private long lastUpdateTime; // optional
-  private org.apache.airavata.model.status.ProcessStatus processStatus; // optional
+  private List<org.apache.airavata.model.status.ProcessStatus> processStatus; // optional
   private String processDetail; // optional
   private String applicationInterfaceId; // optional
   private String applicationDeploymentId; // optional
   private String computeResourceId; // optional
   private List<org.apache.airavata.model.application.io.InputDataObjectType> processInputs; // optional
   private List<org.apache.airavata.model.application.io.OutputDataObjectType> processOutputs; // optional
-  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule; // optional
+  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel processResourceSchedule; // optional
   private List<org.apache.airavata.model.task.TaskModel> tasks; // optional
   private String taskDag; // optional
-  private org.apache.airavata.model.commons.ErrorModel processError; // optional
+  private List<org.apache.airavata.model.commons.ErrorModel> processError; // optional
   private String gatewayExecutionId; // optional
   private boolean enableEmailNotification; // optional
   private List<String> emailAddresses; // optional
@@ -131,7 +131,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     COMPUTE_RESOURCE_ID((short)9, "computeResourceId"),
     PROCESS_INPUTS((short)10, "processInputs"),
     PROCESS_OUTPUTS((short)11, "processOutputs"),
-    RESOURCE_SCHEDULE((short)12, "resourceSchedule"),
+    PROCESS_RESOURCE_SCHEDULE((short)12, "processResourceSchedule"),
     TASKS((short)13, "tasks"),
     TASK_DAG((short)14, "taskDag"),
     PROCESS_ERROR((short)15, "processError"),
@@ -179,8 +179,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           return PROCESS_INPUTS;
         case 11: // PROCESS_OUTPUTS
           return PROCESS_OUTPUTS;
-        case 12: // RESOURCE_SCHEDULE
-          return RESOURCE_SCHEDULE;
+        case 12: // PROCESS_RESOURCE_SCHEDULE
+          return PROCESS_RESOURCE_SCHEDULE;
         case 13: // TASKS
           return TASKS;
         case 14: // TASK_DAG
@@ -248,7 +248,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
   private static final int __GENERATECERT_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.PROCESS_RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -261,7 +261,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.LAST_UPDATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastUpdateTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.PROCESS_STATUS, new org.apache.thrift.meta_data.FieldMetaData("processStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class)));
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class))));
     tmpMap.put(_Fields.PROCESS_DETAIL, new org.apache.thrift.meta_data.FieldMetaData("processDetail", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.APPLICATION_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("applicationInterfaceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -276,7 +277,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.PROCESS_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("processOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
-    tmpMap.put(_Fields.RESOURCE_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("resourceSchedule", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PROCESS_RESOURCE_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("processResourceSchedule", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel.class)));
     tmpMap.put(_Fields.TASKS, new org.apache.thrift.meta_data.FieldMetaData("tasks", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
@@ -284,7 +285,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.TASK_DAG, new org.apache.thrift.meta_data.FieldMetaData("taskDag", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PROCESS_ERROR, new org.apache.thrift.meta_data.FieldMetaData("processError", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class)));
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class))));
     tmpMap.put(_Fields.GATEWAY_EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayExecutionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ENABLE_EMAIL_NOTIFICATION, new org.apache.thrift.meta_data.FieldMetaData("enableEmailNotification", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -336,7 +338,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.creationTime = other.creationTime;
     this.lastUpdateTime = other.lastUpdateTime;
     if (other.isSetProcessStatus()) {
-      this.processStatus = new org.apache.airavata.model.status.ProcessStatus(other.processStatus);
+      List<org.apache.airavata.model.status.ProcessStatus> __this__processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(other.processStatus.size());
+      for (org.apache.airavata.model.status.ProcessStatus other_element : other.processStatus) {
+        __this__processStatus.add(new org.apache.airavata.model.status.ProcessStatus(other_element));
+      }
+      this.processStatus = __this__processStatus;
     }
     if (other.isSetProcessDetail()) {
       this.processDetail = other.processDetail;
@@ -364,8 +370,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       this.processOutputs = __this__processOutputs;
     }
-    if (other.isSetResourceSchedule()) {
-      this.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.resourceSchedule);
+    if (other.isSetProcessResourceSchedule()) {
+      this.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.processResourceSchedule);
     }
     if (other.isSetTasks()) {
       List<org.apache.airavata.model.task.TaskModel> __this__tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(other.tasks.size());
@@ -378,7 +384,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       this.taskDag = other.taskDag;
     }
     if (other.isSetProcessError()) {
-      this.processError = new org.apache.airavata.model.commons.ErrorModel(other.processError);
+      List<org.apache.airavata.model.commons.ErrorModel> __this__processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.processError.size());
+      for (org.apache.airavata.model.commons.ErrorModel other_element : other.processError) {
+        __this__processError.add(new org.apache.airavata.model.commons.ErrorModel(other_element));
+      }
+      this.processError = __this__processError;
     }
     if (other.isSetGatewayExecutionId()) {
       this.gatewayExecutionId = other.gatewayExecutionId;
@@ -423,7 +433,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.computeResourceId = null;
     this.processInputs = null;
     this.processOutputs = null;
-    this.resourceSchedule = null;
+    this.processResourceSchedule = null;
     this.tasks = null;
     this.taskDag = null;
     this.processError = null;
@@ -529,11 +539,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID, value);
   }
 
-  public org.apache.airavata.model.status.ProcessStatus getProcessStatus() {
+  public int getProcessStatusSize() {
+    return (this.processStatus == null) ? 0 : this.processStatus.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.status.ProcessStatus> getProcessStatusIterator() {
+    return (this.processStatus == null) ? null : this.processStatus.iterator();
+  }
+
+  public void addToProcessStatus(org.apache.airavata.model.status.ProcessStatus elem) {
+    if (this.processStatus == null) {
+      this.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>();
+    }
+    this.processStatus.add(elem);
+  }
+
+  public List<org.apache.airavata.model.status.ProcessStatus> getProcessStatus() {
     return this.processStatus;
   }
 
-  public void setProcessStatus(org.apache.airavata.model.status.ProcessStatus processStatus) {
+  public void setProcessStatus(List<org.apache.airavata.model.status.ProcessStatus> processStatus) {
     this.processStatus = processStatus;
   }
 
@@ -720,26 +745,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
-  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getResourceSchedule() {
-    return this.resourceSchedule;
+  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getProcessResourceSchedule() {
+    return this.processResourceSchedule;
   }
 
-  public void setResourceSchedule(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule) {
-    this.resourceSchedule = resourceSchedule;
+  public void setProcessResourceSchedule(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel processResourceSchedule) {
+    this.processResourceSchedule = processResourceSchedule;
   }
 
-  public void unsetResourceSchedule() {
-    this.resourceSchedule = null;
+  public void unsetProcessResourceSchedule() {
+    this.processResourceSchedule = null;
   }
 
-  /** Returns true if field resourceSchedule is set (has been assigned a value) and false otherwise */
-  public boolean isSetResourceSchedule() {
-    return this.resourceSchedule != null;
+  /** Returns true if field processResourceSchedule is set (has been assigned a value) and false otherwise */
+  public boolean isSetProcessResourceSchedule() {
+    return this.processResourceSchedule != null;
   }
 
-  public void setResourceScheduleIsSet(boolean value) {
+  public void setProcessResourceScheduleIsSet(boolean value) {
     if (!value) {
-      this.resourceSchedule = null;
+      this.processResourceSchedule = null;
     }
   }
 
@@ -804,11 +829,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
-  public org.apache.airavata.model.commons.ErrorModel getProcessError() {
+  public int getProcessErrorSize() {
+    return (this.processError == null) ? 0 : this.processError.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.commons.ErrorModel> getProcessErrorIterator() {
+    return (this.processError == null) ? null : this.processError.iterator();
+  }
+
+  public void addToProcessError(org.apache.airavata.model.commons.ErrorModel elem) {
+    if (this.processError == null) {
+      this.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>();
+    }
+    this.processError.add(elem);
+  }
+
+  public List<org.apache.airavata.model.commons.ErrorModel> getProcessError() {
     return this.processError;
   }
 
-  public void setProcessError(org.apache.airavata.model.commons.ErrorModel processError) {
+  public void setProcessError(List<org.apache.airavata.model.commons.ErrorModel> processError) {
     this.processError = processError;
   }
 
@@ -1062,7 +1102,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessStatus();
       } else {
-        setProcessStatus((org.apache.airavata.model.status.ProcessStatus)value);
+        setProcessStatus((List<org.apache.airavata.model.status.ProcessStatus>)value);
       }
       break;
 
@@ -1114,11 +1154,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       break;
 
-    case RESOURCE_SCHEDULE:
+    case PROCESS_RESOURCE_SCHEDULE:
       if (value == null) {
-        unsetResourceSchedule();
+        unsetProcessResourceSchedule();
       } else {
-        setResourceSchedule((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
+        setProcessResourceSchedule((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
       }
       break;
 
@@ -1142,7 +1182,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessError();
       } else {
-        setProcessError((org.apache.airavata.model.commons.ErrorModel)value);
+        setProcessError((List<org.apache.airavata.model.commons.ErrorModel>)value);
       }
       break;
 
@@ -1248,8 +1288,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     case PROCESS_OUTPUTS:
       return getProcessOutputs();
 
-    case RESOURCE_SCHEDULE:
-      return getResourceSchedule();
+    case PROCESS_RESOURCE_SCHEDULE:
+      return getProcessResourceSchedule();
 
     case TASKS:
       return getTasks();
@@ -1317,8 +1357,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return isSetProcessInputs();
     case PROCESS_OUTPUTS:
       return isSetProcessOutputs();
-    case RESOURCE_SCHEDULE:
-      return isSetResourceSchedule();
+    case PROCESS_RESOURCE_SCHEDULE:
+      return isSetProcessResourceSchedule();
     case TASKS:
       return isSetTasks();
     case TASK_DAG:
@@ -1457,12 +1497,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return false;
     }
 
-    boolean this_present_resourceSchedule = true && this.isSetResourceSchedule();
-    boolean that_present_resourceSchedule = true && that.isSetResourceSchedule();
-    if (this_present_resourceSchedule || that_present_resourceSchedule) {
-      if (!(this_present_resourceSchedule && that_present_resourceSchedule))
+    boolean this_present_processResourceSchedule = true && this.isSetProcessResourceSchedule();
+    boolean that_present_processResourceSchedule = true && that.isSetProcessResourceSchedule();
+    if (this_present_processResourceSchedule || that_present_processResourceSchedule) {
+      if (!(this_present_processResourceSchedule && that_present_processResourceSchedule))
         return false;
-      if (!this.resourceSchedule.equals(that.resourceSchedule))
+      if (!this.processResourceSchedule.equals(that.processResourceSchedule))
         return false;
     }
 
@@ -1627,10 +1667,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (present_processOutputs)
       list.add(processOutputs);
 
-    boolean present_resourceSchedule = true && (isSetResourceSchedule());
-    list.add(present_resourceSchedule);
-    if (present_resourceSchedule)
-      list.add(resourceSchedule);
+    boolean present_processResourceSchedule = true && (isSetProcessResourceSchedule());
+    list.add(present_processResourceSchedule);
+    if (present_processResourceSchedule)
+      list.add(processResourceSchedule);
 
     boolean present_tasks = true && (isSetTasks());
     list.add(present_tasks);
@@ -1808,12 +1848,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetResourceSchedule()).compareTo(other.isSetResourceSchedule());
+    lastComparison = Boolean.valueOf(isSetProcessResourceSchedule()).compareTo(other.isSetProcessResourceSchedule());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetResourceSchedule()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceSchedule, other.resourceSchedule);
+    if (isSetProcessResourceSchedule()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processResourceSchedule, other.processResourceSchedule);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -2045,13 +2085,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       first = false;
     }
-    if (isSetResourceSchedule()) {
+    if (isSetProcessResourceSchedule()) {
       if (!first) sb.append(", ");
-      sb.append("resourceSchedule:");
-      if (this.resourceSchedule == null) {
+      sb.append("processResourceSchedule:");
+      if (this.processResourceSchedule == null) {
         sb.append("null");
       } else {
-        sb.append(this.resourceSchedule);
+        sb.append(this.processResourceSchedule);
       }
       first = false;
     }
@@ -2172,14 +2212,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
 
     // check for sub-struct validity
-    if (processStatus != null) {
-      processStatus.validate();
-    }
-    if (resourceSchedule != null) {
-      resourceSchedule.validate();
-    }
-    if (processError != null) {
-      processError.validate();
+    if (processResourceSchedule != null) {
+      processResourceSchedule.validate();
     }
   }
 
@@ -2252,9 +2286,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             }
             break;
           case 5: // PROCESS_STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
-              struct.processStatus.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list0.size);
+                org.apache.airavata.model.status.ProcessStatus _elem1;
+                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                {
+                  _elem1 = new org.apache.airavata.model.status.ProcessStatus();
+                  _elem1.read(iprot);
+                  struct.processStatus.add(_elem1);
+                }
+                iprot.readListEnd();
+              }
               struct.setProcessStatusIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -2295,14 +2339,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 10: // PROCESS_INPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list0.size);
-                org.apache.airavata.model.application.io.InputDataObjectType _elem1;
-                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
+                struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list3.size);
+                org.apache.airavata.model.application.io.InputDataObjectType _elem4;
+                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
                 {
-                  _elem1 = new org.apache.airavata.model.application.io.InputDataObjectType();
-                  _elem1.read(iprot);
-                  struct.processInputs.add(_elem1);
+                  _elem4 = new org.apache.airavata.model.application.io.InputDataObjectType();
+                  _elem4.read(iprot);
+                  struct.processInputs.add(_elem4);
                 }
                 iprot.readListEnd();
               }
@@ -2314,14 +2358,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 11: // PROCESS_OUTPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
-                struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list3.size);
-                org.apache.airavata.model.application.io.OutputDataObjectType _elem4;
-                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
+                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
+                struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list6.size);
+                org.apache.airavata.model.application.io.OutputDataObjectType _elem7;
+                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
                 {
-                  _elem4 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-                  _elem4.read(iprot);
-                  struct.processOutputs.add(_elem4);
+                  _elem7 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+                  _elem7.read(iprot);
+                  struct.processOutputs.add(_elem7);
                 }
                 iprot.readListEnd();
               }
@@ -2330,11 +2374,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 12: // RESOURCE_SCHEDULE
+          case 12: // PROCESS_RESOURCE_SCHEDULE
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
-              struct.resourceSchedule.read(iprot);
-              struct.setResourceScheduleIsSet(true);
+              struct.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
+              struct.processResourceSchedule.read(iprot);
+              struct.setProcessResourceScheduleIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -2342,14 +2386,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 13: // TASKS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
-                struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list6.size);
-                org.apache.airavata.model.task.TaskModel _elem7;
-                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
+                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
+                struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list9.size);
+                org.apache.airavata.model.task.TaskModel _elem10;
+                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
                 {
-                  _elem7 = new org.apache.airavata.model.task.TaskModel();
-                  _elem7.read(iprot);
-                  struct.tasks.add(_elem7);
+                  _elem10 = new org.apache.airavata.model.task.TaskModel();
+                  _elem10.read(iprot);
+                  struct.tasks.add(_elem10);
                 }
                 iprot.readListEnd();
               }
@@ -2367,9 +2411,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             }
             break;
           case 15: // PROCESS_ERROR
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.processError = new org.apache.airavata.model.commons.ErrorModel();
-              struct.processError.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
+                struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list12.size);
+                org.apache.airavata.model.commons.ErrorModel _elem13;
+                for (int _i14 = 0; _i14 < _list12.size; ++_i14)
+                {
+                  _elem13 = new org.apache.airavata.model.commons.ErrorModel();
+                  _elem13.read(iprot);
+                  struct.processError.add(_elem13);
+                }
+                iprot.readListEnd();
+              }
               struct.setProcessErrorIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -2394,13 +2448,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 18: // EMAIL_ADDRESSES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
-                struct.emailAddresses = new ArrayList<String>(_list9.size);
-                String _elem10;
-                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
+                org.apache.thrift.protocol.TList _list15 = iprot.readListBegin();
+                struct.emailAddresses = new ArrayList<String>(_list15.size);
+                String _elem16;
+                for (int _i17 = 0; _i17 < _list15.size; ++_i17)
                 {
-                  _elem10 = iprot.readString();
-                  struct.emailAddresses.add(_elem10);
+                  _elem16 = iprot.readString();
+                  struct.emailAddresses.add(_elem16);
                 }
                 iprot.readListEnd();
               }
@@ -2485,7 +2539,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.processStatus != null) {
         if (struct.isSetProcessStatus()) {
           oprot.writeFieldBegin(PROCESS_STATUS_FIELD_DESC);
-          struct.processStatus.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processStatus.size()));
+            for (org.apache.airavata.model.status.ProcessStatus _iter18 : struct.processStatus)
+            {
+              _iter18.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -2522,9 +2583,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(PROCESS_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processInputs.size()));
-            for (org.apache.airavata.model.application.io.InputDataObjectType _iter12 : struct.processInputs)
+            for (org.apache.airavata.model.application.io.InputDataObjectType _iter19 : struct.processInputs)
             {
-              _iter12.write(oprot);
+              _iter19.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2536,19 +2597,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(PROCESS_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processOutputs.size()));
-            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter13 : struct.processOutputs)
+            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter20 : struct.processOutputs)
             {
-              _iter13.write(oprot);
+              _iter20.write(oprot);
             }
             oprot.writeListEnd();
           }
           oprot.writeFieldEnd();
         }
       }
-      if (struct.resourceSchedule != null) {
-        if (struct.isSetResourceSchedule()) {
-          oprot.writeFieldBegin(RESOURCE_SCHEDULE_FIELD_DESC);
-          struct.resourceSchedule.write(oprot);
+      if (struct.processResourceSchedule != null) {
+        if (struct.isSetProcessResourceSchedule()) {
+          oprot.writeFieldBegin(PROCESS_RESOURCE_SCHEDULE_FIELD_DESC);
+          struct.processResourceSchedule.write(oprot);
           oprot.writeFieldEnd();
         }
       }
@@ -2557,9 +2618,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(TASKS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.tasks.size()));
-            for (org.apache.airavata.model.task.TaskModel _iter14 : struct.tasks)
+            for (org.apache.airavata.model.task.TaskModel _iter21 : struct.tasks)
             {
-              _iter14.write(oprot);
+              _iter21.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2576,7 +2637,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.processError != null) {
         if (struct.isSetProcessError()) {
           oprot.writeFieldBegin(PROCESS_ERROR_FIELD_DESC);
-          struct.processError.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processError.size()));
+            for (org.apache.airavata.model.commons.ErrorModel _iter22 : struct.processError)
+            {
+              _iter22.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -2597,9 +2665,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(EMAIL_ADDRESSES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.emailAddresses.size()));
-            for (String _iter15 : struct.emailAddresses)
+            for (String _iter23 : struct.emailAddresses)
             {
-              oprot.writeString(_iter15);
+              oprot.writeString(_iter23);
             }
             oprot.writeListEnd();
           }
@@ -2686,7 +2754,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetProcessOutputs()) {
         optionals.set(8);
       }
-      if (struct.isSetResourceSchedule()) {
+      if (struct.isSetProcessResourceSchedule()) {
         optionals.set(9);
       }
       if (struct.isSetTasks()) {
@@ -2730,7 +2798,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeI64(struct.lastUpdateTime);
       }
       if (struct.isSetProcessStatus()) {
-        struct.processStatus.write(oprot);
+        {
+          oprot.writeI32(struct.processStatus.size());
+          for (org.apache.airavata.model.status.ProcessStatus _iter24 : struct.processStatus)
+          {
+            _iter24.write(oprot);
+          }
+        }
       }
       if (struct.isSetProcessDetail()) {
         oprot.writeString(struct.processDetail);
@@ -2747,30 +2821,30 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetProcessInputs()) {
         {
           oprot.writeI32(struct.processInputs.size());
-          for (org.apache.airavata.model.application.io.InputDataObjectType _iter16 : struct.processInputs)
+          for (org.apache.airavata.model.application.io.InputDataObjectType _iter25 : struct.processInputs)
           {
-            _iter16.write(oprot);
+            _iter25.write(oprot);
           }
         }
       }
       if (struct.isSetProcessOutputs()) {
         {
           oprot.writeI32(struct.processOutputs.size());
-          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter17 : struct.processOutputs)
+          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter26 : struct.processOutputs)
           {
-            _iter17.write(oprot);
+            _iter26.write(oprot);
           }
         }
       }
-      if (struct.isSetResourceSchedule()) {
-        struct.resourceSchedule.write(oprot);
+      if (struct.isSetProcessResourceSchedule()) {
+        struct.processResourceSchedule.write(oprot);
       }
       if (struct.isSetTasks()) {
         {
           oprot.writeI32(struct.tasks.size());
-          for (org.apache.airavata.model.task.TaskModel _iter18 : struct.tasks)
+          for (org.apache.airavata.model.task.TaskModel _iter27 : struct.tasks)
           {
-            _iter18.write(oprot);
+            _iter27.write(oprot);
           }
         }
       }
@@ -2778,7 +2852,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeString(struct.taskDag);
       }
       if (struct.isSetProcessError()) {
-        struct.processError.write(oprot);
+        {
+          oprot.writeI32(struct.processError.size());
+          for (org.apache.airavata.model.commons.ErrorModel _iter28 : struct.processError)
+          {
+            _iter28.write(oprot);
+          }
+        }
       }
       if (struct.isSetGatewayExecutionId()) {
         oprot.writeString(struct.gatewayExecutionId);
@@ -2789,9 +2869,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetEmailAddresses()) {
         {
           oprot.writeI32(struct.emailAddresses.size());
-          for (String _iter19 : struct.emailAddresses)
+          for (String _iter29 : struct.emailAddresses)
           {
-            oprot.writeString(_iter19);
+            oprot.writeString(_iter29);
           }
         }
       }
@@ -2829,8 +2909,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.setLastUpdateTimeIsSet(true);
       }
       if (incoming.get(2)) {
-        struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
-        struct.processStatus.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list30 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list30.size);
+          org.apache.airavata.model.status.ProcessStatus _elem31;
+          for (int _i32 = 0; _i32 < _list30.size; ++_i32)
+          {
+            _elem31 = new org.apache.airavata.model.status.ProcessStatus();
+            _elem31.read(iprot);
+            struct.processStatus.add(_elem31);
+          }
+        }
         struct.setProcessStatusIsSet(true);
       }
       if (incoming.get(3)) {
@@ -2851,47 +2940,47 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (incoming.get(7)) {
         {
-          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list20.size);
-          org.apache.airavata.model.application.io.InputDataObjectType _elem21;
-          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
+          org.apache.thrift.protocol.TList _list33 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list33.size);
+          org.apache.airavata.model.application.io.InputDataObjectType _elem34;
+          for (int _i35 = 0; _i35 < _list33.size; ++_i35)
           {
-            _elem21 = new org.apache.airavata.model.application.io.InputDataObjectType();
-            _elem21.read(iprot);
-            struct.processInputs.add(_elem21);
+            _elem34 = new org.apache.airavata.model.application.io.InputDataObjectType();
+            _elem34.read(iprot);
+            struct.processInputs.add(_elem34);
           }
         }
         struct.setProcessInputsIsSet(true);
       }
       if (incoming.get(8)) {
         {
-          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list23.size);
-          org.apache.airavata.model.application.io.OutputDataObjectType _elem24;
-          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
+          org.apache.thrift.protocol.TList _list36 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list36.size);
+          org.apache.airavata.model.application.io.OutputDataObjectType _elem37;
+          for (int _i38 = 0; _i38 < _list36.size; ++_i38)
           {
-            _elem24 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-            _elem24.read(iprot);
-            struct.processOutputs.add(_elem24);
+            _elem37 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+            _elem37.read(iprot);
+            struct.processOutputs.add(_elem37);
           }
         }
         struct.setProcessOutputsIsSet(true);
       }
       if (incoming.get(9)) {
-        struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
-        struct.resourceSchedule.read(iprot);
-        struct.setResourceScheduleIsSet(true);
+        struct.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
+        struct.processResourceSchedule.read(iprot);
+        struct.setProcessResourceScheduleIsSet(true);
       }
       if (incoming.get(10)) {
         {
-          org.apache.thrift.protocol.TList _list26 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list26.size);
-          org.apache.airavata.model.task.TaskModel _elem27;
-          for (int _i28 = 0; _i28 < _list26.size; ++_i28)
+          org.apache.thrift.protocol.TList _list39 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list39.size);
+          org.apache.airavata.model.task.TaskModel _elem40;
+          for (int _i41 = 0; _i41 < _list39.size; ++_i41)
           {
-            _elem27 = new org.apache.airavata.model.task.TaskModel();
-            _elem27.read(iprot);
-            struct.tasks.add(_elem27);
+            _elem40 = new org.apache.airavata.model.task.TaskModel();
+            _elem40.read(iprot);
+            struct.tasks.add(_elem40);
           }
         }
         struct.setTasksIsSet(true);
@@ -2901,8 +2990,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.setTaskDagIsSet(true);
       }
       if (incoming.get(12)) {
-        struct.processError = new org.apache.airavata.model.commons.ErrorModel();
-        struct.processError.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list42 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list42.size);
+          org.apache.airavata.model.commons.ErrorModel _elem43;
+          for (int _i44 = 0; _i44 < _list42.size; ++_i44)
+          {
+            _elem43 = new org.apache.airavata.model.commons.ErrorModel();
+            _elem43.read(iprot);
+            struct.processError.add(_elem43);
+          }
+        }
         struct.setProcessErrorIsSet(true);
       }
       if (incoming.get(13)) {
@@ -2915,13 +3013,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (incoming.get(15)) {
         {
-          org.apache.thrift.protocol.TList _list29 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.emailAddresses = new ArrayList<String>(_list29.size);
-          String _elem30;
-          for (int _i31 = 0; _i31 < _list29.size; ++_i31)
+          org.apache.thrift.protocol.TList _list45 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.emailAddresses = new ArrayList<String>(_list45.size);
+          String _elem46;
+          for (int _i47 = 0; _i47 < _list45.size; ++_i47)
           {
-            _elem30 = iprot.readString();
-            struct.emailAddresses.add(_elem30);
+            _elem46 = iprot.readString();
+            struct.emailAddresses.add(_elem46);
           }
         }
         struct.setEmailAddressesIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
index 321d31c..ef18235 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
@@ -23,14 +23,32 @@
  */
 package org.apache.airavata.model.user;
 
-import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-import org.apache.thrift.scheme.TupleScheme;
 
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
 import javax.annotation.Generated;
-import java.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
index d1b25b0..07f38e4 100644
--- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
+++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
@@ -103,7 +103,7 @@ public class ExperimentModelUtil {
             processModel.setUserDn(configData.getUserDN());
             ComputationalResourceSchedulingModel scheduling = configData.getComputationalResourceScheduling();
             if (scheduling != null){
-                processModel.setResourceSchedule(scheduling);
+                processModel.setProcessResourceSchedule(scheduling);
                 processModel.setComputeResourceId(scheduling.getResourceHostId());
             }
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0ed836f..0015a21 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -449,7 +449,7 @@ public class GFacUtils {
             log.error("Error while getting job submissiont sub task model", e);
         }
 
-        ComputationalResourceSchedulingModel scheduling = processModel.getResourceSchedule();
+        ComputationalResourceSchedulingModel scheduling = processModel.getProcessResourceSchedule();
         if (scheduling != null) {
             int totalNodeCount = scheduling.getNodeCount();
             int totalCPUCount = scheduling.getTotalCPUCount();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index 4181b47..0e8c1f0 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -46,6 +46,7 @@ import org.apache.curator.framework.CuratorFramework;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -162,11 +163,11 @@ public class ProcessContext {
 
 	public String getWorkingDir() {
 		if (workingDir == null) {
-            if (processModel.getResourceSchedule().getStaticWorkingDir() != null){
-                workingDir = processModel.getResourceSchedule().getStaticWorkingDir();
+            if (processModel.getProcessResourceSchedule().getStaticWorkingDir() != null){
+                workingDir = processModel.getProcessResourceSchedule().getStaticWorkingDir();
             }else {
                 String scratchLocation = null;
-				String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+				String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
                 if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
 					scratchLocation = overrideScratchLocation;
 				} else {
@@ -361,19 +362,27 @@ public class ProcessContext {
 	}
 
 	public ProcessState getProcessState() {
-		return processModel.getProcessStatus().getState();
+		if(processModel.getProcessStatus() != null && processModel.getProcessStatus().size() > 0)
+			return processModel.getProcessStatus().get(0).getState();
+		else
+			return null;
 	}
 
 	public void setProcessStatus(ProcessStatus status) {
 		if (status != null) {
 			log.info("expId: {}, processId: {} :- Process status changed {} -> {}", getExperimentId(), processId,
 					getProcessState().name(), status.getState().name());
-			processModel.setProcessStatus(status);
+			List<ProcessStatus> processStatuses = new ArrayList<>();
+			processStatuses.add(status);
+			processModel.setProcessStatus(processStatuses);
 		}
 	}
 
 	public ProcessStatus getProcessStatus(){
-		return processModel.getProcessStatus();
+		if(processModel.getProcessStatus() != null)
+			return processModel.getProcessStatus().get(0);
+		else
+			return null;
 	}
 
 	public String getComputeResourceId() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
index 6ed6de3..4aaf93b 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
@@ -335,7 +335,7 @@ public abstract class Factory {
         try {
             ProcessModel processModel = processContext.getProcessModel();
             String loginUserName = null;
-            String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName();
+            String overrideLoginUserName = processModel.getProcessResourceSchedule().getOverrideLoginUserName();
             if (overrideLoginUserName != null && !overrideLoginUserName.equals("")) {
                 loginUserName = overrideLoginUserName;
             } else {
@@ -352,7 +352,7 @@ public abstract class Factory {
         try {
             ProcessModel processModel = processContext.getProcessModel();
             String scratchLocation = null;
-            String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+            String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
             if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
                 scratchLocation = overrideScratchLocation;
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
index da29a26..ebe3bab 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
@@ -76,7 +76,7 @@ public class DataStreamingTask implements Task {
                 if (processOutput != null) {
                     if (processOutput.isOutputStreaming()) {
                         // stream output periodically
-                        ComputationalResourceSchedulingModel resourceSchedule = taskContext.getParentProcessContext().getProcessModel().getResourceSchedule();
+                        ComputationalResourceSchedulingModel resourceSchedule = taskContext.getParentProcessContext().getProcessModel().getProcessResourceSchedule();
                         int wallTimeLimit = resourceSchedule.getWallTimeLimit();
                         if (wallTimeLimit > 10) {
                             int period = wallTimeLimit / 10;

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
index d9ef7e2..d6b32e7 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
@@ -108,7 +108,7 @@ public class ApplicationProcessor {
                 	// do nothing
                 }
                 
-                int totalThreadCount = context.getProcessModel().getResourceSchedule().getNumberOfThreads();
+                int totalThreadCount = context.getProcessModel().getProcessResourceSchedule().getNumberOfThreads();
                 // we take it as threads per processes
                 if(totalThreadCount > 0){
 					ThreadsPerProcessType tpp = ThreadsPerProcessType.Factory.newInstance();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
index a5586db..ea2ccdc 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
@@ -37,7 +37,7 @@ public class ResourceProcessor {
         ProcessModel processModel = context.getProcessModel();
         if (processModel != null) {
             try {
-                ComputationalResourceSchedulingModel crs = processModel.getResourceSchedule();
+                ComputationalResourceSchedulingModel crs = processModel.getProcessResourceSchedule();
 
                 if (crs.getTotalPhysicalMemory() > 0) {
                     RangeValueType rangeType = new RangeValueType();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
index 95ff86e..74bd2db 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
@@ -124,7 +124,7 @@ public class OrchestratorUtils {
     public static String getLoginUserName(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException {
         try {
             String loginUserName = null;
-            String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName();
+            String overrideLoginUserName = processModel.getProcessResourceSchedule().getOverrideLoginUserName();
             if (overrideLoginUserName != null && !overrideLoginUserName.equals("")) {
                 loginUserName = overrideLoginUserName;
             } else {
@@ -141,7 +141,7 @@ public class OrchestratorUtils {
     public static String getScratchLocation(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException {
         try {
             String scratchLocation = null;
-            String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+            String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
             if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
                 scratchLocation = overrideScratchLocation;
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
index 212426d..173552e 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
@@ -82,7 +82,7 @@ public class BatchQueueValidator implements JobMetadataValidator {
                 if (processModel == null) {
                     computeResource = appCatalog.getComputeResource().getComputeResource(experiment.getUserConfigurationData().getComputationalResourceScheduling().getResourceHostId());
                 } else {
-                    computeResource = appCatalog.getComputeResource().getComputeResource(processModel.getResourceSchedule().getResourceHostId());
+                    computeResource = appCatalog.getComputeResource().getComputeResource(processModel.getProcessResourceSchedule().getResourceHostId());
 
                 }
                 List<BatchQueue> batchQueues = computeResource.getBatchQueues();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index 3e057cb..73a6aef 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -275,7 +275,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         try {
             ExperimentCatalog experimentCatalog = orchestratorContext.getRegistry().getExperimentCatalog();
             AppCatalog appCatalog = orchestratorContext.getRegistry().getAppCatalog();
-            ComputationalResourceSchedulingModel resourceSchedule = processModel.getResourceSchedule();
+            ComputationalResourceSchedulingModel resourceSchedule = processModel.getProcessResourceSchedule();
             String userGivenQueueName = resourceSchedule.getQueueName();
             int userGivenWallTime = resourceSchedule.getWallTimeLimit();
             String resourceHostId = resourceSchedule.getResourceHostId();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 1a6ac25..725a0b1 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -330,7 +330,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             ApplicationDeploymentDescription applicationDeploymentDescription = getAppDeployment(processModel, applicationId);
             processModel.setApplicationDeploymentId(applicationDeploymentDescription.getAppDeploymentId());
 			// set compute resource id to process model, default we set the same in the user preferred compute host id
-			processModel.setComputeResourceId(processModel.getResourceSchedule().getResourceHostId());
+			processModel.setComputeResourceId(processModel.getProcessResourceSchedule().getResourceHostId());
 			experimentCatalog.update(ExperimentCatalogModelType.PROCESS, processModel,processModel.getProcessId());
 		    return orchestrator.launchProcess(processModel, airavataCredStoreToken);
 		} catch (Exception e) {
@@ -353,8 +353,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             IllegalAccessException {
         Map<String, String> moduleIdFilter = new HashMap<String, String>();
         moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, selectedModuleId);
-        if (processModel.getResourceSchedule() != null && processModel.getResourceSchedule().getResourceHostId() != null) {
-            moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, processModel.getResourceSchedule().getResourceHostId());
+        if (processModel.getProcessResourceSchedule() != null && processModel.getProcessResourceSchedule().getResourceHostId() != null) {
+            moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, processModel.getProcessResourceSchedule().getResourceHostId());
         }
         List<ApplicationDeploymentDescription> applicationDeployements = appCatalog.getApplicationDeployment().getApplicationDeployements(moduleIdFilter);
         Map<ComputeResourceDescription, ApplicationDeploymentDescription> deploymentMap = new HashMap<ComputeResourceDescription, ApplicationDeploymentDescription>();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
deleted file mode 100644
index e509b47..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core;
-
-import org.apache.airavata.model.user.NSFDemographics;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.GatewayApprovalStatus;
-import org.apache.airavata.model.workspace.Notification;
-import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
-import org.apache.airavata.registry.core.utils.JPAUtils;
-import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
-import org.dozer.Mapper;
-
-import java.io.IOException;
-import java.util.UUID;
-
-public class Main {
-
-    public static void main(String[] args) throws IOException {
-        org.apache.airavata.model.user.UserProfile userProfile = new org.apache.airavata.model.user.UserProfile();
-        userProfile.setAiravataInternalUserId("I don't know");
-        NSFDemographics nsfDemographics = new NSFDemographics();
-        nsfDemographics.setGender("sdfsf");
-        userProfile.setNsfDemographics(nsfDemographics);
-
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        UserProfileEntity destObject =
-                mapper.map(userProfile, UserProfileEntity.class);
-
-        System.out.println(destObject.getNsfDemographics().getGender());
-
-        userProfile = mapper.map(destObject, org.apache.airavata.model.user.UserProfile.class);
-        System.out.println(userProfile.getNsfDemographics().getGender());
-
-        JPAUtils.getEntityManager();
-
-        Gateway gateway = new Gateway();
-        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
-        gateway.setGatewayId("test.com" + System.currentTimeMillis());
-        gateway.setDomain("test.com");
-
-        GatewayRepository gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
-        gateway = gatewayRepository.create(gateway);
-        System.out.println(gateway.getGatewayId());
-
-        Notification notification = new Notification();
-        notification.setNotificationId(UUID.randomUUID().toString());
-        notification.setGatewayId(gateway.getGatewayId());
-
-        NotificationRepository notificationRepository = new NotificationRepository(Notification.class, NotificationEntity.class);
-        notificationRepository.create(notification);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
index 796253f..a0686f8 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
@@ -47,6 +47,8 @@ public class ExperimentEntity {
 
     private UserConfigurationEntity userConfigurationData;
 
+    private List<ProcessEntity> processes;
+
     @Id
     @Column(name = "EXPERIMENT_ID")
     public String getExperimentId() {
@@ -210,4 +212,13 @@ public class ExperimentEntity {
     public void setExperimentStatuses(List<ExperimentStatusEntity> experimentStatuses) {
         this.experimentStatuses = experimentStatuses;
     }
+
+    @OneToMany(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ProcessEntity> getProcesses() {
+        return processes;
+    }
+
+    public void setProcesses(List<ProcessEntity> processes) {
+        this.processes = processes;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
new file mode 100644
index 0000000..d7c6cca
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
@@ -0,0 +1,266 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "PROCESS")
+public class ProcessEntity {
+    private String processId;
+    private String experimentId;
+    private long creationTime;
+    private long lastUpdateTime;
+    private String processDetail;
+    private String applicationInterfaceId;
+    private String applicationDeploymentId;
+    private String computeResourceId;
+    private String taskDag;
+    private String gatewayExecutionId;
+    private boolean enableEmailNotification;
+    private List<String> emailAddresses;
+    private String storageResourceId;
+    private String userDn;
+    private boolean generateCert;
+    private String experimentDataDir;
+    private String userName;
+
+    private List<ProcessStatusEntity> processStatus;
+    private List<ProcessErrorEntity> processError;
+    private List<ProcessInputEntity> processInputs;
+    private List<ProcessOutputEntity> processOutputs;
+    private ProcessResourceSchedulingEntity processResourceSchedule;
+
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_UPDATE_TIME")
+    public long getLastUpdateTime() {
+        return lastUpdateTime;
+    }
+
+    public void setLastUpdateTime(long lastUpdateTime) {
+        this.lastUpdateTime = lastUpdateTime;
+    }
+
+    @Column(name = "PROCESS_DETAIL")
+    public String getProcessDetail() {
+        return processDetail;
+    }
+
+    public void setProcessDetail(String processDetail) {
+        this.processDetail = processDetail;
+    }
+
+    @Column(name = "APPLICATION_INTERFACE_ID")
+    public String getApplicationInterfaceId() {
+        return applicationInterfaceId;
+    }
+
+    public void setApplicationInterfaceId(String applicationInterfaceId) {
+        this.applicationInterfaceId = applicationInterfaceId;
+    }
+
+    @Column(name = "APPLICATION_DEPLOYMENT_ID")
+    public String getApplicationDeploymentId() {
+        return applicationDeploymentId;
+    }
+
+    public void setApplicationDeploymentId(String applicationDeploymentId) {
+        this.applicationDeploymentId = applicationDeploymentId;
+    }
+
+
+    @Column(name = "COMPUTE_RESOURCE_ID")
+    public String getComputeResourceId() {
+        return computeResourceId;
+    }
+
+    public void setComputeResourceId(String computeResourceId) {
+        this.computeResourceId = computeResourceId;
+    }
+
+    @Column(name = "TASK_DAG")
+    public String getTaskDag() {
+        return taskDag;
+    }
+
+    public void setTaskDag(String taskDag) {
+        this.taskDag = taskDag;
+    }
+
+    @Column(name = "GATEWAY_EXECUTION_ID")
+    public String getGatewayExecutionId() {
+        return gatewayExecutionId;
+    }
+
+    public void setGatewayExecutionId(String gatewayExecutionId) {
+        this.gatewayExecutionId = gatewayExecutionId;
+    }
+
+    @Column(name = "ENABLE_EMAIL_NOTIFICATION")
+    public boolean isEnableEmailNotification() {
+        return enableEmailNotification;
+    }
+
+    public void setEnableEmailNotification(boolean enableEmailNotification) {
+        this.enableEmailNotification = enableEmailNotification;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="PROCESS_EMAIL", joinColumns = @JoinColumn(name="PROCESS_ID"))
+    public List<String> getEmailAddresses() {
+        return emailAddresses;
+    }
+
+    public void setEmailAddresses(List<String> emailAddresses) {
+        this.emailAddresses = emailAddresses;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @Column(name = "USER_DN")
+    public String getUserDn() {
+        return userDn;
+    }
+
+    public void setUserDn(String userDn) {
+        this.userDn = userDn;
+    }
+
+    @Column(name = "GENERATE_CERT")
+    public boolean isGenerateCert() {
+        return generateCert;
+    }
+
+    public void setGenerateCert(boolean generateCert) {
+        this.generateCert = generateCert;
+    }
+
+    @Column(name = "EXPERIMENT_DATA_DIR")
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
+    @Column(name = "USER_NAME")
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    @OneToMany(targetEntity = ProcessStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessStatusEntity> getProcessStatus() {
+        return processStatus;
+    }
+
+    public void setProcessStatus(List<ProcessStatusEntity> processStatus) {
+        this.processStatus = processStatus;
+    }
+
+    @OneToMany(targetEntity = ProcessErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessErrorEntity> getProcessError() {
+        return processError;
+    }
+
+    public void setProcessError(List<ProcessErrorEntity> processError) {
+        this.processError = processError;
+    }
+
+    @OneToMany(targetEntity = ProcessInputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessInputEntity> getProcessInputs() {
+        return processInputs;
+    }
+
+    public void setProcessInputs(List<ProcessInputEntity> processInputs) {
+        this.processInputs = processInputs;
+    }
+
+    @OneToMany(targetEntity = ProcessOutputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessOutputEntity> getProcessOutputs() {
+        return processOutputs;
+    }
+
+    public void setProcessOutputs(List<ProcessOutputEntity> processOutputs) {
+        this.processOutputs = processOutputs;
+    }
+
+    @OneToOne(targetEntity = ProcessResourceSchedulingEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public ProcessResourceSchedulingEntity getProcessResourceSchedule() {
+        return processResourceSchedule;
+    }
+
+    public void setProcessResourceSchedule(ProcessResourceSchedulingEntity proceeResourceSchedule) {
+        this.processResourceSchedule = proceeResourceSchedule;
+    }
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
new file mode 100644
index 0000000..bae331f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
@@ -0,0 +1,118 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "PROCESS_ERROR")
+@IdClass(ProcessErrorPK.class)
+public class ProcessErrorEntity {
+    private String errorId;
+    private String processId;
+    private long creationTime;
+    private String actualErrorMessage;
+    private String userFriendlyMessage;
+    private boolean transientOrPersistent;
+    private List<String> rootCauseErrorIdList;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "ERROR_ID")
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "ACTUAL_ERROR_MESSAGE")
+    public String getActualErrorMessage() {
+        return actualErrorMessage;
+    }
+
+    public void setActualErrorMessage(String actualErrorMessage) {
+        this.actualErrorMessage = actualErrorMessage;
+    }
+
+    @Column(name = "USER_FRIENDLY_MESSAGE")
+    public String getUserFriendlyMessage() {
+        return userFriendlyMessage;
+    }
+
+    public void setUserFriendlyMessage(String userFriendlyMessage) {
+        this.userFriendlyMessage = userFriendlyMessage;
+    }
+
+
+    @Column(name = "TRANSIENT_OR_PERSISTENT")
+    public boolean isTransientOrPersistent() {
+        return transientOrPersistent;
+    }
+
+    public void setTransientOrPersistent(boolean transientOrPersistent) {
+        this.transientOrPersistent = transientOrPersistent;
+    }
+
+
+    @ElementCollection
+    @CollectionTable(name="EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
+    public List<String> getRootCauseErrorIdList() {
+        return rootCauseErrorIdList;
+    }
+
+    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
+        this.rootCauseErrorIdList = rootCauseErrorIdList;
+    }
+
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file


[05/48] airavata git commit: [AIRAVATA-2058] Add a separate profile for jenkins, until AIRAVATA-2057 is addressed and use that profile in jenkins

Posted by la...@apache.org.
[AIRAVATA-2058] Add a separate profile for jenkins, until AIRAVATA-2057 is addressed and use that profile in jenkins


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 05ea66e11e8098af51fc95151be596d96b8ccb8c
Parents: a94e0ef
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Tue Aug 23 10:20:07 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Tue Aug 23 10:20:07 2016 -0700

----------------------------------------------------------------------
 pom.xml | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 97 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/05ea66e1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 71def09..33aebb5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -568,9 +568,104 @@
 				<!--<module>modules/workflow-model</module>-->
 				<!--<module>modules/workflow</module>-->
 				<!--<module>modules/xbaya-gui</module>-->
-				<module>distribution</module>
-			</modules>
+                <module>distribution</module>
+            </modules>
 		</profile>
+        <profile>
+            <id>jenkins</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-remote-resources-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>process</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>2.5</version>
+                        <executions>
+                            <execution>
+                                <id>copy-resources</id>
+                                <!-- here the phase you need -->
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${basedir}/target/classes/META-INF</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>${basedir}/src/main/assembly/dist</directory>
+                                            <filtering>true</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.1</version>
+                        <configuration>
+                            <source>1.8</source>
+                            <target>1.8</target>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <version>${surefire.version}</version>
+                        <configuration>
+                            <failIfNoTests>false</failIfNoTests>
+                            <skipTests>${skipTests}</skipTests>
+                            <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
+                            <!-- making sure that the sure-fire plugin doesn't run the integration
+                                tests -->
+                            <!-- Integration tests are run using the fail-safe plugin in the module
+                                pom -->
+                            <excludes>
+                                <exclude>**/IT.java</exclude>
+                                <exclude>**/*TestWithMyProxyAuth.java</exclude>
+                                <exclude>**/*TestWithSSHAuth.java</exclude>
+                                <exclude>**/*TestWithEC2Auth.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <modules>
+                <module>modules/configuration</module>
+                <module>airavata-api</module>
+                <module>modules/commons</module>
+                <module>modules/messaging</module>
+                <module>modules/gfac</module>
+                <module>modules/registry</module>
+                <module>modules/security</module>
+                <module>modules/credential-store</module>
+                <module>modules/orchestrator</module>
+                <module>modules/monitoring</module>
+                <module>modules/user-profile</module>
+                <!--<module>modules/cloud</module>-->
+                <module>modules/server</module>
+                <module>modules/workflow</module>
+                <module>modules/test-suite</module>
+                <!-- Deprecated Modules-->
+                <!--<module>modules/integration-tests</module>-->
+                <!--<module>modules/workflow-model</module>-->
+                <!--<module>modules/workflow</module>-->
+                <!--<module>modules/xbaya-gui</module>-->
+            </modules>
+        </profile>
 		<profile>
 			<id>pedantic</id>
 			<build>


[06/48] airavata git commit: [AIRAVATA-2058] Add a separate profile for jenkins, until AIRAVATA-2057 is addressed and use that profile in jenkins

Posted by la...@apache.org.
[AIRAVATA-2058] Add a separate profile for jenkins, until AIRAVATA-2057 is addressed and use that profile in jenkins


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 43d17aedad1ab722fa5cb2f5a7060358fd7df52a
Parents: ff18106
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Tue Aug 23 10:20:07 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Tue Aug 23 10:37:31 2016 -0700

----------------------------------------------------------------------
 pom.xml | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 95 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/43d17aed/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0c12844..6594026 100644
--- a/pom.xml
+++ b/pom.xml
@@ -569,9 +569,102 @@
 				<!--<module>modules/workflow-model</module>-->
 				<!--<module>modules/workflow</module>-->
 				<!--<module>modules/xbaya-gui</module>-->
-				<module>distribution</module>
-			</modules>
+                <module>distribution</module>
+            </modules>
 		</profile>
+        <profile>
+            <id>jenkins</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-remote-resources-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>process</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>2.5</version>
+                        <executions>
+                            <execution>
+                                <id>copy-resources</id>
+                                <!-- here the phase you need -->
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${basedir}/target/classes/META-INF</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>${basedir}/src/main/assembly/dist</directory>
+                                            <filtering>true</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.1</version>
+                        <configuration>
+                            <source>1.8</source>
+                            <target>1.8</target>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <version>${surefire.version}</version>
+                        <configuration>
+                            <failIfNoTests>false</failIfNoTests>
+                            <skipTests>${skipTests}</skipTests>
+                            <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
+                            <!-- making sure that the sure-fire plugin doesn't run the integration
+                                tests -->
+                            <!-- Integration tests are run using the fail-safe plugin in the module
+                                pom -->
+                            <excludes>
+                                <exclude>**/IT.java</exclude>
+                                <exclude>**/*TestWithMyProxyAuth.java</exclude>
+                                <exclude>**/*TestWithSSHAuth.java</exclude>
+                                <exclude>**/*TestWithEC2Auth.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <modules>
+                <module>modules/configuration</module>
+                <module>airavata-api</module>
+                <module>modules/commons</module>
+                <module>modules/messaging</module>
+                <module>modules/gfac</module>
+                <module>modules/registry</module>
+                <module>modules/security</module>
+                <module>modules/credential-store</module>
+                <module>modules/orchestrator</module>
+                <module>modules/monitoring</module>
+                <module>modules/user-profile</module>
+                <!--<module>modules/cloud</module>-->
+                <module>modules/server</module>
+                <module>modules/workflow</module>
+                <module>modules/test-suite</module>
+				<module>modules/group-manager</module>
+				<!-- enable distribution when AIRAVATA-2057 is fixed -->
+				<!--<module>distribution</module>-->
+            </modules>
+        </profile>
 		<profile>
 			<id>pedantic</id>
 			<build>


[36/48] airavata git commit: removing registry refactoring module

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
deleted file mode 100644
index f067370..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.workspacecatalog;
-
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-public class UserProfileRepository extends AbstractRepository<UserProfile, UserProfileEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(UserProfileRepository.class);
-
-    public UserProfileRepository(Class<UserProfile> thriftGenericClass, Class<UserProfileEntity> dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-
-    @Override
-    public List<UserProfile> select(String query, int offset, int limit) {
-        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
-                " UserProfileSummaryRepository");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
deleted file mode 100644
index 07f8244..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/Committer.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.utils;
-
-@FunctionalInterface
-public interface Committer<T, R>  {
-
-    R commit(T t);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
deleted file mode 100644
index 382d66b..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.utils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-public class JPAUtils {
-    private final static Logger logger = LoggerFactory.getLogger(JPAUtils.class);
-    private static final String PERSISTENCE_UNIT_NAME = "airavata_catalog";
-    @PersistenceUnit(unitName = "airavata_catalog")
-    protected static EntityManagerFactory factory;
-    @PersistenceContext(unitName = "airavata_catalog")
-    private static EntityManager entityManager;
-
-    public static EntityManager getEntityManager(){
-        if (factory == null) {
-            //FIXME
-            String connectionProperties = "DriverClassName=com.mysql.jdbc.Driver," +
-                    "Url=jdbc:mysql://localhost:3306/airavata_catalog," +
-                    "Username=root," +
-                    "Password=";
-            logger.info(connectionProperties);
-            Map<String, String> properties = new HashMap<String, String>();
-            properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");
-            properties.put("openjpa.ConnectionProperties", connectionProperties);
-            properties.put("openjpa.DynamicEnhancementAgent", "true");
-            properties.put("openjpa.RuntimeUnenhancedClasses", "warn");
-            properties.put("openjpa.RemoteCommitProvider", "sjvm");
-            properties.put("openjpa.Log", "DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
-            properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
-            properties.put("openjpa.jdbc.QuerySQLCache", "false");
-            properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72," +
-                    " PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000,  autoReconnect=true");
-            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
-        }
-
-        entityManager = factory.createEntityManager();
-        return entityManager;
-    }
-
-    public static <R> R execute(Committer<EntityManager, R> committer){
-        EntityManager entityManager = JPAUtils.getEntityManager();
-        try {
-            entityManager.getTransaction().begin();
-            R r = committer.commit(entityManager);
-            entityManager.getTransaction().commit();
-            return  r;
-        }finally {
-            if (entityManager != null && entityManager.isOpen()) {
-                if (entityManager.getTransaction().isActive()) {
-                    entityManager.getTransaction().rollback();
-                }
-                entityManager.close();
-            }
-        }
-    }
-
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
deleted file mode 100644
index 9189460..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.utils;
-
-import org.dozer.DozerBeanMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ObjectMapperSingleton extends DozerBeanMapper{
-    private final static Logger logger = LoggerFactory.getLogger(ObjectMapperSingleton.class);
-
-    private static ObjectMapperSingleton instance;
-
-    private ObjectMapperSingleton(){}
-
-    public static ObjectMapperSingleton getInstance(){
-        if(instance == null)
-            instance = new ObjectMapperSingleton();
-        return instance;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index ac9a08f..0000000
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-* -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
-    <persistence-unit name="airavata_catalog">
-        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-        <class>org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity</class>
-        <class>org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity</class>
-        <class>org.apache.airavata.registry.core.entities.workspacecatalog.NSFDemographicsEntity</class>
-        <class>org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity</class>
-        <class>org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ComputeResourceSchedulingEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentErrorEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentInputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentOutputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentStatusEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessErrorEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessInputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessOutputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessResourceSchedulingEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskErrorEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.TaskStatusEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.JobEntity</class>
-        <class>org.apache.airavata.registry.core.entities.expcatalog.JobStatusEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-    </persistence-unit>
-</persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
deleted file mode 100644
index 3140cd1..0000000
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ /dev/null
@@ -1,285 +0,0 @@
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT(
-    EXPERIMENT_ID VARCHAR (255),
-    PROJECT_ID VARCHAR (255),
-    GATEWAY_ID VARCHAR (255),
-    EXPERIMENT_TYPE VARCHAR (255),
-    USER_NAME VARCHAR (255),
-    EXPERIMENT_NAME VARCHAR (255),
-    CREATION_TIME BIGINT,
-    DESCRIPTION VARCHAR (255),
-    EXECUTION_ID VARCHAR (255),
-    GATEWAY_EXECUTION_ID VARCHAR (255),
-    GATEWAY_INSTANCE_ID VARCHAR (255),
-    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
-    PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (PROJECT_ID) REFERENCES WORKSPACE_PROJECT(PROJECT_ID) ON DELETE CASCADE,
-    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-    FOREIGN KEY (USER_NAME) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_EMAIL (
-    EXPERIMENT_ID VARCHAR (255),
-    EMAIL VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID, EMAIL),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_USER_CONFIGURATION(
-    EXPERIMENT_ID VARCHAR (255),
-    AIRAVATA_AUTO_SCHEDULE TINYINT(1),
-    OVERRIDE_MANUAL_SCHEDULED_PARAMS TINYINT(1),
-    THROTTLE_RESOURCE TINYINT(1),
-    USER_DN VARCHAR (255),
-    GENERATE_CERT TINYINT(1),
-    STORAGE_ID VARCHAR (255),
-    EXPERIMENT_DATA_DIR VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_COMPUTE_RESOURCE_SCHEDULING(
-    EXPERIMENT_ID VARCHAR (255),
-    RESOURCE_HOST_ID VARCHAR (255),
-    CPU_COUNT INT,
-    NODE_COUNT INT,
-    NUMBER_OF_THREADS INT,
-    QUEUE_NAME VARCHAR (255),
-    WALL_TIME_LIMIT INT,
-    TOTAL_PHYSICAL_MEMORY INT,
-    CHESSIS_NUMBER VARCHAR (255),
-    STATIC_WORKING_DIRECTORY VARCHAR (255),
-    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
-    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
-    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_USER_CONFIGURATION(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_INPUT(
-    EXPERIMENT_ID VARCHAR (255),
-    INPUT_NAME VARCHAR (255),
-    INPUT_VALUE VARCHAR (255),
-    INPUT_TYPE VARCHAR (255),
-    APPLICATION_ARGUMENT VARCHAR (255),
-    STANDARD_INPUT TINYINT(1),
-    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
-    METADATA VARCHAR (4096),
-    INPUT_ORDER INT,
-    REQUIRED TINYINT(1),
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
-    DATA_STAGED TINYINT(1),
-    STORAGE_RESOURCE_ID VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID,INPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_OUTPUT(
-    EXPERIMENT_ID VARCHAR (255),
-    OUTPUT_NAME VARCHAR (255),
-    OUTPUT_VALUE VARCHAR (255),
-    OUTPUT_TYPE VARCHAR (255),
-    APPLICATION_ARGUMENT VARCHAR (255),
-    REQUIRED TINYINT(1),
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
-    DATA_MOVEMENT TINYINT(1),
-    LOCATION VARCHAR (255),
-    SEARCH_QUERY VARCHAR (255),
-    OUTPUT_STREAMING TINYINT(1),
-    STORAGE_RESOURCE_ID VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID,OUTPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_ERROR(
-    ERROR_ID VARCHAR (255),
-    EXPERIMENT_ID VARCHAR (255),
-    CREATION_TIME BIGINT,
-    ACTUAL_ERROR_MESSAGE VARCHAR (255),
-    USER_FRIENDLY_MESSAGE VARCHAR (255),
-    TRANSIENT_OR_PERSISTENT TINYINT,
-    PRIMARY KEY (ERROR_ID, EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID(
-    ERROR_ID VARCHAR (255),
-    ROOT_CAUSE_ERROR_ID VARCHAR (255),
-    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
-    FOREIGN KEY(ERROR_ID) REFERENCES EXPCAT_EXPERIMENT_ERROR(ERROR_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_EXPERIMENT_STATUS(
-    EXPERIMENT_ID VARCHAR (255),
-    STATE VARCHAR (255),
-    TIME_OF_STATE_CHANGE BIGINT,
-    REASON VARCHAR (255),
-    PRIMARY KEY (EXPERIMENT_ID, STATE),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS(
-    PROCESS_ID VARCHAR (255),
-    EXPERIMENT_ID VARCHAR (255),
-    CREATION_TIME BIGINT,
-    LAST_UPDATE_TIME BIGINT,
-    PROCESS_DETAIL VARCHAR (255),
-    APPLICATION_INTERFACE_ID VARCHAR (255),
-    APPLICATION_DEPLOYMENT_ID VARCHAR (255),
-    COMPUTE_RESOURCE_ID VARCHAR (255),
-    TASK_DAG VARCHAR (255),
-    GATEWAY_EXECUTION_ID VARCHAR (255),
-    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
-    STORAGE_RESOURCE_ID VARCHAR (255),
-    USER_DN VARCHAR (255),
-    GENERATE_CERT VARCHAR (255),
-    EXPERIMENT_DATA_DIR VARCHAR (255),
-    USER_NAME VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPCAT_EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_EMAIL (
-    PROCESS_ID VARCHAR (255),
-    EMAIL VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID, EMAIL),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_RESOURCE_SCHEDULING(
-    PROCESS_ID VARCHAR (255),
-    RESOURCE_HOST_ID VARCHAR (255),
-    CPU_COUNT INT,
-    NODE_COUNT INT,
-    NUMBER_OF_THREADS INT,
-    QUEUE_NAME VARCHAR (255),
-    WALL_TIME_LIMIT INT,
-    TOTAL_PHYSICAL_MEMORY INT,
-    CHESSIS_NUMBER VARCHAR (255),
-    STATIC_WORKING_DIRECTORY VARCHAR (255),
-    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
-    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
-    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_INPUT(
-    PROCESS_ID VARCHAR (255),
-    INPUT_NAME VARCHAR (255),
-    INPUT_VALUE VARCHAR (255),
-    INPUT_TYPE VARCHAR (255),
-    APPLICATION_ARGUMENT VARCHAR (255),
-    STANDARD_INPUT TINYINT(1),
-    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
-    METADATA VARCHAR (4096),
-    INPUT_ORDER INT,
-    REQUIRED TINYINT(1),
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
-    DATA_STAGED TINYINT(1),
-    STORAGE_RESOURCE_ID VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID,INPUT_NAME),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_OUTPUT(
-    PROCESS_ID VARCHAR (255),
-    OUTPUT_NAME VARCHAR (255),
-    OUTPUT_VALUE VARCHAR (255),
-    OUTPUT_TYPE VARCHAR (255),
-    APPLICATION_ARGUMENT VARCHAR (255),
-    REQUIRED TINYINT(1),
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
-    DATA_MOVEMENT TINYINT(1),
-    LOCATION VARCHAR (255),
-    SEARCH_QUERY VARCHAR (255),
-    OUTPUT_STREAMING TINYINT(1),
-    STORAGE_RESOURCE_ID VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID,OUTPUT_NAME),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_ERROR(
-    ERROR_ID VARCHAR (255),
-    PROCESS_ID VARCHAR (255),
-    CREATION_TIME BIGINT,
-    ACTUAL_ERROR_MESSAGE VARCHAR (255),
-    USER_FRIENDLY_MESSAGE VARCHAR (255),
-    TRANSIENT_OR_PERSISTENT TINYINT,
-    PRIMARY KEY (ERROR_ID, PROCESS_ID),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
-    ERROR_ID VARCHAR (255),
-    ROOT_CAUSE_ERROR_ID VARCHAR (255),
-    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
-    FOREIGN KEY(ERROR_ID) REFERENCES EXPCAT_PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_PROCESS_STATUS(
-    PROCESS_ID VARCHAR (255),
-    STATE VARCHAR (255),
-    TIME_OF_STATE_CHANGE BIGINT,
-    REASON VARCHAR (255),
-    PRIMARY KEY (PROCESS_ID, STATE),
-    FOREIGN KEY (PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_TASK(
-    TASK_ID VARCHAR (255),
-    TASK_TYPE VARCHAR (255),
-    PARENT_PROCESS_ID VARCHAR (255),
-    CREATION_TIME BIGINT,
-    LAST_UPDATE_TIME BIGINT,
-    TASK_DETAIL VARCHAR (255),
-    SUB_TASK_MODEL BLOB,
-    PRIMARY KEY (TASK_ID),
-    FOREIGN KEY (PARENT_PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID)
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_TASK_ERROR(
-    ERROR_ID VARCHAR (255),
-    TASK_ID VARCHAR (255),
-    CREATION_TIME BIGINT,
-    ACTUAL_ERROR_MESSAGE VARCHAR (255),
-    USER_FRIENDLY_MESSAGE VARCHAR (255),
-    TRANSIENT_OR_PERSISTENT TINYINT,
-    PRIMARY KEY (ERROR_ID, TASK_ID),
-    FOREIGN KEY (TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_TASK_STATUS(
-    TASK_ID VARCHAR (255),
-    STATE VARCHAR (255),
-    TIME_OF_STATE_CHANGE BIGINT,
-    REASON VARCHAR (255),
-    PRIMARY KEY (TASK_ID, STATE),
-    FOREIGN KEY (TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_JOB(
-    JOB_ID VARCHAR (255),
-    TASK_ID VARCHAR (255),
-    PROCESS_ID VARCHAR (255),
-    JOB_DESCRIPTION VARCHAR (255),
-    CREATION_TIME BIGINT,
-    COMPUTE_RESOURCE_CONSUMED VARCHAR (255),
-    JOB_NAME VARCHAR (255),
-    WORKING_DIR VARCHAR (255),
-    STDOUT TEXT,
-    STDERR TEXT,
-    EXIT_CODE INT(11),
-    PRIMARY KEY(JOB_ID),
-    FOREIGN KEY(TASK_ID) REFERENCES EXPCAT_TASK(TASK_ID),
-    FOREIGN KEY(PROCESS_ID) REFERENCES EXPCAT_PROCESS(PROCESS_ID)
-);
-
-CREATE TABLE IF NOT EXISTS EXPCAT_JOB_STATUS(
-    JOB_ID VARCHAR (255),
-    STATE VARCHAR (255),
-    TIME_OF_STATE_CHANGE BIGINT,
-    REASON VARCHAR (255),
-    PRIMARY KEY (JOB_ID, STATE),
-    FOREIGN KEY (JOB_ID) REFERENCES EXPCAT_JOB(JOB_ID) ON DELETE CASCADE
-);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
deleted file mode 100644
index debdba4..0000000
--- a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
+++ /dev/null
@@ -1,125 +0,0 @@
-
-CREATE TABLE IF NOT  EXISTS WORKSPACE_GATEWAY(
-    GATEWAY_ID VARCHAR (255),
-    GATEWAY_NAME VARCHAR (255),
-    GATEWAY_DOMAIN VARCHAR (255),
-    EMAIL_ADDRESS VARCHAR (255),
-    GATEWAY_APPROVAL_STATUS VARCHAR (255),
-    GATEWAY_ACRONYM VARCHAR (255),
-    GATEWAY_URL VARCHAR (255),
-    GATEWAY_PUBLIC_ABSTRACT TEXT,
-    REVIEW_PROPOSAL_DESCRIPTION TEXT,
-    GATEWAY_ADMIN_FIRST_NAME VARCHAR(255),
-    GATEWAY_ADMIN_LAST_NAME VARCHAR(255),
-    GATEWAY_ADMIN_EMAIL VARCHAR(255),
-    IDENTITY_SERVER_USERNAME VARCHAR(255),
-    IDENTITY_SERVER_PASSWORD_TOKEN VARCHAR(255),
-    DECLINED_REASON VARCHAR(255),
-    OAUTH_CLIENT_ID VARCHAR(255),
-    OAUTH_CLIENT_SECRET VARCHAR(255),
-    REQUEST_CREATION_TIME BIGINT,
-    REQUESTER_USERNAME VARCHAR(255),
-    PRIMARY KEY (GATEWAY_ID)
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_NOTIFICATION (
-    NOTIFICATION_ID VARCHAR (255),
-    GATEWAY_ID VARCHAR (255),
-    TITLE VARCHAR (255),
-    NOTIFICATION_MESSAGE TEXT,
-    CREATION_TIME BIGINT,
-    PUBLISHED_TIME BIGINT,
-    EXPIRATION_TIME BIGINT,
-    PRIORITY VARCHAR (255),
-    PRIMARY KEY (NOTIFICATION_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    USER_ID VARCHAR (255),
-    GATEWAY_ID VARCHAR (255),
-    USER_MODEL_VERSION VARCHAR (255),
-    USER_NAME VARCHAR (255),
-    ORCID_ID VARCHAR (255),
-    COUNTRY VARCHAR (255),
-    HOME_ORGANIZATION VARCHAR (255),
-    ORIGINATION_AFFILIATION VARCHAR (255),
-    CREATION_TIME BIGINT,
-    LAST_ACCESS_TIME BIGINT,
-    VALID_UNTIL BIGINT,
-    STATE VARCHAR (255),
-    COMMENTS TEXT,
-    GPG_KEY VARCHAR (8192),
-    TIME_ZONE VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_EMAIL (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    EMAIL VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_PHONE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    PHONE VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_NATIONALITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    NATIONALITY VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_LABELED_URI (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    LABELED_URI VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    GENDER VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_ETHNICITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    ETHNICITY VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_RACE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    RACE VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_DISABILITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255),
-    DISABILITY VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS WORKSPACE_PROJECT(
-    PROJECT_ID VARCHAR (255),
-    OWNER VARCHAR (255),
-    GATEWAY_ID VARCHAR (255),
-    PROJECT_NAME VARCHAR (255),
-    DESCRIPTION VARCHAR (255),
-    CREATION_TIME BIGINT,
-    PRIMARY KEY (PROJECT_ID),
-    FOREIGN KEY(OWNER) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY(GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
deleted file mode 100644
index 342b73c..0000000
--- a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/RepositoryTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories;
-
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.GatewayApprovalStatus;
-import org.apache.airavata.model.workspace.Notification;
-import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
-import org.apache.airavata.registry.core.repositories.expcatalog.ExperimentRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.ProjectRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.UserProfileRepository;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.UUID;
-
-public class RepositoryTest {
-    private final static Logger logger = LoggerFactory.getLogger(RepositoryTest.class);
-
-    @Test
-    public void test(){
-        Gateway gateway = new Gateway();
-        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
-        gateway.setGatewayId("test.com" + System.currentTimeMillis());
-        gateway.setDomain("test.com");
-
-        GatewayRepository gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
-        gateway = gatewayRepository.create(gateway);
-        Assert.assertTrue(!gateway.getGatewayId().isEmpty());
-
-        Notification notification = new Notification();
-        notification.setGatewayId(gateway.getGatewayId());
-        notification.setNotificationId(UUID.randomUUID().toString());
-
-        NotificationRepository notificationRepository = new NotificationRepository(Notification.class, NotificationEntity.class);
-        notificationRepository.create(notification);
-
-        notificationRepository.get(notification.getNotificationId());
-
-        UserProfile userProfile = new UserProfile();
-        userProfile.setAiravataInternalUserId(UUID.randomUUID().toString());
-        userProfile.setGatewayId(gateway.getGatewayId());
-        UserProfileRepository userProfileRepository = new UserProfileRepository(UserProfile.class, UserProfileEntity.class);
-        userProfileRepository.create(userProfile);
-
-
-        Project project = new Project();
-        project.setProjectID(UUID.randomUUID().toString());
-        project.setOwner(userProfile.getAiravataInternalUserId());
-        project.setGatewayId(gateway.getGatewayId());
-        project.setName("Project Name");
-
-        ProjectRepository projectRepository = new ProjectRepository(Project.class, ProjectEntity.class);
-        projectRepository.create(project);
-
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setExperimentId(UUID.randomUUID().toString());
-        experiment.setUserName(userProfile.getAiravataInternalUserId());
-        experiment.setProjectId(project.getProjectID());
-        experiment.setGatewayId(gateway.getGatewayId());
-        experiment.setExperimentName("Dummy Experiment");
-
-        UserConfigurationDataModel userConfigurationData = new UserConfigurationDataModel();
-        userConfigurationData.setExperimentDataDir("some/path");
-        experiment.setUserConfigurationData(userConfigurationData);
-
-        ExperimentRepository experimentRepository = new ExperimentRepository(ExperimentModel.class, ExperimentEntity.class);
-        experimentRepository.create(experiment);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f3f0e8d..3988fd0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -564,7 +564,6 @@
 				<module>modules/workflow</module>
 				<module>modules/test-suite</module>
 				<module>modules/group-manager</module>
-				<module>modules/registry-refactoring</module>
 				<!-- Deprecated Modules-->
 				<!--<module>modules/integration-tests</module>-->
 				<!--<module>modules/workflow-model</module>-->


[35/48] airavata git commit: making sharing enabling configurable

Posted by la...@apache.org.
making sharing enabling configurable


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: ae5461264baa2e7e0f6bfc6c83e18fa55238c8ad
Parents: 729a15f
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 7 15:00:13 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Sep 7 15:00:13 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  74 ++--
 .../client/samples/RegisterSampleData.java      | 422 -------------------
 .../client/samples/SampleEchoExperiment.java    | 200 +++++++++
 .../airavata/common/utils/ServerSettings.java   |   5 +
 .../main/resources/airavata-server.properties   |   1 +
 .../service/handler/RegistryServerHandler.java  |  11 +-
 6 files changed, 253 insertions(+), 460 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 83eb771..74c4eb3 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -523,7 +523,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             RegistryService.Client regClient = getRegistryServiceClient();
             Project existingProject = regClient.getProject(projectId);
-            if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
+            if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
                     || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(existingProject.getGatewayId())){
                 try {
                     if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -553,7 +553,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             RegistryService.Client regClient = getRegistryServiceClient();
             Project existingProject = regClient.getProject(projectId);
-            if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
+            if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
                     || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(existingProject.getGatewayId())){
                 try {
                     if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -598,7 +598,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
                     && authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(project.getGatewayId())){
                 return project;
-            }else{
+            }else if (ServerSettings.isEnableSharing()){
                 try {
                     if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
                                     +"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
@@ -610,7 +610,8 @@ public class AiravataServerHandler implements Airavata.Iface {
                 } catch (Exception e) {
                     throw new AuthorizationException("User does not have permission to access this resource");
                 }
-            }
+            }else
+                return null;
         } catch (ApplicationSettingsException | RegistryServiceException e) {
             logger.error("Error while retrieving the project", e);
             ProjectNotFoundException exception = new ProjectNotFoundException();
@@ -676,7 +677,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             String> filters, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             List<String> accessibleProjIds  = new ArrayList<>();
-            accessibleProjIds.addAll(getAllAccessibleResourcesForUser(userName+"@"+gatewayId, ResourceType.PROJECT, ResourcePermissionType.READ));
+
+            if(ServerSettings.isEnableSharing())
+                accessibleProjIds.addAll(getAllAccessibleResourcesForUser(userName+"@"+gatewayId, ResourceType.PROJECT, ResourcePermissionType.READ));
 
             return getRegistryServiceClient().searchProjects(gatewayId, userName, accessibleProjIds, filters, limit, offset);
         }catch (Exception e) {
@@ -711,7 +714,8 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             List<String> accessibleExpIds = new ArrayList<>();
-            accessibleExpIds.addAll(getAllAccessibleResourcesForUser(userName + "@" + gatewayId, ResourceType.EXPERIMENT, ResourcePermissionType.READ));
+            if(ServerSettings.isEnableSharing())
+                accessibleExpIds.addAll(getAllAccessibleResourcesForUser(userName + "@" + gatewayId, ResourceType.EXPERIMENT, ResourcePermissionType.READ));
             return getRegistryServiceClient().searchExperiments(gatewayId, userName, accessibleExpIds, filters, limit, offset);
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -770,7 +774,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             RegistryService.Client regClient  = getRegistryServiceClient();
             Project project = regClient.getProject(projectId);
 
-            if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
+            if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
                     || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(project.getGatewayId())){
                 try {
                     if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -849,13 +853,17 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             String experimentId = getRegistryServiceClient().createExperiment(gatewayId, experiment);
-            GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager();
             Resource expResource = new Resource(experimentId, org.apache.airavata.grouper.resource.ResourceType.EXPERIMENT);
             expResource.setOwnerId(experiment.getUserName()+"@"+experiment.getGatewayId());
             expResource.setParentResourceId(experiment.getProjectId());
             expResource.setName(experiment.getExperimentName());
             expResource.setDescription(experiment.getDescription());
-            groupManager.createResource(expResource);
+
+            if(ServerSettings.isEnableSharing()) {
+                GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager();
+                groupManager.createResource(expResource);
+            }
+
             ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.CREATED,
                     experimentId,
                     gatewayId);
@@ -894,7 +902,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             RegistryService.Client regClient  = getRegistryServiceClient();
             ExperimentModel experimentModel = regClient.getExperiment(experimentId);
 
-            if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+            if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
                     || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
                 try {
                     if(! hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -950,6 +958,24 @@ public class AiravataServerHandler implements Airavata.Iface {
         ExperimentModel experimentModel = null;
         try {
             experimentModel = getRegistryServiceClient().getExperiment(airavataExperimentId);
+            if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+                    && authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
+                return experimentModel;
+            }else if(ServerSettings.isEnableSharing()){
+                try {
+                    if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
+                                    +"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
+                            experimentModel.getExperimentId(), ResourceType.EXPERIMENT, ResourcePermissionType.READ)){
+                        return experimentModel;
+                    }else {
+                        throw new AuthorizationException("User does not have permission to access this resource");
+                    }
+                } catch (Exception e) {
+                    throw new AuthorizationException("User does not have permission to access this resource");
+                }
+            }else{
+                return null;
+            }
         } catch (ApplicationSettingsException e) {
             logger.error("Error while getting the experiment", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -957,22 +983,6 @@ public class AiravataServerHandler implements Airavata.Iface {
             exception.setMessage("Error while getting the experiment. More info : " + e.getMessage());
             throw exception;
         }
-        if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
-                && authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
-            return experimentModel;
-        }else{
-            try {
-                if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
-                                +"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
-                        experimentModel.getExperimentId(), ResourceType.EXPERIMENT, ResourcePermissionType.READ)){
-                    return experimentModel;
-                }else {
-                    throw new AuthorizationException("User does not have permission to access this resource");
-                }
-            } catch (Exception e) {
-                throw new AuthorizationException("User does not have permission to access this resource");
-            }
-        }
     }
 
     /**
@@ -1045,7 +1055,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             RegistryService.Client regClient = getRegistryServiceClient();
             ExperimentModel experimentModel = regClient.getExperiment(airavataExperimentId);
-            if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+            if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
                 || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
                 try {
                     if(! hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -1381,10 +1391,14 @@ public class AiravataServerHandler implements Airavata.Iface {
             String expId = regClient.createExperiment(gatewayId, existingExperiment);
 
             String projectId = existingExperiment.getProjectId();
-            if(!isResourceExistsInGrouper(projectId, ResourceType.PROJECT)){
-                initializeResourceWithGrouper(projectId, ResourceType.PROJECT);
+
+            if(ServerSettings.isEnableSharing()){
+                if(!isResourceExistsInGrouper(projectId, ResourceType.PROJECT)){
+                    initializeResourceWithGrouper(projectId, ResourceType.PROJECT);
+                }
+                initializeResourceWithGrouper(expId, ResourceType.EXPERIMENT);
             }
-            initializeResourceWithGrouper(expId, ResourceType.EXPERIMENT);
+
             return expId;
         } catch (Exception e) {
             logger.error(existingExperimentID, "Error while cloning the experiment with existing configuration...", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
deleted file mode 100644
index c737695..0000000
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.client.samples;
-
-import org.apache.airavata.api.Airavata;
-import org.apache.airavata.api.client.AiravataClientFactory;
-import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.data.movement.DataMovementInterface;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.parallelism.ApplicationParallelismType;
-import org.apache.airavata.model.security.AuthzToken;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.thrift.TException;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-public class RegisterSampleData {
-
-    private static final String THRIFT_SERVER_HOST = "127.0.0.1";
-    private static final int THRIFT_SERVER_PORT = 8930;
-
-    private Airavata.Client airavataClient;
-    private String localhost_ip = "127.0.0.1";
-    private String localhostId ;
-    private String echoModuleId;
-    private String addModuleId;
-    private String multiplyModuleId;
-    private String subtractModuleId;
-    private String sampleScriptDir;
-    private String monteXModuleId;
-    private String gaussianModuleId;
-
-    private String gatewayId;
-
-    public static void main(String[] args) throws AiravataClientException, TException {
-        RegisterSampleData registerSampleData = new RegisterSampleData();
-        registerSampleData.init();
-        registerSampleData.register();
-    }
-
-    public void init() {
-        String airavataHome = System.getenv("AIRAVATA_HOME");
-        if (airavataHome == null) {
-            sampleScriptDir = new File("").getAbsolutePath() +
-                    "/modules/distribution/server/src/main/resources/samples/scripts";
-        } else {
-            sampleScriptDir = airavataHome + "/samples/scripts";
-        }
-        System.out.println(sampleScriptDir);
-    }
-
-    public void register() throws AiravataClientException, TException {
-        airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
-        gatewayId = registerGateway();
-        registerLocalhost();
-        registerGatewayProfile();
-        registerApplicationModules();
-        registerApplicationDeployments();
-        registerApplicationInterfaces();
-    }
-
-    private String registerGateway() throws TException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayName("Sample");
-        gateway.setGatewayId("sample");
-        return airavataClient.addGateway(new AuthzToken(""), gateway);
-    }
-
-    private void registerGatewayProfile() throws TException {
-        ComputeResourcePreference localhostResourcePreference = RegisterSampleApplicationsUtils.
-                createComputeResourcePreference(localhostId, "Sample", false, null, null, null, sampleScriptDir + "/..");
-        GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
-        gatewayResourceProfile.setGatewayID(gatewayId);
-        gatewayResourceProfile.addToComputeResourcePreferences(localhostResourcePreference);
-        airavataClient.registerGatewayResourceProfile(new AuthzToken(""), gatewayResourceProfile);
-    }
-
-    private void registerLocalhost() {
-        try {
-            System.out.println("\n #### Registering Localhost Computational Resource #### \n");
-
-            ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils.
-                    createComputeResourceDescription("localhost", "LocalHost", null, null);
-            DataMovementInterface dataMovementInterface = new DataMovementInterface("localhost_data_movement_interface", DataMovementProtocol.LOCAL, 1);
-            computeResourceDescription.addToDataMovementInterfaces(dataMovementInterface);
-            JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface("localhost_job_submission_interface", JobSubmissionProtocol.LOCAL, 1);
-            computeResourceDescription.addToJobSubmissionInterfaces(jobSubmissionInterface);
-
-            localhostId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription);
-            ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils.
-                    createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
-            LOCALSubmission submission = new LOCALSubmission();
-            submission.setResourceJobManager(resourceJobManager);
-            String localSubmission = airavataClient.addLocalSubmissionDetails(new AuthzToken(""), localhostId, 1, submission);
-//            if (!localSubmission) throw new AiravataClientException();
-            System.out.println(localSubmission);
-            System.out.println("LocalHost Resource Id is " + localhostId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void registerApplicationInterfaces() {
-        registerAddApplicationInterface();
-        registerSubtractApplicationInterface();
-        registerMultiplyApplicationInterface();
-        registerEchoInterface();
-        registerTinkerMonteInterface();
-        registerGaussianInterface();
-    }
-
-    private void registerGaussianInterface() {
-        try {
-            System.out.println("#### Registering Gaussian Application Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(gaussianModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("MainInputFile", null,
-                    DataType.URI, null, 1,true,true, false, "Gaussian main input file", null);
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("gaussian.out",
-                    "", DataType.URI, true,true, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Gaussian", "Gaussian application",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Gaussian Application Interface Id " + addApplicationInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void registerTinkerMonteInterface() {
-        try {
-            System.out.println("#### Registering Tinker Monte Application Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(monteXModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("xyzf", "O16.xyz",
-                    DataType.STRING, null, 1, true,true, false, "Tinker monte input_1", null);
-            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("keyf", "O16.key",
-                    DataType.STRING, "-k", 2, true,true, false, "Tinker monte input_2", null);
-            InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("stps", "20000",
-                    DataType.STRING, null, 3, true,true, false, "Tinker monte input_3", null);
-            InputDataObjectType input4 = RegisterSampleApplicationsUtils.createAppInput("Ctc", "C",
-                    DataType.STRING, null, 4, true,true, false, "Tinker monte input_4", null);
-            InputDataObjectType input5 = RegisterSampleApplicationsUtils.createAppInput("stpsZ", "3.0",
-                    DataType.STRING, null, 5, true,true, false, "Tinker monte input_5", null);
-            InputDataObjectType input6 = RegisterSampleApplicationsUtils.createAppInput("temp", "298",
-                    DataType.STRING, null, 6, true,true, false, "Tinker monte input_6", null);
-            InputDataObjectType input7 = RegisterSampleApplicationsUtils.createAppInput("Rconv", "0.01",
-                    DataType.STRING, null, 7, true,true, false, "Tinker monte input_7", null);
-
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-            applicationInputs.add(input2);
-            applicationInputs.add(input3);
-            applicationInputs.add(input4);
-            applicationInputs.add(input5);
-            applicationInputs.add(input6);
-            applicationInputs.add(input7);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir",
-                    "", DataType.URI, true,false, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Tinker_Monte", "Monte application",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Monte Application Interface Id " + addApplicationInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void registerApplicationDeployments() throws TException {
-        System.out.println("#### Registering Application Deployments on Localhost ####");
-        //Register Echo
-        String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId,
-                        sampleScriptDir + "/echo.sh", ApplicationParallelismType.SERIAL, "Echo application description",
-                        null, null, null));
-        System.out.println("Successfully registered Echo application on localhost, application Id = " + echoAppDeployId);
-
-        //Register Add application
-        String addAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(addModuleId, localhostId,
-                        sampleScriptDir + "/add.sh", ApplicationParallelismType.SERIAL, "Add application description",
-                        null, null, null));
-        System.out.println("Successfully registered Add application on localhost, application Id = " + addAppDeployId);
-
-        //Register Multiply application
-        String multiplyAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(multiplyModuleId, localhostId,
-                        sampleScriptDir + "/multiply.sh", ApplicationParallelismType.SERIAL, "Multiply application description",
-                        null, null, null));
-        System.out.println("Successfully registered Multiply application on localhost, application Id = " + multiplyAppDeployId);
-
-        //Register Subtract application
-        String subtractAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(subtractModuleId, localhostId,
-                        sampleScriptDir + "/subtract.sh", ApplicationParallelismType.SERIAL, "Subtract application description ",
-                        null, null, null));
-        System.out.println("Successfully registered Subtract application on localhost, application Id = " + subtractAppDeployId);
-
-        //Register Tinker monte application
-        String tinkerMonteAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, localhostId,
-                        sampleScriptDir + "/monte.x", ApplicationParallelismType.SERIAL, "Grid chem tinker monte application description ",
-                        null, null, null));
-        System.out.println("Successfully registered tinker monte application on localhost, application Id = " + tinkerMonteAppDeployId);
-
-        //Register Tinker monte application
-        String gaussianAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, localhostId,
-                        sampleScriptDir + "/gaussian.sh", ApplicationParallelismType.SERIAL, "Grid chem Gaussian application description ",
-                        null, null, null));
-        System.out.println("Successfully registered Gaussian application on localhost, application Id = " + gaussianAppDeployId);
-    }
-
-    private void registerApplicationModules() throws TException {
-        //Register Echo
-        echoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Echo", "1.0", "Echo application description"));
-        //Register Echo
-        addModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Add", "1.0", "Add application description"));
-        //Register Echo
-        multiplyModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Multiply", "1.0", "Multiply application description"));
-        //Register Echo
-        subtractModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Subtract", "1.0", "Subtract application description"));
-        //Register Monte
-        monteXModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Tinker Monte", "1.0", "Grid chem tinker monte application description"));
-
-        // Register gaussian application
-        gaussianModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
-                RegisterSampleApplicationsUtils.createApplicationModule(
-                        "Gaussian", "1.0", "Grid Chem Gaussian application description"));
-
-    }
-
-
-    public void registerEchoInterface() {
-        try {
-            System.out.println("#### Registering Echo Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(echoModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
-                    DataType.STRING, null, 1, true,true, false, "A test string to Echo", null);
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
-                    "", DataType.STRING, true, false, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String echoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Echo", "Echo application description",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Echo Application Interface Id " + echoInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void registerAddApplicationInterface() {
-        try {
-            System.out.println("#### Registering Add Application Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(addModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "2",
-                    DataType.STRING, null, 1, true,true, false, "Add operation input_1", null);
-            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "3",
-                    DataType.STRING, null, 2, true,true, false, "Add operation input_2", null);
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-            applicationInputs.add(input2);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING, true,false, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Add", "Add two numbers",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Add Application Interface Id " + addApplicationInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void registerMultiplyApplicationInterface() {
-        try {
-            System.out.println("#### Registering Multiply Application Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(multiplyModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "4",
-                    DataType.STRING, null, 1,true,true, false, "Multiply operation input_1", null);
-            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "5",
-                    DataType.STRING, null, 2, true,true, false, "Multiply operation input_2", null);
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-            applicationInputs.add(input2);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING,true,false, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String multiplyApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Multiply", "Multiply two numbers",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Multiply Application Interface Id " + multiplyApplicationInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void registerSubtractApplicationInterface() {
-        try {
-            System.out.println("#### Registering Subtract Application Interface ####");
-
-            List<String> appModules = new ArrayList<String>();
-            appModules.add(subtractModuleId);
-
-            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "6",
-                    DataType.STRING, null, 1,true,true, false, "Subtract operation input_1", null);
-            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "7",
-                    DataType.STRING, null, 2,true,true, false, "Subtract operation input_2", null);
-
-            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
-            applicationInputs.add(input1);
-            applicationInputs.add(input2);
-
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING, true,false, null);
-
-            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
-            applicationOutputs.add(output1);
-
-            String subtractApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
-                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Subtract", "Subtract two numbers",
-                            appModules, applicationInputs, applicationOutputs));
-            System.out.println("Subtract Application Interface Id " + subtractApplicationInterfaceId);
-
-        } catch (TException e) {
-            e.printStackTrace();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
new file mode 100644
index 0000000..3a706ea
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
@@ -0,0 +1,200 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
+import org.apache.airavata.model.appcatalog.computeresource.*;
+import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.application.io.DataType;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.data.movement.DataMovementInterface;
+import org.apache.airavata.model.data.movement.DataMovementProtocol;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.model.experiment.UserConfigurationDataModel;
+import org.apache.airavata.model.parallelism.ApplicationParallelismType;
+import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.model.workspace.Project;
+import org.apache.thrift.TException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SampleEchoExperiment {
+
+    private static final String THRIFT_SERVER_HOST = "127.0.0.1";
+    private static final int THRIFT_SERVER_PORT = 8930;
+
+    private Airavata.Client airavataClient;
+    private String localhostId ;
+    private String echoModuleId;
+    private String echoInterfaceId;
+    private String echoExperimentId;
+
+    private String gatewayId = "default";
+    private String userId = "default-user";
+
+    public static void main(String[] args) throws AiravataClientException, TException {
+        SampleEchoExperiment sampleEchoExperiment = new SampleEchoExperiment();
+        sampleEchoExperiment.register();
+    }
+
+    public void register() throws TException {
+        airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+        gatewayId = registerGateway();
+        registerLocalhost();
+        registerGatewayProfile();
+        registerEchoModule();
+        registerEchoDeployment();
+        registerEchoInterface();
+        createEchoExperiment();
+    }
+
+    private String registerGateway() throws TException {
+        Gateway gateway = new Gateway();
+        gateway.setGatewayName(gatewayId);
+        gateway.setGatewayId(gatewayId);
+        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED);
+        return airavataClient.addGateway(new AuthzToken(""), gateway);
+    }
+
+
+    private void registerLocalhost() {
+        try {
+            System.out.println("\n #### Registering Localhost Computational Resource #### \n");
+
+            ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils.
+                    createComputeResourceDescription("localhost", "LocalHost", null, null);
+            DataMovementInterface dataMovementInterface = new DataMovementInterface("localhost_data_movement_interface", DataMovementProtocol.LOCAL, 1);
+            computeResourceDescription.addToDataMovementInterfaces(dataMovementInterface);
+            JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface("localhost_job_submission_interface", JobSubmissionProtocol.LOCAL, 1);
+            computeResourceDescription.addToJobSubmissionInterfaces(jobSubmissionInterface);
+
+            localhostId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription);
+            ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils.
+                    createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
+            LOCALSubmission submission = new LOCALSubmission();
+            submission.setResourceJobManager(resourceJobManager);
+            String localSubmission = airavataClient.addLocalSubmissionDetails(new AuthzToken(""), localhostId, 1, submission);
+            System.out.println(localSubmission);
+            System.out.println("LocalHost Resource Id is " + localhostId);
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void registerGatewayProfile() throws TException {
+        GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
+        ComputeResourcePreference localhostResourcePreference = RegisterSampleApplicationsUtils.
+                createComputeResourcePreference(localhostId, gatewayId, false, null, null, null, "/tmp");
+        gatewayResourceProfile.setGatewayID(gatewayId);
+        gatewayResourceProfile.addToComputeResourcePreferences(localhostResourcePreference);
+        airavataClient.registerGatewayResourceProfile(new AuthzToken(""), gatewayResourceProfile);
+    }
+
+
+    private void registerEchoModule() throws TException {
+        //Register Echo
+        echoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Echo", "1.0", "Echo application description"));
+    }
+
+    private void registerEchoDeployment() throws TException {
+        System.out.println("#### Registering Application Deployments on Localhost ####");
+        //Register Echo
+        String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
+                RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId, "/bin/echo",
+                        ApplicationParallelismType.SERIAL, "Echo application description",
+                        null, null, null));
+        System.out.println("Successfully registered Echo application on localhost, application Id = " + echoAppDeployId);
+    }
+
+    private void registerEchoInterface() {
+        try {
+            System.out.println("#### Registering Echo Interface ####");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(echoModuleId);
+
+            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
+                    DataType.STRING, null, 1, true,true, false, "A test string to Echo", null);
+
+            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
+                    "", DataType.STRING, true, false, null);
+
+            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            echoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
+                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Echo", "Echo application description",
+                            appModules, applicationInputs, applicationOutputs));
+            System.out.println("Echo Application Interface Id " + echoInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void createEchoExperiment() throws TException {
+        Project project = new Project();
+        project.setName("default-project");
+        project.setOwner(userId);
+        String projectId = airavataClient.createProject(new AuthzToken(""), gatewayId, project);
+
+        ExperimentModel experimentModel = new ExperimentModel();
+        experimentModel.setExperimentName("dummy-echo-experiment");
+        experimentModel.setProjectId(projectId);
+        experimentModel.setUserName(userId);
+        experimentModel.setGatewayId(gatewayId);
+        experimentModel.setExecutionId(echoInterfaceId);
+
+        UserConfigurationDataModel userConfigurationDataModel = new UserConfigurationDataModel();
+        ComputationalResourceSchedulingModel computationalResourceSchedulingModel = new ComputationalResourceSchedulingModel();
+        computationalResourceSchedulingModel.setNodeCount(1);
+        computationalResourceSchedulingModel.setTotalCPUCount(1);
+        computationalResourceSchedulingModel.setTotalPhysicalMemory(512);
+        computationalResourceSchedulingModel.setResourceHostId(localhostId);
+        userConfigurationDataModel.setComputationalResourceScheduling(computationalResourceSchedulingModel);
+
+        experimentModel.setUserConfigurationData(userConfigurationDataModel);
+
+        List<InputDataObjectType> experimentInputs = new ArrayList<>();
+        experimentInputs.add(RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
+                DataType.STRING, null, 1, true,true, false, "A test string to Echo", null));
+        experimentModel.setExperimentInputs(experimentInputs);
+        experimentModel.setExperimentOutputs(airavataClient.getApplicationOutputs(new AuthzToken(""), echoInterfaceId));
+
+        echoExperimentId = airavataClient.createExperiment(new AuthzToken(""), gatewayId, experimentModel);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index 985daad..bb11264 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -35,6 +35,7 @@ public class ServerSettings extends ApplicationSettings {
     private static final String DEFAULT_USER = "default.registry.user";
     private static final String DEFAULT_USER_PASSWORD = "default.registry.password";
     private static final String DEFAULT_USER_GATEWAY = "default.registry.gateway";
+    private static final String ENABLE_SHARING = "enable.sharing";
 
     public static final String IP = "ip";
 
@@ -400,4 +401,8 @@ public class ServerSettings extends ApplicationSettings {
     public static String getLocalDataLocation() {
         return System.getProperty("java.io.tmpdir");
     }
+
+    public static Boolean isEnableSharing() throws ApplicationSettingsException {
+        return Boolean.parseBoolean(getSetting(ENABLE_SHARING));
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 0dad713..2ce3701 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -43,6 +43,7 @@ validationQuery=SELECT 1 from CONFIGURATION
 cache.enable=true
 jpa.cache.size=5000
 #jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true
+enable.sharing=true
 
 # Properties for default user mode
 default.registry.user=admin

http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 076208d..30c518f 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -21,6 +21,7 @@
 package org.apache.airavata.registry.api.service.handler;
 
 import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
@@ -3291,10 +3292,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
                 }
             }
 
-            if(accessibleExpIds.size() == 0)
-                return new ArrayList<>();
-
-            if(accessibleExpIds.size() == 0){
+            if(accessibleExpIds.size() == 0 && !ServerSettings.isEnableSharing()){
                 if(!regFilters.containsKey(AbstractExpCatResource.ExperimentConstants.USER_NAME)){
                     regFilters.put(AbstractExpCatResource.ExperimentConstants.USER_NAME, userName);
                 }
@@ -3361,10 +3359,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
                 }
             }
 
-            if(accessibleProjIds.size() == 0)
-                return new ArrayList<>();
-
-            if(accessibleProjIds.size() == 0){
+            if(accessibleProjIds.size() == 0 && !ServerSettings.isEnableSharing()){
                 if(!regFilters.containsKey(AbstractExpCatResource.ProjectConstants.USERNAME)){
                     regFilters.put(AbstractExpCatResource.ProjectConstants.USERNAME, userName);
                 }


[25/48] airavata git commit: adding process model classes

Posted by la...@apache.org.
adding process model classes


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 171c0425f81dd9b6d113c51cd2daa9ccf7ca8cf0
Parents: 3ce49b9
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 29 13:41:11 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 29 13:41:11 2016 -0400

----------------------------------------------------------------------
 .../lib/airavata/process_model_types.cpp        | 260 ++++++-----
 .../lib/airavata/process_model_types.h          |  20 +-
 .../lib/Airavata/Model/Process/Types.php        | 180 +++++---
 .../lib/apache/airavata/model/process/ttypes.py | 114 ++---
 .../airavata/model/process/ProcessModel.java    | 426 ++++++++++++-------
 .../apache/airavata/model/user/UserProfile.java |  24 +-
 .../model/util/ExperimentModelUtil.java         |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |   2 +-
 .../gfac/core/context/ProcessContext.java       |  21 +-
 .../org/apache/airavata/gfac/impl/Factory.java  |   4 +-
 .../gfac/impl/task/DataStreamingTask.java       |   2 +-
 .../task/utils/bes/ApplicationProcessor.java    |   2 +-
 .../impl/task/utils/bes/ResourceProcessor.java  |   2 +-
 .../core/utils/OrchestratorUtils.java           |   4 +-
 .../validator/impl/BatchQueueValidator.java     |   2 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |   2 +-
 .../server/OrchestratorServerHandler.java       |   6 +-
 .../org/apache/airavata/registry/core/Main.java |  75 ----
 .../entities/expcatalog/ExperimentEntity.java   |  11 +
 .../core/entities/expcatalog/ProcessEntity.java | 266 ++++++++++++
 .../entities/expcatalog/ProcessErrorEntity.java | 118 +++++
 .../entities/expcatalog/ProcessErrorPK.java     |  75 ++++
 .../entities/expcatalog/ProcessInputEntity.java | 174 ++++++++
 .../entities/expcatalog/ProcessInputPK.java     |  74 ++++
 .../expcatalog/ProcessOutputEntity.java         | 165 +++++++
 .../entities/expcatalog/ProcessOutputPK.java    |  70 +++
 .../ProcessResourceSchedulingEntity.java        | 170 ++++++++
 .../expcatalog/ProcessStatusEntity.java         |  83 ++++
 .../entities/expcatalog/ProcessStatusPK.java    |  74 ++++
 .../expcatalog/ExperimentRepository.java        |  22 +-
 .../src/main/resources/META-INF/persistence.xml |   6 +
 .../src/main/resources/experiment_catalog.sql   | 108 +++++
 .../catalog/impl/ExperimentRegistry.java        |  60 +--
 .../utils/ThriftDataModelConversion.java        |  10 +-
 .../process_model.thrift                        |   6 +-
 35 files changed, 2106 insertions(+), 534 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
index cdd437a..8135174 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
@@ -53,7 +53,7 @@ void ProcessModel::__set_lastUpdateTime(const int64_t val) {
 __isset.lastUpdateTime = true;
 }
 
-void ProcessModel::__set_processStatus(const  ::apache::airavata::model::status::ProcessStatus& val) {
+void ProcessModel::__set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val) {
   this->processStatus = val;
 __isset.processStatus = true;
 }
@@ -88,9 +88,9 @@ void ProcessModel::__set_processOutputs(const std::vector< ::apache::airavata::m
 __isset.processOutputs = true;
 }
 
-void ProcessModel::__set_resourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val) {
-  this->resourceSchedule = val;
-__isset.resourceSchedule = true;
+void ProcessModel::__set_processResourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val) {
+  this->processResourceSchedule = val;
+__isset.processResourceSchedule = true;
 }
 
 void ProcessModel::__set_tasks(const std::vector< ::apache::airavata::model::task::TaskModel> & val) {
@@ -103,7 +103,7 @@ void ProcessModel::__set_taskDag(const std::string& val) {
 __isset.taskDag = true;
 }
 
-void ProcessModel::__set_processError(const  ::apache::airavata::model::commons::ErrorModel& val) {
+void ProcessModel::__set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
   this->processError = val;
 __isset.processError = true;
 }
@@ -204,8 +204,20 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 5:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->processStatus.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processStatus.clear();
+            uint32_t _size0;
+            ::apache::thrift::protocol::TType _etype3;
+            xfer += iprot->readListBegin(_etype3, _size0);
+            this->processStatus.resize(_size0);
+            uint32_t _i4;
+            for (_i4 = 0; _i4 < _size0; ++_i4)
+            {
+              xfer += this->processStatus[_i4].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.processStatus = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -247,14 +259,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->processInputs.clear();
-            uint32_t _size0;
-            ::apache::thrift::protocol::TType _etype3;
-            xfer += iprot->readListBegin(_etype3, _size0);
-            this->processInputs.resize(_size0);
-            uint32_t _i4;
-            for (_i4 = 0; _i4 < _size0; ++_i4)
+            uint32_t _size5;
+            ::apache::thrift::protocol::TType _etype8;
+            xfer += iprot->readListBegin(_etype8, _size5);
+            this->processInputs.resize(_size5);
+            uint32_t _i9;
+            for (_i9 = 0; _i9 < _size5; ++_i9)
             {
-              xfer += this->processInputs[_i4].read(iprot);
+              xfer += this->processInputs[_i9].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -267,14 +279,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->processOutputs.clear();
-            uint32_t _size5;
-            ::apache::thrift::protocol::TType _etype8;
-            xfer += iprot->readListBegin(_etype8, _size5);
-            this->processOutputs.resize(_size5);
-            uint32_t _i9;
-            for (_i9 = 0; _i9 < _size5; ++_i9)
+            uint32_t _size10;
+            ::apache::thrift::protocol::TType _etype13;
+            xfer += iprot->readListBegin(_etype13, _size10);
+            this->processOutputs.resize(_size10);
+            uint32_t _i14;
+            for (_i14 = 0; _i14 < _size10; ++_i14)
             {
-              xfer += this->processOutputs[_i9].read(iprot);
+              xfer += this->processOutputs[_i14].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -285,8 +297,8 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 12:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->resourceSchedule.read(iprot);
-          this->__isset.resourceSchedule = true;
+          xfer += this->processResourceSchedule.read(iprot);
+          this->__isset.processResourceSchedule = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -295,14 +307,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->tasks.clear();
-            uint32_t _size10;
-            ::apache::thrift::protocol::TType _etype13;
-            xfer += iprot->readListBegin(_etype13, _size10);
-            this->tasks.resize(_size10);
-            uint32_t _i14;
-            for (_i14 = 0; _i14 < _size10; ++_i14)
+            uint32_t _size15;
+            ::apache::thrift::protocol::TType _etype18;
+            xfer += iprot->readListBegin(_etype18, _size15);
+            this->tasks.resize(_size15);
+            uint32_t _i19;
+            for (_i19 = 0; _i19 < _size15; ++_i19)
             {
-              xfer += this->tasks[_i14].read(iprot);
+              xfer += this->tasks[_i19].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -320,8 +332,20 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 15:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->processError.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processError.clear();
+            uint32_t _size20;
+            ::apache::thrift::protocol::TType _etype23;
+            xfer += iprot->readListBegin(_etype23, _size20);
+            this->processError.resize(_size20);
+            uint32_t _i24;
+            for (_i24 = 0; _i24 < _size20; ++_i24)
+            {
+              xfer += this->processError[_i24].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.processError = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -347,14 +371,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->emailAddresses.clear();
-            uint32_t _size15;
-            ::apache::thrift::protocol::TType _etype18;
-            xfer += iprot->readListBegin(_etype18, _size15);
-            this->emailAddresses.resize(_size15);
-            uint32_t _i19;
-            for (_i19 = 0; _i19 < _size15; ++_i19)
+            uint32_t _size25;
+            ::apache::thrift::protocol::TType _etype28;
+            xfer += iprot->readListBegin(_etype28, _size25);
+            this->emailAddresses.resize(_size25);
+            uint32_t _i29;
+            for (_i29 = 0; _i29 < _size25; ++_i29)
             {
-              xfer += iprot->readString(this->emailAddresses[_i19]);
+              xfer += iprot->readString(this->emailAddresses[_i29]);
             }
             xfer += iprot->readListEnd();
           }
@@ -443,8 +467,16 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processStatus) {
-    xfer += oprot->writeFieldBegin("processStatus", ::apache::thrift::protocol::T_STRUCT, 5);
-    xfer += this->processStatus.write(oprot);
+    xfer += oprot->writeFieldBegin("processStatus", ::apache::thrift::protocol::T_LIST, 5);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processStatus.size()));
+      std::vector< ::apache::airavata::model::status::ProcessStatus> ::const_iterator _iter30;
+      for (_iter30 = this->processStatus.begin(); _iter30 != this->processStatus.end(); ++_iter30)
+      {
+        xfer += (*_iter30).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processDetail) {
@@ -471,10 +503,10 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("processInputs", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processInputs.size()));
-      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter20;
-      for (_iter20 = this->processInputs.begin(); _iter20 != this->processInputs.end(); ++_iter20)
+      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter31;
+      for (_iter31 = this->processInputs.begin(); _iter31 != this->processInputs.end(); ++_iter31)
       {
-        xfer += (*_iter20).write(oprot);
+        xfer += (*_iter31).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -484,28 +516,28 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("processOutputs", ::apache::thrift::protocol::T_LIST, 11);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processOutputs.size()));
-      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter21;
-      for (_iter21 = this->processOutputs.begin(); _iter21 != this->processOutputs.end(); ++_iter21)
+      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter32;
+      for (_iter32 = this->processOutputs.begin(); _iter32 != this->processOutputs.end(); ++_iter32)
       {
-        xfer += (*_iter21).write(oprot);
+        xfer += (*_iter32).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceSchedule) {
-    xfer += oprot->writeFieldBegin("resourceSchedule", ::apache::thrift::protocol::T_STRUCT, 12);
-    xfer += this->resourceSchedule.write(oprot);
+  if (this->__isset.processResourceSchedule) {
+    xfer += oprot->writeFieldBegin("processResourceSchedule", ::apache::thrift::protocol::T_STRUCT, 12);
+    xfer += this->processResourceSchedule.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.tasks) {
     xfer += oprot->writeFieldBegin("tasks", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->tasks.size()));
-      std::vector< ::apache::airavata::model::task::TaskModel> ::const_iterator _iter22;
-      for (_iter22 = this->tasks.begin(); _iter22 != this->tasks.end(); ++_iter22)
+      std::vector< ::apache::airavata::model::task::TaskModel> ::const_iterator _iter33;
+      for (_iter33 = this->tasks.begin(); _iter33 != this->tasks.end(); ++_iter33)
       {
-        xfer += (*_iter22).write(oprot);
+        xfer += (*_iter33).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -517,8 +549,16 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processError) {
-    xfer += oprot->writeFieldBegin("processError", ::apache::thrift::protocol::T_STRUCT, 15);
-    xfer += this->processError.write(oprot);
+    xfer += oprot->writeFieldBegin("processError", ::apache::thrift::protocol::T_LIST, 15);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processError.size()));
+      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter34;
+      for (_iter34 = this->processError.begin(); _iter34 != this->processError.end(); ++_iter34)
+      {
+        xfer += (*_iter34).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.gatewayExecutionId) {
@@ -535,10 +575,10 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("emailAddresses", ::apache::thrift::protocol::T_LIST, 18);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->emailAddresses.size()));
-      std::vector<std::string> ::const_iterator _iter23;
-      for (_iter23 = this->emailAddresses.begin(); _iter23 != this->emailAddresses.end(); ++_iter23)
+      std::vector<std::string> ::const_iterator _iter35;
+      for (_iter35 = this->emailAddresses.begin(); _iter35 != this->emailAddresses.end(); ++_iter35)
       {
-        xfer += oprot->writeString((*_iter23));
+        xfer += oprot->writeString((*_iter35));
       }
       xfer += oprot->writeListEnd();
     }
@@ -587,7 +627,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.computeResourceId, b.computeResourceId);
   swap(a.processInputs, b.processInputs);
   swap(a.processOutputs, b.processOutputs);
-  swap(a.resourceSchedule, b.resourceSchedule);
+  swap(a.processResourceSchedule, b.processResourceSchedule);
   swap(a.tasks, b.tasks);
   swap(a.taskDag, b.taskDag);
   swap(a.processError, b.processError);
@@ -602,57 +642,57 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ProcessModel::ProcessModel(const ProcessModel& other24) {
-  processId = other24.processId;
-  experimentId = other24.experimentId;
-  creationTime = other24.creationTime;
-  lastUpdateTime = other24.lastUpdateTime;
-  processStatus = other24.processStatus;
-  processDetail = other24.processDetail;
-  applicationInterfaceId = other24.applicationInterfaceId;
-  applicationDeploymentId = other24.applicationDeploymentId;
-  computeResourceId = other24.computeResourceId;
-  processInputs = other24.processInputs;
-  processOutputs = other24.processOutputs;
-  resourceSchedule = other24.resourceSchedule;
-  tasks = other24.tasks;
-  taskDag = other24.taskDag;
-  processError = other24.processError;
-  gatewayExecutionId = other24.gatewayExecutionId;
-  enableEmailNotification = other24.enableEmailNotification;
-  emailAddresses = other24.emailAddresses;
-  storageResourceId = other24.storageResourceId;
-  userDn = other24.userDn;
-  generateCert = other24.generateCert;
-  experimentDataDir = other24.experimentDataDir;
-  userName = other24.userName;
-  __isset = other24.__isset;
+ProcessModel::ProcessModel(const ProcessModel& other36) {
+  processId = other36.processId;
+  experimentId = other36.experimentId;
+  creationTime = other36.creationTime;
+  lastUpdateTime = other36.lastUpdateTime;
+  processStatus = other36.processStatus;
+  processDetail = other36.processDetail;
+  applicationInterfaceId = other36.applicationInterfaceId;
+  applicationDeploymentId = other36.applicationDeploymentId;
+  computeResourceId = other36.computeResourceId;
+  processInputs = other36.processInputs;
+  processOutputs = other36.processOutputs;
+  processResourceSchedule = other36.processResourceSchedule;
+  tasks = other36.tasks;
+  taskDag = other36.taskDag;
+  processError = other36.processError;
+  gatewayExecutionId = other36.gatewayExecutionId;
+  enableEmailNotification = other36.enableEmailNotification;
+  emailAddresses = other36.emailAddresses;
+  storageResourceId = other36.storageResourceId;
+  userDn = other36.userDn;
+  generateCert = other36.generateCert;
+  experimentDataDir = other36.experimentDataDir;
+  userName = other36.userName;
+  __isset = other36.__isset;
 }
-ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
-  processId = other25.processId;
-  experimentId = other25.experimentId;
-  creationTime = other25.creationTime;
-  lastUpdateTime = other25.lastUpdateTime;
-  processStatus = other25.processStatus;
-  processDetail = other25.processDetail;
-  applicationInterfaceId = other25.applicationInterfaceId;
-  applicationDeploymentId = other25.applicationDeploymentId;
-  computeResourceId = other25.computeResourceId;
-  processInputs = other25.processInputs;
-  processOutputs = other25.processOutputs;
-  resourceSchedule = other25.resourceSchedule;
-  tasks = other25.tasks;
-  taskDag = other25.taskDag;
-  processError = other25.processError;
-  gatewayExecutionId = other25.gatewayExecutionId;
-  enableEmailNotification = other25.enableEmailNotification;
-  emailAddresses = other25.emailAddresses;
-  storageResourceId = other25.storageResourceId;
-  userDn = other25.userDn;
-  generateCert = other25.generateCert;
-  experimentDataDir = other25.experimentDataDir;
-  userName = other25.userName;
-  __isset = other25.__isset;
+ProcessModel& ProcessModel::operator=(const ProcessModel& other37) {
+  processId = other37.processId;
+  experimentId = other37.experimentId;
+  creationTime = other37.creationTime;
+  lastUpdateTime = other37.lastUpdateTime;
+  processStatus = other37.processStatus;
+  processDetail = other37.processDetail;
+  applicationInterfaceId = other37.applicationInterfaceId;
+  applicationDeploymentId = other37.applicationDeploymentId;
+  computeResourceId = other37.computeResourceId;
+  processInputs = other37.processInputs;
+  processOutputs = other37.processOutputs;
+  processResourceSchedule = other37.processResourceSchedule;
+  tasks = other37.tasks;
+  taskDag = other37.taskDag;
+  processError = other37.processError;
+  gatewayExecutionId = other37.gatewayExecutionId;
+  enableEmailNotification = other37.enableEmailNotification;
+  emailAddresses = other37.emailAddresses;
+  storageResourceId = other37.storageResourceId;
+  userDn = other37.userDn;
+  generateCert = other37.generateCert;
+  experimentDataDir = other37.experimentDataDir;
+  userName = other37.userName;
+  __isset = other37.__isset;
   return *this;
 }
 void ProcessModel::printTo(std::ostream& out) const {
@@ -669,7 +709,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "computeResourceId="; (__isset.computeResourceId ? (out << to_string(computeResourceId)) : (out << "<null>"));
   out << ", " << "processInputs="; (__isset.processInputs ? (out << to_string(processInputs)) : (out << "<null>"));
   out << ", " << "processOutputs="; (__isset.processOutputs ? (out << to_string(processOutputs)) : (out << "<null>"));
-  out << ", " << "resourceSchedule="; (__isset.resourceSchedule ? (out << to_string(resourceSchedule)) : (out << "<null>"));
+  out << ", " << "processResourceSchedule="; (__isset.processResourceSchedule ? (out << to_string(processResourceSchedule)) : (out << "<null>"));
   out << ", " << "tasks="; (__isset.tasks ? (out << to_string(tasks)) : (out << "<null>"));
   out << ", " << "taskDag="; (__isset.taskDag ? (out << to_string(taskDag)) : (out << "<null>"));
   out << ", " << "processError="; (__isset.processError ? (out << to_string(processError)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
index bf5b5d0..5d73b26 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
@@ -44,7 +44,7 @@ namespace apache { namespace airavata { namespace model { namespace process {
 class ProcessModel;
 
 typedef struct _ProcessModel__isset {
-  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
+  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), processResourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
   bool creationTime :1;
   bool lastUpdateTime :1;
   bool processStatus :1;
@@ -54,7 +54,7 @@ typedef struct _ProcessModel__isset {
   bool computeResourceId :1;
   bool processInputs :1;
   bool processOutputs :1;
-  bool resourceSchedule :1;
+  bool processResourceSchedule :1;
   bool tasks :1;
   bool taskDag :1;
   bool processError :1;
@@ -81,17 +81,17 @@ class ProcessModel {
   std::string experimentId;
   int64_t creationTime;
   int64_t lastUpdateTime;
-   ::apache::airavata::model::status::ProcessStatus processStatus;
+  std::vector< ::apache::airavata::model::status::ProcessStatus>  processStatus;
   std::string processDetail;
   std::string applicationInterfaceId;
   std::string applicationDeploymentId;
   std::string computeResourceId;
   std::vector< ::apache::airavata::model::application::io::InputDataObjectType>  processInputs;
   std::vector< ::apache::airavata::model::application::io::OutputDataObjectType>  processOutputs;
-   ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel resourceSchedule;
+   ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel processResourceSchedule;
   std::vector< ::apache::airavata::model::task::TaskModel>  tasks;
   std::string taskDag;
-   ::apache::airavata::model::commons::ErrorModel processError;
+  std::vector< ::apache::airavata::model::commons::ErrorModel>  processError;
   std::string gatewayExecutionId;
   bool enableEmailNotification;
   std::vector<std::string>  emailAddresses;
@@ -111,7 +111,7 @@ class ProcessModel {
 
   void __set_lastUpdateTime(const int64_t val);
 
-  void __set_processStatus(const  ::apache::airavata::model::status::ProcessStatus& val);
+  void __set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val);
 
   void __set_processDetail(const std::string& val);
 
@@ -125,13 +125,13 @@ class ProcessModel {
 
   void __set_processOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val);
 
-  void __set_resourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val);
+  void __set_processResourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val);
 
   void __set_tasks(const std::vector< ::apache::airavata::model::task::TaskModel> & val);
 
   void __set_taskDag(const std::string& val);
 
-  void __set_processError(const  ::apache::airavata::model::commons::ErrorModel& val);
+  void __set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 
   void __set_gatewayExecutionId(const std::string& val);
 
@@ -191,9 +191,9 @@ class ProcessModel {
       return false;
     else if (__isset.processOutputs && !(processOutputs == rhs.processOutputs))
       return false;
-    if (__isset.resourceSchedule != rhs.__isset.resourceSchedule)
+    if (__isset.processResourceSchedule != rhs.__isset.processResourceSchedule)
       return false;
-    else if (__isset.resourceSchedule && !(resourceSchedule == rhs.resourceSchedule))
+    else if (__isset.processResourceSchedule && !(processResourceSchedule == rhs.processResourceSchedule))
       return false;
     if (__isset.tasks != rhs.__isset.tasks)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
index 179be2b..e1b7b81 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
@@ -46,7 +46,7 @@ class ProcessModel {
    */
   public $lastUpdateTime = null;
   /**
-   * @var \Airavata\Model\Status\ProcessStatus
+   * @var \Airavata\Model\Status\ProcessStatus[]
    */
   public $processStatus = null;
   /**
@@ -76,7 +76,7 @@ class ProcessModel {
   /**
    * @var \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel
    */
-  public $resourceSchedule = null;
+  public $processResourceSchedule = null;
   /**
    * @var \Airavata\Model\Task\TaskModel[]
    */
@@ -86,7 +86,7 @@ class ProcessModel {
    */
   public $taskDag = null;
   /**
-   * @var \Airavata\Model\Commons\ErrorModel
+   * @var \Airavata\Model\Commons\ErrorModel[]
    */
   public $processError = null;
   /**
@@ -143,8 +143,12 @@ class ProcessModel {
           ),
         5 => array(
           'var' => 'processStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\ProcessStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\ProcessStatus',
+            ),
           ),
         6 => array(
           'var' => 'processDetail',
@@ -181,7 +185,7 @@ class ProcessModel {
             ),
           ),
         12 => array(
-          'var' => 'resourceSchedule',
+          'var' => 'processResourceSchedule',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Scheduling\ComputationalResourceSchedulingModel',
           ),
@@ -200,8 +204,12 @@ class ProcessModel {
           ),
         15 => array(
           'var' => 'processError',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Commons\ErrorModel',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Commons\ErrorModel',
+            ),
           ),
         16 => array(
           'var' => 'gatewayExecutionId',
@@ -275,8 +283,8 @@ class ProcessModel {
       if (isset($vals['processOutputs'])) {
         $this->processOutputs = $vals['processOutputs'];
       }
-      if (isset($vals['resourceSchedule'])) {
-        $this->resourceSchedule = $vals['resourceSchedule'];
+      if (isset($vals['processResourceSchedule'])) {
+        $this->processResourceSchedule = $vals['processResourceSchedule'];
       }
       if (isset($vals['tasks'])) {
         $this->tasks = $vals['tasks'];
@@ -362,9 +370,19 @@ class ProcessModel {
           }
           break;
         case 5:
-          if ($ftype == TType::STRUCT) {
-            $this->processStatus = new \Airavata\Model\Status\ProcessStatus();
-            $xfer += $this->processStatus->read($input);
+          if ($ftype == TType::LST) {
+            $this->processStatus = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Status\ProcessStatus();
+              $xfer += $elem5->read($input);
+              $this->processStatus []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -400,15 +418,15 @@ class ProcessModel {
         case 10:
           if ($ftype == TType::LST) {
             $this->processInputs = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            $_size6 = 0;
+            $_etype9 = 0;
+            $xfer += $input->readListBegin($_etype9, $_size6);
+            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
             {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Application\Io\InputDataObjectType();
-              $xfer += $elem5->read($input);
-              $this->processInputs []= $elem5;
+              $elem11 = null;
+              $elem11 = new \Airavata\Model\Application\Io\InputDataObjectType();
+              $xfer += $elem11->read($input);
+              $this->processInputs []= $elem11;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -418,15 +436,15 @@ class ProcessModel {
         case 11:
           if ($ftype == TType::LST) {
             $this->processOutputs = array();
-            $_size6 = 0;
-            $_etype9 = 0;
-            $xfer += $input->readListBegin($_etype9, $_size6);
-            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
+            $_size12 = 0;
+            $_etype15 = 0;
+            $xfer += $input->readListBegin($_etype15, $_size12);
+            for ($_i16 = 0; $_i16 < $_size12; ++$_i16)
             {
-              $elem11 = null;
-              $elem11 = new \Airavata\Model\Application\Io\OutputDataObjectType();
-              $xfer += $elem11->read($input);
-              $this->processOutputs []= $elem11;
+              $elem17 = null;
+              $elem17 = new \Airavata\Model\Application\Io\OutputDataObjectType();
+              $xfer += $elem17->read($input);
+              $this->processOutputs []= $elem17;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -435,8 +453,8 @@ class ProcessModel {
           break;
         case 12:
           if ($ftype == TType::STRUCT) {
-            $this->resourceSchedule = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
-            $xfer += $this->resourceSchedule->read($input);
+            $this->processResourceSchedule = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
+            $xfer += $this->processResourceSchedule->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -444,15 +462,15 @@ class ProcessModel {
         case 13:
           if ($ftype == TType::LST) {
             $this->tasks = array();
-            $_size12 = 0;
-            $_etype15 = 0;
-            $xfer += $input->readListBegin($_etype15, $_size12);
-            for ($_i16 = 0; $_i16 < $_size12; ++$_i16)
+            $_size18 = 0;
+            $_etype21 = 0;
+            $xfer += $input->readListBegin($_etype21, $_size18);
+            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
             {
-              $elem17 = null;
-              $elem17 = new \Airavata\Model\Task\TaskModel();
-              $xfer += $elem17->read($input);
-              $this->tasks []= $elem17;
+              $elem23 = null;
+              $elem23 = new \Airavata\Model\Task\TaskModel();
+              $xfer += $elem23->read($input);
+              $this->tasks []= $elem23;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -467,9 +485,19 @@ class ProcessModel {
           }
           break;
         case 15:
-          if ($ftype == TType::STRUCT) {
-            $this->processError = new \Airavata\Model\Commons\ErrorModel();
-            $xfer += $this->processError->read($input);
+          if ($ftype == TType::LST) {
+            $this->processError = array();
+            $_size24 = 0;
+            $_etype27 = 0;
+            $xfer += $input->readListBegin($_etype27, $_size24);
+            for ($_i28 = 0; $_i28 < $_size24; ++$_i28)
+            {
+              $elem29 = null;
+              $elem29 = new \Airavata\Model\Commons\ErrorModel();
+              $xfer += $elem29->read($input);
+              $this->processError []= $elem29;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -491,14 +519,14 @@ class ProcessModel {
         case 18:
           if ($ftype == TType::LST) {
             $this->emailAddresses = array();
-            $_size18 = 0;
-            $_etype21 = 0;
-            $xfer += $input->readListBegin($_etype21, $_size18);
-            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
+            $_size30 = 0;
+            $_etype33 = 0;
+            $xfer += $input->readListBegin($_etype33, $_size30);
+            for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
             {
-              $elem23 = null;
-              $xfer += $input->readString($elem23);
-              $this->emailAddresses []= $elem23;
+              $elem35 = null;
+              $xfer += $input->readString($elem35);
+              $this->emailAddresses []= $elem35;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -574,11 +602,20 @@ class ProcessModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processStatus !== null) {
-      if (!is_object($this->processStatus)) {
+      if (!is_array($this->processStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processStatus', TType::STRUCT, 5);
-      $xfer += $this->processStatus->write($output);
+      $xfer += $output->writeFieldBegin('processStatus', TType::LST, 5);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->processStatus));
+        {
+          foreach ($this->processStatus as $iter36)
+          {
+            $xfer += $iter36->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processDetail !== null) {
@@ -609,9 +646,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processInputs));
         {
-          foreach ($this->processInputs as $iter24)
+          foreach ($this->processInputs as $iter37)
           {
-            $xfer += $iter24->write($output);
+            $xfer += $iter37->write($output);
           }
         }
         $output->writeListEnd();
@@ -626,21 +663,21 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processOutputs));
         {
-          foreach ($this->processOutputs as $iter25)
+          foreach ($this->processOutputs as $iter38)
           {
-            $xfer += $iter25->write($output);
+            $xfer += $iter38->write($output);
           }
         }
         $output->writeListEnd();
       }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->resourceSchedule !== null) {
-      if (!is_object($this->resourceSchedule)) {
+    if ($this->processResourceSchedule !== null) {
+      if (!is_object($this->processResourceSchedule)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('resourceSchedule', TType::STRUCT, 12);
-      $xfer += $this->resourceSchedule->write($output);
+      $xfer += $output->writeFieldBegin('processResourceSchedule', TType::STRUCT, 12);
+      $xfer += $this->processResourceSchedule->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->tasks !== null) {
@@ -651,9 +688,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->tasks));
         {
-          foreach ($this->tasks as $iter26)
+          foreach ($this->tasks as $iter39)
           {
-            $xfer += $iter26->write($output);
+            $xfer += $iter39->write($output);
           }
         }
         $output->writeListEnd();
@@ -666,11 +703,20 @@ class ProcessModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processError !== null) {
-      if (!is_object($this->processError)) {
+      if (!is_array($this->processError)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processError', TType::STRUCT, 15);
-      $xfer += $this->processError->write($output);
+      $xfer += $output->writeFieldBegin('processError', TType::LST, 15);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->processError));
+        {
+          foreach ($this->processError as $iter40)
+          {
+            $xfer += $iter40->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gatewayExecutionId !== null) {
@@ -691,9 +737,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRING, count($this->emailAddresses));
         {
-          foreach ($this->emailAddresses as $iter27)
+          foreach ($this->emailAddresses as $iter41)
           {
-            $xfer += $output->writeString($iter27);
+            $xfer += $output->writeString($iter41);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
index 7da3b53..868b383 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
@@ -45,7 +45,7 @@ class ProcessModel:
    - computeResourceId
    - processInputs
    - processOutputs
-   - resourceSchedule
+   - processResourceSchedule
    - tasks
    - taskDag
    - processError
@@ -65,17 +65,17 @@ class ProcessModel:
     (2, TType.STRING, 'experimentId', None, None, ), # 2
     (3, TType.I64, 'creationTime', None, None, ), # 3
     (4, TType.I64, 'lastUpdateTime', None, None, ), # 4
-    (5, TType.STRUCT, 'processStatus', (apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec), None, ), # 5
+    (5, TType.LIST, 'processStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec)), None, ), # 5
     (6, TType.STRING, 'processDetail', None, None, ), # 6
     (7, TType.STRING, 'applicationInterfaceId', None, None, ), # 7
     (8, TType.STRING, 'applicationDeploymentId', None, None, ), # 8
     (9, TType.STRING, 'computeResourceId', None, None, ), # 9
     (10, TType.LIST, 'processInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 10
     (11, TType.LIST, 'processOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 11
-    (12, TType.STRUCT, 'resourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
+    (12, TType.STRUCT, 'processResourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
     (13, TType.LIST, 'tasks', (TType.STRUCT,(apache.airavata.model.task.ttypes.TaskModel, apache.airavata.model.task.ttypes.TaskModel.thrift_spec)), None, ), # 13
     (14, TType.STRING, 'taskDag', None, None, ), # 14
-    (15, TType.STRUCT, 'processError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 15
+    (15, TType.LIST, 'processError', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 15
     (16, TType.STRING, 'gatewayExecutionId', None, None, ), # 16
     (17, TType.BOOL, 'enableEmailNotification', None, None, ), # 17
     (18, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 18
@@ -86,7 +86,7 @@ class ProcessModel:
     (23, TType.STRING, 'userName', None, None, ), # 23
   )
 
-  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, processResourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
     self.processId = processId
     self.experimentId = experimentId
     self.creationTime = creationTime
@@ -98,7 +98,7 @@ class ProcessModel:
     self.computeResourceId = computeResourceId
     self.processInputs = processInputs
     self.processOutputs = processOutputs
-    self.resourceSchedule = resourceSchedule
+    self.processResourceSchedule = processResourceSchedule
     self.tasks = tasks
     self.taskDag = taskDag
     self.processError = processError
@@ -141,9 +141,14 @@ class ProcessModel:
         else:
           iprot.skip(ftype)
       elif fid == 5:
-        if ftype == TType.STRUCT:
-          self.processStatus = apache.airavata.model.status.ttypes.ProcessStatus()
-          self.processStatus.read(iprot)
+        if ftype == TType.LIST:
+          self.processStatus = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.status.ttypes.ProcessStatus()
+            _elem5.read(iprot)
+            self.processStatus.append(_elem5)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 6:
@@ -169,39 +174,39 @@ class ProcessModel:
       elif fid == 10:
         if ftype == TType.LIST:
           self.processInputs = []
-          (_etype3, _size0) = iprot.readListBegin()
-          for _i4 in xrange(_size0):
-            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
-            _elem5.read(iprot)
-            self.processInputs.append(_elem5)
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.processInputs.append(_elem11)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 11:
         if ftype == TType.LIST:
           self.processOutputs = []
-          (_etype9, _size6) = iprot.readListBegin()
-          for _i10 in xrange(_size6):
-            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem11.read(iprot)
-            self.processOutputs.append(_elem11)
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.processOutputs.append(_elem17)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 12:
         if ftype == TType.STRUCT:
-          self.resourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
-          self.resourceSchedule.read(iprot)
+          self.processResourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.processResourceSchedule.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 13:
         if ftype == TType.LIST:
           self.tasks = []
-          (_etype15, _size12) = iprot.readListBegin()
-          for _i16 in xrange(_size12):
-            _elem17 = apache.airavata.model.task.ttypes.TaskModel()
-            _elem17.read(iprot)
-            self.tasks.append(_elem17)
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = apache.airavata.model.task.ttypes.TaskModel()
+            _elem23.read(iprot)
+            self.tasks.append(_elem23)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -211,9 +216,14 @@ class ProcessModel:
         else:
           iprot.skip(ftype)
       elif fid == 15:
-        if ftype == TType.STRUCT:
-          self.processError = apache.airavata.model.commons.ttypes.ErrorModel()
-          self.processError.read(iprot)
+        if ftype == TType.LIST:
+          self.processError = []
+          (_etype27, _size24) = iprot.readListBegin()
+          for _i28 in xrange(_size24):
+            _elem29 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem29.read(iprot)
+            self.processError.append(_elem29)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 16:
@@ -229,10 +239,10 @@ class ProcessModel:
       elif fid == 18:
         if ftype == TType.LIST:
           self.emailAddresses = []
-          (_etype21, _size18) = iprot.readListBegin()
-          for _i22 in xrange(_size18):
-            _elem23 = iprot.readString()
-            self.emailAddresses.append(_elem23)
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = iprot.readString()
+            self.emailAddresses.append(_elem35)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -288,8 +298,11 @@ class ProcessModel:
       oprot.writeI64(self.lastUpdateTime)
       oprot.writeFieldEnd()
     if self.processStatus is not None:
-      oprot.writeFieldBegin('processStatus', TType.STRUCT, 5)
-      self.processStatus.write(oprot)
+      oprot.writeFieldBegin('processStatus', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.processStatus))
+      for iter36 in self.processStatus:
+        iter36.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processDetail is not None:
       oprot.writeFieldBegin('processDetail', TType.STRING, 6)
@@ -310,26 +323,26 @@ class ProcessModel:
     if self.processInputs is not None:
       oprot.writeFieldBegin('processInputs', TType.LIST, 10)
       oprot.writeListBegin(TType.STRUCT, len(self.processInputs))
-      for iter24 in self.processInputs:
-        iter24.write(oprot)
+      for iter37 in self.processInputs:
+        iter37.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processOutputs is not None:
       oprot.writeFieldBegin('processOutputs', TType.LIST, 11)
       oprot.writeListBegin(TType.STRUCT, len(self.processOutputs))
-      for iter25 in self.processOutputs:
-        iter25.write(oprot)
+      for iter38 in self.processOutputs:
+        iter38.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
-    if self.resourceSchedule is not None:
-      oprot.writeFieldBegin('resourceSchedule', TType.STRUCT, 12)
-      self.resourceSchedule.write(oprot)
+    if self.processResourceSchedule is not None:
+      oprot.writeFieldBegin('processResourceSchedule', TType.STRUCT, 12)
+      self.processResourceSchedule.write(oprot)
       oprot.writeFieldEnd()
     if self.tasks is not None:
       oprot.writeFieldBegin('tasks', TType.LIST, 13)
       oprot.writeListBegin(TType.STRUCT, len(self.tasks))
-      for iter26 in self.tasks:
-        iter26.write(oprot)
+      for iter39 in self.tasks:
+        iter39.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.taskDag is not None:
@@ -337,8 +350,11 @@ class ProcessModel:
       oprot.writeString(self.taskDag)
       oprot.writeFieldEnd()
     if self.processError is not None:
-      oprot.writeFieldBegin('processError', TType.STRUCT, 15)
-      self.processError.write(oprot)
+      oprot.writeFieldBegin('processError', TType.LIST, 15)
+      oprot.writeListBegin(TType.STRUCT, len(self.processError))
+      for iter40 in self.processError:
+        iter40.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.gatewayExecutionId is not None:
       oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 16)
@@ -351,8 +367,8 @@ class ProcessModel:
     if self.emailAddresses is not None:
       oprot.writeFieldBegin('emailAddresses', TType.LIST, 18)
       oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
-      for iter27 in self.emailAddresses:
-        oprot.writeString(iter27)
+      for iter41 in self.emailAddresses:
+        oprot.writeString(iter41)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.storageResourceId is not None:
@@ -399,7 +415,7 @@ class ProcessModel:
     value = (value * 31) ^ hash(self.computeResourceId)
     value = (value * 31) ^ hash(self.processInputs)
     value = (value * 31) ^ hash(self.processOutputs)
-    value = (value * 31) ^ hash(self.resourceSchedule)
+    value = (value * 31) ^ hash(self.processResourceSchedule)
     value = (value * 31) ^ hash(self.tasks)
     value = (value * 31) ^ hash(self.taskDag)
     value = (value * 31) ^ hash(self.processError)


[02/48] airavata git commit: add simstream module to airavata

Posted by la...@apache.org.
add simstream module to airavata


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 24ced80054f084a78d86fff36672c834e144d3e9
Parents: 2c7da5e
Author: Jeff Kinnison <je...@gmail.com>
Authored: Fri Jun 10 16:46:02 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Fri Jun 10 16:46:02 2016 -0400

----------------------------------------------------------------------
 modules/simstream/README.md                     |  18 +
 modules/simstream/example/README.md             |   9 +
 .../simstream/example/logfile_checker/README.md |  23 +
 .../example/logfile_checker/generate_logs.sh    |  22 +
 .../example/logfile_checker/log_consumer.py     |  43 ++
 .../example/logfile_checker/log_streamer.py     | 111 ++++
 .../example/logfile_checker/remote_log.slurm    |  21 +
 .../simstream/example/logfile_checker/test.txt  | 657 +++++++++++++++++++
 .../simstream/example/mem_streamer/README.md    |  17 +
 .../example/mem_streamer/memory_consumption.py  |  83 +++
 .../example/mem_streamer/memory_streamer.py     |  46 ++
 .../simstream/example/openmm_example/README.md  |  33 +
 .../application/alanine_dipeptide.py            |  55 ++
 .../openmm_example/application/input.pdb        |  24 +
 .../openmm_example/application/trajectory.dcd   |   0
 .../example/openmm_example/openmm_consumer.py   |   8 +
 .../openmm_example/openmm_log_consumer.py       |  32 +
 .../openmm_example/openmm_rmsd_consumer.py      |  36 +
 .../example/openmm_example/openmm_stream.slurm  |  19 +
 .../example/openmm_example/openmm_streamer.py   | 130 ++++
 .../simstream/example/openmm_example/test.txt   |   0
 modules/simstream/example/settings.json         |   6 +
 modules/simstream/setup.py                      |  19 +
 modules/simstream/simstream/__init__.py         |  11 +
 modules/simstream/simstream/datacollector.py    | 110 ++++
 modules/simstream/simstream/datareporter.py     | 169 +++++
 modules/simstream/simstream/eventhandler.py     |  17 +
 modules/simstream/simstream/eventmonitor.py     |  46 ++
 .../simstream/simstream/pikaasyncconsumer.py    | 203 ++++++
 modules/simstream/simstream/pikaproducer.py     | 202 ++++++
 modules/simstream/simstream/simstream.py        | 167 +++++
 31 files changed, 2337 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/README.md
----------------------------------------------------------------------
diff --git a/modules/simstream/README.md b/modules/simstream/README.md
new file mode 100755
index 0000000..9ab1379
--- /dev/null
+++ b/modules/simstream/README.md
@@ -0,0 +1,18 @@
+# simstream
+A utility for user-defined remote system and simulation data monitoring.
+
+## Dependencies
+* pika >= 0.10.0 (`pip install pika`)
+* A running, accessible instance of RabbitMQ server
+
+## Installation
+1. Clone this repository
+2. `python setup.py install`
+
+## Running the Example
+The example runs a simple collector that records the maximum memory used by the server (MB) and a timestamp. It also generates a plot of the results.
+
+1. Edit `example/memory_consumption.py` and `example/memory_streamer.py` with the correct RabbitMQ settings
+2. From the repository root, run `python example/memory_consumption.py`
+3. Open a new terminal session and run `python example/memory_streamer.py`
+4. Memory usage information should now be collected in the current terminal and received in the original terminal

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/README.md
----------------------------------------------------------------------
diff --git a/modules/simstream/example/README.md b/modules/simstream/example/README.md
new file mode 100755
index 0000000..23f36d5
--- /dev/null
+++ b/modules/simstream/example/README.md
@@ -0,0 +1,9 @@
+# SimStream Examples
+
+This directory contains several examples showcasing the functionality of SimStream. To run them, download and install Python 2.7/3.5, install SimStream using setup.py, and modify the settings.json file to match your RabbitMQ server settings.
+
+## The Examples
+
+* mem_streamer: Stream max RSS memory consumed by a basic SimStream utility
+* logfile_checker: Collect, filter, and stream tagged log file entries
+* openmm_example: Run a molecular dynamics simulation and return log information and system state measured by root mean squared deviation
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/README.md
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/README.md b/modules/simstream/example/logfile_checker/README.md
new file mode 100755
index 0000000..30ed071
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/README.md
@@ -0,0 +1,23 @@
+# SimStream Example: Logfile Streaming
+
+This example filters log file entries by starting tag and sends them to a remote listener. The listener prints the logs it receives to terminal.
+
+## Instructions
+
+### Start the Publisher
+1. Open a terminal
+2. `cd path/to/simstream/examples/logfile_checker`
+3. `python log_streamer.py`
+
+### Start the Consumer
+1. Open a terminal
+2. `cd path/to/simstream/examples/logfile_checker`
+3. `python log_consumer.py`
+
+### Write Some Logs
+1. Open a terminal
+2. `cd path/to/simstream/examples/logfile_checker`
+3. `chmod 700 generate_logs.sh`
+4. `./generate_logs.sh`
+
+This will write logs to `test.txt`. The Publisher will continuously check for new logs, filter based on the [STATUS] and [ERROR] tags, and send the filtered results to the RabbitMQ server. The Consumer will receive the filtered log entries and print them to the terminal.

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/generate_logs.sh
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/generate_logs.sh b/modules/simstream/example/logfile_checker/generate_logs.sh
new file mode 100755
index 0000000..5fb7aa0
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/generate_logs.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+outfile="test.txt"
+
+echo "[STATUS] Starting logfile generator" >> $outfile
+
+sleep 2
+
+echo "[STATUS] Doing stuff" >> $outfile
+echo "Stuff that doesn't need to be reported" >> $outfile
+echo "Stuff that also doesn't need to be reported" >> $outfile
+echo "[DATA] 7.267" >> $outfile
+
+sleep 2
+
+echo "[STATUS] Doing more stuff" >> $outfile
+echo "Yet more stuff that doesn't need to be reported" >> $outfile
+echo "[ERROR] Some non-fatal error that the user should know about" >> $outfile
+
+sleep 2
+
+echo "[STATUS] Finished generating logs" >> $outfile
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/log_consumer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/log_consumer.py b/modules/simstream/example/logfile_checker/log_consumer.py
new file mode 100755
index 0000000..bf3beac
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/log_consumer.py
@@ -0,0 +1,43 @@
+import json
+from simstream import PikaAsyncConsumer
+
+#settings = {
+#    "url": "amqp://guest:guest@localhost:5672",
+#    "exchange": "simstream",
+#    "queue": "test",
+#    "routing_key": "logfile",
+#    "exchange_type": "topic"
+#}
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+    settings["routing_key"] = "memory"
+
+def print_log_line(body):
+    try:
+        lines = json.loads(body.decode())
+        if lines is not None:
+            for line in lines:
+                print(line)
+    except json.decoder.JSONDecodeError as e:
+        print("[Error]: Could not decode %s" % (body))
+    except UnicodeError as e:
+        print("[Error]: Could not decode from bytes to string: %s" % (e.reason))
+
+
+consumer = PikaAsyncConsumer(
+                            settings["url"],
+                            settings["exchange"],
+                            settings["queue"],
+                            print_log_line,
+                            exchange_type=settings["exchange_type"],
+                            routing_key=settings["routing_key"]
+                            )
+
+if __name__ == "__main__":
+    try:
+        consumer.start()
+    except KeyboardInterrupt:
+        consumer.stop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/log_streamer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/log_streamer.py b/modules/simstream/example/logfile_checker/log_streamer.py
new file mode 100755
index 0000000..65f84f0
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/log_streamer.py
@@ -0,0 +1,111 @@
+from simstream import SimStream, DataReporter
+
+import sys, json
+
+class LogMonitor(object):
+    """
+    A callable class that returns unprocessed lines in an open logfile.
+
+    Instance Variables:
+    logfile -- the path to the logfile to monitor
+    """
+
+    def __init__(self, logfile):
+        """
+        Set up a monitor for a logfile.
+
+        Arguments:
+        logfile -- the path to the logfile to monitor
+        """
+        self.logfile = logfile
+        self._generator = None
+        self._version = sys.version_info[0]
+
+    def __call__(self):
+        """
+        Get the next line from the logfile.
+        """
+        if not self._generator:
+            self._generator = self._monitor_logfile()
+
+        lines = []
+
+        line = self._next()
+        while line is not None:
+            lines.append(line)
+            line = self._next()
+
+        return lines
+
+    def _monitor_logfile(self):
+        """
+        Yield the next set of lines from the logfile.
+        """
+        try:
+            # Make the file persistent for the lifetime of the generator
+            with open(self.logfile) as f:
+                f.seek(0,2) # Move to the end of the file
+                while True:
+                    # Get the next line or indicate the end of the file
+                    line = f.readline()
+                    if line:
+                        yield line.strip()
+                    else:
+                        yield None
+
+        except EnvironmentError as e:
+            # Handle I/O exceptions in an OS-agnostic way
+            print("Error: Could not open file %s: %s" % (self.logfile, e))
+
+    def _next(self):
+        """
+        Python 2/3 agnostic retrieval of generator values.
+        """
+        return self._generator.__next__() if self._version == 3 else self._generator.next()
+
+
+def get_relevant_log_lines(log_lines):
+    import re
+    relevant_lines = []
+    pattern = r'^\[(STATUS|ERROR)\]'
+    for line in log_lines:
+        if re.match(pattern, line) is not None:
+            relevant_lines.append(line)
+    return relevant_lines
+
+
+#settings = {
+#    "url": "amqp://guest:guest@localhost:5672",
+#    "exchange": "simstream",
+#    "queue": "test",
+#    "routing_key": "logfile",
+#    "exchange_type": "topic"
+#}
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+    settings["routing_key"] = "memory"
+
+if __name__ == "__main__":
+    logfile = sys.argv[1]
+    log_reporter = DataReporter()
+    log_reporter.add_collector("logger",
+                               LogMonitor(logfile),
+                               settings["url"],
+                               settings["exchange"],
+                               limit=10,
+                               interval=2,
+                               exchange_type=settings["exchange_type"],
+                               postprocessor=get_relevant_log_lines)
+
+    log_reporter.start_streaming("logger", settings["routing_key"])
+
+    streamer = SimStream(config=settings, reporters={"log_reporter": log_reporter})
+    streamer.setup()
+
+    try:
+        streamer.start()
+    except KeyboardInterrupt:
+        streamer.stop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/remote_log.slurm
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/remote_log.slurm b/modules/simstream/example/logfile_checker/remote_log.slurm
new file mode 100644
index 0000000..55834e9
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/remote_log.slurm
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+#SBATCH -J remote_logger     # Job name
+#SBATCH -o remote_logger.o%j # Name of stdout output file(%j expands to jobId) 
+#SBATCH -e remote_logger.o%j # Name of stderr output file(%j expands to jobId)
+#SBATCH -p development         # large queue for jobs > 256 nodes
+#SBATCH -t 00:10:00      # Run time (hh:mm:ss) - 1.5 hours
+#SBATCH -n 1             # Nodes to use
+
+module use "/home1/03947/tg832463/modulefiles"
+module load openmm
+
+touch test.txt
+
+python log_streamer.py test.txt &
+
+while true; do
+    bash generate_logs.sh
+    sleep 5
+done
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/logfile_checker/test.txt
----------------------------------------------------------------------
diff --git a/modules/simstream/example/logfile_checker/test.txt b/modules/simstream/example/logfile_checker/test.txt
new file mode 100755
index 0000000..2ffb48c
--- /dev/null
+++ b/modules/simstream/example/logfile_checker/test.txt
@@ -0,0 +1,657 @@
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs
+[STATUS] Starting logfile generator
+[STATUS] Doing stuff
+Stuff that doesn't need to be reported
+Stuff that also doesn't need to be reported
+[DATA] 7.267
+[STATUS] Doing more stuff
+Yet more stuff that doesn't need to be reported
+[ERROR] Some non-fatal error that the user should know about
+[STATUS] Finished generating logs

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/mem_streamer/README.md
----------------------------------------------------------------------
diff --git a/modules/simstream/example/mem_streamer/README.md b/modules/simstream/example/mem_streamer/README.md
new file mode 100755
index 0000000..897b77a
--- /dev/null
+++ b/modules/simstream/example/mem_streamer/README.md
@@ -0,0 +1,17 @@
+# SimStream Example: Memory Usage Streamer
+
+This example collects data on the memory used by the Publisher and sends that data to the Consumer.
+
+## Instructions
+
+### Start the Consumer
+1. Open a terminal
+2. `cd path/to/simstream/examples/logfile_checker`
+3. `python log_consumer.py`
+
+### Starting the Consumer
+1. Open a new terminal
+2. `cd path/to/simstream/examples/mem_streamer`
+3. `python memory_consumer.py
+
+The Consumer should receive the memory used by the Publisher (KB) and the time that the data was collected (s since UNIX epoch) at a 2-second interval.

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/mem_streamer/memory_consumption.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/mem_streamer/memory_consumption.py b/modules/simstream/example/mem_streamer/memory_consumption.py
new file mode 100755
index 0000000..b67e975
--- /dev/null
+++ b/modules/simstream/example/mem_streamer/memory_consumption.py
@@ -0,0 +1,83 @@
+import tornado.ioloop
+import tornado.web
+import tornado.websocket
+
+import json
+
+from simstream import PikaAsyncConsumer, PikaProducer
+
+#settings = {
+#    "url": "amqp://localhost:5672",
+#    "exchange": "simstream",
+#    "queue": "remote_node",
+#    "routing_key": "test",
+#    "exchange_type": "topic"
+#}
+
+settings = {}
+ 
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+    settings["routing_key"] = "memory"
+
+
+def print_result(body):
+    try:
+        data = json.loads(body.decode())
+        print("%s: %s" % (data["x"], data["y"]))
+    except json.decoder.JSONDecodeError as e:
+        print("[ERROR] Could not decode JSON %s: %s", (body, e))
+    except UnicodeError as e:
+        print("[ERROR] Could not decode message %s: %s" % (body, e.reason))
+
+consumer = PikaAsyncConsumer(settings['url'],
+                             settings['exchange'],
+                             settings['queue'],
+                             print_result,
+                             exchange_type=settings['exchange_type'],
+                             routing_key=settings['routing_key'])
+
+consumer.start()
+
+# class PlotHandler(tornado.web.RequestHandler):
+
+#     def get(self):
+#         pass
+
+
+# class StreamingHandler(tornado.websocket.WebSocketHandler):
+
+#     def open(self):
+#         self.consumer = PikaAsyncConsumer(settings.url,
+#                                           settings.exchange,
+#                                           settings.queue,
+#                                           self.send_data,
+#                                           routing_keys=settings.routing_key,
+#                                           exchange_type=settings.exchange_type
+#                                           )
+#         self.producer = PikaProducer("",
+#                                      remote_settings.url,
+#                                      remote_settings.exchange,
+#                                      remote_settings.queue,
+#                                      remote_settings.routing_key)
+
+#     def on_message(self, message):
+#         if hasattr(self, producer) and producer is not None:
+#             self.producer.send_data(message)
+
+#     def on_close(self):
+#         self.consumer.stop()
+#         self.producer.shutdown()
+#         self.consumer = None
+#         self.producer = None
+
+#     def send_data(self, ch, method, properties, body):
+#         self.write_message(body)
+
+# if __name__ == "__main__":
+#     app = tornado.web.Application([
+#             (r"/plot/(.*)", )
+#             (r"/stream/(.*)", StreamingHandler)
+#         ])
+#     app.listen(8888)
+#     tornado.ioloop.IOLoop.current().start()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/mem_streamer/memory_streamer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/mem_streamer/memory_streamer.py b/modules/simstream/example/mem_streamer/memory_streamer.py
new file mode 100755
index 0000000..88f0d9a
--- /dev/null
+++ b/modules/simstream/example/mem_streamer/memory_streamer.py
@@ -0,0 +1,46 @@
+import resource
+import time
+import json
+
+from simstream import SimStream, DataReporter, DataCollector
+
+#settings = {
+#    "url": "amqp://localhost:5672",
+#    "exchange": "simstream",
+#    "queue": "remote_node",
+#    "routing_key": "stream_sender",
+#    "exchange_type": "topic"
+#}
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+    settings["routing_key"] = "memory"
+
+def mem_callback():
+    return {'x': time.time() * 1000,
+            'y': resource.getrusage(resource.RUSAGE_SELF).ru_maxrss}
+
+
+def mem_postprocessor(rss):
+    rss.y  = rss.y / 1000000
+    return rss
+
+mem_reporter = DataReporter()
+mem_reporter.add_collector("rss",
+                           mem_callback,
+                           settings["url"],
+                           settings["exchange"],
+                           limit=100,
+                           interval=2,
+                           postprocessor=mem_postprocessor,
+                           )
+
+mem_reporter.start_streaming("rss", "test")
+
+if __name__ == "__main__":
+    resource_streamer = SimStream(reporters={"memory": mem_reporter},
+                                  config=settings)
+    resource_streamer.setup()
+    resource_streamer.start()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/README.md
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/README.md b/modules/simstream/example/openmm_example/README.md
new file mode 100644
index 0000000..59a0588
--- /dev/null
+++ b/modules/simstream/example/openmm_example/README.md
@@ -0,0 +1,33 @@
+# SimStream Example: Simulating Alanine Dipeptide
+
+This example runs a simulation of the small molecule Alanine Dipeptide and streams logs and RMSD. RMSD is a metric for judging how similar two molecular states are for the same model.
+
+## Instructions
+
+### Installing OpenMM
+The easiest way to install OpenMM is to use the Anaconda distribution of Python and run
+`conda install -c https://conda.anaconda.org/omnia openmm`
+
+If you do not wish to use Anaconda, install OpenMM from source by following the instructions in the [OpenMM docs](http://docs.openmm.org/7.0.0/userguide/application.html#installing-openmm "OpenMM documentation")
+
+### Start the Logfile Consumer
+1. Open a terminal
+2. `cd path/to/simstream/examples/openmm_example`
+3. `python openmm_log_consumer.py`
+
+### Start the RMSD Consumer
+1. Open a terminal
+2. `cd path/to/simstream/examples/openmm_example`
+3. `python openmm_rmsd_consumer.py`
+
+### Starting the Producer
+1. Open a new terminal
+2. `cd path/to/simstream/examples/openmm_example`
+3. `python openmm_streamer.py application/sim.out application/trajectory.dcd application/input.pdb application/input.pdb`
+
+### Starting the Simulation
+1. Open a new terminal
+2. `cd path/to/simstream/examples/openmm_example/application`
+3. `python alanine_dipeptide.py > sim.out`
+
+The Logfile Consumer should now be printing tagged log entries to the screen; the RMSD Consumer should be printing the calculated RMSD each time the trajectory file is written.

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/application/alanine_dipeptide.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/application/alanine_dipeptide.py b/modules/simstream/example/openmm_example/application/alanine_dipeptide.py
new file mode 100644
index 0000000..8b22b16
--- /dev/null
+++ b/modules/simstream/example/openmm_example/application/alanine_dipeptide.py
@@ -0,0 +1,55 @@
+##########################################################################
+# this script was generated by openmm-builder. to customize it further,
+# you can save the file to disk and edit it with your favorite editor.
+##########################################################################
+
+from __future__ import print_function
+from simtk.openmm import app
+import simtk.openmm as mm
+from simtk import unit
+from sys import stdout
+
+print("[START] Application is now running")
+
+pdb = app.PDBFile('input.pdb')
+print("[STATUS] Loaded model")
+forcefield = app.ForceField('amber03.xml', 'amber03_obc.xml')
+print("[STATUS] Loaded force field")
+
+system = forcefield.createSystem(pdb.topology, nonbondedMethod=app.NoCutoff, 
+     constraints=None, rigidWater=False)
+print("[STATUS] Created system")
+integrator = mm.LangevinIntegrator(300*unit.kelvin, 91/unit.picoseconds, 
+    1.0*unit.femtoseconds)
+print("[STATUS] Created integrator")
+
+try:
+    platform = mm.Platform.getPlatformByName('CPU')
+except Exception as e:
+    print("[ERROR] Could not load platform CPU. Running Reference")
+    platform = mm.Platform.getPlatformByName("Reference")
+
+simulation = app.Simulation(pdb.topology, system, integrator, platform)
+print("[STATUS] Set up compute platform")
+simulation.context.setPositions(pdb.positions)
+print("[STATUS] Set atomic positions")
+
+print('[STATUS] Minimizing...')
+simulation.minimizeEnergy()
+print('[STATUS] Equilibrating...')
+simulation.step(100)
+
+simulation.reporters.append(app.DCDReporter('trajectory.dcd', 1000))
+simulation.reporters.append(app.StateDataReporter(stdout, 1000, step=True, 
+    potentialEnergy=True, totalEnergy=True, temperature=True, separator='\t'))
+print("[STATUS] Set up reporters")
+
+print('[STATUS] Running Production...')
+
+increment = 1000
+
+for i in range(0,100000,increment): 
+    print("[STATUS] Step %s" % (i))
+    simulation.step(increment)
+
+print('[END] Done!')

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/application/input.pdb
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/application/input.pdb b/modules/simstream/example/openmm_example/application/input.pdb
new file mode 100644
index 0000000..a47f196
--- /dev/null
+++ b/modules/simstream/example/openmm_example/application/input.pdb
@@ -0,0 +1,24 @@
+ATOM      1 1HH3 ACE     1       4.300  13.100   8.600  1.00  0.00            
+ATOM      2  CH3 ACE     1       5.200  13.600   8.800  1.00  0.00            
+ATOM      3 2HH3 ACE     1       4.900  14.300   9.600  1.00  0.00            
+ATOM      4 3HH3 ACE     1       5.600  14.200   7.900  1.00  0.00            
+ATOM      5  C   ACE     1       6.100  12.500   9.400  1.00  0.00            
+ATOM      6  O   ACE     1       6.400  12.500  10.600  1.00  0.00            
+ATOM      7  N   ALA     2       6.600  11.600   8.500  1.00  0.00            
+ATOM      8  H   ALA     2       6.500  11.600   7.500  1.00  0.00            
+ATOM      9  CA  ALA     2       7.300  10.400   9.100  1.00  0.00            
+ATOM     10  HA  ALA     2       7.900  10.700  10.000  1.00  0.00            
+ATOM     11  CB  ALA     2       6.200   9.500   9.600  1.00  0.00            
+ATOM     12  HB1 ALA     2       5.700   9.100   8.800  1.00  0.00            
+ATOM     13  HB2 ALA     2       6.600   8.700  10.200  1.00  0.00            
+ATOM     14  HB3 ALA     2       5.400  10.000  10.200  1.00  0.00            
+ATOM     15  C   ALA     2       8.400   9.800   8.200  1.00  0.00            
+ATOM     16  O   ALA     2       8.400   9.900   7.000  1.00  0.00            
+ATOM     17  N   NME     3       9.300   9.000   8.800  1.00  0.00            
+ATOM     18  H   NME     3       9.100   9.000   9.800  1.00  0.00            
+ATOM     19  CH3 NME     3      10.500   8.400   8.300  1.00  0.00            
+ATOM     20 1HH3 NME     3      10.700   7.700   9.100  1.00  0.00            
+ATOM     21 2HH3 NME     3      10.400   8.000   7.300  1.00  0.00            
+ATOM     22 3HH3 NME     3      11.300   9.100   8.300  1.00  0.00            
+TER
+ENDMDL

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/application/trajectory.dcd
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/application/trajectory.dcd b/modules/simstream/example/openmm_example/application/trajectory.dcd
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/openmm_consumer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/openmm_consumer.py b/modules/simstream/example/openmm_example/openmm_consumer.py
new file mode 100644
index 0000000..4ba2763
--- /dev/null
+++ b/modules/simstream/example/openmm_example/openmm_consumer.py
@@ -0,0 +1,8 @@
+import json
+from simstream import PikaAsyncConsumer
+
+def recv_log(body):
+    try:
+        logs = json.loads(body.decode())
+        for log in logs:
+            print(log)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/openmm_log_consumer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/openmm_log_consumer.py b/modules/simstream/example/openmm_example/openmm_log_consumer.py
new file mode 100644
index 0000000..e28043f
--- /dev/null
+++ b/modules/simstream/example/openmm_example/openmm_log_consumer.py
@@ -0,0 +1,32 @@
+import json
+from simstream import PikaAsyncConsumer
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+settings["routing_key"] = "openmm.log"
+
+def print_log_line(body):
+    try:
+        lines = json.loads(body.decode())
+        if lines is not None:
+            for line in lines:
+                print(line)
+    except json.decoder.JSONDecodeError as e:
+        print("[Error]: Could not decode %s" % (body))
+    except UnicodeError as e:
+        print("[Error]: Could not decode from bytes to string: %s" % (e.reason))
+
+consumer = PikaAsyncConsumer(settings["url"],
+                             settings["exchange"],
+                             "openmm.log", # settings["queue"],
+                             message_handler=print_log_line,
+                             routing_key=settings["routing_key"],
+                             exchange_type=settings["exchange_type"])
+
+if __name__ == "__main__":
+    try:
+        consumer.start()
+    except KeyboardInterrupt:
+        consumer.stop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/openmm_rmsd_consumer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/openmm_rmsd_consumer.py b/modules/simstream/example/openmm_example/openmm_rmsd_consumer.py
new file mode 100644
index 0000000..f5d87c6
--- /dev/null
+++ b/modules/simstream/example/openmm_example/openmm_rmsd_consumer.py
@@ -0,0 +1,36 @@
+import json
+from simstream import PikaAsyncConsumer
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+settings["routing_key"] = "openmm.rmsd"
+
+def print_rmsd(body):
+    try:
+        lines = json.loads(body.decode())
+        if lines is not None:
+            for line in lines:
+                print(line[0])
+    except json.decoder.JSONDecodeError as e:
+        print("[Error]: Could not decode %s" % (body))
+    except UnicodeError as e:
+        print("[Error]: Could not decode from bytes to string: %s" % (e.reason))
+    except IndexError as e:
+        print("[Error]: List is empty")
+    except KeyError:
+        print(lines)
+
+consumer = PikaAsyncConsumer(settings["url"],
+                             settings["exchange"],
+                             "openmm.rmsd", # settings["queue"],
+                             message_handler=print_rmsd,
+                             routing_key=settings["routing_key"],
+                             exchange_type=settings["exchange_type"])
+
+if __name__ == "__main__":
+    try:
+        consumer.start()
+    except KeyboardInterrupt:
+        consumer.stop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/openmm_stream.slurm
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/openmm_stream.slurm b/modules/simstream/example/openmm_example/openmm_stream.slurm
new file mode 100644
index 0000000..837e4d4
--- /dev/null
+++ b/modules/simstream/example/openmm_example/openmm_stream.slurm
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+#SBATCH -J remote_logger     # Job name
+#SBATCH -o remote_logger.o%j # Name of stdout output file(%j expands to jobId) 
+#SBATCH -e remote_logger.o%j # Name of stderr output file(%j expands to jobId)
+#SBATCH -p development         # large queue for jobs > 256 nodes
+#SBATCH -t 00:10:00      # Run time (hh:mm:ss) - 1.5 hours
+#SBATCH -n 1             # Nodes to use
+
+#module use "/home1/03947/tg832463/modulefiles"
+#module load openmm
+
+touch test.txt
+
+python openmm_streamer.py ./application/sim.out ./application/trajectory.dcd ./application/input.pdb ./application/input.pdb &
+
+cd application
+python alanine_dipeptide.py > sim.out
+sleep 5

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/openmm_streamer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/openmm_streamer.py b/modules/simstream/example/openmm_example/openmm_streamer.py
new file mode 100644
index 0000000..da95614
--- /dev/null
+++ b/modules/simstream/example/openmm_example/openmm_streamer.py
@@ -0,0 +1,130 @@
+from simstream import SimStream, DataReporter
+
+import sys, json
+
+class LogMonitor(object):
+    """
+    A callable class that returns unprocessed lines in an open logfile.
+
+    Instance Variables:
+    logfile -- the path to the logfile to monitor
+    """
+
+    def __init__(self, logfile):
+        """
+        Set up a monitor for a logfile.
+
+        Arguments:
+        logfile -- the path to the logfile to monitor
+        """
+        self.logfile = logfile
+        self._generator = None
+        self._version = sys.version_info[0]
+
+    def __call__(self):
+        """
+        Get the next line from the logfile.
+        """
+        if not self._generator:
+            self._generator = self._monitor_logfile()
+
+        lines = []
+
+        line = self._next()
+        while line is not None:
+            lines.append(line)
+            line = self._next()
+        print(lines)
+        return lines
+
+    def _monitor_logfile(self):
+        """
+        Yield the next set of lines from the logfile.
+        """
+        try:
+            # Make the file persistent for the lifetime of the generator
+            with open(self.logfile) as f:
+                f.seek(0,2) # Move to the end of the file
+                while True:
+                    # Get the next line or indicate the end of the file
+                    line = f.readline()
+                    if line:
+                        yield line.strip()
+                    else:
+                        yield None
+
+        except EnvironmentError as e:
+            # Handle I/O exceptions in an OS-agnostic way
+            print("Error: Could not open file %s: %s" % (self.logfile, e))
+
+    def _next(self):
+        """
+        Python 2/3 agnostic retrieval of generator values.
+        """
+        return self._generator.__next__() if self._version == 3 else self._generator.next()
+
+
+def get_relevant_log_lines(log_lines):
+    import re
+    relevant_lines = []
+    pattern = r'^\[.+\]'
+    for line in log_lines:
+        if re.match(pattern, line) is not None:
+            relevant_lines.append(line)
+    return relevant_lines
+
+
+def calculate_rmsd(trajectory, topology, reference):
+    import mdtraj
+    traj = mdtraj.load(trajectory, top=topology)
+    ref = mdtraj.load(reference)
+    rmsd = mdtraj.rmsd(traj, ref)
+    data = {"step": str(traj.n_frames), "rmsd": str(rmsd[-1])}
+    return data
+
+settings = {}
+
+with open("../settings.json", 'r') as f:
+    settings = json.load(f)
+
+
+if __name__ == "__main__":
+    logfile = sys.argv[1]
+    trajectory = sys.argv[2]
+    topology = sys.argv[3]
+    reference = sys.argv[4]
+
+    open(logfile, 'a').close()
+    open(trajectory, 'a').close()
+
+    log_reporter = DataReporter()
+    log_reporter.add_collector("logger",
+                               LogMonitor(logfile),
+                               settings["url"],
+                               settings["exchange"],
+                               limit=10,
+                               interval=2,
+                               exchange_type="direct", # settings["exchange_type"],
+                               postprocessor=get_relevant_log_lines)
+
+    log_reporter.start_streaming("logger", "openmm.log")
+
+    rmsd_reporter = DataReporter()
+    rmsd_reporter.add_collector("rmsd",
+                                calculate_rmsd,
+                                settings["url"],
+                                settings["exchange"],
+                                limit=1,
+                                interval=2,
+                                exchange_type="direct",  # settings["exchange_type"],
+                                callback_args=[trajectory, topology, reference])
+
+    rmsd_reporter.start_streaming("rmsd", "openmm.rmsd")
+
+    streamer = SimStream(config=settings, reporters={"log_reporter": log_reporter, "rmsd_reporter": rmsd_reporter})
+    streamer.setup()
+
+    try:
+        streamer.start()
+    except KeyboardInterrupt:
+        streamer.stop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/openmm_example/test.txt
----------------------------------------------------------------------
diff --git a/modules/simstream/example/openmm_example/test.txt b/modules/simstream/example/openmm_example/test.txt
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/example/settings.json
----------------------------------------------------------------------
diff --git a/modules/simstream/example/settings.json b/modules/simstream/example/settings.json
new file mode 100644
index 0000000..d354d46
--- /dev/null
+++ b/modules/simstream/example/settings.json
@@ -0,0 +1,6 @@
+{
+    "url": "amqp://guest:guest@localhost:5672",
+    "exchange": "simstream",
+    "queue": "test",
+    "exchange_type": "topic"
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/setup.py
----------------------------------------------------------------------
diff --git a/modules/simstream/setup.py b/modules/simstream/setup.py
new file mode 100755
index 0000000..2f3b3fd
--- /dev/null
+++ b/modules/simstream/setup.py
@@ -0,0 +1,19 @@
+"""
+    Setup for simstream module.
+
+    Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+from setuptools import setup, find_packages
+
+setup(
+    name="simstream",
+    version="0.1dev",
+    author="Jeff Kinnison",
+    author_email="jkinniso@nd.edu",
+    packages=find_packages(),
+    description="",
+    install_requires=[
+        "pika >= 0.10.0"
+    ],
+)

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/__init__.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/__init__.py b/modules/simstream/simstream/__init__.py
new file mode 100755
index 0000000..9d403cb
--- /dev/null
+++ b/modules/simstream/simstream/__init__.py
@@ -0,0 +1,11 @@
+"""
+Utilties for collecting and distributing system data.
+
+Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+from .simstream import SimStream
+from .datareporter import DataReporter, CollectorExistsException, CollectorDoesNotExistException
+from .datacollector import DataCollector
+from .pikaasyncconsumer import PikaAsyncConsumer
+from .pikaproducer import PikaProducer

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/datacollector.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/datacollector.py b/modules/simstream/simstream/datacollector.py
new file mode 100755
index 0000000..f7f99c1
--- /dev/null
+++ b/modules/simstream/simstream/datacollector.py
@@ -0,0 +1,110 @@
+"""
+Utilties for collecting system data.
+
+Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+from .pikaproducer import PikaProducer
+
+from threading import Thread, Lock, Event
+
+import copy
+
+# TODO: Refactor into subclass of Thread
+
+class DataCollector(Thread):
+    """Collects data by running user-specified routines.
+
+    Inherits from: threading.Thread
+
+    Instance variables:
+    name -- the name of the collector
+    limit -- the maximum number of maintained data points
+    interval -- the interval (in seconds) at which data collection is performed
+
+    Public methods:
+    activate -- start collecting data
+    add_routing_key -- add a new streaming endpoint
+    deactivate -- stop further data collection
+    remove_routing_key -- remove a streaming endpoint
+    run -- collect data if active
+    """
+    def __init__(self, name, callback, rabbitmq_url, exchange, exchange_type="direct", limit=250, interval=10,
+                 postprocessor=None, callback_args=[], postprocessor_args=[]):
+        """
+        Arguments:
+        name -- the name of the collector
+        callback -- the data collection function to run
+
+        Keyword arguments:
+        limit -- the maximum number of maintained data points (default 250)
+        interval -- the time interval in seconds at which to collect data
+                    (default: 10)
+        postprocessor -- a function to run on the return value of callback
+                         (default None)
+        callback_args -- the list of arguments to pass to the callback
+                         (default [])
+        postprocessor_args -- the list of arguments to pass to the
+                              postprocessor (default [])
+        """
+        super(DataCollector, self).__init__()
+        self.name = name if name else "Unknown Resource"
+        self.limit = limit
+        self.interval = interval
+        self._callback = callback
+        self._callback_args = callback_args
+        self._postprocessor = postprocessor
+        self._postprocessor_args = postprocessor_args
+        self._data = []
+        self._data_lock = Lock()
+        self._active = False
+        self._producer = PikaProducer(rabbitmq_url, exchange, exchange_type=exchange_type, routing_keys=[])
+
+    def activate(self):
+        """
+        Start collecting data.
+        """
+        self._active = True
+
+    def add_routing_key(self, key):
+        """
+        Add a new producer endpoint.
+        """
+        self._producer.add_routing_key(key)
+
+
+    def deactivate(self):
+        """
+        Stop collecting data.
+        """
+        self._active = False
+
+    def remove_routing_key(self, key):
+        self._producer.remove_routing_key(key)
+        if len(self._producer.endpoints) == 0:
+            self._producer.shutdown()
+
+    def run(self):
+        """
+        Run the callback and postprocessing subroutines and record result.
+
+        Catches generic exceptions because the function being run is not
+        known beforehand.
+        """
+        self._collection_event = Event()
+        while self._active and not self._collection_event.wait(timeout=self.interval):
+            try:
+                result = self._callback(*self._callback_args)
+                result = self._postprocessor(result, *self._postprocessor_args) if self._postprocessor else result
+                #print("Found the value ", result, " in ", self.name)
+                self._data.append(result)
+                if len(self._data) > self.limit:
+                    self._data.pop(0)
+                self._producer(copy.copy(self._data))
+
+            except Exception as e:
+                print("[ERROR] %s" % (e))
+
+    def stop(self):
+        for key in self.producer.routing_keys:
+            self.remove_routing_key(key)

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/datareporter.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/datareporter.py b/modules/simstream/simstream/datareporter.py
new file mode 100755
index 0000000..156cc08
--- /dev/null
+++ b/modules/simstream/simstream/datareporter.py
@@ -0,0 +1,169 @@
+"""
+Utilties for collecting system data.
+
+Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+# TODO: Refactor to iterate over producers, not collectors. Collectors should
+#       execute concurrently.
+# TODO: Add method to deactivate reporter
+
+from threading import Thread, Event
+
+from .datacollector import DataCollector
+
+
+class CollectorExistsException(Exception):
+    """Thrown when attempting to add a collector with a conflicting name."""
+    pass
+
+
+class CollectorDoesNotExistException(Exception):
+    """Thrown when attempting to access a collector that does not exist."""
+    pass
+
+
+class DataReporter(object):
+    """Manages collecting specified data.
+
+    Subclass of threading.Thread that modifies Thread.join() and Thread.run()
+
+    Instance variables:
+    collectors -- a dict of DataCollectors that are run at interval
+
+    Public methods:
+    add_collector -- add a new DataCollector to the list
+    run -- start the data collection loop
+    join -- end data collection and return control to main thread
+    start_collecting -- begin data collection for all collectors
+    start_collector -- begin data collection for a specific collector
+    stop_collecting -- stop all data collection
+    stop_collector -- stop a running DataCollector
+    """
+
+    def __init__(self, collectors={}):
+        super(DataReporter, self).__init__()
+        self.collectors = {}
+        for key, value in collectors:
+            self.add_collector(
+                key,
+                value.limit,
+                value.callback,
+                value.url,
+                value.exchange,
+                value.postprocessor,
+                value.callback_args,
+                value.postprocessor_args
+            )
+
+    def add_collector(self, name, callback, rabbitmq_url, exchange, limit=250, interval=10, postprocessor=None,
+                      exchange_type="direct", callback_args=[], postprocessor_args=[]):
+        """Add a new collector.
+
+        Arguments:
+        name -- name of the new DataCollector
+        callback -- the data collection callback to run
+
+        Keyword arguments:
+        limit -- the number of data points to store (default 100)
+        postprocessor -- a postprocessing function to run on each data point
+                         (default None)
+        callback_args -- a list of arguments to pass to the callback
+                         (default [])
+        postprocessor_args -- a list of arguments to pass to the postprocessor
+                              (default [])
+
+        Raises:
+        CollectorExistsException if a collector named name already exists
+        """
+        if name in self.collectors:
+            raise CollectorExistsException
+
+        self.collectors[name] = DataCollector(
+            name,
+            callback,
+            rabbitmq_url,
+            exchange,
+            limit=limit,
+            interval=interval,
+            postprocessor=postprocessor,
+            exchange_type=exchange_type,
+            callback_args=callback_args,
+            postprocessor_args=postprocessor_args
+        )
+
+    def start_collecting(self):
+        """
+        Start data collection for all associated collectors.
+        """
+        for collector in self.collectors:
+            self.start_collector(collector)
+
+    def start_collector(self, name):
+        """
+        Activate the specified collector.
+
+        Arguments:
+        name -- the name of the collector to start
+
+        Raises:
+        RuntimeError if the collector has already been started.
+        """
+        try:
+            self.collectors[name].activate()
+            self.collectors[name].start()
+        except RuntimeError as e:
+            print("Error starting collector ", name)
+            print(e)
+
+    def stop_collecting(self):
+        """
+        Stop all collectors.
+        """
+        for collector in self.collectors:
+            self.stop_collector(collector)
+
+    def stop_collector(self, name):
+        """Deactivate the specified collector.
+
+        Arguments:
+        name -- the name of the collector to stop
+
+        Raises:
+        CollectorDoesNotExistException if no collector named name exists
+        """
+        if name not in self.collectors:
+            raise CollectorDoesNotExistException
+
+        try:
+            self.collectors[name].deactivate()
+            self.collectors[name].join()
+        except RuntimeError as e: # Catch deadlock
+            print(e)
+
+
+    def start_streaming(self, collector_name, routing_key):
+        """
+        Begin streaming data from a collector to a particular recipient.
+
+        Arguments:
+        routing_key -- the routing key to reach the intended recipient
+        """
+        if collector_name not in self.collectors: # Make sure collector exists
+            raise CollectorDoesNotExistException
+        self.collectors[collector_name].add_routing_key(routing_key)
+
+    def stop_streaming(self, collector_name, routing_key):
+        """
+        Stop a particular stream.
+
+        Arguments:
+        collector_name -- the collector associated with the producer to stop
+        routing_key -- the routing key to reach the intended recipient
+
+        Raises:
+        ProducerDoesNotExistException if no producer named name exists
+        ValueError if the producer is removed by another call to this method
+                   after the for loop begins
+        """
+        pass

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/eventhandler.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/eventhandler.py b/modules/simstream/simstream/eventhandler.py
new file mode 100755
index 0000000..9f4f3f2
--- /dev/null
+++ b/modules/simstream/simstream/eventhandler.py
@@ -0,0 +1,17 @@
+"""
+A utility for responding to user-defined events.
+
+Author: Jeff Kinnison (jkinniso)
+"""
+
+
+class EventHandler(object):
+    """
+    """
+    def __init__(self, name, handler, handler_args=[]):
+        self.name = name
+        self._handler = handler
+        self._handler_args
+
+    def __call__(self):
+        pass

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/eventmonitor.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/eventmonitor.py b/modules/simstream/simstream/eventmonitor.py
new file mode 100755
index 0000000..d8c79f4
--- /dev/null
+++ b/modules/simstream/simstream/eventmonitor.py
@@ -0,0 +1,46 @@
+"""
+Utility for monitoring collected data.
+
+Author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+# TODO: Add method to add handlers
+# TODO: Add method to create PikaProducer
+# TODO: Add method to use PikaProducer to respond to events
+# TODO: Add method to deactivate monitor
+
+
+class EventCheckerNotCallableException(Exception):
+    pass
+
+
+class EventHandlerNotCallableException(Exception):
+    pass
+
+
+class EventHandlerDoesNotExistException(Exception):
+    pass
+
+
+class EventMonitor(object):
+    """Checks data for user-defined bounds violations.
+
+    Instance variables:
+    handlers -- a dict of EventHandler objects indexed by name
+    """
+    def __init__(self, event_check, handlers={}):
+        self._event_check = event_check
+        self.handlers = handlers
+
+    def __call__(self, val):
+        if not callable(self._event_check):
+            raise EventCheckerNotCallableException
+        self._run_handler(self.event_check(val))
+
+    def _run_handler(self, handler_names):
+        for name in handler_names:
+            if name not in self.handlers:
+                raise EventHandlerDoesNotExistException
+            if not callable(self.handlers[name]):
+                raise EventHandlerNotCallableException
+            self.handlers[name]()

http://git-wip-us.apache.org/repos/asf/airavata/blob/24ced800/modules/simstream/simstream/pikaasyncconsumer.py
----------------------------------------------------------------------
diff --git a/modules/simstream/simstream/pikaasyncconsumer.py b/modules/simstream/simstream/pikaasyncconsumer.py
new file mode 100755
index 0000000..1c58687
--- /dev/null
+++ b/modules/simstream/simstream/pikaasyncconsumer.py
@@ -0,0 +1,203 @@
+"""
+Streaming utility for system and simulation data.
+
+author: Jeff Kinnison (jkinniso@nd.edu)
+"""
+
+import json
+import pika
+
+class PikaAsyncConsumer(object):
+    """
+    The primary entry point for routing incoming messages to the proper handler.
+    """
+
+    def __init__(self, rabbitmq_url, exchange_name, queue_name, message_handler,
+                 exchange_type="direct", routing_key="#"):
+        """
+        Create a new instance of Streamer.
+
+        Arguments:
+        rabbitmq_url -- URL to RabbitMQ server
+        exchange_name -- name of RabbitMQ exchange to join
+        queue_name -- name of RabbitMQ queue to join
+
+        Keyword Arguments:
+        exchange_type -- one of 'direct', 'topic', 'fanout', 'headers'
+                         (default 'direct')
+        routing_keys -- the routing key that this consumer listens for
+                        (default '#', receives all messages)
+        """
+        self._connection = None
+        self._channel = None
+        self._shut_down = False
+        self._consumer_tag = None
+        self._url = rabbitmq_url
+        self._message_handler = message_handler
+
+        # The following are necessary to guarantee that both the RabbitMQ
+        # server and Streamer know where to look for messages. These names will
+        # be decided before dispatch and should be recorded in a config file or
+        # else on a per-job basis.
+        self._exchange = exchange_name
+        self._exchange_type = exchange_type
+        self._queue = queue_name
+        self._routing_key = routing_key
+
+    def connect(self):
+        """
+        Create an asynchronous connection to the RabbitMQ server at URL.
+        """
+        return pika.SelectConnection(pika.URLParameters(self._url),
+                                     on_open_callback=self.on_connection_open,
+                                     on_close_callback=self.on_connection_close,
+                                     stop_ioloop_on_close=False)
+
+    def on_connection_open(self, unused_connection):
+        """
+        Actions to perform when the connection opens. This may not happen
+        immediately, so defer action to this callback.
+
+        Arguments:
+        unused_connection -- the created connection (by this point already
+                             available as self._connection)
+        """
+        self._connection.channel(on_open_callback=self.on_channel_open)
+
+    def on_connection_close(self, connection, code, text):
+        """
+        Actions to perform when the connection is unexpectedly closed by the
+        RabbitMQ server.
+
+        Arguments:
+        connection -- the connection that was closed (same as self._connection)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+        """
+        self._channel = None
+        if self._shut_down:
+            self._connection.ioloop.stop()
+        else:
+            self._connection.add_timeout(5, self.reconnect)
+
+    def reconnect(self):
+        """
+        Attempt to reestablish a connection with the RabbitMQ server.
+        """
+        self._connection.ioloop.stop() # Stop the ioloop to completely close
+
+        if not self._shut_down: # Connect and restart the ioloop
+            self._connection = self.connect()
+            self._connection.ioloop.start()
+
+    def on_channel_open(self, channel):
+        """
+        Store the opened channel for future use and set up the exchange and
+        queue to be used.
+
+        Arguments:
+        channel -- the Channel instance opened by the Channel.Open RPC
+        """
+        self._channel = channel
+        self._channel.add_on_close_callback(self.on_channel_close)
+        self.declare_exchange()
+
+
+    def on_channel_close(self, channel, code, text):
+        """
+        Actions to perform when the channel is unexpectedly closed by the
+        RabbitMQ server.
+
+        Arguments:
+        connection -- the connection that was closed (same as self._connection)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+        """
+        self._connection.close()
+
+    def declare_exchange(self):
+        """
+        Set up the exchange that will route messages to this consumer. Each
+        RabbitMQ exchange is uniquely identified by its name, so it does not
+        matter if the exchange has already been declared.
+        """
+        self._channel.exchange_declare(self.declare_exchange_success,
+                                        self._exchange,
+                                        self._exchange_type)
+
+    def declare_exchange_success(self, unused_connection):
+        """
+        Actions to perform on successful exchange declaration.
+        """
+        self.declare_queue()
+
+    def declare_queue(self):
+        """
+        Set up the queue that will route messages to this consumer. Each
+        RabbitMQ queue can be defined with routing keys to use only one
+        queue for multiple jobs.
+        """
+        self._channel.queue_declare(self.declare_queue_success,
+                                    self._queue)
+
+    def declare_queue_success(self, method_frame):
+        """
+        Actions to perform on successful queue declaration.
+        """
+        self._channel.queue_bind(self.munch,
+                                 self._queue,
+                                 self._exchange,
+                                 self._routing_key
+                                )
+
+    def munch(self, unused):
+        """
+        Begin consuming messages from the Airavata API server.
+        """
+        self._channel.add_on_cancel_callback(self.cancel_channel)
+        self._consumer_tag = self._channel.basic_consume(self._process_message)
+
+    def cancel_channel(self, method_frame):
+        if self._channel is not None:
+            self._channel._close()
+
+    def _process_message(self, ch, method, properties, body):
+        """
+        Receive and verify a message, then pass it to the router.
+
+        Arguments:
+        ch -- the channel that routed the message
+        method -- delivery information
+        properties -- message properties
+        body -- the message
+        """
+        print("Received Message: %s" % body)
+        self._message_handler(body)
+        #self._channel.basic_ack(delivery_tag=method.delivery_tag)
+
+    def stop_consuming(self):
+        """
+        Stop the consumer if active.
+        """
+        if self._channel:
+            self._channel.basic_cancel(self.close_channel, self._consumer_tag)
+
+    def close_channel(self):
+        """
+        Close the channel to shut down the consumer and connection.
+        """
+        self._channel.close()
+
+    def start(self):
+        """
+        Start a connection with the RabbitMQ server.
+        """
+        self._connection = self.connect()
+        self._connection.ioloop.start()
+
+    def stop(self):
+        """
+        Stop an active connection with the RabbitMQ server.
+        """
+        self._closing = True
+        self.stop_consuming()


[37/48] airavata git commit: removing registry refactoring module

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
deleted file mode 100644
index 188b35f..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ProcessInputPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ProcessInputPK.class);
-    private String processId;
-    private String name;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "INPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ProcessInputPK that = (ProcessInputPK) o;
-
-        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
-        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
-        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
deleted file mode 100644
index 4226f7a..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS_OUTPUT")
-@IdClass(ProcessOutputPK.class)
-public class ProcessOutputEntity {
-    private String processId;
-    public String name;
-    public String value;
-    public String type;
-    public String applicationArgument;
-    public boolean isRequired;
-    public boolean requiredToAddedToCommandLine;
-    public boolean dataMovement;
-    public String location;
-    public String searchQuery;
-    public boolean outputStreaming;
-    public String storageResourceId;
-
-    private ProcessEntity process;
-
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "OUTPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Column(name = "OUTPUT_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @Column(name = "OUTPUT_TYPE")
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Column(name = "APPLICATION_ARGUMENT")
-    public String getApplicationArgument() {
-        return applicationArgument;
-    }
-
-    public void setApplicationArgument(String applicationArgument) {
-        this.applicationArgument = applicationArgument;
-    }
-
-    @Column(name = "REQUIRED")
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-
-    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
-    public boolean isRequiredToAddedToCommandLine() {
-        return requiredToAddedToCommandLine;
-    }
-
-    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
-        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
-    }
-
-    @Column(name = "DATA_MOVEMENT")
-    public boolean isDataMovement() {
-        return dataMovement;
-    }
-
-    public void setDataMovement(boolean dataMovement) {
-        this.dataMovement = dataMovement;
-    }
-
-    @Column(name = "LOCATION")
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    @Column(name = "SEARCH_QUERY")
-    public String getSearchQuery() {
-        return searchQuery;
-    }
-
-    public void setSearchQuery(String searchQuery) {
-        this.searchQuery = searchQuery;
-    }
-
-    @Column(name = "OUTPUT_STREAMING")
-    public boolean isOutputStreaming() {
-        return outputStreaming;
-    }
-
-    public void setOutputStreaming(boolean outputStreaming) {
-        this.outputStreaming = outputStreaming;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
deleted file mode 100644
index bde7c50..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ProcessOutputPK implements Serializable {
-    private String processId;
-    private String name;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "OUTPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ProcessOutputPK that = (ProcessOutputPK) o;
-
-        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
-        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
-        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
deleted file mode 100644
index 3a64f42..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS_RESOURCE_SCHEDULING")
-public class ProcessResourceSchedulingEntity {
-    private String processId;
-    private String resourceHostId;
-    private int totalCPUCount;
-    private int nodeCount;
-    private int numberOfThreads;
-    private String queueName;
-    private int wallTimeLimit;
-    private int totalPhysicalMemory;
-    private String chessisNumber;
-    private String staticWorkingDir;
-    private String overrideLoginUserName;
-    private String overrideScratchLocation;
-    private String overrideAllocationProjectNumber;
-    private ProcessEntity process;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Column(name = "RESOURCE_HOST_ID")
-    public String getResourceHostId() {
-        return resourceHostId;
-    }
-
-    public void setResourceHostId(String resourceHostId) {
-        this.resourceHostId = resourceHostId;
-    }
-
-    @Column(name = "CPU_COUNT")
-    public int getTotalCPUCount() {
-        return totalCPUCount;
-    }
-
-    public void setTotalCPUCount(int totalCPUCount) {
-        this.totalCPUCount = totalCPUCount;
-    }
-
-    @Column(name = "NODE_COUNT")
-    public int getNodeCount() {
-        return nodeCount;
-    }
-
-    public void setNodeCount(int nodeCount) {
-        this.nodeCount = nodeCount;
-    }
-
-    @Column(name = "NUMBER_OF_THREADS")
-    public int getNumberOfThreads() {
-        return numberOfThreads;
-    }
-
-    public void setNumberOfThreads(int numberOfThreads) {
-        this.numberOfThreads = numberOfThreads;
-    }
-
-    @Column(name = "QUEUE_NAME")
-    public String getQueueName() {
-        return queueName;
-    }
-
-    public void setQueueName(String queueName) {
-        this.queueName = queueName;
-    }
-
-    @Column(name = "WALL_TIME_LIMIT")
-    public int getWallTimeLimit() {
-        return wallTimeLimit;
-    }
-
-    public void setWallTimeLimit(int wallTimeLimit) {
-        this.wallTimeLimit = wallTimeLimit;
-    }
-
-    @Column(name = "TOTAL_PHYSICAL_MEMORY")
-    public int getTotalPhysicalMemory() {
-        return totalPhysicalMemory;
-    }
-
-    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
-        this.totalPhysicalMemory = totalPhysicalMemory;
-    }
-
-    @Column(name = "CHESSIS_NUMBER")
-    public String getChessisNumber() {
-        return chessisNumber;
-    }
-
-    public void setChessisNumber(String chessisNumber) {
-        this.chessisNumber = chessisNumber;
-    }
-
-    @Column(name = "STATIC_WORKING_DIRECTORY")
-    public String getStaticWorkingDir() {
-        return staticWorkingDir;
-    }
-
-    public void setStaticWorkingDir(String staticWorkingDir) {
-        this.staticWorkingDir = staticWorkingDir;
-    }
-
-    @Column(name = "OVERRIDE_LOGIN_USERNAME")
-    public String getOverrideLoginUserName() {
-        return overrideLoginUserName;
-    }
-
-    public void setOverrideLoginUserName(String overrideLoginUserName) {
-        this.overrideLoginUserName = overrideLoginUserName;
-    }
-
-    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
-    public String getOverrideScratchLocation() {
-        return overrideScratchLocation;
-    }
-
-    public void setOverrideScratchLocation(String overrideScratchLocation) {
-        this.overrideScratchLocation = overrideScratchLocation;
-    }
-
-    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
-    public String getOverrideAllocationProjectNumber() {
-        return overrideAllocationProjectNumber;
-    }
-
-    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
-        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
-    }
-
-    @OneToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL)
-    @PrimaryKeyJoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
deleted file mode 100644
index 7a3c30e..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS_STATUS")
-@IdClass(ProcessStatusPK.class)
-public class ProcessStatusEntity {
-    private String processId;
-    private String state;
-    private long timeOfStateChange;
-    private String reason;
-
-    private ProcessEntity process;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "STATE")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Column(name = "TIME_OF_STATE_CHANGE")
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    @Column(name = "REASON")
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
deleted file mode 100644
index dba568a..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ProcessStatusPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ProcessStatusPK.class);
-    private String state;
-    private String processId;
-
-    @Id
-    @Column(name = "STATUS_ID")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ProcessStatusPK that = (ProcessStatusPK) o;
-
-        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
-        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getState() != null ? getState().hashCode() : 0;
-        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
deleted file mode 100644
index 8e4be82..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskEntity.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.apache.airavata.model.task.TaskTypes;
-
-import javax.persistence.*;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_TASK")
-public class TaskEntity {
-    private String taskId;
-    private TaskTypes taskType;
-    private String parentProcessId;
-    private long creationTime;
-    private long lastUpdateTime;
-    private String taskDetail;
-    private ByteBuffer subTaskModel;
-
-    private List<TaskStatusEntity> taskStatuses;
-    private List<TaskErrorEntity> taskErrors;
-    private List<JobEntity> jobs;
-
-    private ProcessEntity process;
-
-    @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    @Column(name = "TASK_TYPE")
-    public TaskTypes getTaskType() {
-        return taskType;
-    }
-
-    public void setTaskType(TaskTypes taskType) {
-        this.taskType = taskType;
-    }
-
-    @Column(name = "PARENT_PROCESS_ID")
-    public String getParentProcessId() {
-        return parentProcessId;
-    }
-
-    public void setParentProcessId(String parentProcessId) {
-        this.parentProcessId = parentProcessId;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "LAST_UPDATE_TIME")
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public void setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-    }
-
-    @Column(name = "TASK_DETAIL")
-    public String getTaskDetail() {
-        return taskDetail;
-    }
-
-    public void setTaskDetail(String taskDetail) {
-        this.taskDetail = taskDetail;
-    }
-
-    @Lob
-    @Column(name = "SUB_TASK_MODEL")
-    public ByteBuffer getSubTaskModel() {
-        return subTaskModel;
-    }
-
-    public void setSubTaskModel(ByteBuffer subTaskModel) {
-        this.subTaskModel = subTaskModel;
-    }
-
-    @OneToMany(targetEntity = TaskStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
-    public List<TaskStatusEntity> getTaskStatuses() {
-        return taskStatuses;
-    }
-
-    public void setTaskStatuses(List<TaskStatusEntity> taskStatus) {
-        this.taskStatuses = taskStatus;
-    }
-
-    @OneToMany(targetEntity = TaskErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
-    public List<TaskErrorEntity> getTaskErrors() {
-        return taskErrors;
-    }
-
-    public void setTaskErrors(List<TaskErrorEntity> taskError) {
-        this.taskErrors = taskError;
-    }
-
-    @OneToMany(targetEntity = JobEntity.class, cascade = CascadeType.ALL, mappedBy = "task")
-    public List<JobEntity> getJobs() {
-        return jobs;
-    }
-
-    public void setJobs(List<JobEntity> jobs) {
-        this.jobs = jobs;
-    }
-
-    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PARENT_PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
deleted file mode 100644
index d269ab7..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorEntity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_TASK_ERROR")
-@IdClass(TaskErrorPK.class)
-public class TaskErrorEntity {
-    private String errorId;
-    private String taskId;
-    private long creationTime;
-    private String actualErrorMessage;
-    private String userFriendlyMessage;
-    private boolean transientOrPersistent;
-    private List<String> rootCauseErrorIdList;
-
-    private TaskEntity task;
-
-    @Id
-    @Column(name = "ERROR_ID")
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "ACTUAL_ERROR_MESSAGE")
-    public String getActualErrorMessage() {
-        return actualErrorMessage;
-    }
-
-    public void setActualErrorMessage(String actualErrorMessage) {
-        this.actualErrorMessage = actualErrorMessage;
-    }
-
-    @Column(name = "USER_FRIENDLY_MESSAGE")
-    public String getUserFriendlyMessage() {
-        return userFriendlyMessage;
-    }
-
-    public void setUserFriendlyMessage(String userFriendlyMessage) {
-        this.userFriendlyMessage = userFriendlyMessage;
-    }
-
-
-    @Column(name = "TRANSIENT_OR_PERSISTENT")
-    public boolean isTransientOrPersistent() {
-        return transientOrPersistent;
-    }
-
-    public void setTransientOrPersistent(boolean transientOrPersistent) {
-        this.transientOrPersistent = transientOrPersistent;
-    }
-
-
-    @ElementCollection
-    @CollectionTable(name="EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
-    public List<String> getRootCauseErrorIdList() {
-        return rootCauseErrorIdList;
-    }
-
-    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
-        this.rootCauseErrorIdList = rootCauseErrorIdList;
-    }
-
-
-    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
-    public TaskEntity getTask() {
-        return task;
-    }
-
-    public void setTask(TaskEntity task) {
-        this.task = task;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
deleted file mode 100644
index e504f83..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskErrorPK.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class TaskErrorPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(TaskErrorPK.class);
-    private String errorId;
-    private String taskId;
-
-    @Column(name = "ERROR_ID")
-    @Id
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Column(name = "TASK_ID")
-    @Id
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String processId) {
-        this.taskId = taskId;
-    }
-
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        TaskErrorPK that = (TaskErrorPK) o;
-
-        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
-        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
-        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
deleted file mode 100644
index 2465b48..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusEntity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_TASK_STATUS")
-@IdClass(TaskStatusPK.class)
-public class TaskStatusEntity {
-    private String taskId;
-    private String state;
-    private long timeOfStateChange;
-    private String reason;
-
-    private TaskEntity task;
-
-    @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    @Id
-    @Column(name = "STATE")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Column(name = "TIME_OF_STATE_CHANGE")
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    @Column(name = "REASON")
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
-    public TaskEntity getTask() {
-        return task;
-    }
-
-    public void setTask(TaskEntity task) {
-        this.task = task;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
deleted file mode 100644
index 167d8a7..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/TaskStatusPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class TaskStatusPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(TaskStatusPK.class);
-    private String state;
-    private String taskId;
-
-    @Id
-    @Column(name = "STATUS_ID")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        TaskStatusPK that = (TaskStatusPK) o;
-
-        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
-        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getState() != null ? getState().hashCode() : 0;
-        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
deleted file mode 100644
index b685312..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_USER_CONFIGURATION")
-public class UserConfigurationEntity {
-    private String experimentId;
-    private boolean airavataAutoSchedule;
-    private boolean overrideManualScheduledParams;
-    private boolean throttleResources;
-    private String userDN;
-    private boolean generateCert;
-    private String storageId;
-    private String experimentDataDir;
-
-    private ComputeResourceSchedulingEntity computeResourceSchedulingEntity;
-    private ExperimentEntity experiment;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Column(name = "AIRAVATA_AUTO_SCHEDULE")
-    public boolean isAiravataAutoSchedule() {
-        return airavataAutoSchedule;
-    }
-
-    public void setAiravataAutoSchedule(boolean airavataAutoSchedule) {
-        this.airavataAutoSchedule = airavataAutoSchedule;
-    }
-
-    @Column(name = "OVERRIDE_MANUAL_SCHEDULED_PARAMS")
-    public boolean isOverrideManualScheduledParams() {
-        return overrideManualScheduledParams;
-    }
-
-    public void setOverrideManualScheduledParams(boolean overrideManualScheduledParams) {
-        this.overrideManualScheduledParams = overrideManualScheduledParams;
-    }
-
-    @Column(name = "THROTTLE_RESOURCE")
-    public boolean isThrottleResources() {
-        return throttleResources;
-    }
-
-    public void setThrottleResources(boolean throttleResources) {
-        this.throttleResources = throttleResources;
-    }
-
-    @Column(name = "USER_DN")
-    public String getUserDN() {
-        return userDN;
-    }
-
-    public void setUserDN(String userDN) {
-        this.userDN = userDN;
-    }
-
-    @Column(name = "GENERATE_CERT")
-    public boolean isGenerateCert() {
-        return generateCert;
-    }
-
-    public void setGenerateCert(boolean generateCert) {
-        this.generateCert = generateCert;
-    }
-
-    @Column(name = "STORAGE_ID")
-    public String getStorageId() {
-        return storageId;
-    }
-
-    public void setStorageId(String storageId) {
-        this.storageId = storageId;
-    }
-
-    @Column(name = "EXPERIMENT_DATA_DIR")
-    public String getExperimentDataDir() {
-        return experimentDataDir;
-    }
-
-    public void setExperimentDataDir(String experimentDataDir) {
-        this.experimentDataDir = experimentDataDir;
-    }
-
-    @OneToOne(targetEntity = ComputeResourceSchedulingEntity.class, cascade = CascadeType.ALL, mappedBy = "userConfiguration")
-    public ComputeResourceSchedulingEntity getComputeResourceSchedulingEntity() {
-        return computeResourceSchedulingEntity;
-    }
-
-    public void setComputeResourceSchedulingEntity(ComputeResourceSchedulingEntity computeResourceSchedulingEntity) {
-        this.computeResourceSchedulingEntity = computeResourceSchedulingEntity;
-    }
-
-    @OneToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL)
-    @PrimaryKeyJoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
deleted file mode 100644
index c4f1f59..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.workspacecatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name="WORKSPACE_GATEWAY")
-public class GatewayEntity {
-    private String gatewayId;
-    private String gatewayName;
-    private String domain;
-    private String emailAddress;
-    private String gatewayApprovalStatus;
-    private String gatewayAcronym;
-    private String gatewayUrl;
-    private String gatewayPublicAbstract;
-    private String reviewProposalDescription;
-    private String gatewayAdminFirstName;
-    private String getGatewayAdminLastName;
-    private String gatewayAdminEmail;
-    private String identityServerUserName;
-    private String identityServerPasswordToken;
-    private String declinedReason;
-    private String oauthClientId;
-    private String getOauthClientSecret;
-    private long requestCreationTime;
-    private String requesterUsername;
-
-    @Id
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String id) {
-        this.gatewayId = id;
-    }
-
-    @Column(name = "GATEWAY_NAME")
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public void setGatewayName(String gatewayName) {
-        this.gatewayName = gatewayName;
-    }
-
-    @Column(name = "GATEWAY_DOMAIN")
-    public String getDomain() {
-        return domain;
-    }
-
-    public void setDomain(String domain) {
-        this.domain = domain;
-    }
-
-    @Column(name = "EMAIL_ADDRESS")
-    public String getEmailAddress() {
-        return emailAddress;
-    }
-
-    public void setEmailAddress(String emailAddress) {
-        this.emailAddress = emailAddress;
-    }
-
-    @Column(name = "GATEWAY_APPROVAL_STATUS")
-    public String getGatewayApprovalStatus() {
-        return gatewayApprovalStatus;
-    }
-
-    public void setGatewayApprovalStatus(String gatewayApprovalStatus) {
-        this.gatewayApprovalStatus = gatewayApprovalStatus;
-    }
-
-    @Column(name = "GATEWAY_ACRONYM")
-    public String getGatewayAcronym() {
-        return gatewayAcronym;
-    }
-
-    public void setGatewayAcronym(String gatewayAcronym) {
-        this.gatewayAcronym = gatewayAcronym;
-    }
-
-    @Column(name = "GATEWAY_URL")
-    public String getGatewayUrl() {
-        return gatewayUrl;
-    }
-
-    public void setGatewayUrl(String gatewayUrl) {
-        this.gatewayUrl = gatewayUrl;
-    }
-
-    @Lob
-    @Column(name = "GATEWAY_PUBLIC_ABSTRACT")
-    public String getGatewayPublicAbstract() {
-        return gatewayPublicAbstract;
-    }
-
-    public void setGatewayPublicAbstract(String gatewayPublicAbstract) {
-        this.gatewayPublicAbstract = gatewayPublicAbstract;
-    }
-
-    @Lob
-    @Column(name = "REVIEW_PROPOSAL_DESCRIPTION")
-    public String getReviewProposalDescription() {
-        return reviewProposalDescription;
-    }
-
-    public void setReviewProposalDescription(String reviewProposalDescription) {
-        this.reviewProposalDescription = reviewProposalDescription;
-    }
-
-    @Column(name = "GATEWAY_ADMIN_FIRST_NAME")
-    public String getGatewayAdminFirstName() {
-        return gatewayAdminFirstName;
-    }
-
-    public void setGatewayAdminFirstName(String gatewayAdminFirstName) {
-        this.gatewayAdminFirstName = gatewayAdminFirstName;
-    }
-
-    @Column(name = "GATEWAY_ADMIN_LAST_NAME")
-    public String getGetGatewayAdminLastName() {
-        return getGatewayAdminLastName;
-    }
-
-    public void setGetGatewayAdminLastName(String getGatewayAdminLastName) {
-        this.getGatewayAdminLastName = getGatewayAdminLastName;
-    }
-
-    @Column(name = "GATEWAY_ADMIN_EMAIL")
-    public String getGatewayAdminEmail() {
-        return gatewayAdminEmail;
-    }
-
-    public void setGatewayAdminEmail(String gatewayAdminEmail) {
-        this.gatewayAdminEmail = gatewayAdminEmail;
-    }
-
-    @Column(name = "IDENTITY_SERVER_USERNAME")
-    public String getIdentityServerUserName() {
-        return identityServerUserName;
-    }
-
-    public void setIdentityServerUserName(String identityServerUserName) {
-        this.identityServerUserName = identityServerUserName;
-    }
-
-    @Column(name = "IDENTITY_SERVER_PASSWORD_TOKEN")
-    public String getIdentityServerPasswordToken() {
-        return identityServerPasswordToken;
-    }
-
-    public void setIdentityServerPasswordToken(String identityServerPasswordToken) {
-        this.identityServerPasswordToken = identityServerPasswordToken;
-    }
-
-    @Column(name = "REQUESTER_USERNAME")
-    public String getRequesterUsername() {
-        return requesterUsername;
-    }
-
-    public void setRequesterUsername(String requesterUsername) {
-        this.requesterUsername = requesterUsername;
-    }
-
-    @Column(name = "DECLINED_REASON")
-    public String getDeclinedReason() {
-        return declinedReason;
-    }
-
-    public void setDeclinedReason(String declinedReason) {
-        this.declinedReason = declinedReason;
-    }
-
-    @Column(name = "OAUTH_CLIENT_ID")
-    public String getOauthClientId() {
-        return oauthClientId;
-    }
-
-    public void setOauthClientId(String oauthClientId) {
-        this.oauthClientId = oauthClientId;
-    }
-
-    @Column(name = "REQUEST_CREATION_TIME")
-    public long getRequestCreationTime() {
-        return requestCreationTime;
-    }
-
-    public void setRequestCreationTime(long requestCreationTime) {
-        this.requestCreationTime = requestCreationTime;
-    }
-
-    @Column(name = "OAUTH_CLIENT_SECRET")
-    public String getGetOauthClientSecret() {
-        return getOauthClientSecret;
-    }
-
-    public void setGetOauthClientSecret(String oauthClientSecret) {
-        this.getOauthClientSecret = oauthClientSecret;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
deleted file mode 100644
index 0bcbafa..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.workspacecatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "WORKSPACE_NSF_DEMOGRAPHIC")
-public class NSFDemographicsEntity {
-    private String airavataInternalUserId;
-    private String gender;
-    private List<String> ethnicities;
-    private List<String> races;
-    private List<String> disabilities;
-    private UserProfileEntity userProfile;
-
-    @Id
-    @Column(name = "AIRAVATA_INTERNAL_USER_ID")
-    public String getAiravataInternalUserId() {
-        return airavataInternalUserId;
-    }
-
-    public void setAiravataInternalUserId(String userId) {
-        this.airavataInternalUserId = userId;
-    }
-
-    @Column(name = "GENDER")
-    public String getGender() {
-        return gender;
-    }
-
-    public void setGender(String gender) {
-        this.gender = gender;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="NSF_DEMOGRAPHIC_ETHNICITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getEthnicities() {
-        return ethnicities;
-    }
-
-    public void setEthnicities(List<String> ethnicities) {
-        this.ethnicities = ethnicities;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="NSF_DEMOGRAPHIC_RACE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getRaces() {
-        return races;
-    }
-
-    public void setRaces(List<String> races) {
-        this.races = races;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="NSF_DEMOGRAPHIC_DISABILITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getDisabilities() {
-        return disabilities;
-    }
-
-    public void setDisabilities(List<String> disabilities) {
-        this.disabilities = disabilities;
-    }
-
-    @OneToOne(targetEntity = UserProfileEntity.class, cascade = CascadeType.ALL)
-    @PrimaryKeyJoinColumn(name = "AIRAVATA_INTERNAL_USER_ID", referencedColumnName = "AIRAVATA_INTERNAL_USER_ID")
-    public UserProfileEntity getUserProfile() {
-        return userProfile;
-    }
-
-    public void setUserProfile(UserProfileEntity userProfile) {
-        this.userProfile = userProfile;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
deleted file mode 100644
index 67f8af2..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.workspacecatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "WORKSPACE_NOTIFICATION")
-public class NotificationEntity {
-    private String notificationId;
-    private String gatewayId;
-    private String title;
-    private String notificationMessage;
-    private long creationTime;
-    private long publishedTime;
-    private long expirationTime;
-    private String priority;
-
-    @Id
-    @Column(name = "NOTIFICATION_ID")
-    public String getNotificationId() {
-        return notificationId;
-    }
-
-    public void setNotificationId(String notificationId) {
-        this.notificationId = notificationId;
-    }
-
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Column(name = "TITLE")
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    @Lob
-    @Column(name = "NOTIFICATION_MESSAGE")
-    public String getNotificationMessage() {
-        return notificationMessage;
-    }
-
-    public void setNotificationMessage(String notificationMessage) {
-        this.notificationMessage = notificationMessage;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "PUBLISHED_TIME")
-    public long getPublishedTime() {
-        return publishedTime;
-    }
-
-    public void setPublishedTime(long publishedTime) {
-        this.publishedTime = publishedTime;
-    }
-
-    @Column(name = "EXPIRATION_TIME")
-    public long getExpirationTime() {
-        return expirationTime;
-    }
-
-    public void setExpirationTime(long expirationTime) {
-        this.expirationTime = expirationTime;
-    }
-
-    @Column(name = "PRIORITY")
-    public String getPriority() {
-        return priority;
-    }
-
-    public void setPriority(String priority) {
-        this.priority = priority;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
deleted file mode 100644
index 31e0868..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.workspacecatalog;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "WORKSPACE_PROJECT")
-public class ProjectEntity {
-    private String projectID;
-    private String owner;
-    private String gatewayId;
-    private String name;
-    private String description;
-    private long creationTime;
-
-    @Id
-    @Column(name = "PROJECT_ID")
-    public String getProjectID() {
-        return projectID;
-    }
-
-    public void setProjectID(String projectID) {
-        this.projectID = projectID;
-    }
-
-    @Column(name = "OWNER")
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Column(name = "PROJECT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Column(name = "DESCRIPTION")
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
deleted file mode 100644
index 7dd51ed..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.workspacecatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name="WORKSPACE_USER_PROFILE")
-public class UserProfileEntity {
-    private String airavataInternalUserId;
-    private String userId;
-    private String gatewayId;
-    private String userModelVersion;
-    private String userName;
-    private String orcidId;
-    private String country;
-    private String homeOrganization;
-    private String orginationAffiliation;
-    private long creationTime;
-    private long lastAccessTime;
-    private long validUntil;
-    private String state;
-    private String comments;
-    private List<String> labeledURI;
-    private String gpgKey;
-    private String timeZone;
-
-    private List<String> nationality;
-    private List<String> emails;
-    private List<String> phones;
-    private NSFDemographicsEntity nsfDemographics;
-
-    @Id
-    @Column(name = "AIRAVATA_INTERNAL_USER_ID")
-    public String getAiravataInternalUserId() {
-        return airavataInternalUserId;
-    }
-
-    public void setAiravataInternalUserId(String id) {
-        this.airavataInternalUserId = id;
-    }
-
-    @Column(name = "USER_ID")
-    public String getUserId() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Column(name = "USER_MODEL_VERSION")
-    public String getUserModelVersion() {
-        return userModelVersion;
-    }
-
-    public void setUserModelVersion(String userModelVersion) {
-        this.userModelVersion = userModelVersion;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="USER_PROFILE_EMAIL", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getEmails() {
-        return emails;
-    }
-
-    public void setEmails(List<String> emails) {
-        this.emails = emails;
-    }
-
-    @Column(name = "USER_NAME")
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    @Column(name = "ORCID_ID")
-    public String getOrcidId() {
-        return orcidId;
-    }
-
-    public void setOrcidId(String orcidId) {
-        this.orcidId = orcidId;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="USER_PROFILE_PHONE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getPhones() {
-        return phones;
-    }
-
-    public void setPhones(List<String> phones) {
-        this.phones = phones;
-    }
-
-    @Column(name = "COUNTRY")
-    public String getCountry() {
-        return country;
-    }
-
-    public void setCountry(String country) {
-        this.country = country;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="USER_PROFILE_NATIONALITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getNationality() {
-        return nationality;
-    }
-
-    public void setNationality(List<String> nationality) {
-        this.nationality = nationality;
-    }
-
-    @Column(name = "HOME_ORGANIZATION")
-    public String getHomeOrganization() {
-        return homeOrganization;
-    }
-
-    public void setHomeOrganization(String homeOrganization) {
-        this.homeOrganization = homeOrganization;
-    }
-
-    @Column(name = "ORIGINATION_AFFILIATION")
-    public String getOrginationAffiliation() {
-        return orginationAffiliation;
-    }
-
-    public void setOrginationAffiliation(String orginationAffiliation) {
-        this.orginationAffiliation = orginationAffiliation;
-    }
-
-    @Column(name="CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "LAST_ACCESS_TIME")
-    public long getLastAccessTime() {
-        return lastAccessTime;
-    }
-
-    public void setLastAccessTime(long lastAccessTime) {
-        this.lastAccessTime = lastAccessTime;
-    }
-
-    @Column(name = "VALID_UNTIL")
-    public long getValidUntil() {
-        return validUntil;
-    }
-
-    public void setValidUntil(long validUntil) {
-        this.validUntil = validUntil;
-    }
-
-    @Column(name = "STATE")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Lob
-    @Column(name = "COMMENTS")
-    public String getComments() {
-        return comments;
-    }
-
-    public void setComments(String comments) {
-        this.comments = comments;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="USER_PROFILE_LABELED_URI", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID"))
-    public List<String> getLabeledURI() {
-        return labeledURI;
-    }
-
-    public void setLabeledURI(List<String> labeledURI) {
-        this.labeledURI = labeledURI;
-    }
-
-    @Lob
-    @Column(name = "GPG_KEY")
-    public String getGpgKey() {
-        return gpgKey;
-    }
-
-    public void setGpgKey(String gpgKey) {
-        this.gpgKey = gpgKey;
-    }
-
-    @Column(name = "TIME_ZONE")
-    public String getTimeZone() {
-        return timeZone;
-    }
-
-    public void setTimeZone(String timeZone) {
-        this.timeZone = timeZone;
-    }
-
-    @OneToOne(targetEntity = NSFDemographicsEntity.class, cascade = CascadeType.ALL, mappedBy = "userProfile")
-    public NSFDemographicsEntity getNsfDemographics() {
-        return nsfDemographics;
-    }
-
-    public void setNsfDemographics(NSFDemographicsEntity nsfDemographics) {
-        this.nsfDemographics = nsfDemographics;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
deleted file mode 100644
index 1e906ba..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories;
-
-import org.apache.airavata.registry.core.utils.JPAUtils;
-import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
-import org.dozer.Mapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class AbstractRepository<T, E, Id> {
-    private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class);
-
-    private Class<T> thriftGenericClass;
-    private Class<E> dbEntityGenericClass;
-
-    public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){
-        this.thriftGenericClass = thriftGenericClass;
-        this.dbEntityGenericClass = dbEntityGenericClass;
-    }
-
-    public T create(T t){
-        return update(t);
-    }
-
-    public  T update(T t){
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        E entity = mapper.map(t, dbEntityGenericClass);
-        E persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
-        return mapper.map(persistedCopy, thriftGenericClass);
-    }
-
-    public boolean delete(Id id){
-        JPAUtils.execute(entityManager -> {
-            E entity = entityManager.find(dbEntityGenericClass, id);
-            entityManager.remove(entity);
-            return entity;
-        });
-        return true;
-    }
-
-    public T get(Id id){
-        E entity = JPAUtils.execute(entityManager -> entityManager
-                .find(dbEntityGenericClass, id));
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        return mapper.map(entity, thriftGenericClass);
-    }
-
-    public List<T> select(String query, int limit, int offset){
-        List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(query).setFirstResult(offset)
-                .setMaxResults(offset).getResultList());
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        List<T> gatewayList = new ArrayList<>();
-        resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass)));
-        return gatewayList;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
deleted file mode 100644
index a79a462..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.expcatalog;
-
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.apache.airavata.registry.core.utils.JPAUtils;
-import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
-import org.dozer.Mapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-public class ExperimentRepository extends AbstractRepository<ExperimentModel, ExperimentEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentRepository.class);
-
-    public ExperimentRepository(Class<ExperimentModel> thriftGenericClass, Class<ExperimentEntity> dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-
-    @Override
-    public ExperimentModel create(ExperimentModel experiment){
-        return update(experiment);
-    }
-
-    @Override
-    public ExperimentModel update(ExperimentModel experiment){
-        String experimentId = experiment.getExperimentId();
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        ExperimentEntity entity = mapper.map(experiment, ExperimentEntity.class);
-
-        if(entity.getUserConfigurationData() != null) {
-            entity.getUserConfigurationData().setExperimentId(experimentId);
-            if (entity.getUserConfigurationData().getComputeResourceSchedulingEntity() != null)
-                entity.getUserConfigurationData().getComputeResourceSchedulingEntity().setExperimentId(experimentId);
-        }
-        if(entity.getExperimentInputs() != null)
-            entity.getExperimentInputs().forEach(expIn->expIn.setExperimentId(experimentId));
-        if(entity.getExperimentOutputs() != null)
-            entity.getExperimentOutputs().forEach(expOut->expOut.setExperimentId(experimentId));
-        if(entity.getExperimentErrors() != null)
-            entity.getExperimentErrors().forEach(expErr->expErr.setExperimentId(experimentId));
-        if(entity.getExperimentStatuses() != null)
-            entity.getExperimentStatuses().forEach(expStatus->expStatus.setExperimentId(experimentId));
-
-        if(entity.getProcesses() != null){
-            entity.getProcesses().forEach(process->{
-                process.setExperimentId(experimentId);
-                String processId = process.getProcessId();
-                if(process.getProcessResourceSchedule() != null)
-                    process.getProcessResourceSchedule().setProcessId(processId);
-                if(process.getProcessInputs() != null)
-                    process.getProcessInputs().forEach(proInput->proInput.setProceseId(processId));
-                if(process.getProcessOutputs() != null)
-                    process.getProcessOutputs().forEach(proOutput->proOutput.setProcessId(processId));
-                if(process.getProcessErrors() != null)
-                    process.getProcessErrors().forEach(processErr->processErr.setProcessId(processId));
-                if(process.getProcessStatuses() != null)
-                    process.getProcessStatuses().forEach(processStat->processStat.setProcessId(processId));
-
-                if(process.getTasks() != null){
-                    process.getTasks().forEach(task->{
-                        String taskId = task.getTaskId();
-                        task.setParentProcessId(processId);
-
-
-                    });
-                }
-            });
-        }
-
-        ExperimentEntity persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
-        return mapper.map(persistedCopy, ExperimentModel.class);
-    }
-
-    @Override
-    public List<ExperimentModel> select(String criteria, int offset, int limit){
-        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
-                " ExperimentSummaryRepository");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
deleted file mode 100644
index aed6681..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.workspacecatalog;
-
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class GatewayRepository extends AbstractRepository<Gateway, GatewayEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(GatewayRepository.class);
-
-    public GatewayRepository(Class<Gateway> thriftGenericClass, Class<GatewayEntity> dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
deleted file mode 100644
index 8332024..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.workspacecatalog;
-
-import org.apache.airavata.model.workspace.Notification;
-import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NotificationRepository extends AbstractRepository<Notification, NotificationEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(NotificationRepository.class);
-
-    public NotificationRepository(Class thriftGenericClass, Class dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
deleted file mode 100644
index eebf5fb..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.workspacecatalog;
-
-import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ProjectRepository extends AbstractRepository<Project, ProjectEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(ProjectRepository.class);
-
-    public ProjectRepository(Class<Project> thriftGenericClass, Class<ProjectEntity> dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-}
\ No newline at end of file


[19/48] airavata git commit: adding missing setter for requesterUsername in gateway registry

Posted by la...@apache.org.
adding missing setter for requesterUsername in gateway registry


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 21c3e784989ac71129934f096f8c63e5267a8754
Parents: c450f40
Author: scnakandala <su...@gmail.com>
Authored: Sat Aug 27 15:42:41 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Sat Aug 27 15:42:41 2016 -0400

----------------------------------------------------------------------
 .../apache/airavata/model/user/UserProfile.java | 261 ++++++++++++-------
 .../catalog/impl/GatewayRegistry.java           |   1 +
 2 files changed, 173 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/21c3e784/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
index 1e88c5e..321d31c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
@@ -23,32 +23,14 @@
  */
 package org.apache.airavata.model.user;
 
+import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-
 import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
+
 import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.*;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**
@@ -110,23 +92,24 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
   private static final org.apache.thrift.protocol.TField USER_MODEL_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("userModelVersion", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField AIRAVATA_INTERNAL_USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataInternalUserId", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField EMAILS_FIELD_DESC = new org.apache.thrift.protocol.TField("emails", org.apache.thrift.protocol.TType.LIST, (short)4);
-  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)5);
-  private static final org.apache.thrift.protocol.TField ORCID_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("orcidId", org.apache.thrift.protocol.TType.STRING, (short)6);
-  private static final org.apache.thrift.protocol.TField PHONES_FIELD_DESC = new org.apache.thrift.protocol.TField("phones", org.apache.thrift.protocol.TType.LIST, (short)7);
-  private static final org.apache.thrift.protocol.TField COUNTRY_FIELD_DESC = new org.apache.thrift.protocol.TField("country", org.apache.thrift.protocol.TType.STRING, (short)8);
-  private static final org.apache.thrift.protocol.TField NATIONALITY_FIELD_DESC = new org.apache.thrift.protocol.TField("nationality", org.apache.thrift.protocol.TType.LIST, (short)9);
-  private static final org.apache.thrift.protocol.TField HOME_ORGANIZATION_FIELD_DESC = new org.apache.thrift.protocol.TField("homeOrganization", org.apache.thrift.protocol.TType.STRING, (short)10);
-  private static final org.apache.thrift.protocol.TField ORGINATION_AFFILIATION_FIELD_DESC = new org.apache.thrift.protocol.TField("orginationAffiliation", org.apache.thrift.protocol.TType.STRING, (short)11);
-  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.STRING, (short)12);
-  private static final org.apache.thrift.protocol.TField LAST_ACCESS_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastAccessTime", org.apache.thrift.protocol.TType.STRING, (short)13);
-  private static final org.apache.thrift.protocol.TField VALID_UNTIL_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntil", org.apache.thrift.protocol.TType.STRING, (short)14);
-  private static final org.apache.thrift.protocol.TField STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("State", org.apache.thrift.protocol.TType.I32, (short)15);
-  private static final org.apache.thrift.protocol.TField COMMENTS_FIELD_DESC = new org.apache.thrift.protocol.TField("comments", org.apache.thrift.protocol.TType.STRING, (short)16);
-  private static final org.apache.thrift.protocol.TField LABELED_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("labeledURI", org.apache.thrift.protocol.TType.LIST, (short)17);
-  private static final org.apache.thrift.protocol.TField GPG_KEY_FIELD_DESC = new org.apache.thrift.protocol.TField("gpgKey", org.apache.thrift.protocol.TType.STRING, (short)18);
-  private static final org.apache.thrift.protocol.TField TIME_ZONE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeZone", org.apache.thrift.protocol.TType.STRING, (short)19);
-  private static final org.apache.thrift.protocol.TField NSF_DEMOGRAPHICS_FIELD_DESC = new org.apache.thrift.protocol.TField("nsfDemographics", org.apache.thrift.protocol.TType.STRUCT, (short)20);
+  private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField EMAILS_FIELD_DESC = new org.apache.thrift.protocol.TField("emails", org.apache.thrift.protocol.TType.LIST, (short)5);
+  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ORCID_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("orcidId", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField PHONES_FIELD_DESC = new org.apache.thrift.protocol.TField("phones", org.apache.thrift.protocol.TType.LIST, (short)8);
+  private static final org.apache.thrift.protocol.TField COUNTRY_FIELD_DESC = new org.apache.thrift.protocol.TField("country", org.apache.thrift.protocol.TType.STRING, (short)9);
+  private static final org.apache.thrift.protocol.TField NATIONALITY_FIELD_DESC = new org.apache.thrift.protocol.TField("nationality", org.apache.thrift.protocol.TType.LIST, (short)10);
+  private static final org.apache.thrift.protocol.TField HOME_ORGANIZATION_FIELD_DESC = new org.apache.thrift.protocol.TField("homeOrganization", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField ORGINATION_AFFILIATION_FIELD_DESC = new org.apache.thrift.protocol.TField("orginationAffiliation", org.apache.thrift.protocol.TType.STRING, (short)12);
+  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.STRING, (short)13);
+  private static final org.apache.thrift.protocol.TField LAST_ACCESS_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastAccessTime", org.apache.thrift.protocol.TType.STRING, (short)14);
+  private static final org.apache.thrift.protocol.TField VALID_UNTIL_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntil", org.apache.thrift.protocol.TType.STRING, (short)15);
+  private static final org.apache.thrift.protocol.TField STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("State", org.apache.thrift.protocol.TType.I32, (short)16);
+  private static final org.apache.thrift.protocol.TField COMMENTS_FIELD_DESC = new org.apache.thrift.protocol.TField("comments", org.apache.thrift.protocol.TType.STRING, (short)17);
+  private static final org.apache.thrift.protocol.TField LABELED_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("labeledURI", org.apache.thrift.protocol.TType.LIST, (short)18);
+  private static final org.apache.thrift.protocol.TField GPG_KEY_FIELD_DESC = new org.apache.thrift.protocol.TField("gpgKey", org.apache.thrift.protocol.TType.STRING, (short)19);
+  private static final org.apache.thrift.protocol.TField TIME_ZONE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeZone", org.apache.thrift.protocol.TType.STRING, (short)20);
+  private static final org.apache.thrift.protocol.TField NSF_DEMOGRAPHICS_FIELD_DESC = new org.apache.thrift.protocol.TField("nsfDemographics", org.apache.thrift.protocol.TType.STRUCT, (short)21);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -137,6 +120,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
   private String userModelVersion; // required
   private String airavataInternalUserId; // required
   private String userId; // required
+  private String gatewayId; // required
   private List<String> emails; // required
   private String userName; // optional
   private String orcidId; // optional
@@ -160,27 +144,28 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     USER_MODEL_VERSION((short)1, "userModelVersion"),
     AIRAVATA_INTERNAL_USER_ID((short)2, "airavataInternalUserId"),
     USER_ID((short)3, "userId"),
-    EMAILS((short)4, "emails"),
-    USER_NAME((short)5, "userName"),
-    ORCID_ID((short)6, "orcidId"),
-    PHONES((short)7, "phones"),
-    COUNTRY((short)8, "country"),
-    NATIONALITY((short)9, "nationality"),
-    HOME_ORGANIZATION((short)10, "homeOrganization"),
-    ORGINATION_AFFILIATION((short)11, "orginationAffiliation"),
-    CREATION_TIME((short)12, "creationTime"),
-    LAST_ACCESS_TIME((short)13, "lastAccessTime"),
-    VALID_UNTIL((short)14, "validUntil"),
+    GATEWAY_ID((short)4, "gatewayId"),
+    EMAILS((short)5, "emails"),
+    USER_NAME((short)6, "userName"),
+    ORCID_ID((short)7, "orcidId"),
+    PHONES((short)8, "phones"),
+    COUNTRY((short)9, "country"),
+    NATIONALITY((short)10, "nationality"),
+    HOME_ORGANIZATION((short)11, "homeOrganization"),
+    ORGINATION_AFFILIATION((short)12, "orginationAffiliation"),
+    CREATION_TIME((short)13, "creationTime"),
+    LAST_ACCESS_TIME((short)14, "lastAccessTime"),
+    VALID_UNTIL((short)15, "validUntil"),
     /**
      * 
      * @see Status
      */
-    STATE((short)15, "State"),
-    COMMENTS((short)16, "comments"),
-    LABELED_URI((short)17, "labeledURI"),
-    GPG_KEY((short)18, "gpgKey"),
-    TIME_ZONE((short)19, "timeZone"),
-    NSF_DEMOGRAPHICS((short)20, "nsfDemographics");
+    STATE((short)16, "State"),
+    COMMENTS((short)17, "comments"),
+    LABELED_URI((short)18, "labeledURI"),
+    GPG_KEY((short)19, "gpgKey"),
+    TIME_ZONE((short)20, "timeZone"),
+    NSF_DEMOGRAPHICS((short)21, "nsfDemographics");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -201,39 +186,41 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
           return AIRAVATA_INTERNAL_USER_ID;
         case 3: // USER_ID
           return USER_ID;
-        case 4: // EMAILS
+        case 4: // GATEWAY_ID
+          return GATEWAY_ID;
+        case 5: // EMAILS
           return EMAILS;
-        case 5: // USER_NAME
+        case 6: // USER_NAME
           return USER_NAME;
-        case 6: // ORCID_ID
+        case 7: // ORCID_ID
           return ORCID_ID;
-        case 7: // PHONES
+        case 8: // PHONES
           return PHONES;
-        case 8: // COUNTRY
+        case 9: // COUNTRY
           return COUNTRY;
-        case 9: // NATIONALITY
+        case 10: // NATIONALITY
           return NATIONALITY;
-        case 10: // HOME_ORGANIZATION
+        case 11: // HOME_ORGANIZATION
           return HOME_ORGANIZATION;
-        case 11: // ORGINATION_AFFILIATION
+        case 12: // ORGINATION_AFFILIATION
           return ORGINATION_AFFILIATION;
-        case 12: // CREATION_TIME
+        case 13: // CREATION_TIME
           return CREATION_TIME;
-        case 13: // LAST_ACCESS_TIME
+        case 14: // LAST_ACCESS_TIME
           return LAST_ACCESS_TIME;
-        case 14: // VALID_UNTIL
+        case 15: // VALID_UNTIL
           return VALID_UNTIL;
-        case 15: // STATE
+        case 16: // STATE
           return STATE;
-        case 16: // COMMENTS
+        case 17: // COMMENTS
           return COMMENTS;
-        case 17: // LABELED_URI
+        case 18: // LABELED_URI
           return LABELED_URI;
-        case 18: // GPG_KEY
+        case 19: // GPG_KEY
           return GPG_KEY;
-        case 19: // TIME_ZONE
+        case 20: // TIME_ZONE
           return TIME_ZONE;
-        case 20: // NSF_DEMOGRAPHICS
+        case 21: // NSF_DEMOGRAPHICS
           return NSF_DEMOGRAPHICS;
         default:
           return null;
@@ -285,6 +272,8 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.EMAILS, new org.apache.thrift.meta_data.FieldMetaData("emails", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
@@ -338,6 +327,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     String userModelVersion,
     String airavataInternalUserId,
     String userId,
+    String gatewayId,
     List<String> emails,
     String creationTime,
     String lastAccessTime,
@@ -348,6 +338,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     this.userModelVersion = userModelVersion;
     this.airavataInternalUserId = airavataInternalUserId;
     this.userId = userId;
+    this.gatewayId = gatewayId;
     this.emails = emails;
     this.creationTime = creationTime;
     this.lastAccessTime = lastAccessTime;
@@ -368,6 +359,9 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     if (other.isSetUserId()) {
       this.userId = other.userId;
     }
+    if (other.isSetGatewayId()) {
+      this.gatewayId = other.gatewayId;
+    }
     if (other.isSetEmails()) {
       List<String> __this__emails = new ArrayList<String>(other.emails);
       this.emails = __this__emails;
@@ -436,6 +430,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     this.airavataInternalUserId = "DO_NOT_SET_AT_CLIENTS";
 
     this.userId = null;
+    this.gatewayId = null;
     this.emails = null;
     this.userName = null;
     this.orcidId = null;
@@ -524,6 +519,29 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     }
   }
 
+  public String getGatewayId() {
+    return this.gatewayId;
+  }
+
+  public void setGatewayId(String gatewayId) {
+    this.gatewayId = gatewayId;
+  }
+
+  public void unsetGatewayId() {
+    this.gatewayId = null;
+  }
+
+  /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+  public boolean isSetGatewayId() {
+    return this.gatewayId != null;
+  }
+
+  public void setGatewayIdIsSet(boolean value) {
+    if (!value) {
+      this.gatewayId = null;
+    }
+  }
+
   public int getEmailsSize() {
     return (this.emails == null) ? 0 : this.emails.size();
   }
@@ -1009,6 +1027,14 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
       }
       break;
 
+    case GATEWAY_ID:
+      if (value == null) {
+        unsetGatewayId();
+      } else {
+        setGatewayId((String)value);
+      }
+      break;
+
     case EMAILS:
       if (value == null) {
         unsetEmails();
@@ -1159,6 +1185,9 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     case USER_ID:
       return getUserId();
 
+    case GATEWAY_ID:
+      return getGatewayId();
+
     case EMAILS:
       return getEmails();
 
@@ -1227,6 +1256,8 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
       return isSetAiravataInternalUserId();
     case USER_ID:
       return isSetUserId();
+    case GATEWAY_ID:
+      return isSetGatewayId();
     case EMAILS:
       return isSetEmails();
     case USER_NAME:
@@ -1305,6 +1336,15 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
         return false;
     }
 
+    boolean this_present_gatewayId = true && this.isSetGatewayId();
+    boolean that_present_gatewayId = true && that.isSetGatewayId();
+    if (this_present_gatewayId || that_present_gatewayId) {
+      if (!(this_present_gatewayId && that_present_gatewayId))
+        return false;
+      if (!this.gatewayId.equals(that.gatewayId))
+        return false;
+    }
+
     boolean this_present_emails = true && this.isSetEmails();
     boolean that_present_emails = true && that.isSetEmails();
     if (this_present_emails || that_present_emails) {
@@ -1480,6 +1520,11 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     if (present_userId)
       list.add(userId);
 
+    boolean present_gatewayId = true && (isSetGatewayId());
+    list.add(present_gatewayId);
+    if (present_gatewayId)
+      list.add(gatewayId);
+
     boolean present_emails = true && (isSetEmails());
     list.add(present_emails);
     if (present_emails)
@@ -1606,6 +1651,16 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGatewayId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetEmails()).compareTo(other.isSetEmails());
     if (lastComparison != 0) {
       return lastComparison;
@@ -1820,6 +1875,14 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
     }
     first = false;
     if (!first) sb.append(", ");
+    sb.append("gatewayId:");
+    if (this.gatewayId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.gatewayId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
     sb.append("emails:");
     if (this.emails == null) {
       sb.append("null");
@@ -1997,6 +2060,10 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'userId' is unset! Struct:" + toString());
     }
 
+    if (!isSetGatewayId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' is unset! Struct:" + toString());
+    }
+
     if (!isSetEmails()) {
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'emails' is unset! Struct:" + toString());
     }
@@ -2081,7 +2148,15 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // EMAILS
+          case 4: // GATEWAY_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.gatewayId = iprot.readString();
+              struct.setGatewayIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // EMAILS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list24 = iprot.readListBegin();
@@ -2099,7 +2174,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 5: // USER_NAME
+          case 6: // USER_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.userName = iprot.readString();
               struct.setUserNameIsSet(true);
@@ -2107,7 +2182,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // ORCID_ID
+          case 7: // ORCID_ID
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.orcidId = iprot.readString();
               struct.setOrcidIdIsSet(true);
@@ -2115,7 +2190,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 7: // PHONES
+          case 8: // PHONES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list27 = iprot.readListBegin();
@@ -2133,7 +2208,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 8: // COUNTRY
+          case 9: // COUNTRY
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.country = iprot.readString();
               struct.setCountryIsSet(true);
@@ -2141,7 +2216,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 9: // NATIONALITY
+          case 10: // NATIONALITY
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list30 = iprot.readListBegin();
@@ -2159,7 +2234,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 10: // HOME_ORGANIZATION
+          case 11: // HOME_ORGANIZATION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.homeOrganization = iprot.readString();
               struct.setHomeOrganizationIsSet(true);
@@ -2167,7 +2242,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 11: // ORGINATION_AFFILIATION
+          case 12: // ORGINATION_AFFILIATION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.orginationAffiliation = iprot.readString();
               struct.setOrginationAffiliationIsSet(true);
@@ -2175,7 +2250,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 12: // CREATION_TIME
+          case 13: // CREATION_TIME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.creationTime = iprot.readString();
               struct.setCreationTimeIsSet(true);
@@ -2183,7 +2258,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 13: // LAST_ACCESS_TIME
+          case 14: // LAST_ACCESS_TIME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.lastAccessTime = iprot.readString();
               struct.setLastAccessTimeIsSet(true);
@@ -2191,7 +2266,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 14: // VALID_UNTIL
+          case 15: // VALID_UNTIL
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.validUntil = iprot.readString();
               struct.setValidUntilIsSet(true);
@@ -2199,7 +2274,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 15: // STATE
+          case 16: // STATE
             if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
               struct.State = org.apache.airavata.model.user.Status.findByValue(iprot.readI32());
               struct.setStateIsSet(true);
@@ -2207,7 +2282,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 16: // COMMENTS
+          case 17: // COMMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.comments = iprot.readString();
               struct.setCommentsIsSet(true);
@@ -2215,7 +2290,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 17: // LABELED_URI
+          case 18: // LABELED_URI
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list33 = iprot.readListBegin();
@@ -2233,7 +2308,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 18: // GPG_KEY
+          case 19: // GPG_KEY
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.gpgKey = iprot.readString();
               struct.setGpgKeyIsSet(true);
@@ -2241,7 +2316,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 19: // TIME_ZONE
+          case 20: // TIME_ZONE
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.timeZone = iprot.readString();
               struct.setTimeZoneIsSet(true);
@@ -2249,7 +2324,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 20: // NSF_DEMOGRAPHICS
+          case 21: // NSF_DEMOGRAPHICS
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.nsfDemographics = new NSFDemographics();
               struct.nsfDemographics.read(iprot);
@@ -2286,6 +2361,11 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
         oprot.writeString(struct.userId);
         oprot.writeFieldEnd();
       }
+      if (struct.gatewayId != null) {
+        oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+        oprot.writeString(struct.gatewayId);
+        oprot.writeFieldEnd();
+      }
       if (struct.emails != null) {
         oprot.writeFieldBegin(EMAILS_FIELD_DESC);
         {
@@ -2443,6 +2523,7 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
       oprot.writeString(struct.userModelVersion);
       oprot.writeString(struct.airavataInternalUserId);
       oprot.writeString(struct.userId);
+      oprot.writeString(struct.gatewayId);
       {
         oprot.writeI32(struct.emails.size());
         for (String _iter40 : struct.emails)
@@ -2557,6 +2638,8 @@ public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserPro
       struct.setAiravataInternalUserIdIsSet(true);
       struct.userId = iprot.readString();
       struct.setUserIdIsSet(true);
+      struct.gatewayId = iprot.readString();
+      struct.setGatewayIdIsSet(true);
       {
         org.apache.thrift.protocol.TList _list44 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
         struct.emails = new ArrayList<String>(_list44.size);

http://git-wip-us.apache.org/repos/asf/airavata/blob/21c3e784/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/GatewayRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/GatewayRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/GatewayRegistry.java
index 83d67f2..5940fd6 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/GatewayRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/GatewayRegistry.java
@@ -95,6 +95,7 @@ public class GatewayRegistry {
             existingGateway.setDeclinedReason(updatedGateway.getDeclinedReason());
             existingGateway.setOauthClientId(updatedGateway.getOauthClientId());
             existingGateway.setOauthClientSecret(updatedGateway.getOauthClientSecret());
+            existingGateway.setRequesterUsername(updatedGateway.getRequesterUsername());
             existingGateway.save();
         }catch (RegistryException e){
             logger.error("Error while updating gateway to registry", e);


[22/48] airavata git commit: updating the registry refactoring code

Posted by la...@apache.org.
updating the registry refactoring code


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 3ce49b9a6530bbe0f1c2249668473b67b1bb29ae
Parents: cc009e3
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 29 10:12:34 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 29 10:12:34 2016 -0400

----------------------------------------------------------------------
 .../lib/airavata/user_profile_model_types.cpp   |  89 +++++++++-----
 .../lib/airavata/user_profile_model_types.h     |   7 +-
 .../resources/lib/Airavata/Model/User/Types.php | 121 +++++++++++--------
 .../lib/apache/airavata/model/user/ttypes.py    | 117 ++++++++++--------
 modules/registry-refactoring/pom.xml            |   2 +-
 .../entities/expcatalog/ExperimentEntity.java   |  20 ++-
 .../expcatalog/ExperimentErrorEntity.java       |   2 +
 .../entities/expcatalog/ExperimentErrorPK.java  |  75 ++++++++++++
 .../expcatalog/ExperimentInputEntity.java       |   5 +-
 .../entities/expcatalog/ExperimentInputPK.java  |  74 ++++++++++++
 .../expcatalog/ExperimentOutputEntity.java      |  22 +++-
 .../entities/expcatalog/ExperimentOutputPK.java |  74 ++++++++++++
 .../expcatalog/ExperimentStatusEntity.java      |  83 +++++++++++++
 .../entities/expcatalog/ExperimentStatusPK.java |  74 ++++++++++++
 .../expcatalog/UserConfigurationEntity.java     |   2 +-
 .../expcatalog/ExperimentRepository.java        |  72 +++++++++++
 .../expcatalog/ExperimentRespository.java       |  43 -------
 .../src/main/resources/META-INF/persistence.xml |   6 +
 .../src/main/resources/experiment_catalog.sql   |  69 ++++++-----
 .../src/main/resources/workspace_catalog.sql    |   4 +-
 .../core/repositories/RepositoryTest.java       |  40 ++++++
 .../user-group-models/user_profile_model.thrift |  35 +++---
 22 files changed, 797 insertions(+), 239 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
index f89e46f..8dbb408 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
@@ -377,6 +377,10 @@ void UserProfile::__set_userId(const std::string& val) {
   this->userId = val;
 }
 
+void UserProfile::__set_gatewayId(const std::string& val) {
+  this->gatewayId = val;
+}
+
 void UserProfile::__set_emails(const std::vector<std::string> & val) {
   this->emails = val;
 }
@@ -472,6 +476,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
   bool isset_userModelVersion = false;
   bool isset_airavataInternalUserId = false;
   bool isset_userId = false;
+  bool isset_gatewayId = false;
   bool isset_emails = false;
   bool isset_creationTime = false;
   bool isset_lastAccessTime = false;
@@ -511,6 +516,14 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->emails.clear();
@@ -530,7 +543,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 5:
+      case 6:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->userName);
           this->__isset.userName = true;
@@ -538,7 +551,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->orcidId);
           this->__isset.orcidId = true;
@@ -546,7 +559,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 7:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->phones.clear();
@@ -566,7 +579,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 8:
+      case 9:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->country);
           this->__isset.country = true;
@@ -574,7 +587,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 9:
+      case 10:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->nationality.clear();
@@ -594,7 +607,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 10:
+      case 11:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->homeOrganization);
           this->__isset.homeOrganization = true;
@@ -602,7 +615,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 11:
+      case 12:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->orginationAffiliation);
           this->__isset.orginationAffiliation = true;
@@ -610,7 +623,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 12:
+      case 13:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->creationTime);
           isset_creationTime = true;
@@ -618,7 +631,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 13:
+      case 14:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->lastAccessTime);
           isset_lastAccessTime = true;
@@ -626,7 +639,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 14:
+      case 15:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->validUntil);
           isset_validUntil = true;
@@ -634,7 +647,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 15:
+      case 16:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           int32_t ecast39;
           xfer += iprot->readI32(ecast39);
@@ -644,7 +657,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 16:
+      case 17:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->comments);
           this->__isset.comments = true;
@@ -652,7 +665,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 17:
+      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->labeledURI.clear();
@@ -672,7 +685,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 18:
+      case 19:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->gpgKey);
           this->__isset.gpgKey = true;
@@ -680,7 +693,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 19:
+      case 20:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->timeZone);
           this->__isset.timeZone = true;
@@ -688,7 +701,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 20:
+      case 21:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->nsfDemographics.read(iprot);
           this->__isset.nsfDemographics = true;
@@ -711,6 +724,8 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_userId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_emails)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_creationTime)
@@ -741,7 +756,11 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
   xfer += oprot->writeString(this->userId);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("emails", ::apache::thrift::protocol::T_LIST, 4);
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 4);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("emails", ::apache::thrift::protocol::T_LIST, 5);
   {
     xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->emails.size()));
     std::vector<std::string> ::const_iterator _iter45;
@@ -754,17 +773,17 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
   xfer += oprot->writeFieldEnd();
 
   if (this->__isset.userName) {
-    xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 6);
     xfer += oprot->writeString(this->userName);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.orcidId) {
-    xfer += oprot->writeFieldBegin("orcidId", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeFieldBegin("orcidId", ::apache::thrift::protocol::T_STRING, 7);
     xfer += oprot->writeString(this->orcidId);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.phones) {
-    xfer += oprot->writeFieldBegin("phones", ::apache::thrift::protocol::T_LIST, 7);
+    xfer += oprot->writeFieldBegin("phones", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->phones.size()));
       std::vector<std::string> ::const_iterator _iter46;
@@ -777,12 +796,12 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.country) {
-    xfer += oprot->writeFieldBegin("country", ::apache::thrift::protocol::T_STRING, 8);
+    xfer += oprot->writeFieldBegin("country", ::apache::thrift::protocol::T_STRING, 9);
     xfer += oprot->writeString(this->country);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.nationality) {
-    xfer += oprot->writeFieldBegin("nationality", ::apache::thrift::protocol::T_LIST, 9);
+    xfer += oprot->writeFieldBegin("nationality", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->nationality.size()));
       std::vector<std::string> ::const_iterator _iter47;
@@ -795,38 +814,38 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.homeOrganization) {
-    xfer += oprot->writeFieldBegin("homeOrganization", ::apache::thrift::protocol::T_STRING, 10);
+    xfer += oprot->writeFieldBegin("homeOrganization", ::apache::thrift::protocol::T_STRING, 11);
     xfer += oprot->writeString(this->homeOrganization);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.orginationAffiliation) {
-    xfer += oprot->writeFieldBegin("orginationAffiliation", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeFieldBegin("orginationAffiliation", ::apache::thrift::protocol::T_STRING, 12);
     xfer += oprot->writeString(this->orginationAffiliation);
     xfer += oprot->writeFieldEnd();
   }
-  xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_STRING, 12);
+  xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_STRING, 13);
   xfer += oprot->writeString(this->creationTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("lastAccessTime", ::apache::thrift::protocol::T_STRING, 13);
+  xfer += oprot->writeFieldBegin("lastAccessTime", ::apache::thrift::protocol::T_STRING, 14);
   xfer += oprot->writeString(this->lastAccessTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("validUntil", ::apache::thrift::protocol::T_STRING, 14);
+  xfer += oprot->writeFieldBegin("validUntil", ::apache::thrift::protocol::T_STRING, 15);
   xfer += oprot->writeString(this->validUntil);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("State", ::apache::thrift::protocol::T_I32, 15);
+  xfer += oprot->writeFieldBegin("State", ::apache::thrift::protocol::T_I32, 16);
   xfer += oprot->writeI32((int32_t)this->State);
   xfer += oprot->writeFieldEnd();
 
   if (this->__isset.comments) {
-    xfer += oprot->writeFieldBegin("comments", ::apache::thrift::protocol::T_STRING, 16);
+    xfer += oprot->writeFieldBegin("comments", ::apache::thrift::protocol::T_STRING, 17);
     xfer += oprot->writeString(this->comments);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.labeledURI) {
-    xfer += oprot->writeFieldBegin("labeledURI", ::apache::thrift::protocol::T_LIST, 17);
+    xfer += oprot->writeFieldBegin("labeledURI", ::apache::thrift::protocol::T_LIST, 18);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->labeledURI.size()));
       std::vector<std::string> ::const_iterator _iter48;
@@ -839,17 +858,17 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.gpgKey) {
-    xfer += oprot->writeFieldBegin("gpgKey", ::apache::thrift::protocol::T_STRING, 18);
+    xfer += oprot->writeFieldBegin("gpgKey", ::apache::thrift::protocol::T_STRING, 19);
     xfer += oprot->writeString(this->gpgKey);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.timeZone) {
-    xfer += oprot->writeFieldBegin("timeZone", ::apache::thrift::protocol::T_STRING, 19);
+    xfer += oprot->writeFieldBegin("timeZone", ::apache::thrift::protocol::T_STRING, 20);
     xfer += oprot->writeString(this->timeZone);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.nsfDemographics) {
-    xfer += oprot->writeFieldBegin("nsfDemographics", ::apache::thrift::protocol::T_STRUCT, 20);
+    xfer += oprot->writeFieldBegin("nsfDemographics", ::apache::thrift::protocol::T_STRUCT, 21);
     xfer += this->nsfDemographics.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
@@ -863,6 +882,7 @@ void swap(UserProfile &a, UserProfile &b) {
   swap(a.userModelVersion, b.userModelVersion);
   swap(a.airavataInternalUserId, b.airavataInternalUserId);
   swap(a.userId, b.userId);
+  swap(a.gatewayId, b.gatewayId);
   swap(a.emails, b.emails);
   swap(a.userName, b.userName);
   swap(a.orcidId, b.orcidId);
@@ -887,6 +907,7 @@ UserProfile::UserProfile(const UserProfile& other49) {
   userModelVersion = other49.userModelVersion;
   airavataInternalUserId = other49.airavataInternalUserId;
   userId = other49.userId;
+  gatewayId = other49.gatewayId;
   emails = other49.emails;
   userName = other49.userName;
   orcidId = other49.orcidId;
@@ -910,6 +931,7 @@ UserProfile& UserProfile::operator=(const UserProfile& other50) {
   userModelVersion = other50.userModelVersion;
   airavataInternalUserId = other50.airavataInternalUserId;
   userId = other50.userId;
+  gatewayId = other50.gatewayId;
   emails = other50.emails;
   userName = other50.userName;
   orcidId = other50.orcidId;
@@ -936,6 +958,7 @@ void UserProfile::printTo(std::ostream& out) const {
   out << "userModelVersion=" << to_string(userModelVersion);
   out << ", " << "airavataInternalUserId=" << to_string(airavataInternalUserId);
   out << ", " << "userId=" << to_string(userId);
+  out << ", " << "gatewayId=" << to_string(gatewayId);
   out << ", " << "emails=" << to_string(emails);
   out << ", " << "userName="; (__isset.userName ? (out << to_string(userName)) : (out << "<null>"));
   out << ", " << "orcidId="; (__isset.orcidId ? (out << to_string(orcidId)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
index 4ae9bad..69fa0a0 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
@@ -205,13 +205,14 @@ class UserProfile {
 
   UserProfile(const UserProfile&);
   UserProfile& operator=(const UserProfile&);
-  UserProfile() : userModelVersion("1.0"), airavataInternalUserId("DO_NOT_SET_AT_CLIENTS"), userId(), userName(), orcidId(), country(), homeOrganization(), orginationAffiliation(), creationTime(), lastAccessTime(), validUntil(), State((Status::type)0), comments(), gpgKey(), timeZone() {
+  UserProfile() : userModelVersion("1.0"), airavataInternalUserId("DO_NOT_SET_AT_CLIENTS"), userId(), gatewayId(), userName(), orcidId(), country(), homeOrganization(), orginationAffiliation(), creationTime(), lastAccessTime(), validUntil(), State((Status::type)0), comments(), gpgKey(), timeZone() {
   }
 
   virtual ~UserProfile() throw();
   std::string userModelVersion;
   std::string airavataInternalUserId;
   std::string userId;
+  std::string gatewayId;
   std::vector<std::string>  emails;
   std::string userName;
   std::string orcidId;
@@ -238,6 +239,8 @@ class UserProfile {
 
   void __set_userId(const std::string& val);
 
+  void __set_gatewayId(const std::string& val);
+
   void __set_emails(const std::vector<std::string> & val);
 
   void __set_userName(const std::string& val);
@@ -280,6 +283,8 @@ class UserProfile {
       return false;
     if (!(userId == rhs.userId))
       return false;
+    if (!(gatewayId == rhs.gatewayId))
+      return false;
     if (!(emails == rhs.emails))
       return false;
     if (__isset.userName != rhs.__isset.userName)

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
index 250ef09..c9aa616 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
@@ -440,6 +440,10 @@ class UserProfile {
    */
   public $userId = null;
   /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
    * @var string[]
    */
   public $emails = null;
@@ -524,6 +528,10 @@ class UserProfile {
           'type' => TType::STRING,
           ),
         4 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        5 => array(
           'var' => 'emails',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -531,15 +539,15 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        5 => array(
+        6 => array(
           'var' => 'userName',
           'type' => TType::STRING,
           ),
-        6 => array(
+        7 => array(
           'var' => 'orcidId',
           'type' => TType::STRING,
           ),
-        7 => array(
+        8 => array(
           'var' => 'phones',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -547,11 +555,11 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        8 => array(
+        9 => array(
           'var' => 'country',
           'type' => TType::STRING,
           ),
-        9 => array(
+        10 => array(
           'var' => 'nationality',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -559,35 +567,35 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        10 => array(
+        11 => array(
           'var' => 'homeOrganization',
           'type' => TType::STRING,
           ),
-        11 => array(
+        12 => array(
           'var' => 'orginationAffiliation',
           'type' => TType::STRING,
           ),
-        12 => array(
+        13 => array(
           'var' => 'creationTime',
           'type' => TType::STRING,
           ),
-        13 => array(
+        14 => array(
           'var' => 'lastAccessTime',
           'type' => TType::STRING,
           ),
-        14 => array(
+        15 => array(
           'var' => 'validUntil',
           'type' => TType::STRING,
           ),
-        15 => array(
+        16 => array(
           'var' => 'State',
           'type' => TType::I32,
           ),
-        16 => array(
+        17 => array(
           'var' => 'comments',
           'type' => TType::STRING,
           ),
-        17 => array(
+        18 => array(
           'var' => 'labeledURI',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -595,15 +603,15 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        18 => array(
+        19 => array(
           'var' => 'gpgKey',
           'type' => TType::STRING,
           ),
-        19 => array(
+        20 => array(
           'var' => 'timeZone',
           'type' => TType::STRING,
           ),
-        20 => array(
+        21 => array(
           'var' => 'nsfDemographics',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\User\NSFDemographics',
@@ -620,6 +628,9 @@ class UserProfile {
       if (isset($vals['userId'])) {
         $this->userId = $vals['userId'];
       }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
       if (isset($vals['emails'])) {
         $this->emails = $vals['emails'];
       }
@@ -715,6 +726,13 @@ class UserProfile {
           }
           break;
         case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
           if ($ftype == TType::LST) {
             $this->emails = array();
             $_size21 = 0;
@@ -731,21 +749,21 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 5:
+        case 6:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->userName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 6:
+        case 7:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orcidId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 7:
+        case 8:
           if ($ftype == TType::LST) {
             $this->phones = array();
             $_size27 = 0;
@@ -762,14 +780,14 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 8:
+        case 9:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->country);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 9:
+        case 10:
           if ($ftype == TType::LST) {
             $this->nationality = array();
             $_size33 = 0;
@@ -786,56 +804,56 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 10:
+        case 11:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->homeOrganization);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 11:
+        case 12:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orginationAffiliation);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 12:
+        case 13:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->creationTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 13:
+        case 14:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->lastAccessTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 14:
+        case 15:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->validUntil);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 15:
+        case 16:
           if ($ftype == TType::I32) {
             $xfer += $input->readI32($this->State);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 16:
+        case 17:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->comments);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 17:
+        case 18:
           if ($ftype == TType::LST) {
             $this->labeledURI = array();
             $_size39 = 0;
@@ -852,21 +870,21 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 18:
+        case 19:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->gpgKey);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 19:
+        case 20:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->timeZone);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 20:
+        case 21:
           if ($ftype == TType::STRUCT) {
             $this->nsfDemographics = new \Airavata\Model\User\NSFDemographics();
             $xfer += $this->nsfDemographics->read($input);
@@ -902,11 +920,16 @@ class UserProfile {
       $xfer += $output->writeString($this->userId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 4);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->emails !== null) {
       if (!is_array($this->emails)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('emails', TType::LST, 4);
+      $xfer += $output->writeFieldBegin('emails', TType::LST, 5);
       {
         $output->writeListBegin(TType::STRING, count($this->emails));
         {
@@ -920,12 +943,12 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 5);
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 6);
       $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->orcidId !== null) {
-      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 6);
+      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 7);
       $xfer += $output->writeString($this->orcidId);
       $xfer += $output->writeFieldEnd();
     }
@@ -933,7 +956,7 @@ class UserProfile {
       if (!is_array($this->phones)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('phones', TType::LST, 7);
+      $xfer += $output->writeFieldBegin('phones', TType::LST, 8);
       {
         $output->writeListBegin(TType::STRING, count($this->phones));
         {
@@ -947,7 +970,7 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->country !== null) {
-      $xfer += $output->writeFieldBegin('country', TType::STRING, 8);
+      $xfer += $output->writeFieldBegin('country', TType::STRING, 9);
       $xfer += $output->writeString($this->country);
       $xfer += $output->writeFieldEnd();
     }
@@ -955,7 +978,7 @@ class UserProfile {
       if (!is_array($this->nationality)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nationality', TType::LST, 9);
+      $xfer += $output->writeFieldBegin('nationality', TType::LST, 10);
       {
         $output->writeListBegin(TType::STRING, count($this->nationality));
         {
@@ -969,37 +992,37 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->homeOrganization !== null) {
-      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 10);
+      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 11);
       $xfer += $output->writeString($this->homeOrganization);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->orginationAffiliation !== null) {
-      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 11);
+      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 12);
       $xfer += $output->writeString($this->orginationAffiliation);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::STRING, 12);
+      $xfer += $output->writeFieldBegin('creationTime', TType::STRING, 13);
       $xfer += $output->writeString($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::STRING, 13);
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::STRING, 14);
       $xfer += $output->writeString($this->lastAccessTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->validUntil !== null) {
-      $xfer += $output->writeFieldBegin('validUntil', TType::STRING, 14);
+      $xfer += $output->writeFieldBegin('validUntil', TType::STRING, 15);
       $xfer += $output->writeString($this->validUntil);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->State !== null) {
-      $xfer += $output->writeFieldBegin('State', TType::I32, 15);
+      $xfer += $output->writeFieldBegin('State', TType::I32, 16);
       $xfer += $output->writeI32($this->State);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->comments !== null) {
-      $xfer += $output->writeFieldBegin('comments', TType::STRING, 16);
+      $xfer += $output->writeFieldBegin('comments', TType::STRING, 17);
       $xfer += $output->writeString($this->comments);
       $xfer += $output->writeFieldEnd();
     }
@@ -1007,7 +1030,7 @@ class UserProfile {
       if (!is_array($this->labeledURI)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 17);
+      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 18);
       {
         $output->writeListBegin(TType::STRING, count($this->labeledURI));
         {
@@ -1021,12 +1044,12 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gpgKey !== null) {
-      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 18);
+      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 19);
       $xfer += $output->writeString($this->gpgKey);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->timeZone !== null) {
-      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 19);
+      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 20);
       $xfer += $output->writeString($this->timeZone);
       $xfer += $output->writeFieldEnd();
     }
@@ -1034,7 +1057,7 @@ class UserProfile {
       if (!is_object($this->nsfDemographics)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 20);
+      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 21);
       $xfer += $this->nsfDemographics->write($output);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
index fd7d4b8..7e960e7 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
@@ -369,6 +369,7 @@ class UserProfile:
    - userModelVersion
    - airavataInternalUserId
    - userId
+   - gatewayId
    - emails
    - userName
    - orcidId
@@ -393,29 +394,31 @@ class UserProfile:
     (1, TType.STRING, 'userModelVersion', None, "1.0", ), # 1
     (2, TType.STRING, 'airavataInternalUserId', None, "DO_NOT_SET_AT_CLIENTS", ), # 2
     (3, TType.STRING, 'userId', None, None, ), # 3
-    (4, TType.LIST, 'emails', (TType.STRING,None), None, ), # 4
-    (5, TType.STRING, 'userName', None, None, ), # 5
-    (6, TType.STRING, 'orcidId', None, None, ), # 6
-    (7, TType.LIST, 'phones', (TType.STRING,None), None, ), # 7
-    (8, TType.STRING, 'country', None, None, ), # 8
-    (9, TType.LIST, 'nationality', (TType.STRING,None), None, ), # 9
-    (10, TType.STRING, 'homeOrganization', None, None, ), # 10
-    (11, TType.STRING, 'orginationAffiliation', None, None, ), # 11
-    (12, TType.STRING, 'creationTime', None, None, ), # 12
-    (13, TType.STRING, 'lastAccessTime', None, None, ), # 13
-    (14, TType.STRING, 'validUntil', None, None, ), # 14
-    (15, TType.I32, 'State', None, None, ), # 15
-    (16, TType.STRING, 'comments', None, None, ), # 16
-    (17, TType.LIST, 'labeledURI', (TType.STRING,None), None, ), # 17
-    (18, TType.STRING, 'gpgKey', None, None, ), # 18
-    (19, TType.STRING, 'timeZone', None, None, ), # 19
-    (20, TType.STRUCT, 'nsfDemographics', (NSFDemographics, NSFDemographics.thrift_spec), None, ), # 20
+    (4, TType.STRING, 'gatewayId', None, None, ), # 4
+    (5, TType.LIST, 'emails', (TType.STRING,None), None, ), # 5
+    (6, TType.STRING, 'userName', None, None, ), # 6
+    (7, TType.STRING, 'orcidId', None, None, ), # 7
+    (8, TType.LIST, 'phones', (TType.STRING,None), None, ), # 8
+    (9, TType.STRING, 'country', None, None, ), # 9
+    (10, TType.LIST, 'nationality', (TType.STRING,None), None, ), # 10
+    (11, TType.STRING, 'homeOrganization', None, None, ), # 11
+    (12, TType.STRING, 'orginationAffiliation', None, None, ), # 12
+    (13, TType.STRING, 'creationTime', None, None, ), # 13
+    (14, TType.STRING, 'lastAccessTime', None, None, ), # 14
+    (15, TType.STRING, 'validUntil', None, None, ), # 15
+    (16, TType.I32, 'State', None, None, ), # 16
+    (17, TType.STRING, 'comments', None, None, ), # 17
+    (18, TType.LIST, 'labeledURI', (TType.STRING,None), None, ), # 18
+    (19, TType.STRING, 'gpgKey', None, None, ), # 19
+    (20, TType.STRING, 'timeZone', None, None, ), # 20
+    (21, TType.STRUCT, 'nsfDemographics', (NSFDemographics, NSFDemographics.thrift_spec), None, ), # 21
   )
 
-  def __init__(self, userModelVersion=thrift_spec[1][4], airavataInternalUserId=thrift_spec[2][4], userId=None, emails=None, userName=None, orcidId=None, phones=None, country=None, nationality=None, homeOrganization=None, orginationAffiliation=None, creationTime=None, lastAccessTime=None, validUntil=None, State=None, comments=None, labeledURI=None, gpgKey=None, timeZone=None, nsfDemographics=None,):
+  def __init__(self, userModelVersion=thrift_spec[1][4], airavataInternalUserId=thrift_spec[2][4], userId=None, gatewayId=None, emails=None, userName=None, orcidId=None, phones=None, country=None, nationality=None, homeOrganization=None, orginationAffiliation=None, creationTime=None, lastAccessTime=None, validUntil=None, State=None, comments=None, labeledURI=None, gpgKey=None, timeZone=None, nsfDemographics=None,):
     self.userModelVersion = userModelVersion
     self.airavataInternalUserId = airavataInternalUserId
     self.userId = userId
+    self.gatewayId = gatewayId
     self.emails = emails
     self.userName = userName
     self.orcidId = orcidId
@@ -459,6 +462,11 @@ class UserProfile:
         else:
           iprot.skip(ftype)
       elif fid == 4:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.LIST:
           self.emails = []
           (_etype24, _size21) = iprot.readListBegin()
@@ -468,17 +476,17 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 5:
+      elif fid == 6:
         if ftype == TType.STRING:
           self.userName = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 6:
+      elif fid == 7:
         if ftype == TType.STRING:
           self.orcidId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 7:
+      elif fid == 8:
         if ftype == TType.LIST:
           self.phones = []
           (_etype30, _size27) = iprot.readListBegin()
@@ -488,12 +496,12 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 8:
+      elif fid == 9:
         if ftype == TType.STRING:
           self.country = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 9:
+      elif fid == 10:
         if ftype == TType.LIST:
           self.nationality = []
           (_etype36, _size33) = iprot.readListBegin()
@@ -503,42 +511,42 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 10:
+      elif fid == 11:
         if ftype == TType.STRING:
           self.homeOrganization = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 11:
+      elif fid == 12:
         if ftype == TType.STRING:
           self.orginationAffiliation = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 12:
+      elif fid == 13:
         if ftype == TType.STRING:
           self.creationTime = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 13:
+      elif fid == 14:
         if ftype == TType.STRING:
           self.lastAccessTime = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 14:
+      elif fid == 15:
         if ftype == TType.STRING:
           self.validUntil = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 15:
+      elif fid == 16:
         if ftype == TType.I32:
           self.State = iprot.readI32()
         else:
           iprot.skip(ftype)
-      elif fid == 16:
+      elif fid == 17:
         if ftype == TType.STRING:
           self.comments = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 17:
+      elif fid == 18:
         if ftype == TType.LIST:
           self.labeledURI = []
           (_etype42, _size39) = iprot.readListBegin()
@@ -548,17 +556,17 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 18:
+      elif fid == 19:
         if ftype == TType.STRING:
           self.gpgKey = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 19:
+      elif fid == 20:
         if ftype == TType.STRING:
           self.timeZone = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 20:
+      elif fid == 21:
         if ftype == TType.STRUCT:
           self.nsfDemographics = NSFDemographics()
           self.nsfDemographics.read(iprot)
@@ -586,84 +594,88 @@ class UserProfile:
       oprot.writeFieldBegin('userId', TType.STRING, 3)
       oprot.writeString(self.userId)
       oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
     if self.emails is not None:
-      oprot.writeFieldBegin('emails', TType.LIST, 4)
+      oprot.writeFieldBegin('emails', TType.LIST, 5)
       oprot.writeListBegin(TType.STRING, len(self.emails))
       for iter45 in self.emails:
         oprot.writeString(iter45)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.userName is not None:
-      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeFieldBegin('userName', TType.STRING, 6)
       oprot.writeString(self.userName)
       oprot.writeFieldEnd()
     if self.orcidId is not None:
-      oprot.writeFieldBegin('orcidId', TType.STRING, 6)
+      oprot.writeFieldBegin('orcidId', TType.STRING, 7)
       oprot.writeString(self.orcidId)
       oprot.writeFieldEnd()
     if self.phones is not None:
-      oprot.writeFieldBegin('phones', TType.LIST, 7)
+      oprot.writeFieldBegin('phones', TType.LIST, 8)
       oprot.writeListBegin(TType.STRING, len(self.phones))
       for iter46 in self.phones:
         oprot.writeString(iter46)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.country is not None:
-      oprot.writeFieldBegin('country', TType.STRING, 8)
+      oprot.writeFieldBegin('country', TType.STRING, 9)
       oprot.writeString(self.country)
       oprot.writeFieldEnd()
     if self.nationality is not None:
-      oprot.writeFieldBegin('nationality', TType.LIST, 9)
+      oprot.writeFieldBegin('nationality', TType.LIST, 10)
       oprot.writeListBegin(TType.STRING, len(self.nationality))
       for iter47 in self.nationality:
         oprot.writeString(iter47)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.homeOrganization is not None:
-      oprot.writeFieldBegin('homeOrganization', TType.STRING, 10)
+      oprot.writeFieldBegin('homeOrganization', TType.STRING, 11)
       oprot.writeString(self.homeOrganization)
       oprot.writeFieldEnd()
     if self.orginationAffiliation is not None:
-      oprot.writeFieldBegin('orginationAffiliation', TType.STRING, 11)
+      oprot.writeFieldBegin('orginationAffiliation', TType.STRING, 12)
       oprot.writeString(self.orginationAffiliation)
       oprot.writeFieldEnd()
     if self.creationTime is not None:
-      oprot.writeFieldBegin('creationTime', TType.STRING, 12)
+      oprot.writeFieldBegin('creationTime', TType.STRING, 13)
       oprot.writeString(self.creationTime)
       oprot.writeFieldEnd()
     if self.lastAccessTime is not None:
-      oprot.writeFieldBegin('lastAccessTime', TType.STRING, 13)
+      oprot.writeFieldBegin('lastAccessTime', TType.STRING, 14)
       oprot.writeString(self.lastAccessTime)
       oprot.writeFieldEnd()
     if self.validUntil is not None:
-      oprot.writeFieldBegin('validUntil', TType.STRING, 14)
+      oprot.writeFieldBegin('validUntil', TType.STRING, 15)
       oprot.writeString(self.validUntil)
       oprot.writeFieldEnd()
     if self.State is not None:
-      oprot.writeFieldBegin('State', TType.I32, 15)
+      oprot.writeFieldBegin('State', TType.I32, 16)
       oprot.writeI32(self.State)
       oprot.writeFieldEnd()
     if self.comments is not None:
-      oprot.writeFieldBegin('comments', TType.STRING, 16)
+      oprot.writeFieldBegin('comments', TType.STRING, 17)
       oprot.writeString(self.comments)
       oprot.writeFieldEnd()
     if self.labeledURI is not None:
-      oprot.writeFieldBegin('labeledURI', TType.LIST, 17)
+      oprot.writeFieldBegin('labeledURI', TType.LIST, 18)
       oprot.writeListBegin(TType.STRING, len(self.labeledURI))
       for iter48 in self.labeledURI:
         oprot.writeString(iter48)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.gpgKey is not None:
-      oprot.writeFieldBegin('gpgKey', TType.STRING, 18)
+      oprot.writeFieldBegin('gpgKey', TType.STRING, 19)
       oprot.writeString(self.gpgKey)
       oprot.writeFieldEnd()
     if self.timeZone is not None:
-      oprot.writeFieldBegin('timeZone', TType.STRING, 19)
+      oprot.writeFieldBegin('timeZone', TType.STRING, 20)
       oprot.writeString(self.timeZone)
       oprot.writeFieldEnd()
     if self.nsfDemographics is not None:
-      oprot.writeFieldBegin('nsfDemographics', TType.STRUCT, 20)
+      oprot.writeFieldBegin('nsfDemographics', TType.STRUCT, 21)
       self.nsfDemographics.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -676,6 +688,8 @@ class UserProfile:
       raise TProtocol.TProtocolException(message='Required field airavataInternalUserId is unset!')
     if self.userId is None:
       raise TProtocol.TProtocolException(message='Required field userId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
     if self.emails is None:
       raise TProtocol.TProtocolException(message='Required field emails is unset!')
     if self.creationTime is None:
@@ -694,6 +708,7 @@ class UserProfile:
     value = (value * 31) ^ hash(self.userModelVersion)
     value = (value * 31) ^ hash(self.airavataInternalUserId)
     value = (value * 31) ^ hash(self.userId)
+    value = (value * 31) ^ hash(self.gatewayId)
     value = (value * 31) ^ hash(self.emails)
     value = (value * 31) ^ hash(self.userName)
     value = (value * 31) ^ hash(self.orcidId)

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/pom.xml b/modules/registry-refactoring/pom.xml
index b794349..52db507 100644
--- a/modules/registry-refactoring/pom.xml
+++ b/modules/registry-refactoring/pom.xml
@@ -117,7 +117,7 @@
                 <configuration>
                     <failIfNoTests>false</failIfNoTests>
                     <!--<skipTests>${skipTests}</skipTests>-->
-                    <skipTests>true</skipTests>
+                    <skipTests>false</skipTests>
                     <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
index 5b9d15a..796253f 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
@@ -43,8 +43,9 @@ public class ExperimentEntity {
     private List<ExperimentInputEntity> experimentInputs;
     private List<ExperimentOutputEntity> experimentOutputs;
     private List<ExperimentErrorEntity> experimentErrors;
+    private List<ExperimentStatusEntity> experimentStatuses;
 
-    private UserConfigurationEntity userConfiguration;
+    private UserConfigurationEntity userConfigurationData;
 
     @Id
     @Column(name = "EXPERIMENT_ID")
@@ -166,12 +167,12 @@ public class ExperimentEntity {
     }
 
     @OneToOne(targetEntity = UserConfigurationEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public UserConfigurationEntity getUserConfiguration() {
-        return userConfiguration;
+    public UserConfigurationEntity getUserConfigurationData() {
+        return userConfigurationData;
     }
 
-    public void setUserConfiguration(UserConfigurationEntity userConfiguration) {
-        this.userConfiguration = userConfiguration;
+    public void setUserConfigurationData(UserConfigurationEntity userConfiguration) {
+        this.userConfigurationData = userConfiguration;
     }
 
     @OneToMany(targetEntity = ExperimentInputEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
@@ -200,4 +201,13 @@ public class ExperimentEntity {
     public void setExperimentErrors(List<ExperimentErrorEntity> experimentErrors) {
         this.experimentErrors = experimentErrors;
     }
+
+    @OneToMany(targetEntity = ExperimentStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ExperimentStatusEntity> getExperimentStatuses() {
+        return experimentStatuses;
+    }
+
+    public void setExperimentStatuses(List<ExperimentStatusEntity> experimentStatuses) {
+        this.experimentStatuses = experimentStatuses;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
index 45c47ad..374a156 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
@@ -25,6 +25,7 @@ import java.util.List;
 
 @Entity
 @Table(name = "EXPERIMENT_ERROR")
+@IdClass(ExperimentErrorPK.class)
 public class ExperimentErrorEntity {
     private String errorId;
     private String experimentId;
@@ -46,6 +47,7 @@ public class ExperimentErrorEntity {
         this.errorId = errorId;
     }
 
+    @Id
     @Column(name = "EXPERIMENT_ID")
     public String getExperimentId() {
         return experimentId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
new file mode 100644
index 0000000..add5616
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ExperimentErrorPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentErrorPK.class);
+    private String errorId;
+    private String experimentId;
+
+    @Column(name = "ERROR_ID")
+    @Id
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "EXPERIMENT_ID")
+    @Id
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ExperimentErrorPK that = (ExperimentErrorPK) o;
+
+        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
+        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
+        result = 31 * result + (getExperimentId() != null ? getExperimentId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
index eeca021..7850c17 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
@@ -24,6 +24,7 @@ import javax.persistence.*;
 
 @Entity
 @Table(name = "EXPERIMENT_INPUT")
+@IdClass(ExperimentInputPK.class)
 public class ExperimentInputEntity {
     private String experimentId;
     public String name;
@@ -51,6 +52,7 @@ public class ExperimentInputEntity {
         this.experimentId = experimentId;
     }
 
+    @Id
     @Column(name = "INPUT_NAME")
     public String getName() {
         return name;
@@ -105,6 +107,7 @@ public class ExperimentInputEntity {
         this.userFriendlyDescription = userFriendlyDescription;
     }
 
+    @Lob
     @Column(name = "METADATA")
     public String getMetaData() {
         return metaData;
@@ -128,7 +131,7 @@ public class ExperimentInputEntity {
         return isRequired;
     }
 
-    public void setIsRequired(boolean isRequired) {
+    public void setRequired(boolean isRequired) {
         this.isRequired = isRequired;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
new file mode 100644
index 0000000..3479878
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ExperimentInputPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentInputPK.class);
+    private String experimentId;
+    private String name;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ExperimentInputPK that = (ExperimentInputPK) o;
+
+        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getExperimentId() != null ? getExperimentId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
index 9cb2702..891cf79 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
@@ -20,13 +20,11 @@
 */
 package org.apache.airavata.registry.core.entities.expcatalog;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 @Entity
 @Table(name = "EXPERIMENT_OUTPUT")
+@IdClass(ExperimentOutputPK.class)
 public class ExperimentOutputEntity {
     private String experimentId;
     public String name;
@@ -41,6 +39,9 @@ public class ExperimentOutputEntity {
     public boolean outputStreaming;
     public String storageResourceId;
 
+    private ExperimentEntity experiment;
+
+
     @Id
     @Column(name = "EXPERIMENT_ID")
     public String getExperimentId() {
@@ -51,6 +52,7 @@ public class ExperimentOutputEntity {
         this.experimentId = experimentId;
     }
 
+    @Id
     @Column(name = "OUTPUT_NAME")
     public String getName() {
         return name;
@@ -92,7 +94,7 @@ public class ExperimentOutputEntity {
         return isRequired;
     }
 
-    public void setIsRequired(boolean isRequired) {
+    public void setRequired(boolean isRequired) {
         this.isRequired = isRequired;
     }
 
@@ -150,4 +152,14 @@ public class ExperimentOutputEntity {
     public void setStorageResourceId(String storageResourceId) {
         this.storageResourceId = storageResourceId;
     }
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
new file mode 100644
index 0000000..da2864c
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ExperimentOutputPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentOutputPK.class);
+    private String experimentId;
+    private String name;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ExperimentOutputPK that = (ExperimentOutputPK) o;
+
+        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getExperimentId() != null ? getExperimentId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
new file mode 100644
index 0000000..48b822f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "EXPERIMENT_STATUS")
+@IdClass(ExperimentStatusPK.class)
+public class ExperimentStatusEntity {
+    private String experimentId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
new file mode 100644
index 0000000..4c52ec6
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ExperimentStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentStatusPK.class);
+    private String state;
+    private String experimentId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ExperimentStatusPK that = (ExperimentStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getExperimentId() != null ? getExperimentId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
index 06e3b37..7d27251 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/UserConfigurationEntity.java
@@ -23,7 +23,7 @@ package org.apache.airavata.registry.core.entities.expcatalog;
 import javax.persistence.*;
 
 @Entity
-@Table(name = "USER_CONFIGURATION_ENTITY")
+@Table(name = "USER_CONFIGURATION")
 public class UserConfigurationEntity {
     private String experimentId;
     private boolean airavataAutoSchedule;

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
new file mode 100644
index 0000000..b20650d
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -0,0 +1,72 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.registry.core.repositories.expcatalog;
+
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
+import org.apache.airavata.registry.core.repositories.AbstractRepository;
+import org.apache.airavata.registry.core.utils.JPAUtils;
+import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
+import org.dozer.Mapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+public class ExperimentRepository extends AbstractRepository<ExperimentModel, ExperimentEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentRepository.class);
+
+    public ExperimentRepository(Class<ExperimentModel> thriftGenericClass, Class<ExperimentEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+
+    @Override
+    public ExperimentModel create(ExperimentModel experiment){
+        return update(experiment);
+    }
+
+    @Override
+    public ExperimentModel update(ExperimentModel experiment){
+        String experimentId = experiment.getExperimentId();
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        ExperimentEntity entity = mapper.map(experiment, ExperimentEntity.class);
+
+        if(entity.getUserConfigurationData() != null)
+            entity.getUserConfigurationData().setExperimentId(experimentId);
+        if(entity.getExperimentInputs() != null)
+            entity.getExperimentInputs().forEach(expIn->expIn.setExperimentId(experimentId));
+        if(entity.getExperimentOutputs() != null)
+            entity.getExperimentOutputs().forEach(expOut->expOut.setExperimentId(experimentId));
+        if(entity.getExperimentErrors() != null)
+            entity.getExperimentErrors().forEach(expErr->expErr.setExperimentId(experimentId));
+        if(entity.getExperimentStatuses() != null)
+            entity.getExperimentStatuses().forEach(expStatus->expStatus.setExperimentId(experimentId));
+
+        ExperimentEntity persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
+        return mapper.map(persistedCopy, ExperimentModel.class);
+    }
+
+    @Override
+    public List<ExperimentModel> select(String criteria, int offset, int limit){
+        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
+                " ExperimentSummaryRepository");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
deleted file mode 100644
index 62d0976..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRespository.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.repositories.expcatalog;
-
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity;
-import org.apache.airavata.registry.core.repositories.AbstractRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-public class ExperimentRespository extends AbstractRepository<ExperimentModel, ExperimentEntity, String> {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentRespository.class);
-
-    public ExperimentRespository(Class<ExperimentModel> thriftGenericClass, Class<ExperimentEntity> dbEntityGenericClass) {
-        super(thriftGenericClass, dbEntityGenericClass);
-    }
-
-    @Override
-    public List<ExperimentModel> select(String criteria, int offset, int limit){
-        throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" +
-                " ExperimentSummaryRepository");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
index 8c6bddb..f7d72f3 100644
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -27,7 +27,13 @@
         <class>org.apache.airavata.registry.core.entities.workspacecatalog.NSFDemographicsEntity</class>
         <class>org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity</class>
         <class>org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ComputeResourceSchedulingEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentErrorEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentInputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentOutputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentStatusEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationEntity</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
index 95b7c54..4d401a3 100644
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -11,12 +11,12 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT(
     EXECUTION_ID VARCHAR (255),
     GATEWAY_EXECUTION_ID VARCHAR (255),
     GATEWAY_INSTANCE_ID VARCHAR (255),
-    ENABLE_EMAIL_NOTIFICATION TINYINT,
+    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
     PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID),
-    FOREIGN KEY (USER_ID) REFERENCES USER_PROFILE(USER_ID)
-)
+    FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE,
+    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
+    FOREIGN KEY (USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
+);
 
 CREATE TABLE IF NOT EXISTS EXPERIMENT_EMAIL (
     EXPERIMENT_ID VARCHAR (255),
@@ -27,16 +27,16 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_EMAIL (
 
 CREATE TABLE IF NOT EXISTS USER_CONFIGURATION(
     EXPERIMENT_ID VARCHAR (255),
-    AIRAVATA_AUTO_SCHEDULE TINYINT,
-    OVERRIDE_MANUAL_SCHEDULED_PARAMS TINYINT,
-    THROTTLE_RESOURCE TINYINT,
+    AIRAVATA_AUTO_SCHEDULE TINYINT(1),
+    OVERRIDE_MANUAL_SCHEDULED_PARAMS TINYINT(1),
+    THROTTLE_RESOURCE TINYINT(1),
     USER_DN VARCHAR (255),
-    GENERATE_CERT TINYINT,
+    GENERATE_CERT TINYINT(1),
     STORAGE_ID VARCHAR (255),
     EXPERIMENT_DATA_DIR VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)
+);
 
 CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_SCHEDULING(
     EXPERIMENT_ID VARCHAR (255),
@@ -53,8 +53,8 @@ CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_SCHEDULING(
     OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
     OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES USER_CONFIGURATION(EXPERIMENT_ID)
-)
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES USER_CONFIGURATION(EXPERIMENT_ID) ON DELETE CASCADE
+);
 
 CREATE TABLE IF NOT EXISTS EXPERIMENT_INPUT(
     EXPERIMENT_ID VARCHAR (255),
@@ -62,34 +62,34 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_INPUT(
     INPUT_VALUE VARCHAR (255),
     INPUT_TYPE VARCHAR (255),
     APPLICATION_ARGUMENT VARCHAR (255),
-    STANDARD_INPUT TINYINT,
+    STANDARD_INPUT TINYINT(1),
     USER_FRIENDLY_DESCRIPTION VARCHAR (255),
     METADATA VARCHAR (4096),
     INPUT_ORDER INT,
-    REQUIRED TINYINT,
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT,
-    DATA_STAGED TINYINT,
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_STAGED TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID,INPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
-)
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
 
 CREATE TABLE IF NOT EXISTS EXPERIMENT_OUTPUT(
     EXPERIMENT_ID VARCHAR (255),
     OUTPUT_NAME VARCHAR (255),
     OUTPUT_VALUE VARCHAR (255),
     OUTPUT_TYPE VARCHAR (255),
-    APPLICATION_ARGUMENT (255),
-    REQUIRED TINYINT,
-    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT,
-    DATA_MOVEMENT TINYINT,
+    APPLICATION_ARGUMENT VARCHAR (255),
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_MOVEMENT TINYINT(1),
     LOCATION VARCHAR (255),
     SEARCH_QUERY VARCHAR (255),
-    OUTPUT_STREAMING TINYINT,
+    OUTPUT_STREAMING TINYINT(1),
     STORAGE_RESOURCE_ID VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID,OUTPUT_NAME),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
-)
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
 
 CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR(
     ERROR_ID VARCHAR (255),
@@ -98,13 +98,22 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR(
     ACTUAL_ERROR_MESSAGE VARCHAR (255),
     USER_FRIENDLY_MESSAGE VARCHAR (255),
     TRANSIENT_OR_PERSISTENT TINYINT,
-    PRIMARY KEY (ERROR_ID),
-    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID)
-)
+    PRIMARY KEY (ERROR_ID, EXPERIMENT_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
 
 CREATE TABLE IF NOT EXISTS EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID(
     ERROR_ID VARCHAR (255),
     ROOT_CAUSE_ERROR_ID VARCHAR (255),
     PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
-    FOREIGN KEY(ERROR_ID) REFERENCES EXPERIMENT_ERROR(ERROR_ID)
-)
\ No newline at end of file
+    FOREIGN KEY(ERROR_ID) REFERENCES EXPERIMENT_ERROR(ERROR_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS EXPERIMENT_STATUS(
+    EXPERIMENT_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (EXPERIMENT_ID, STATE),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/3ce49b9a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
index 4ea7cd2..8b87bc2 100644
--- a/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/workspace_catalog.sql
@@ -53,7 +53,7 @@ CREATE TABLE IF NOT EXISTS USER_PROFILE (
     GPG_KEY VARCHAR (8192),
     TIME_ZONE VARCHAR (255),
     PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID)
+    FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS USER_PROFILE_EMAIL (
@@ -121,5 +121,5 @@ CREATE TABLE IF NOT EXISTS PROJECT(
     CREATION_TIME BIGINT,
     PRIMARY KEY (PROJECT_ID),
     FOREIGN KEY(OWNER) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY(GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID)
+    FOREIGN KEY(GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
 );
\ No newline at end of file


[31/48] airavata git commit: adding experiment catalog new database models

Posted by la...@apache.org.
adding experiment catalog new database models


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 570832d1c8c76147defe510e09e1a2be83f7103b
Parents: 2b3dec8 b46fd51
Author: scnakandala <su...@gmail.com>
Authored: Wed Aug 31 15:13:53 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Aug 31 15:13:53 2016 -0400

----------------------------------------------------------------------
 .../resources/lib/airavata/job_model_types.cpp  |  86 +--
 .../resources/lib/airavata/job_model_types.h    |   4 +-
 .../lib/airavata/process_model_types.cpp        | 260 ++++++----
 .../lib/airavata/process_model_types.h          |  20 +-
 .../resources/lib/airavata/task_model_types.cpp | 242 +++++----
 .../resources/lib/airavata/task_model_types.h   |   8 +-
 .../lib/airavata/user_profile_model_types.cpp   |  89 ++--
 .../lib/airavata/user_profile_model_types.h     |   7 +-
 .../lib/Airavata/Model/Process/Types.php        | 180 ++++---
 .../resources/lib/Airavata/Model/Task/Types.php | 102 +++-
 .../resources/lib/Airavata/Model/User/Types.php | 121 +++--
 .../resources/lib/Airavata/Model/job/Types.php  |  41 +-
 .../lib/apache/airavata/model/job/ttypes.py     |  20 +-
 .../lib/apache/airavata/model/process/ttypes.py | 114 ++--
 .../lib/apache/airavata/model/task/ttypes.py    |  54 +-
 .../lib/apache/airavata/model/user/ttypes.py    | 117 +++--
 .../org/apache/airavata/model/job/JobModel.java | 142 +++--
 .../airavata/model/process/ProcessModel.java    | 519 +++++++++++--------
 .../apache/airavata/model/task/TaskModel.java   | 302 +++++++----
 .../apache/airavata/model/user/UserProfile.java |  24 +-
 .../model/util/ExperimentModelUtil.java         |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |  11 +-
 .../gfac/core/context/ProcessContext.java       |  21 +-
 .../airavata/gfac/core/context/TaskContext.java |  17 +-
 .../org/apache/airavata/gfac/impl/Factory.java  |   4 +-
 .../airavata/gfac/impl/GFacEngineImpl.java      |  25 +-
 .../airavata/gfac/impl/task/ArchiveTask.java    |   5 +-
 .../gfac/impl/task/BESJobSubmissionTask.java    |  10 +-
 .../airavata/gfac/impl/task/DataStageTask.java  |   8 +-
 .../gfac/impl/task/DataStreamingTask.java       |   2 +-
 .../impl/task/DefaultJobSubmissionTask.java     |  26 +-
 .../gfac/impl/task/EnvironmentSetupTask.java    |   3 +-
 .../gfac/impl/task/ForkJobSubmissionTask.java   |  13 +-
 .../gfac/impl/task/SCPDataStageTask.java        |  16 +-
 .../gfac/impl/task/utils/StreamData.java        |   8 +-
 .../task/utils/bes/ApplicationProcessor.java    |   2 +-
 .../impl/task/utils/bes/ResourceProcessor.java  |   2 +-
 .../gfac/monitor/email/EmailBasedMonitor.java   |   4 +-
 .../core/utils/OrchestratorUtils.java           |   4 +-
 .../validator/impl/BatchQueueValidator.java     |   2 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |  14 +-
 .../server/OrchestratorServerHandler.java       |   6 +-
 modules/registry-refactoring/pom.xml            |   2 +-
 .../org/apache/airavata/registry/core/Main.java |  75 ---
 .../ComputeResourceSchedulingEntity.java        |   2 +-
 .../entities/expcatalog/ExperimentEntity.java   |  35 +-
 .../expcatalog/ExperimentErrorEntity.java       |   4 +-
 .../entities/expcatalog/ExperimentErrorPK.java  |  75 +++
 .../expcatalog/ExperimentInputEntity.java       |   7 +-
 .../entities/expcatalog/ExperimentInputPK.java  |  74 +++
 .../expcatalog/ExperimentOutputEntity.java      |  24 +-
 .../entities/expcatalog/ExperimentOutputPK.java |  74 +++
 .../expcatalog/ExperimentStatusEntity.java      |  83 +++
 .../entities/expcatalog/ExperimentStatusPK.java |  74 +++
 .../core/entities/expcatalog/JobEntity.java     | 165 ++++++
 .../entities/expcatalog/JobStatusEntity.java    |  83 +++
 .../core/entities/expcatalog/JobStatusPK.java   |  74 +++
 .../core/entities/expcatalog/ProcessEntity.java | 276 ++++++++++
 .../entities/expcatalog/ProcessErrorEntity.java | 118 +++++
 .../entities/expcatalog/ProcessErrorPK.java     |  75 +++
 .../entities/expcatalog/ProcessInputEntity.java | 174 +++++++
 .../entities/expcatalog/ProcessInputPK.java     |  74 +++
 .../expcatalog/ProcessOutputEntity.java         | 165 ++++++
 .../entities/expcatalog/ProcessOutputPK.java    |  70 +++
 .../ProcessResourceSchedulingEntity.java        | 170 ++++++
 .../expcatalog/ProcessStatusEntity.java         |  83 +++
 .../entities/expcatalog/ProcessStatusPK.java    |  74 +++
 .../core/entities/expcatalog/TaskEntity.java    | 147 ++++++
 .../entities/expcatalog/TaskErrorEntity.java    | 118 +++++
 .../core/entities/expcatalog/TaskErrorPK.java   |  75 +++
 .../entities/expcatalog/TaskStatusEntity.java   |  83 +++
 .../core/entities/expcatalog/TaskStatusPK.java  |  74 +++
 .../expcatalog/UserConfigurationEntity.java     |   2 +-
 .../workspacecatalog/GatewayEntity.java         |   2 +-
 .../workspacecatalog/NSFDemographicsEntity.java |   2 +-
 .../workspacecatalog/NotificationEntity.java    |   2 +-
 .../workspacecatalog/ProjectEntity.java         |   2 +-
 .../workspacecatalog/UserProfileEntity.java     |   2 +-
 .../expcatalog/ExperimentRepository.java        | 101 ++++
 .../expcatalog/ExperimentRespository.java       |  43 --
 .../src/main/resources/META-INF/persistence.xml |  17 +
 .../src/main/resources/experiment_catalog.sql   | 257 +++++++--
 .../src/main/resources/workspace_catalog.sql    |  48 +-
 .../core/repositories/RepositoryTest.java       |  40 ++
 .../catalog/impl/ExperimentRegistry.java        |  86 +--
 .../utils/ThriftDataModelConversion.java        |  22 +-
 .../service/handler/RegistryServerHandler.java  |   2 +-
 .../experiment-catalog-models/job_model.thrift  |   2 +-
 .../process_model.thrift                        |   6 +-
 .../experiment-catalog-models/task_model.thrift |   4 +-
 .../user-group-models/user_profile_model.thrift |  35 +-
 91 files changed, 4628 insertions(+), 1331 deletions(-)
----------------------------------------------------------------------



[32/48] airavata git commit: making skip tests true in refactoring module

Posted by la...@apache.org.
making skip tests true in refactoring module


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 6b9b4413d8b246044299dc3200ec6dfb46ea6512
Parents: 570832d
Author: scnakandala <su...@gmail.com>
Authored: Wed Aug 31 15:46:29 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Aug 31 15:46:29 2016 -0400

----------------------------------------------------------------------
 modules/registry-refactoring/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6b9b4413/modules/registry-refactoring/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/pom.xml b/modules/registry-refactoring/pom.xml
index 52db507..b794349 100644
--- a/modules/registry-refactoring/pom.xml
+++ b/modules/registry-refactoring/pom.xml
@@ -117,7 +117,7 @@
                 <configuration>
                     <failIfNoTests>false</failIfNoTests>
                     <!--<skipTests>${skipTests}</skipTests>-->
-                    <skipTests>false</skipTests>
+                    <skipTests>true</skipTests>
                     <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                 </configuration>
             </plugin>


[48/48] airavata git commit: Add mdc to orchestrator

Posted by la...@apache.org.
Add mdc to orchestrator


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 6786f8ee0eb48ecd3b6e0984b6ff1ddab4f2404d
Parents: 091546f
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Fri Sep 16 09:11:04 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Fri Sep 16 09:11:04 2016 -0700

----------------------------------------------------------------------
 .../airavata/common/logging/MDCConstants.java   | 28 ++++++++++++++++++++
 .../server/OrchestratorServerHandler.java       | 28 +++++++++++++++-----
 2 files changed, 49 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6786f8ee/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java
new file mode 100644
index 0000000..34e1911
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java
@@ -0,0 +1,28 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.logging;
+
+
+public class MDCConstants {
+    public static final String EXPERIMENT_ID = "experiment_id";
+    public static final String GATEWAY_ID = "gateway_id";
+    public static final String EXPERIMENT_NAME = "experiment_name";
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6786f8ee/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 725a0b1..2ac0fd1 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -23,6 +23,7 @@ package org.apache.airavata.orchestrator.server;
 
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.logging.MDCConstants;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
@@ -62,6 +63,7 @@ import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 import org.apache.curator.utils.ZKPaths;
+import org.apache.log4j.MDC;
 import org.apache.thrift.TBase;
 import org.apache.thrift.TException;
 import org.apache.zookeeper.data.Stat;
@@ -591,7 +593,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 
 		@Override
 		public void onMessage(MessageContext messageContext) {
-
+			MDC.put(MDCConstants.GATEWAY_ID, messageContext.getGatewayId());
 			switch (messageContext.getType()) {
 				case EXPERIMENT:
 					launchExperiment(messageContext);
@@ -604,6 +606,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 					log.error("Orchestrator got un-support message type : " + messageContext.getType());
 					break;
 			}
+			MDC.clear();
 		}
 
 		private void cancelExperiment(MessageContext messageContext) {
@@ -611,6 +614,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 				byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
 				ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent();
 				ThriftUtils.createThriftFromBytes(bytes, expEvent);
+				log.info("Cancelling experiment with experimentId: %s gateway Id: %s", expEvent.getExperimentId(), expEvent.getGatewayId());
 				terminateExperiment(expEvent.getExperimentId(), expEvent.getGatewayId());
 			} catch (TException e) {
 				log.error("Experiment cancellation failed due to Thrift conversion error", e);
@@ -622,13 +626,16 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 	}
 
 	private void launchExperiment(MessageContext messageContext) {
+		ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent();
 		try {
-            byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
-            ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent();
-            ThriftUtils.createThriftFromBytes(bytes, expEvent);
-            if (messageContext.isRedeliver()) {
+			byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent());
+			ThriftUtils.createThriftFromBytes(bytes, expEvent);
+			MDC.put(MDCConstants.EXPERIMENT_ID, expEvent.getExperimentId());
+			log.info("Launching experiment with experimentId: %s gateway Id: %s", expEvent.getExperimentId(), expEvent.getGatewayId());
+			if (messageContext.isRedeliver()) {
 				ExperimentModel experimentModel = (ExperimentModel) experimentCatalog.
 						get(ExperimentCatalogModelType.EXPERIMENT, expEvent.getExperimentId());
+				MDC.put(MDCConstants.EXPERIMENT_NAME, experimentModel.getExperimentName());
 				if (experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED) {
 					launchExperiment(expEvent.getExperimentId(), expEvent.getGatewayId());
 				}
@@ -636,11 +643,18 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
                 launchExperiment(expEvent.getExperimentId(), expEvent.getGatewayId());
             }
 		} catch (TException e) {
-            log.error("Experiment launch failed due to Thrift conversion error", e);
+			String logMessage =  expEvent.getExperimentId() != null && expEvent.getGatewayId() != null ?
+					String.format("Experiment launch failed due to Thrift conversion error, experimentId: %s, gatewayId: %s",
+					expEvent.getExperimentId(), expEvent.getGatewayId()): "Experiment launch failed due to Thrift conversion error";
+            log.error(logMessage,  e);
 		} catch (RegistryException e) {
-			log.error("Experiment launch failed due to registry access issue", e);
+			String logMessage =  expEvent.getExperimentId() != null && expEvent.getGatewayId() != null ?
+					String.format("Experiment launch failed due to registry access issue, experimentId: %s, gatewayId: %s",
+					expEvent.getExperimentId(), expEvent.getGatewayId()): "Experiment launch failed due to registry access issue";
+			log.error(logMessage, e);
 		}finally {
 			experimentSubscriber.sendAck(messageContext.getDeliveryTag());
+			MDC.clear();
 		}
 	}
 


[08/48] airavata git commit: making experiment status a list in ExperimentModel

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
index 4c97ae5..7b01741 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
@@ -87,7 +87,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
   private static final org.apache.thrift.protocol.TField USER_CONFIGURATION_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("userConfigurationData", org.apache.thrift.protocol.TType.STRUCT, (short)14);
   private static final org.apache.thrift.protocol.TField EXPERIMENT_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentInputs", org.apache.thrift.protocol.TType.LIST, (short)15);
   private static final org.apache.thrift.protocol.TField EXPERIMENT_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentOutputs", org.apache.thrift.protocol.TType.LIST, (short)16);
-  private static final org.apache.thrift.protocol.TField EXPERIMENT_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentStatus", org.apache.thrift.protocol.TType.STRUCT, (short)17);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentStatus", org.apache.thrift.protocol.TType.LIST, (short)17);
   private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = new org.apache.thrift.protocol.TField("errors", org.apache.thrift.protocol.TType.LIST, (short)18);
   private static final org.apache.thrift.protocol.TField PROCESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("processes", org.apache.thrift.protocol.TType.LIST, (short)19);
 
@@ -113,7 +113,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
   private UserConfigurationDataModel userConfigurationData; // optional
   private List<org.apache.airavata.model.application.io.InputDataObjectType> experimentInputs; // optional
   private List<org.apache.airavata.model.application.io.OutputDataObjectType> experimentOutputs; // optional
-  private org.apache.airavata.model.status.ExperimentStatus experimentStatus; // optional
+  private List<org.apache.airavata.model.status.ExperimentStatus> experimentStatus; // optional
   private List<org.apache.airavata.model.commons.ErrorModel> errors; // optional
   private List<org.apache.airavata.model.process.ProcessModel> processes; // optional
 
@@ -277,7 +277,8 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
     tmpMap.put(_Fields.EXPERIMENT_STATUS, new org.apache.thrift.meta_data.FieldMetaData("experimentStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ExperimentStatus.class)));
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ExperimentStatus.class))));
     tmpMap.put(_Fields.ERRORS, new org.apache.thrift.meta_data.FieldMetaData("errors", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class))));
@@ -371,7 +372,11 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       this.experimentOutputs = __this__experimentOutputs;
     }
     if (other.isSetExperimentStatus()) {
-      this.experimentStatus = new org.apache.airavata.model.status.ExperimentStatus(other.experimentStatus);
+      List<org.apache.airavata.model.status.ExperimentStatus> __this__experimentStatus = new ArrayList<org.apache.airavata.model.status.ExperimentStatus>(other.experimentStatus.size());
+      for (org.apache.airavata.model.status.ExperimentStatus other_element : other.experimentStatus) {
+        __this__experimentStatus.add(new org.apache.airavata.model.status.ExperimentStatus(other_element));
+      }
+      this.experimentStatus = __this__experimentStatus;
     }
     if (other.isSetErrors()) {
       List<org.apache.airavata.model.commons.ErrorModel> __this__errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.errors.size());
@@ -839,11 +844,26 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     }
   }
 
-  public org.apache.airavata.model.status.ExperimentStatus getExperimentStatus() {
+  public int getExperimentStatusSize() {
+    return (this.experimentStatus == null) ? 0 : this.experimentStatus.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.status.ExperimentStatus> getExperimentStatusIterator() {
+    return (this.experimentStatus == null) ? null : this.experimentStatus.iterator();
+  }
+
+  public void addToExperimentStatus(org.apache.airavata.model.status.ExperimentStatus elem) {
+    if (this.experimentStatus == null) {
+      this.experimentStatus = new ArrayList<org.apache.airavata.model.status.ExperimentStatus>();
+    }
+    this.experimentStatus.add(elem);
+  }
+
+  public List<org.apache.airavata.model.status.ExperimentStatus> getExperimentStatus() {
     return this.experimentStatus;
   }
 
-  public void setExperimentStatus(org.apache.airavata.model.status.ExperimentStatus experimentStatus) {
+  public void setExperimentStatus(List<org.apache.airavata.model.status.ExperimentStatus> experimentStatus) {
     this.experimentStatus = experimentStatus;
   }
 
@@ -1072,7 +1092,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (value == null) {
         unsetExperimentStatus();
       } else {
-        setExperimentStatus((org.apache.airavata.model.status.ExperimentStatus)value);
+        setExperimentStatus((List<org.apache.airavata.model.status.ExperimentStatus>)value);
       }
       break;
 
@@ -1917,9 +1937,6 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     if (userConfigurationData != null) {
       userConfigurationData.validate();
     }
-    if (experimentStatus != null) {
-      experimentStatus.validate();
-    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -2120,9 +2137,19 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
             }
             break;
           case 17: // EXPERIMENT_STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.experimentStatus = new org.apache.airavata.model.status.ExperimentStatus();
-              struct.experimentStatus.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
+                struct.experimentStatus = new ArrayList<org.apache.airavata.model.status.ExperimentStatus>(_list9.size);
+                org.apache.airavata.model.status.ExperimentStatus _elem10;
+                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
+                {
+                  _elem10 = new org.apache.airavata.model.status.ExperimentStatus();
+                  _elem10.read(iprot);
+                  struct.experimentStatus.add(_elem10);
+                }
+                iprot.readListEnd();
+              }
               struct.setExperimentStatusIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -2131,14 +2158,14 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           case 18: // ERRORS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
-                struct.errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list9.size);
-                org.apache.airavata.model.commons.ErrorModel _elem10;
-                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
+                org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
+                struct.errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list12.size);
+                org.apache.airavata.model.commons.ErrorModel _elem13;
+                for (int _i14 = 0; _i14 < _list12.size; ++_i14)
                 {
-                  _elem10 = new org.apache.airavata.model.commons.ErrorModel();
-                  _elem10.read(iprot);
-                  struct.errors.add(_elem10);
+                  _elem13 = new org.apache.airavata.model.commons.ErrorModel();
+                  _elem13.read(iprot);
+                  struct.errors.add(_elem13);
                 }
                 iprot.readListEnd();
               }
@@ -2150,14 +2177,14 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           case 19: // PROCESSES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
-                struct.processes = new ArrayList<org.apache.airavata.model.process.ProcessModel>(_list12.size);
-                org.apache.airavata.model.process.ProcessModel _elem13;
-                for (int _i14 = 0; _i14 < _list12.size; ++_i14)
+                org.apache.thrift.protocol.TList _list15 = iprot.readListBegin();
+                struct.processes = new ArrayList<org.apache.airavata.model.process.ProcessModel>(_list15.size);
+                org.apache.airavata.model.process.ProcessModel _elem16;
+                for (int _i17 = 0; _i17 < _list15.size; ++_i17)
                 {
-                  _elem13 = new org.apache.airavata.model.process.ProcessModel();
-                  _elem13.read(iprot);
-                  struct.processes.add(_elem13);
+                  _elem16 = new org.apache.airavata.model.process.ProcessModel();
+                  _elem16.read(iprot);
+                  struct.processes.add(_elem16);
                 }
                 iprot.readListEnd();
               }
@@ -2252,9 +2279,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldBegin(EMAIL_ADDRESSES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.emailAddresses.size()));
-            for (String _iter15 : struct.emailAddresses)
+            for (String _iter18 : struct.emailAddresses)
             {
-              oprot.writeString(_iter15);
+              oprot.writeString(_iter18);
             }
             oprot.writeListEnd();
           }
@@ -2273,9 +2300,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldBegin(EXPERIMENT_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.experimentInputs.size()));
-            for (org.apache.airavata.model.application.io.InputDataObjectType _iter16 : struct.experimentInputs)
+            for (org.apache.airavata.model.application.io.InputDataObjectType _iter19 : struct.experimentInputs)
             {
-              _iter16.write(oprot);
+              _iter19.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2287,9 +2314,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldBegin(EXPERIMENT_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.experimentOutputs.size()));
-            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter17 : struct.experimentOutputs)
+            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter20 : struct.experimentOutputs)
             {
-              _iter17.write(oprot);
+              _iter20.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2299,7 +2326,14 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (struct.experimentStatus != null) {
         if (struct.isSetExperimentStatus()) {
           oprot.writeFieldBegin(EXPERIMENT_STATUS_FIELD_DESC);
-          struct.experimentStatus.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.experimentStatus.size()));
+            for (org.apache.airavata.model.status.ExperimentStatus _iter21 : struct.experimentStatus)
+            {
+              _iter21.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -2308,9 +2342,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldBegin(ERRORS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.errors.size()));
-            for (org.apache.airavata.model.commons.ErrorModel _iter18 : struct.errors)
+            for (org.apache.airavata.model.commons.ErrorModel _iter22 : struct.errors)
             {
-              _iter18.write(oprot);
+              _iter22.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2322,9 +2356,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldBegin(PROCESSES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processes.size()));
-            for (org.apache.airavata.model.process.ProcessModel _iter19 : struct.processes)
+            for (org.apache.airavata.model.process.ProcessModel _iter23 : struct.processes)
             {
-              _iter19.write(oprot);
+              _iter23.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2416,9 +2450,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (struct.isSetEmailAddresses()) {
         {
           oprot.writeI32(struct.emailAddresses.size());
-          for (String _iter20 : struct.emailAddresses)
+          for (String _iter24 : struct.emailAddresses)
           {
-            oprot.writeString(_iter20);
+            oprot.writeString(_iter24);
           }
         }
       }
@@ -2428,39 +2462,45 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (struct.isSetExperimentInputs()) {
         {
           oprot.writeI32(struct.experimentInputs.size());
-          for (org.apache.airavata.model.application.io.InputDataObjectType _iter21 : struct.experimentInputs)
+          for (org.apache.airavata.model.application.io.InputDataObjectType _iter25 : struct.experimentInputs)
           {
-            _iter21.write(oprot);
+            _iter25.write(oprot);
           }
         }
       }
       if (struct.isSetExperimentOutputs()) {
         {
           oprot.writeI32(struct.experimentOutputs.size());
-          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter22 : struct.experimentOutputs)
+          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter26 : struct.experimentOutputs)
           {
-            _iter22.write(oprot);
+            _iter26.write(oprot);
           }
         }
       }
       if (struct.isSetExperimentStatus()) {
-        struct.experimentStatus.write(oprot);
+        {
+          oprot.writeI32(struct.experimentStatus.size());
+          for (org.apache.airavata.model.status.ExperimentStatus _iter27 : struct.experimentStatus)
+          {
+            _iter27.write(oprot);
+          }
+        }
       }
       if (struct.isSetErrors()) {
         {
           oprot.writeI32(struct.errors.size());
-          for (org.apache.airavata.model.commons.ErrorModel _iter23 : struct.errors)
+          for (org.apache.airavata.model.commons.ErrorModel _iter28 : struct.errors)
           {
-            _iter23.write(oprot);
+            _iter28.write(oprot);
           }
         }
       }
       if (struct.isSetProcesses()) {
         {
           oprot.writeI32(struct.processes.size());
-          for (org.apache.airavata.model.process.ProcessModel _iter24 : struct.processes)
+          for (org.apache.airavata.model.process.ProcessModel _iter29 : struct.processes)
           {
-            _iter24.write(oprot);
+            _iter29.write(oprot);
           }
         }
       }
@@ -2508,13 +2548,13 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       }
       if (incoming.get(6)) {
         {
-          org.apache.thrift.protocol.TList _list25 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.emailAddresses = new ArrayList<String>(_list25.size);
-          String _elem26;
-          for (int _i27 = 0; _i27 < _list25.size; ++_i27)
+          org.apache.thrift.protocol.TList _list30 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.emailAddresses = new ArrayList<String>(_list30.size);
+          String _elem31;
+          for (int _i32 = 0; _i32 < _list30.size; ++_i32)
           {
-            _elem26 = iprot.readString();
-            struct.emailAddresses.add(_elem26);
+            _elem31 = iprot.readString();
+            struct.emailAddresses.add(_elem31);
           }
         }
         struct.setEmailAddressesIsSet(true);
@@ -2526,61 +2566,70 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       }
       if (incoming.get(8)) {
         {
-          org.apache.thrift.protocol.TList _list28 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.experimentInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list28.size);
-          org.apache.airavata.model.application.io.InputDataObjectType _elem29;
-          for (int _i30 = 0; _i30 < _list28.size; ++_i30)
+          org.apache.thrift.protocol.TList _list33 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.experimentInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list33.size);
+          org.apache.airavata.model.application.io.InputDataObjectType _elem34;
+          for (int _i35 = 0; _i35 < _list33.size; ++_i35)
           {
-            _elem29 = new org.apache.airavata.model.application.io.InputDataObjectType();
-            _elem29.read(iprot);
-            struct.experimentInputs.add(_elem29);
+            _elem34 = new org.apache.airavata.model.application.io.InputDataObjectType();
+            _elem34.read(iprot);
+            struct.experimentInputs.add(_elem34);
           }
         }
         struct.setExperimentInputsIsSet(true);
       }
       if (incoming.get(9)) {
         {
-          org.apache.thrift.protocol.TList _list31 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.experimentOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list31.size);
-          org.apache.airavata.model.application.io.OutputDataObjectType _elem32;
-          for (int _i33 = 0; _i33 < _list31.size; ++_i33)
+          org.apache.thrift.protocol.TList _list36 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.experimentOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list36.size);
+          org.apache.airavata.model.application.io.OutputDataObjectType _elem37;
+          for (int _i38 = 0; _i38 < _list36.size; ++_i38)
           {
-            _elem32 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-            _elem32.read(iprot);
-            struct.experimentOutputs.add(_elem32);
+            _elem37 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+            _elem37.read(iprot);
+            struct.experimentOutputs.add(_elem37);
           }
         }
         struct.setExperimentOutputsIsSet(true);
       }
       if (incoming.get(10)) {
-        struct.experimentStatus = new org.apache.airavata.model.status.ExperimentStatus();
-        struct.experimentStatus.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list39 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.experimentStatus = new ArrayList<org.apache.airavata.model.status.ExperimentStatus>(_list39.size);
+          org.apache.airavata.model.status.ExperimentStatus _elem40;
+          for (int _i41 = 0; _i41 < _list39.size; ++_i41)
+          {
+            _elem40 = new org.apache.airavata.model.status.ExperimentStatus();
+            _elem40.read(iprot);
+            struct.experimentStatus.add(_elem40);
+          }
+        }
         struct.setExperimentStatusIsSet(true);
       }
       if (incoming.get(11)) {
         {
-          org.apache.thrift.protocol.TList _list34 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list34.size);
-          org.apache.airavata.model.commons.ErrorModel _elem35;
-          for (int _i36 = 0; _i36 < _list34.size; ++_i36)
+          org.apache.thrift.protocol.TList _list42 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list42.size);
+          org.apache.airavata.model.commons.ErrorModel _elem43;
+          for (int _i44 = 0; _i44 < _list42.size; ++_i44)
           {
-            _elem35 = new org.apache.airavata.model.commons.ErrorModel();
-            _elem35.read(iprot);
-            struct.errors.add(_elem35);
+            _elem43 = new org.apache.airavata.model.commons.ErrorModel();
+            _elem43.read(iprot);
+            struct.errors.add(_elem43);
           }
         }
         struct.setErrorsIsSet(true);
       }
       if (incoming.get(12)) {
         {
-          org.apache.thrift.protocol.TList _list37 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processes = new ArrayList<org.apache.airavata.model.process.ProcessModel>(_list37.size);
-          org.apache.airavata.model.process.ProcessModel _elem38;
-          for (int _i39 = 0; _i39 < _list37.size; ++_i39)
+          org.apache.thrift.protocol.TList _list45 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processes = new ArrayList<org.apache.airavata.model.process.ProcessModel>(_list45.size);
+          org.apache.airavata.model.process.ProcessModel _elem46;
+          for (int _i47 = 0; _i47 < _list45.size; ++_i47)
           {
-            _elem38 = new org.apache.airavata.model.process.ProcessModel();
-            _elem38.read(iprot);
-            struct.processes.add(_elem38);
+            _elem46 = new org.apache.airavata.model.process.ProcessModel();
+            _elem46.read(iprot);
+            struct.processes.add(_elem46);
           }
         }
         struct.setProcessesIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
index 8bdaa2e..03aa46a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
@@ -1410,14 +1410,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 7: // ALL_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list40 = iprot.readListBegin();
-                struct.allExperiments = new ArrayList<ExperimentSummaryModel>(_list40.size);
-                ExperimentSummaryModel _elem41;
-                for (int _i42 = 0; _i42 < _list40.size; ++_i42)
+                org.apache.thrift.protocol.TList _list48 = iprot.readListBegin();
+                struct.allExperiments = new ArrayList<ExperimentSummaryModel>(_list48.size);
+                ExperimentSummaryModel _elem49;
+                for (int _i50 = 0; _i50 < _list48.size; ++_i50)
                 {
-                  _elem41 = new ExperimentSummaryModel();
-                  _elem41.read(iprot);
-                  struct.allExperiments.add(_elem41);
+                  _elem49 = new ExperimentSummaryModel();
+                  _elem49.read(iprot);
+                  struct.allExperiments.add(_elem49);
                 }
                 iprot.readListEnd();
               }
@@ -1429,14 +1429,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 8: // COMPLETED_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list43 = iprot.readListBegin();
-                struct.completedExperiments = new ArrayList<ExperimentSummaryModel>(_list43.size);
-                ExperimentSummaryModel _elem44;
-                for (int _i45 = 0; _i45 < _list43.size; ++_i45)
+                org.apache.thrift.protocol.TList _list51 = iprot.readListBegin();
+                struct.completedExperiments = new ArrayList<ExperimentSummaryModel>(_list51.size);
+                ExperimentSummaryModel _elem52;
+                for (int _i53 = 0; _i53 < _list51.size; ++_i53)
                 {
-                  _elem44 = new ExperimentSummaryModel();
-                  _elem44.read(iprot);
-                  struct.completedExperiments.add(_elem44);
+                  _elem52 = new ExperimentSummaryModel();
+                  _elem52.read(iprot);
+                  struct.completedExperiments.add(_elem52);
                 }
                 iprot.readListEnd();
               }
@@ -1448,14 +1448,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 9: // FAILED_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list46 = iprot.readListBegin();
-                struct.failedExperiments = new ArrayList<ExperimentSummaryModel>(_list46.size);
-                ExperimentSummaryModel _elem47;
-                for (int _i48 = 0; _i48 < _list46.size; ++_i48)
+                org.apache.thrift.protocol.TList _list54 = iprot.readListBegin();
+                struct.failedExperiments = new ArrayList<ExperimentSummaryModel>(_list54.size);
+                ExperimentSummaryModel _elem55;
+                for (int _i56 = 0; _i56 < _list54.size; ++_i56)
                 {
-                  _elem47 = new ExperimentSummaryModel();
-                  _elem47.read(iprot);
-                  struct.failedExperiments.add(_elem47);
+                  _elem55 = new ExperimentSummaryModel();
+                  _elem55.read(iprot);
+                  struct.failedExperiments.add(_elem55);
                 }
                 iprot.readListEnd();
               }
@@ -1467,14 +1467,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 10: // CANCELLED_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list49 = iprot.readListBegin();
-                struct.cancelledExperiments = new ArrayList<ExperimentSummaryModel>(_list49.size);
-                ExperimentSummaryModel _elem50;
-                for (int _i51 = 0; _i51 < _list49.size; ++_i51)
+                org.apache.thrift.protocol.TList _list57 = iprot.readListBegin();
+                struct.cancelledExperiments = new ArrayList<ExperimentSummaryModel>(_list57.size);
+                ExperimentSummaryModel _elem58;
+                for (int _i59 = 0; _i59 < _list57.size; ++_i59)
                 {
-                  _elem50 = new ExperimentSummaryModel();
-                  _elem50.read(iprot);
-                  struct.cancelledExperiments.add(_elem50);
+                  _elem58 = new ExperimentSummaryModel();
+                  _elem58.read(iprot);
+                  struct.cancelledExperiments.add(_elem58);
                 }
                 iprot.readListEnd();
               }
@@ -1486,14 +1486,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 11: // CREATED_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list52 = iprot.readListBegin();
-                struct.createdExperiments = new ArrayList<ExperimentSummaryModel>(_list52.size);
-                ExperimentSummaryModel _elem53;
-                for (int _i54 = 0; _i54 < _list52.size; ++_i54)
+                org.apache.thrift.protocol.TList _list60 = iprot.readListBegin();
+                struct.createdExperiments = new ArrayList<ExperimentSummaryModel>(_list60.size);
+                ExperimentSummaryModel _elem61;
+                for (int _i62 = 0; _i62 < _list60.size; ++_i62)
                 {
-                  _elem53 = new ExperimentSummaryModel();
-                  _elem53.read(iprot);
-                  struct.createdExperiments.add(_elem53);
+                  _elem61 = new ExperimentSummaryModel();
+                  _elem61.read(iprot);
+                  struct.createdExperiments.add(_elem61);
                 }
                 iprot.readListEnd();
               }
@@ -1505,14 +1505,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           case 12: // RUNNING_EXPERIMENTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list55 = iprot.readListBegin();
-                struct.runningExperiments = new ArrayList<ExperimentSummaryModel>(_list55.size);
-                ExperimentSummaryModel _elem56;
-                for (int _i57 = 0; _i57 < _list55.size; ++_i57)
+                org.apache.thrift.protocol.TList _list63 = iprot.readListBegin();
+                struct.runningExperiments = new ArrayList<ExperimentSummaryModel>(_list63.size);
+                ExperimentSummaryModel _elem64;
+                for (int _i65 = 0; _i65 < _list63.size; ++_i65)
                 {
-                  _elem56 = new ExperimentSummaryModel();
-                  _elem56.read(iprot);
-                  struct.runningExperiments.add(_elem56);
+                  _elem64 = new ExperimentSummaryModel();
+                  _elem64.read(iprot);
+                  struct.runningExperiments.add(_elem64);
                 }
                 iprot.readListEnd();
               }
@@ -1558,9 +1558,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
         oprot.writeFieldBegin(ALL_EXPERIMENTS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.allExperiments.size()));
-          for (ExperimentSummaryModel _iter58 : struct.allExperiments)
+          for (ExperimentSummaryModel _iter66 : struct.allExperiments)
           {
-            _iter58.write(oprot);
+            _iter66.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -1571,9 +1571,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           oprot.writeFieldBegin(COMPLETED_EXPERIMENTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.completedExperiments.size()));
-            for (ExperimentSummaryModel _iter59 : struct.completedExperiments)
+            for (ExperimentSummaryModel _iter67 : struct.completedExperiments)
             {
-              _iter59.write(oprot);
+              _iter67.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1585,9 +1585,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           oprot.writeFieldBegin(FAILED_EXPERIMENTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.failedExperiments.size()));
-            for (ExperimentSummaryModel _iter60 : struct.failedExperiments)
+            for (ExperimentSummaryModel _iter68 : struct.failedExperiments)
             {
-              _iter60.write(oprot);
+              _iter68.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1599,9 +1599,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           oprot.writeFieldBegin(CANCELLED_EXPERIMENTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.cancelledExperiments.size()));
-            for (ExperimentSummaryModel _iter61 : struct.cancelledExperiments)
+            for (ExperimentSummaryModel _iter69 : struct.cancelledExperiments)
             {
-              _iter61.write(oprot);
+              _iter69.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1613,9 +1613,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           oprot.writeFieldBegin(CREATED_EXPERIMENTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.createdExperiments.size()));
-            for (ExperimentSummaryModel _iter62 : struct.createdExperiments)
+            for (ExperimentSummaryModel _iter70 : struct.createdExperiments)
             {
-              _iter62.write(oprot);
+              _iter70.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1627,9 +1627,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
           oprot.writeFieldBegin(RUNNING_EXPERIMENTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.runningExperiments.size()));
-            for (ExperimentSummaryModel _iter63 : struct.runningExperiments)
+            for (ExperimentSummaryModel _iter71 : struct.runningExperiments)
             {
-              _iter63.write(oprot);
+              _iter71.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -1660,9 +1660,9 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
       oprot.writeI32(struct.runningExperimentCount);
       {
         oprot.writeI32(struct.allExperiments.size());
-        for (ExperimentSummaryModel _iter64 : struct.allExperiments)
+        for (ExperimentSummaryModel _iter72 : struct.allExperiments)
         {
-          _iter64.write(oprot);
+          _iter72.write(oprot);
         }
       }
       BitSet optionals = new BitSet();
@@ -1691,45 +1691,45 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
       if (struct.isSetCompletedExperiments()) {
         {
           oprot.writeI32(struct.completedExperiments.size());
-          for (ExperimentSummaryModel _iter65 : struct.completedExperiments)
+          for (ExperimentSummaryModel _iter73 : struct.completedExperiments)
           {
-            _iter65.write(oprot);
+            _iter73.write(oprot);
           }
         }
       }
       if (struct.isSetFailedExperiments()) {
         {
           oprot.writeI32(struct.failedExperiments.size());
-          for (ExperimentSummaryModel _iter66 : struct.failedExperiments)
+          for (ExperimentSummaryModel _iter74 : struct.failedExperiments)
           {
-            _iter66.write(oprot);
+            _iter74.write(oprot);
           }
         }
       }
       if (struct.isSetCancelledExperiments()) {
         {
           oprot.writeI32(struct.cancelledExperiments.size());
-          for (ExperimentSummaryModel _iter67 : struct.cancelledExperiments)
+          for (ExperimentSummaryModel _iter75 : struct.cancelledExperiments)
           {
-            _iter67.write(oprot);
+            _iter75.write(oprot);
           }
         }
       }
       if (struct.isSetCreatedExperiments()) {
         {
           oprot.writeI32(struct.createdExperiments.size());
-          for (ExperimentSummaryModel _iter68 : struct.createdExperiments)
+          for (ExperimentSummaryModel _iter76 : struct.createdExperiments)
           {
-            _iter68.write(oprot);
+            _iter76.write(oprot);
           }
         }
       }
       if (struct.isSetRunningExperiments()) {
         {
           oprot.writeI32(struct.runningExperiments.size());
-          for (ExperimentSummaryModel _iter69 : struct.runningExperiments)
+          for (ExperimentSummaryModel _iter77 : struct.runningExperiments)
           {
-            _iter69.write(oprot);
+            _iter77.write(oprot);
           }
         }
       }
@@ -1749,14 +1749,14 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
       struct.runningExperimentCount = iprot.readI32();
       struct.setRunningExperimentCountIsSet(true);
       {
-        org.apache.thrift.protocol.TList _list70 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.allExperiments = new ArrayList<ExperimentSummaryModel>(_list70.size);
-        ExperimentSummaryModel _elem71;
-        for (int _i72 = 0; _i72 < _list70.size; ++_i72)
+        org.apache.thrift.protocol.TList _list78 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.allExperiments = new ArrayList<ExperimentSummaryModel>(_list78.size);
+        ExperimentSummaryModel _elem79;
+        for (int _i80 = 0; _i80 < _list78.size; ++_i80)
         {
-          _elem71 = new ExperimentSummaryModel();
-          _elem71.read(iprot);
-          struct.allExperiments.add(_elem71);
+          _elem79 = new ExperimentSummaryModel();
+          _elem79.read(iprot);
+          struct.allExperiments.add(_elem79);
         }
       }
       struct.setAllExperimentsIsSet(true);
@@ -1767,70 +1767,70 @@ public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentS
       }
       if (incoming.get(1)) {
         {
-          org.apache.thrift.protocol.TList _list73 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.completedExperiments = new ArrayList<ExperimentSummaryModel>(_list73.size);
-          ExperimentSummaryModel _elem74;
-          for (int _i75 = 0; _i75 < _list73.size; ++_i75)
+          org.apache.thrift.protocol.TList _list81 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.completedExperiments = new ArrayList<ExperimentSummaryModel>(_list81.size);
+          ExperimentSummaryModel _elem82;
+          for (int _i83 = 0; _i83 < _list81.size; ++_i83)
           {
-            _elem74 = new ExperimentSummaryModel();
-            _elem74.read(iprot);
-            struct.completedExperiments.add(_elem74);
+            _elem82 = new ExperimentSummaryModel();
+            _elem82.read(iprot);
+            struct.completedExperiments.add(_elem82);
           }
         }
         struct.setCompletedExperimentsIsSet(true);
       }
       if (incoming.get(2)) {
         {
-          org.apache.thrift.protocol.TList _list76 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.failedExperiments = new ArrayList<ExperimentSummaryModel>(_list76.size);
-          ExperimentSummaryModel _elem77;
-          for (int _i78 = 0; _i78 < _list76.size; ++_i78)
+          org.apache.thrift.protocol.TList _list84 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.failedExperiments = new ArrayList<ExperimentSummaryModel>(_list84.size);
+          ExperimentSummaryModel _elem85;
+          for (int _i86 = 0; _i86 < _list84.size; ++_i86)
           {
-            _elem77 = new ExperimentSummaryModel();
-            _elem77.read(iprot);
-            struct.failedExperiments.add(_elem77);
+            _elem85 = new ExperimentSummaryModel();
+            _elem85.read(iprot);
+            struct.failedExperiments.add(_elem85);
           }
         }
         struct.setFailedExperimentsIsSet(true);
       }
       if (incoming.get(3)) {
         {
-          org.apache.thrift.protocol.TList _list79 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.cancelledExperiments = new ArrayList<ExperimentSummaryModel>(_list79.size);
-          ExperimentSummaryModel _elem80;
-          for (int _i81 = 0; _i81 < _list79.size; ++_i81)
+          org.apache.thrift.protocol.TList _list87 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.cancelledExperiments = new ArrayList<ExperimentSummaryModel>(_list87.size);
+          ExperimentSummaryModel _elem88;
+          for (int _i89 = 0; _i89 < _list87.size; ++_i89)
           {
-            _elem80 = new ExperimentSummaryModel();
-            _elem80.read(iprot);
-            struct.cancelledExperiments.add(_elem80);
+            _elem88 = new ExperimentSummaryModel();
+            _elem88.read(iprot);
+            struct.cancelledExperiments.add(_elem88);
           }
         }
         struct.setCancelledExperimentsIsSet(true);
       }
       if (incoming.get(4)) {
         {
-          org.apache.thrift.protocol.TList _list82 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.createdExperiments = new ArrayList<ExperimentSummaryModel>(_list82.size);
-          ExperimentSummaryModel _elem83;
-          for (int _i84 = 0; _i84 < _list82.size; ++_i84)
+          org.apache.thrift.protocol.TList _list90 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.createdExperiments = new ArrayList<ExperimentSummaryModel>(_list90.size);
+          ExperimentSummaryModel _elem91;
+          for (int _i92 = 0; _i92 < _list90.size; ++_i92)
           {
-            _elem83 = new ExperimentSummaryModel();
-            _elem83.read(iprot);
-            struct.createdExperiments.add(_elem83);
+            _elem91 = new ExperimentSummaryModel();
+            _elem91.read(iprot);
+            struct.createdExperiments.add(_elem91);
           }
         }
         struct.setCreatedExperimentsIsSet(true);
       }
       if (incoming.get(5)) {
         {
-          org.apache.thrift.protocol.TList _list85 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.runningExperiments = new ArrayList<ExperimentSummaryModel>(_list85.size);
-          ExperimentSummaryModel _elem86;
-          for (int _i87 = 0; _i87 < _list85.size; ++_i87)
+          org.apache.thrift.protocol.TList _list93 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.runningExperiments = new ArrayList<ExperimentSummaryModel>(_list93.size);
+          ExperimentSummaryModel _elem94;
+          for (int _i95 = 0; _i95 < _list93.size; ++_i95)
           {
-            _elem86 = new ExperimentSummaryModel();
-            _elem86.read(iprot);
-            struct.runningExperiments.add(_elem86);
+            _elem94 = new ExperimentSummaryModel();
+            _elem94.read(iprot);
+            struct.runningExperiments.add(_elem94);
           }
         }
         struct.setRunningExperimentsIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/ExperimentStatusValidator.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/ExperimentStatusValidator.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/ExperimentStatusValidator.java
index 9d7fa0e..a32023c 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/ExperimentStatusValidator.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/ExperimentStatusValidator.java
@@ -25,7 +25,6 @@ import org.apache.airavata.model.error.ValidatorResult;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.orchestrator.core.validator.JobMetadataValidator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,8 +41,8 @@ public class ExperimentStatusValidator implements JobMetadataValidator {
         validationResults.setValidationState(true);
         ValidatorResult validatorResult = new ValidatorResult();
         List<ValidatorResult> validatorResultList = new ArrayList<ValidatorResult>();
-        if (!experiment.getExperimentStatus().getState().equals(ExperimentState.CREATED)) {
-            error += experiment.getExperimentStatus().getState().toString();
+        if (!experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.CREATED)) {
+            error += experiment.getExperimentStatus().get(0).getState().toString();
             log.error(error);
             validatorResult.setErrorDetails(error);
             validatorResult.setResult(false);

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 17bceb4..1a6ac25 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -29,12 +29,7 @@ import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.common.utils.ZkConstants;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.scheduler.HostScheduler;
-import org.apache.airavata.messaging.core.MessageContext;
-import org.apache.airavata.messaging.core.MessageHandler;
-import org.apache.airavata.messaging.core.MessagingFactory;
-import org.apache.airavata.messaging.core.Publisher;
-import org.apache.airavata.messaging.core.Subscriber;
-import org.apache.airavata.messaging.core.Type;
+import org.apache.airavata.messaging.core.*;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
@@ -47,11 +42,7 @@ import org.apache.airavata.model.data.replica.ReplicaLocationCategory;
 import org.apache.airavata.model.error.LaunchValidationException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.ExperimentSubmitEvent;
-import org.apache.airavata.model.messaging.event.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessIdentifier;
-import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.*;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.status.ExperimentState;
 import org.apache.airavata.model.status.ExperimentStatus;
@@ -64,14 +55,7 @@ import org.apache.airavata.orchestrator.util.OrchestratorUtils;
 import org.apache.airavata.registry.core.app.catalog.resources.AppCatAbstractResource;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import org.apache.airavata.registry.core.experiment.catalog.resources.AbstractExpCatResource;
-import org.apache.airavata.registry.cpi.AppCatalog;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.apache.airavata.registry.cpi.ComputeResource;
-import org.apache.airavata.registry.cpi.ExperimentCatalog;
-import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.apache.airavata.registry.cpi.ReplicaCatalog;
-import org.apache.airavata.registry.cpi.ReplicaCatalogException;
+import org.apache.airavata.registry.cpi.*;
 import org.apache.commons.lang.StringUtils;
 import org.apache.curator.RetryPolicy;
 import org.apache.curator.framework.CuratorFramework;
@@ -84,13 +68,7 @@ import org.apache.zookeeper.data.Stat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.BiConsumer;
+import java.util.*;
 
 public class OrchestratorServerHandler implements OrchestratorService.Iface {
 	private static Logger log = LoggerFactory.getLogger(OrchestratorServerHandler.class);
@@ -651,7 +629,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             if (messageContext.isRedeliver()) {
 				ExperimentModel experimentModel = (ExperimentModel) experimentCatalog.
 						get(ExperimentCatalogModelType.EXPERIMENT, expEvent.getExperimentId());
-				if (experimentModel.getExperimentStatus().getState() == ExperimentState.CREATED) {
+				if (experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED) {
 					launchExperiment(expEvent.getExperimentId(), expEvent.getGatewayId());
 				}
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/registry/registry-core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/pom.xml b/modules/registry/registry-core/pom.xml
index aa9a61b..85986ae 100644
--- a/modules/registry/registry-core/pom.xml
+++ b/modules/registry/registry-core/pom.xml
@@ -162,7 +162,7 @@
                 <inherited>true</inherited>
                 <configuration>
                     <failIfNoTests>false</failIfNoTests>
-                    <skipTests>${skipTests}</skipTests>
+                    <skipTests>true</skipTests>
                     <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                     <!-- making sure that the sure-fire plugin doesn't run the integration tests-->
                     <!-- Integration tests are run using the fail-safe plugin in the module pom-->

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index dd555b1..3066886 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -608,7 +608,7 @@ public class ExperimentRegistry {
             if (experimentOutputs != null && !experimentOutputs.isEmpty()) {
                 updateExpOutputs(experimentOutputs, expId);
             }
-            ExperimentStatus experimentStatus = experiment.getExperimentStatus();
+            ExperimentStatus experimentStatus = experiment.getExperimentStatus().get(0);
             if (experimentStatus != null) {
                 updateExperimentStatus(experimentStatus, expId);
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Gateway.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Gateway.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Gateway.java
index afb67a1..c7d750d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Gateway.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Gateway.java
@@ -72,7 +72,7 @@ public class Gateway {
         this.gatewayName = gatewayName;
     }
 
-    @Column(name = "DOMAIN")
+    @Column(name = "GATEWAY_DOMAIN")
     public String getDomain() {
         return domain;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 2fec213..3e04fcd 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -151,7 +151,9 @@ public class ThriftDataModelConversion {
             experiment.setExperimentOutputs(getExpOutputs(experimentOutputs));
             ExperimentStatusResource experimentStatus = experimentResource.getExperimentStatus();
             if (experimentStatus != null){
-                experiment.setExperimentStatus(getExperimentStatus(experimentStatus));
+                List<ExperimentStatus> experimentStatuses = new ArrayList<>();
+                experimentStatuses.add(getExperimentStatus(experimentStatus));
+                experiment.setExperimentStatus(experimentStatuses);
             }
             List<ExperimentErrorResource> errorDetails = experimentResource.getExperimentErrors();
             if (errorDetails!= null && !errorDetails.isEmpty()){

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 2646147..67344d7 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -508,7 +508,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
             }
             ExperimentModel experimentModel = (ExperimentModel) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId);
 
-            if(!(experimentModel.getExperimentStatus().getState() == ExperimentState.CREATED)){
+            if(!(experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED)){
                 logger.error("Error while deleting the experiment");
                 throw new ExperimentCatalogException("Experiment is not in CREATED state. Hence cannot deleted. ID:"+ experimentId);
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
index e25e16e..5e54bf1 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
@@ -100,7 +100,7 @@ struct ExperimentModel {
     14: optional UserConfigurationDataModel userConfigurationData,
     15: optional list<application_io_models.InputDataObjectType> experimentInputs,
     16: optional list<application_io_models.OutputDataObjectType> experimentOutputs,
-    17: optional status_models.ExperimentStatus experimentStatus,
+    17: optional list<status_models.ExperimentStatus> experimentStatus,
     18: optional list<airavata_commons.ErrorModel> errors,
     19: optional list<process_model.ProcessModel> processes
     }


[03/48] airavata git commit: Addition of AMQPWSTunnel as an Airavata module

Posted by la...@apache.org.
Addition of AMQPWSTunnel as an Airavata module


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 7b14e0fa95e22db5ad20a2f93273195339d628ed
Parents: 24ced80
Author: Jeff Kinnison <je...@gmail.com>
Authored: Fri Aug 19 17:25:53 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Fri Aug 19 17:25:53 2016 -0400

----------------------------------------------------------------------
 modules/amqpwstunnel/python/amqpwstunnel.py | 583 +++++++++++++++++++++++
 modules/amqpwstunnel/python/config.json     |  10 +
 modules/amqpwstunnel/wstest.html            | 157 ++++++
 3 files changed, 750 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7b14e0fa/modules/amqpwstunnel/python/amqpwstunnel.py
----------------------------------------------------------------------
diff --git a/modules/amqpwstunnel/python/amqpwstunnel.py b/modules/amqpwstunnel/python/amqpwstunnel.py
new file mode 100644
index 0000000..af5d68a
--- /dev/null
+++ b/modules/amqpwstunnel/python/amqpwstunnel.py
@@ -0,0 +1,583 @@
+import argparse
+import base64
+import functools
+import json
+import sys
+import uuid
+import weakref
+
+from threading import Thread, Lock
+
+try:
+    from urllib.parse import urlencode
+except ImportError:
+    from urllib import urlencode
+
+import pika
+import tornado.websocket
+import tornado.ioloop
+import tornado.auth
+import tornado.escape
+import tornado.concurrent
+
+
+SETTINGS = {}
+
+
+class Error(Exception):
+    """Base error class for exceptions in this module"""
+    pass
+
+class ConsumerConfigError(Error):
+    """Raised when an issue with consumer configuration occurs"""
+    def __init__(self, message):
+        self.message = message
+
+class ConsumerKeyError(Error):
+    def __init__(self, message, key):
+        self.message = message
+        self.key = key
+
+class AuthError(Error):
+    """Raised when something went wrong during authentication"""
+    def __init__(self, error, code):
+        self.message = error
+        self.code = code
+
+
+
+class PikaAsyncConsumer(Thread):
+
+    """
+    The primary entry point for routing incoming messages to the proper handler.
+
+    """
+
+    def __init__(self, rabbitmq_url, exchange_name, queue_name,
+                 exchange_type="direct", routing_key="#"):
+        """
+        Create a new instance of Streamer.
+
+        Arguments:
+        rabbitmq_url -- URL to RabbitMQ server
+        exchange_name -- name of RabbitMQ exchange to join
+        queue_name -- name of RabbitMQ queue to join
+
+        Keyword Arguments:
+        exchange_type -- one of 'direct', 'topic', 'fanout', 'headers'
+                         (default 'direct')
+        routing_keys -- the routing key that this consumer listens for
+                        (default '#', receives all messages)
+
+        """
+        print("Creating new consumer")
+        super(PikaAsyncConsumer, self).__init__(daemon=True)
+        self._connection = None
+        self._channel = None
+        self._shut_down = False
+        self._consumer_tag = None
+        self._url = rabbitmq_url
+        self._client_list = []
+        self._lock = Lock()
+
+        # The following are necessary to guarantee that both the RabbitMQ
+        # server and Streamer know where to look for messages. These names will
+        # be decided before dispatch and should be recorded in a config file or
+        # else on a per-job basis.
+        self._exchange = exchange_name
+        self._exchange_type = exchange_type
+        self._queue = queue_name
+        self._routing_key = routing_key
+
+    def add_client(self, client):
+        """Add a new client to the recipient list.
+
+        Arguments:
+            client -- a reference to the client object to add
+        """
+        self._lock.acquire()
+        # Create a weakref to ensure that cyclic references to WebSocketHandler
+        # objects do not cause problems for garbage collection
+        self._client_list.append(weakref.ref(client))
+        self._lock.release()
+
+    def remove_client(self, client):
+        """Remove a client from the recipient list.
+
+        Arguments:
+            client -- a reference to the client object to remove
+        """
+        self._lock.acquire()
+        for i in range(0, len(self._client_list)):
+            # Parentheses after _client_list[i] to deference the weakref to its
+            # strong reference
+            if self._client_list[i]() is client:
+                self._client_list.pop(i)
+                break
+        self._lock.release()
+
+
+    def connect(self):
+        """
+        Create an asynchronous connection to the RabbitMQ server at URL.
+
+        """
+        return pika.SelectConnection(pika.URLParameters(self._url),
+                                     on_open_callback=self.on_connection_open,
+                                     on_close_callback=self.on_connection_close,
+                                     stop_ioloop_on_close=False)
+
+    def on_connection_open(self, unused_connection):
+        """
+        Actions to perform when the connection opens. This may not happen
+        immediately, so defer action to this callback.
+
+        Arguments:
+        unused_connection -- the created connection (by this point already
+                             available as self._connection)
+
+        """
+        self._connection.channel(on_open_callback=self.on_channel_open)
+
+    def on_connection_close(self, connection, code, text):
+        """
+        Actions to perform when the connection is unexpectedly closed by the
+        RabbitMQ server.
+
+        Arguments:
+        connection -- the connection that was closed (same as self._connection)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+
+        """
+        self._channel = None
+        if self._shut_down:
+            self._connection.ioloop.stop()
+        else:
+            self._connection.add_timeout(5, self.reconnect)
+
+    def reconnect(self):
+        """
+        Attempt to reestablish a connection with the RabbitMQ server.
+        """
+        self._connection.ioloop.stop() # Stop the ioloop to completely close
+
+        if not self._shut_down: # Connect and restart the ioloop
+            self._connection = self.connect()
+            self._connection.ioloop.start()
+
+    def on_channel_open(self, channel):
+        """
+        Store the opened channel for future use and set up the exchange and
+        queue to be used.
+
+        Arguments:
+        channel -- the Channel instance opened by the Channel.Open RPC
+        """
+        self._channel = channel
+        self._channel.add_on_close_callback(self.on_channel_close)
+        self.declare_exchange()
+
+
+    def on_channel_close(self, channel, code, text):
+        """
+        Actions to perform when the channel is unexpectedly closed by the
+        RabbitMQ server.
+
+        Arguments:
+        connection -- the connection that was closed (same as self._connection)
+        code -- response code from the RabbitMQ server
+        text -- response body from the RabbitMQ server
+        """
+        self._connection.close()
+
+    def declare_exchange(self):
+        """
+        Set up the exchange that will route messages to this consumer. Each
+        RabbitMQ exchange is uniquely identified by its name, so it does not
+        matter if the exchange has already been declared.
+        """
+        self._channel.exchange_declare(self.declare_exchange_success,
+                                        self._exchange,
+                                        self._exchange_type)
+
+    def declare_exchange_success(self, unused_connection):
+        """
+        Actions to perform on successful exchange declaration.
+        """
+        self.declare_queue()
+
+    def declare_queue(self):
+        """
+        Set up the queue that will route messages to this consumer. Each
+        RabbitMQ queue can be defined with routing keys to use only one
+        queue for multiple jobs.
+        """
+        self._channel.queue_declare(self.declare_queue_success,
+                                    self._queue)
+
+    def declare_queue_success(self, method_frame):
+        """
+        Actions to perform on successful queue declaration.
+        """
+        self._channel.queue_bind(self.munch,
+                                 self._queue,
+                                 self._exchange,
+                                 self._routing_key
+                                )
+
+    def munch(self, unused):
+        """
+        Begin consuming messages from the Airavata API server.
+        """
+        self._channel.add_on_cancel_callback(self.cancel_channel)
+        self._consumer_tag = self._channel.basic_consume(self._process_message)
+
+    def cancel_channel(self, method_frame):
+        if self._channel is not None:
+            self._channel._close()
+
+    def _process_message(self, ch, method, properties, body):
+        """
+        Receive and verify a message, then pass it to the router.
+
+        Arguments:
+        ch -- the channel that routed the message
+        method -- delivery information
+        properties -- message properties
+        body -- the message
+        """
+        print("Received Message: %s" % body)
+        self._lock.acquire()
+        for client in self._client_list:
+            # Parentheses after client to deference the weakref to its
+            # strong reference
+            client().write_message(body)
+        self._lock.release()
+        self._channel.basic_ack(delivery_tag=method.delivery_tag)
+
+    def stop_consuming(self):
+        """
+        Stop the consumer if active.
+        """
+        if self._channel:
+            self._channel.basic_cancel(self.close_channel, self._consumer_tag)
+
+    def close_channel(self, unused):
+        """
+        Close the channel to shut down the consumer and connection.
+        """
+        self._channel.queue_delete(queue=self._queue)
+        self._channel.close()
+
+    def run(self):
+        """
+        Start a connection with the RabbitMQ server.
+        """
+        self._connection = self.connect()
+        self._connection.ioloop.start()
+
+    def stop(self):
+        """
+        Stop an active connection with the RabbitMQ server.
+        """
+        self._closing = True
+        self.stop_consuming()
+
+
+class Wso2OAuth2Mixin(tornado.auth.OAuth2Mixin):
+    _OAUTH_AUTHORIZE_URL = "https://idp.scigap.org:9443/oauth2/authorize"
+    _OAUTH_ACCESS_TOKEN_URL = "https://idp.scigap.org:9443/oauth2/token"
+
+    @tornado.auth._auth_return_future
+    def get_authenticated_user(self, username, password, callback=None):
+        print("Authenticating user %s" % (username))
+        http = self.get_auth_http_client()
+        body = urlencode({
+            "client_id": SETTINGS["oauth_client_key"],
+            "client_secret": SETTINGS["oauth_client_secret"],
+            "grant_type": SETTINGS["oauth_grant_type"],
+            "username": username,
+            "password": password
+        })
+        http.fetch(self._OAUTH_ACCESS_TOKEN_URL, functools.partial(self._on_access_token, callback), method="POST", body=body)
+
+    def _on_access_token(self, future, response):
+        if response.error:
+            print(str(response))
+            print(response.body)
+            print(response.error)
+            future.set_exception(AuthError(response.error, response.code))
+            return
+
+        print(response.body)
+        future.set_result(tornado.escape.json_decode(response.body))
+
+class AuthHandler(tornado.web.RequestHandler, Wso2OAuth2Mixin):
+    def get_current_user(self):
+        expires_in = self.get_secure_cookie("expires-in", max_age_days=SETTINGS['maximum_cookie_age'])
+        print(expires_in)
+        if expires_in:
+            return self.get_secure_cookie("ws-auth-token", max_age_days=float(expires_in))
+        return None
+
+    def set_default_headers(self):
+        self.set_header("Content-Type", "text/plain")
+        self.set_header("Access-Control-Allow-Origin", "*")
+        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
+        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
+
+    def get(self):
+        if self.get_current_user():
+            self.set_status(200)
+            print("Authenticated")
+            self.write("Authenticated")
+
+        else:
+            self.set_status(403)
+            print("Not Authenticated")
+            self.write("Not Authenticated")
+
+    @tornado.gen.coroutine
+    def post(self):
+        try:
+            username = self.get_body_argument("username")
+            password = self.get_body_argument("password")
+            redirect = self.get_body_argument("redirect")
+            if username == "" or password == "":
+                raise tornado.web.MissingArgumentError
+
+            access = yield self.get_authenticated_user(username, password)
+            days = (access["expires_in"] / 3600) / 24 # Convert to days
+            print(days)
+            self.set_secure_cookie("ws-auth-token",
+                                   access["access_token"],
+                                   expires_days=days)
+            self.set_secure_cookie("expires-in",
+                                   str(1),
+                                   expires_days=SETTINGS['maximum_cookie_age'])
+            self.write("Success")
+        except tornado.web.MissingArgumentError:
+            print("Missing an argument")
+            self.set_status(400)
+            self.write("Authentication information missing")
+        except AuthError as e:
+            print("The future freaks me out")
+            self.set_status(access.code)
+            self.set_header("Content-Type", "text/html")
+            self.write(access.message)
+
+        success_code = """<p>Redirecting to <a href="%(url)s">%(url)s</a></p>
+<script type="text/javascript">
+window.location = %(url)s;
+</script>
+        """ % { 'url': redirect}
+        self.set_status(200)
+        self.redirect(redirect)
+        #return self.render_string(success_code)
+
+
+
+class AMQPWSHandler(tornado.websocket.WebSocketHandler):#, Wso2OAuth2Mixin):
+
+    """
+    Pass messages to a connected WebSockets client.
+
+    A subclass of the Tornado WebSocketHandler class, this class takes no
+    action when receiving a message from the client. Instead, it is associated
+    with an AMQP consumer and writes a message to the client each time one is
+    consumed in the queue.
+    """
+
+    # def set_default_headers(self):
+        # self.set_header("Access-Control-Allow-Origin", "*")
+        # self.set_header("Access-Control-Allow-Headers", "x-requested-with")
+        # self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
+
+    def check_origin(self, origin):
+        """Check the domain origin of the connection request.
+
+        This can be made more robust to ensure that connections are only
+        accepted from verified PGAs.
+
+        Arguments:
+            origin -- the value of the Origin HTTP header
+        """
+        return True
+
+    def open(self, resource_type, resource_id):
+        """Associate a new connection with a consumer.
+
+        When a new connection is opened, it is a request to retrieve data
+        from an AMQP queue. The open operation should also do some kind of
+        authentication.
+
+        Arguments:
+            resource_type -- "experiment" or "project" or "data"
+            resource_id -- the Airavata id for the resource
+        """
+        self.stream.set_nodelay(True)
+        self.resource_id = resource_id
+        self.write_message("Opened the connection")
+
+        self.add_to_consumer()
+
+        # expires_in = self.get_secure_cookie("expires_in", max_age_days=SETTINGS["maximum_cookie_age"])
+        # if expires_in is not None and self.get_secure_cookie("ws-auth-token", max_age_days=float(expires_in)):
+        #     print("Found secure cookie")
+        #     self.write_message("Authenticated")
+        #     self.add_to_consumer()
+        # else:
+        #     print("Closing connection")
+        #     self.close()
+
+    def on_message(self, message):
+        """Handle incoming messages from the client.
+
+        Tornado requires subclasses to override this method, however in this
+        case we do not wish to take any action when receiving a message from
+        the client. The purpose of this class is only to push messages to the
+        client.
+        """
+        print(message)
+        message = tornado.escape.json_decode(message)
+        access = yield self.get_authenticated_user(message["username"], message["password"])
+        access = access
+        days = (access["expires_in"] / 3600) / 24 # Convert to days
+        print(days)
+        self.set_secure_cookie("ws-auth-token",
+                               access["access_token"],
+                               expires_days=days)
+        self.set_secure_cookie("expires_in",
+                               str(days),
+                               expires_days=SETTINGS['maximum_cookie_age'])
+
+
+    def on_close(self):
+        try:
+            print("Closing connection")
+            self.application.remove_client_from_consumer(self.resource_id, self)
+        except KeyError:
+            print("Error: resource %s does not exist" % self.resource_id)
+        finally:
+            self.close()
+
+    def add_to_consumer(self):
+        try:
+            self.application.add_client_to_consumer(self.resource_id, self)
+        except AttributeError as e:
+            print("Error: tornado.web.Application object is not AMQPWSTunnel")
+            print(e)
+
+
+class AMQPWSTunnel(tornado.web.Application):
+
+    """
+    Send messages from an AMQP queue to WebSockets clients.
+
+    In addition to the standard Tornado Application class functionality, this
+    class maintains a list of active AMQP consumers and maps WebSocketHandlers
+    to the correct consumers.
+    """
+
+    def __init__(self, consumer_list=None, consumer_config=None, handlers=None,
+                 default_host='', transforms=None, **settings):
+        print("Starting AMQP-WS-Tunnel application")
+        super(AMQPWSTunnel, self).__init__(handlers=handlers,
+                                           default_host=default_host,
+                                           transforms=transforms,
+                                           **settings)
+
+        self.consumer_list = {} if consumer_list is None else consumer_list
+        if consumer_config is None:
+            raise ConsumerConfigError("No consumer configuration provided")
+        self.consumer_config = consumer_config
+
+    def consumer_exists(self, resource_id):
+        """Determine if a consumer exists for a particular resource.
+
+        Arguments:
+            resource_id -- the consumer to find
+        """
+        return resource_id in self.consumer_list
+
+    def add_client_to_consumer(self, resource_id, client):
+        """Add a new client to a consumer's messaging list.
+
+        Arguments:
+            resource_id -- the consumer to add to
+            client -- the client to add
+        """
+        if not self.consumer_exists(resource_id):
+            print("Creating new consumer")
+            print(self.consumer_config)
+            consumer = PikaAsyncConsumer(self.consumer_config["rabbitmq_url"],
+                                         self.consumer_config["exchange_name"],
+                                         self.consumer_config["queue_name"],
+                                         exchange_type=self.consumer_config["exchange_type"],
+                                         routing_key=resource_id)
+            print("Adding to consumer list")
+            self.consumer_list[resource_id] = consumer
+            print("Starting consumer")
+            consumer.start()
+
+        print("Adding new client to %s" % (resource_id))
+        consumer = self.consumer_list[resource_id]
+        consumer.add_client(client)
+
+    def remove_client_from_consumer(self, resource_id, client):
+        """Remove a client from a consumer's messaging list.
+
+        Arguments:
+            resource_id -- the consumer to remove from
+            client -- the client to remove
+        """
+        if self.consumer_exists(resource_id):
+            print("Removing client from %s" % (resource_id))
+            self.consumer_list[resource_id].remove_client(client)
+        #else:
+        #    raise ConsumerKeyError("Trying to remove client from nonexistent consumer", resource_id)
+
+    def shutdown(self):
+        """Shut down the application and release all resources.
+
+
+        """
+        for name, consumer in self.consumer_list.items():
+            consumer.stop()
+            #consumer.join()
+            #self.consumer_list[name] = None
+
+        #self.consumer_list = {}
+
+
+
+if __name__ == "__main__":
+    i = open(sys.argv[1])
+    config = json.load(i)
+    i.close()
+
+    SETTINGS["oauth_client_key"] = config["oauth_client_key"]
+    SETTINGS["oauth_client_secret"] = config["oauth_client_secret"]
+    SETTINGS["oauth_grant_type"] = config["oauth_grant_type"]
+    SETTINGS["maximum_cookie_age"] = config["maximum_cookie_age"]
+
+    settings = {
+        "cookie_secret": base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes),
+        #"xsrf_cookies": True
+    }
+
+    application = AMQPWSTunnel(handlers=[
+                                    (r"/auth", AuthHandler),
+                                    (r"/(experiment)/(.+)", AMQPWSHandler)
+                                ],
+                                consumer_config=config,
+                                debug=True,
+                                **settings)
+
+    application.listen(8888)
+
+    try:
+        tornado.ioloop.IOLoop.current().start()
+    except KeyboardInterrupt:
+        application.shutdown()

http://git-wip-us.apache.org/repos/asf/airavata/blob/7b14e0fa/modules/amqpwstunnel/python/config.json
----------------------------------------------------------------------
diff --git a/modules/amqpwstunnel/python/config.json b/modules/amqpwstunnel/python/config.json
new file mode 100644
index 0000000..b092001
--- /dev/null
+++ b/modules/amqpwstunnel/python/config.json
@@ -0,0 +1,10 @@
+{
+    "rabbitmq_url": "amqp://airavata:airavata@gw56.iu.xsede.org:5672/messaging",
+    "exchange_name": "simstream",
+    "queue_name": "test",
+    "exchange_type": "direct",
+    "oauth_client_key": "y7xgdnNUx6ifOswJTPcqtzw4aOEa",
+    "oauth_client_secret": "CgfbuupAPhaOBSBPSScZUWHNANwa",
+    "oauth_grant_type": "password",
+    "maximum_cookie_age": 1
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/7b14e0fa/modules/amqpwstunnel/wstest.html
----------------------------------------------------------------------
diff --git a/modules/amqpwstunnel/wstest.html b/modules/amqpwstunnel/wstest.html
new file mode 100644
index 0000000..eedbf78
--- /dev/null
+++ b/modules/amqpwstunnel/wstest.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+    <title>AMQP Websockets Test</title>
+
+    <style>
+        #content {
+            width: 100%;
+            min-height: 250px;
+        }
+
+        #ws-url-label, #ws-url-input, #ws-connect-button {
+            display: inline;
+            float: left;
+            margin-right: 10px;
+        }
+
+        #logs {
+            background-color: #888888;
+            width: 50%;
+            overflow-y: auto;
+            list-style: none;
+            padding: 3px;
+            margin-left: auto;
+            margin-right: auto;
+            text-align: center;
+        }
+
+        .log {
+            background-color: #cccccc;
+            display: inline-block;
+            min-height: 30px;
+            width: 90%;
+            border: 1px solid #000000;
+            padding: 3px;
+            margin-left: auto;
+            margin-right: auto;
+            margin-bottom: 5px;
+            text-align: left;
+        }
+    </style>
+</head>
+
+<body>
+
+<div id="content">
+    <div id="ws-url">
+        <label id="ws-url-label" for="ws-url-input">WebSockets URL</label>
+        <input type="text" name="ws-url-input" id="ws-url-input" />
+        <input type="text" name="username" id="username" placeholder="Username" />
+        <input type="password" name="password" id="password" placeholder="Password" />
+        <button id="ws-connect-button" class="open">Connect</button>
+        <button id="ws-send-credentials">Send</button><br />
+        <frame>
+            <form action="http://localhost:8888/auth" method="post">
+                <input type="text" name="username" id="username" placeholder="Username" />
+                <input type="password" name="password" id="password" placeholder="Password" />
+                <input type="hidden" name="redirect" id="redirect" value="file:///Users/jeffkinnison/development/amqp-ws-tunnel/wstest.html" />
+                <input type="submit" value="Auth" />
+            </form>
+        </frame>
+    </div>
+
+    <ul id="logs"><p>Logs</p></ul>
+</div>
+
+<script src="https://code.jquery.com/jquery-3.1.0.min.js"
+        integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s="
+        crossorigin="anonymous"></script>
+<script type="text/javascript">
+    var ws, open_handler, message_handler, error_handler, close_handler;
+
+    console.log(document.cookie);
+
+    $("#ws-connect-button").on("click", function() {
+        ws = new WebSocket("ws://localhost:8888/experiment/test");
+
+        ws.onopen = function() {
+            var username, password;
+            $("#ws-connect-button").toggleClass("open close").text("Disconnect");
+            $("#ws-url-input").prop("disabled", true);
+            ws.send("hi");
+            // username = $("#username").val();
+            // password = $("#password").val();
+            // ws.send(JSON.stringify({username: username, password: password}));
+        }
+
+        ws.onmessage = function(e) {
+            var msg;
+
+            console.log(e.data);
+
+            //msg = JSON.parse(e.data);
+            // if (msg.hasOwnProperty("logs")) {
+            //     for (log in msg.logs) {
+            //         if (msg.logs.hasOwnProperty(log)) {
+            //             $("#logs").append($('<li class="log">' + log + '</li>'));
+            //         }
+            //     }
+            // }
+        }
+
+        ws.onclose = function(e) {
+            $("#ws-connect-button").toggleClass("open close").text("Connect");
+            $("#ws-url-input").prop("disabled", false);
+        }
+    });
+
+    $("#ws-send-credentials").on("click", function(e) {
+        uname = $("#username").val();
+        pass = $("#password").val();
+        console.log("Sending credentials");
+        //ws.send("moop");
+        //ws.send(JSON.stringify({username: uname, password: pass}));
+        $.ajax({
+            url: "http://localhost:8888/auth",
+            method: "post",
+            data: {username: uname, password: pass},
+            crossDomain: true,
+            success: function(data) {
+                console.log("Success");
+                console.log(document.cookie);
+            },
+            error: function(e) {
+                console.log(e);
+            },
+            complete: function() {
+                $.ajax({
+                    url: "http://localhost:8888/auth",
+                    method: "get",
+                    crossDomain: true,
+                    xhrHeaders: {
+
+                    },
+                    success: function(data) {
+                        console.log(data);
+                    },
+                    error: function(xhr) {
+                        console.log(xhr);
+                    }
+                });
+            }
+        });
+    });
+
+    // $("form").on("submit", function(e) {
+    //     e.preventDefault();
+    // });
+
+</script>
+
+</body>
+
+</html>


[41/48] airavata git commit: fixed AIRAVATA-2096

Posted by la...@apache.org.
fixed AIRAVATA-2096


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 2289aed1d9c9b12c2ee9d5019f3001a5b281d9fa
Parents: 05ea66e
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Sep 12 15:34:23 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Sep 12 15:34:23 2016 -0400

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      | 26 +++++++++++++++++---
 .../airavata/gfac/server/GfacServerHandler.java |  1 +
 2 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/2289aed1/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index f64e521..1d1391c 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -89,8 +89,8 @@ public class GFacEngineImpl implements GFacEngine {
     @Override
     public ProcessContext populateProcessContext(String processId, String gatewayId, String
             tokenId) throws GFacException {
+        ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
         try {
-            ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
             AppCatalog appCatalog = Factory.getDefaultAppCatalog();
             processContext.setAppCatalog(appCatalog);
             ExperimentCatalog expCatalog = Factory.getDefaultExpCatalog();
@@ -206,12 +206,19 @@ public class GFacEngineImpl implements GFacEngine {
             }
             return processContext;
         } catch (AppCatalogException e) {
-            throw new GFacException("App catalog access exception ", e);
+            String msg = "App catalog access exception ";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         } catch (RegistryException e) {
-            throw new GFacException("Registry access exception", e);
+            String msg = "Registry access exception";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         } catch (AiravataException e) {
-            throw new GFacException("Remote cluster initialization error", e);
+            String msg = "Remote cluster initialization error";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         }
+
     }
 
     private void checkRecoveryWithCancel(ProcessContext processContext) throws Exception {
@@ -859,6 +866,17 @@ public class GFacEngineImpl implements GFacEngine {
         });
     }
 
+    private void updateProcessFailure(ProcessContext pc, String reason){
+        ProcessStatus status = new ProcessStatus(ProcessState.FAILED);
+        status.setReason(reason);
+        pc.setProcessStatus(status);
+        try {
+            GFacUtils.saveAndPublishProcessStatus(pc);
+        } catch (GFacException e) {
+            log.error("Error while save and publishing process failed status event");
+        }
+    }
+
     public static ResourceJobManager getResourceJobManager(ProcessContext processCtx) throws AppCatalogException, GFacException {
         List<JobSubmissionInterface> jobSubmissionInterfaces = Factory.getDefaultAppCatalog().getComputeResource()
                 .getComputeResource(processCtx.getComputeResourceId()).getJobSubmissionInterfaces();

http://git-wip-us.apache.org/repos/asf/airavata/blob/2289aed1/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
index c59e199..7366a19 100644
--- a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
+++ b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
@@ -161,6 +161,7 @@ public class GfacServerHandler implements GfacService.Iface {
 	        executorService.execute(new GFacWorker(processId, gatewayId, tokenId));
         } catch (GFacException e) {
             log.error("Failed to submit process", e);
+
             return false;
         } catch (Exception e) {
 	        log.error("Error creating zookeeper nodes");


[17/48] airavata git commit: [AIRAVATA-2057] Move the distribution directory to modules to slow down the distribution build

Posted by la...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/a3950c99/distribution/src/main/resources/LICENSE
----------------------------------------------------------------------
diff --git a/distribution/src/main/resources/LICENSE b/distribution/src/main/resources/LICENSE
deleted file mode 100644
index 56f7cc2..0000000
--- a/distribution/src/main/resources/LICENSE
+++ /dev/null
@@ -1,2387 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-===================================================================================
-The Apache Airavata distribution includes a number of run time 
-dependencies with separate copyright notices and license terms. Your use of the
-Apache Airavata code is subject to the terms and conditions of the following licenses.
-===================================================================================
-
-===============================================================================
-The following components come under Apache Software License 2.0
-===============================================================================
-
-apache axiom, apache axis2, apache commons, apache derby, apache geronimo,
-apache httpcore components, apache log4j, apache xmlbeans, apache xmlschema,
-aws-java-sdk-1.1.8.jar, bcel-5.1.jar, Codehaus Jackson (jackson-core-asl-1.9.2.jar,
-jackson-jaxrs-1.9.2.jar, jackson-mapper-asl-1.9.2.jar, jackson-xc-1.9.2.jar, 
-jets3t-0.8.0.jar, jettison-1.0-RC2.jar, neethi-2.0.4.jar, PDFBox libraries 
-(pdfbox, jempbox, fontbox), wstx-asl-3.2.4.jar
-
-- Bean Validation API (http://beanvalidation.org) javax.validation:validation-api:jar:1.1.0.Final
-- Hibernate Validator Engine (http://validator.hibernate.org/hibernate-validator) org.hibernate:hibernate-validator:jar:4.3.0.Final
-- GSS-API implementation for SSL with proxies (https://github.com/jglobus/JGlobus/gss) org.jglobus:gss:jar:2.0.6
-- SSL support (https://github.com/jglobus/JGlobus/jsse) org.jglobus:jsse:jar:2.0.6
-- myproxy (https://github.com/jglobus/JGlobus/myproxy) org.jglobus:myproxy:jar:2.0.6
-- SSL and proxy certificate support (https://github.com/jglobus/JGlobus/ssl-proxies) org.jglobus:ssl-proxies:jar:2.0.6
-- Bouncy Castle for GSS (https://github.com/jsiwek/BouncyCastleSSLv3) org.ogce:bcgss:jar:146
-- StAX API (http://stax.codehaus.org/) stax:stax-api:jar:1.0.1
-- Commons Codec (http://commons.apache.org/codec/) commons-codec:commons-codec:jar:1.4
-- Commons IO (http://commons.apache.org/io/) commons-io:commons-io:jar:1.4
-- Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.6
-- Commons Logging (http://commons.apache.org/logging) commons-logging:commons-logging:jar:1.1.1
-- XmlBeans (http://xmlbeans.apache.org) org.apache.xmlbeans:xmlbeans:jar:2.5.0
-
-===============================================================================
-The following components use Apache based Licenses
-===============================================================================
-
-===============================================================================
-For: jdom-1.0.jar
-    Containing Project URL: http://www.jdom.org/
-/*-- 
-
- $Id: LICENSE.txt,v 1.11 2004/02/06 09:32:57 jhunter Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- All rights reserved.
- 
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions, and the following disclaimer.
- 
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions, and the disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED.  IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>. 
-
- */
-
-===============================================================================
-
-ASM bytecode manipulation library (asm)
-    Containing Project URL: http://asm.ow2.org/
-
-    Copyright (c) 2000-2005 INRIA, France Telecom
-    All rights reserved.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions
-    are met:
-
-    1. Redistributions of source code must retain the above copyright
-       notice, this list of conditions and the following disclaimer.
-
-    2. Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-    3. Neither the name of the copyright holders nor the names of its
-       contributors may be used to endorse or promote products derived from
-       this software without specific prior written permission.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-    THE POSSIBILITY OF SUCH DAMAGE.
-
-===============================================================================
-
-For: cryptix-asn1-versionless.jar, cryptix32-versionless.jar
-    Containing Project URL: http://www.cryptix.org/
-
-Cryptix General License
-
-Copyright (c) 1995-2005 The Cryptix Foundation Limited.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-  1. Redistributions of source code must retain the copyright notice,
-     this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND
-CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-===============================================================================
-The following components come under Extreme! Lab Software License
-===============================================================================
-
-XPP3
-    Containing Project URL: http://www.extreme.indiana.edu/xgws/xsoap/xpp/
-xsul, xsul5, xutil
-    Containing Project URL: http://www.extreme.indiana.edu/xgws/xsul/
-wsmg
-    Containing Project URL: http://www.extreme.indiana.edu/xgws/messenger/index.html
-gpel, weps-beans, pegasuswebservice, mapReduce-service-client, atomixmiser
-    Containing Project URL: http://www.extreme.indiana.edu/xgws/
-    
-Indiana University Extreme! Lab Software License
-
-Version 1.1.1
-
-Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright notice,
-   this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in
-   the documentation and/or other materials provided with the distribution.
-
-3. The end-user documentation included with the redistribution, if any,
-   must include the following acknowledgment:
-
-  "This product includes software developed by the Indiana University
-  Extreme! Lab (http://www.extreme.indiana.edu/)."
-
-Alternately, this acknowledgment may appear in the software itself,
-if and wherever such third-party acknowledgments normally appear.
-
-4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab"
-must not be used to endorse or promote products derived from this
-software without prior written permission. For written permission,
-please contact http://www.extreme.indiana.edu/.
-
-5. Products derived from this software may not use "Indiana Univeristy"
-name nor may "Indiana Univeristy" appear in their name, without prior
-written permission of the Indiana University.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-======================================================================== 
-The following components are MIT Licensed 
-========================================================================
-
-SLF4J,log4j-over-slf4j, jcl-over-slf4j, slf4j-api,mockito-all-1.8.5,jopt-simple-3.2.jar
-    Containing Project URL: http://www.slf4j.org/
-
-Copyright (c) 2004-2008 QOS.ch
- All rights reserved.
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
-
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
-
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-========================================================================
-
-For dom4j-1.6.1.jar:
-    Containing Project URL: http://dom4j.sourceforge.net/
-Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
-
-Redistribution and use of this software and associated documentation
-("Software"), with or without modification, are permitted provided
-that the following conditions are met:
-
-1. Redistributions of source code must retain copyright
-   statements and notices.  Redistributions must also contain a
-   copy of this document.
- 
-2. Redistributions in binary form must reproduce the
-   above copyright notice, this list of conditions and the
-   following disclaimer in the documentation and/or other
-   materials provided with the distribution.
- 
-3. The name "DOM4J" must not be used to endorse or promote
-   products derived from this Software without prior written
-   permission of MetaStuff, Ltd.  For written permission,
-   please contact dom4j-info@metastuff.com.
- 
-4. Products derived from this Software may not be called "DOM4J"
-   nor may "DOM4J" appear in their names without prior written
-   permission of MetaStuff, Ltd. DOM4J is a registered
-   trademark of MetaStuff, Ltd.
- 
-5. Due credit should be given to the DOM4J Project - 
-   http://www.dom4j.org
- 
-THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
-NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================================================================================================
-
-For Bouncy Castle:
-    Containing Project URL: http://www.bouncycastle.org/
-
-Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
-
-Permission iss software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions hereby granted, free of charge, to any person obtaining a copy of this software
-and associated documentation files (the "Software"), to deal in the Software without restriction,
-including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial
-portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-=======================================================================================================
-
-For: The International Components for Unicode (icu4j-2.6.1.jar)
-    Containing Project URL: http://site.icu-project.org/
-
-    Copyright (c) 1995-2009 International Business Machines Corporation
-    and others
-
-    All rights reserved.
-
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    "Software"), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, and/or sell copies of the Software, and to permit persons
-    to whom the Software is furnished to do so, provided that the above
-    copyright notice(s) and this permission notice appear in all copies
-    of the Software and that both the above copyright notice(s) and this
-    permission notice appear in supporting documentation.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-    IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
-    BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
-    OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-    SOFTWARE.
-
-    Except as contained in this notice, the name of a copyright holder shall
-    not be used in advertising or otherwise to promote the sale, use or other
-    dealings in this Software without prior written authorization of the
-    copyright holder.
-    
-====================================================================== 
-The following components are CDDL based License 
-======================================================================
-
-For activation-1.1.jar, jaxb-api-2.1.jar, mail-1.4.jar, junit, 
-Servlet Specification 2.5 API (servlet-api-2.5-6.1.14.jar),
-Classfish Jasper API (jsp-api-2.1-6.1.14.jar), and
-JSP2.1 Jasper implementation from Glassfish (jsp-2.1-6.1.14.jar), 
-Jersey from Glassfish (jersey-client-1.13.jar, jersey-core-1.13.jar,
-jersey-json-1.13.jar, jersey-multipart-1.13.jar) and JSP2.1 Jasper 
-implementation from Glassfish (jsp-2.1-6.1.14.jar),whirr-core-0.7.1.jar, whirr-hadoop-0.7.1.jar:
- 
-NOTE: jersey is dual licensed (http://jersey.java.net/CDDL+GPL.html), 
-Apahce Airavata elects to include jersey in this distribution under the
-[CDDLv_1.0] license.
-
-    COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-    1. Definitions.
-
-    1.1. Contributor means each individual or entity that creates or
-    contributes to the creation of Modifications.
-
-    1.2. Contributor Version means the combination of the Original Software,
-    prior Modifications used by a Contributor (if any), and the Modifications
-    made by that particular Contributor.
-
-    1.3. Covered Software means (a) the Original Software, or
-    (b) Modifications, or (c) the combination of files containing Original
-    Software with files containing Modifications, in each case including
-    portions thereof.
-
-    1.4. Executable means the Covered Software in any form other than Source
-    Code.
-
-    1.5. Initial Developer means the individual or entity that first makes
-    Original Software available under this License.
-
-    1.6. Larger Work means a work which combines Covered Software or portions
-    thereof with code not governed by the terms of this License.
-
-    1.7. License means this document.
-
-    1.8. Licensable means having the right to grant, to the maximum extent
-    possible, whether at the time of the initial grant or subsequently
-    acquired, any and all of the rights conveyed herein.
-
-    1.9. Modifications means the Source Code and Executable form of any of
-    the following: A. Any file that results from an addition to, deletion
-    from or modification of the contents of a file containing Original
-    Software or previous Modifications; B. Any new file that contains any
-    part of the Original Software or previous Modification; or C. Any new
-    file that is contributed or otherwise made available under the terms of
-    this License.
-
-    1.10. Original Software means the Source Code and Executable form of
-    computer software code that is originally released under this License.
-
-    1.11. Patent Claims means any patent claim(s), now owned or hereafter
-    acquired, including without limitation, method, process, and apparatus
-    claims, in any patent Licensable by grantor.
-
-    1.12. Source Code means (a) the common form of computer software code in
-    which modifications are made and (b) associated documentation included in
-    or with such code.
-
-    1.13. You (or Your) means an individual or a legal entity exercising
-    rights under, and complying with all of the terms of, this License. For
-    legal entities, You includes any entity which controls, is controlled by,
-    or is under common control with You. For purposes of this definition,
-    control means (a) the power, direct or indirect, to cause the direction
-    or management of such entity, whether by contract or otherwise, or
-    (b) ownership of more than fifty percent (50%) of the outstanding shares
-    or beneficial ownership of such entity.
-
-    2. License Grants.
-
-    2.1. The Initial Developer Grant. Conditioned upon Your compliance with
-    Section 3.1 below and subject to third party intellectual property
-    claims, the Initial Developer hereby grants You a world-wide,
-    royalty-free, non-exclusive license:
-
-    (a) under intellectual property rights (other than patent or trademark)
-        Licensable by Initial Developer, to use, reproduce, modify, display,
-        perform, sublicense and distribute the Original Software (or portions
-        thereof), with or without Modifications, and/or as part of a Larger
-        Work; and
-
-    (b) under Patent Claims infringed by the making, using or selling of
-        Original Software, to make, have made, use, practice, sell, and offer
-        for sale, and/or otherwise dispose of the Original Software (or
-        portions thereof);
-
-    (c) The licenses granted in Sections 2.1(a) and (b) are effective on the
-        date Initial Developer first distributes or otherwise makes the
-        Original Software available to a third party under the terms of
-        this License;
-
-    (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
-        (1) for code that You delete from the Original Software, or (2) for
-        infringements caused by: (i) the modification of the Original
-        Software, or (ii) the combination of the Original Software with other
-        software or devices.
-
-    2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1
-    below and subject to third party intellectual property claims, each
-    Contributor hereby grants You a world-wide, royalty-free, non-exclusive
-    license:
-
-    (a) under intellectual property rights (other than patent or trademark)
-        Licensable by Contributor to use, reproduce, modify, display, perform,
-        sublicense and distribute the Modifications created by such
-        Contributor (or portions thereof), either on an unmodified basis,
-        with other Modifications, as Covered Software and/or as part of a
-        Larger Work; and
-
-    (b) under Patent Claims infringed by the making, using, or selling of
-        Modifications made by that Contributor either alone and/or in
-        combination with its Contributor Version (or portions of such
-        combination), to make, use, sell, offer for sale, have made, and/or
-        otherwise dispose of: (1) Modifications made by that Contributor (or
-        portions thereof); and (2) the combination of Modifications made by
-        that Contributor with its Contributor Version (or portions of such
-        combination).
-
-    (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on
-        the date Contributor first distributes or otherwise makes the
-        Modifications available to a third party.
-
-    (d) Notwithstanding Section 2.2(b) above, no patent license is granted:
-        (1) for any code that Contributor has deleted from the Contributor
-        Version; (2) for infringements caused by: (i) third party
-        modifications of Contributor Version, or (ii) the combination of
-        Modifications made by that Contributor with other software (except
-        as part of the Contributor Version) or other devices; or (3) under
-        Patent Claims infringed by Covered Software in the absence of
-        Modifications made by that Contributor.
-
-    3. Distribution Obligations.
-
-    3.1. Availability of Source Code. Any Covered Software that You distribute
-    or otherwise make available in Executable form must also be made available
-    in Source Code form and that Source Code form must be distributed only
-    under the terms of this License. You must include a copy of this License
-    with every copy of the Source Code form of the Covered Software You
-    distribute or otherwise make available. You must inform recipients of any
-    such Covered Software in Executable form as to how they can obtain such
-    Covered Software in Source Code form in a reasonable manner on or through
-    a medium customarily used for software exchange.
-
-    3.2. Modifications. The Modifications that You create or to which You
-    contribute are governed by the terms of this License. You represent that
-    You believe Your Modifications are Your original creation(s) and/or You
-    have sufficient rights to grant the rights conveyed by this License.
-
-    3.3. Required Notices. You must include a notice in each of Your
-    Modifications that identifies You as the Contributor of the Modification.
-    You may not remove or alter any copyright, patent or trademark notices
-    contained within the Covered Software, or any notices of licensing or any
-    descriptive text giving attribution to any Contributor or the Initial
-    Developer.
-
-    3.4. Application of Additional Terms. You may not offer or impose any
-    terms on any Covered Software in Source Code form that alters or restricts
-    the applicable version of this License or the recipients rights hereunder.
-    You may choose to offer, and to charge a fee for, warranty, support,
-    indemnity or liability obligations to one or more recipients of Covered
-    Software. However, you may do so only on Your own behalf, and not on
-    behalf of the Initial Developer or any Contributor. You must make it
-    absolutely clear that any such warranty, support, indemnity or liability
-    obligation is offered by You alone, and You hereby agree to indemnify the
-    Initial Developer and every Contributor for any liability incurred by the
-    Initial Developer or such Contributor as a result of warranty, support,
-    indemnity or liability terms You offer.
-
-    3.5. Distribution of Executable Versions. You may distribute the
-    Executable form of the Covered Software under the terms of this License or
-    under the terms of a license of Your choice, which may contain terms
-    different from this License, provided that You are in compliance with the
-    terms of this License and that the license for the Executable form does
-    not attempt to limit or alter the recipients rights in the Source Code
-    form from the rights set forth in this License. If You distribute the
-    Covered Software in Executable form under a different license, You must
-    make it absolutely clear that any terms which differ from this License
-    are offered by You alone, not by the Initial Developer or Contributor.
-    You hereby agree to indemnify the Initial Developer and every Contributor
-    for any liability incurred by the Initial Developer or such Contributor as
-    a result of any such terms You offer.
-
-    3.6. Larger Works. You may create a Larger Work by combining Covered
-    Software with other code not governed by the terms of this License and
-    distribute the Larger Work as a single product. In such a case, You must
-    make sure the requirements of this License are fulfilled for the Covered
-    Software.
-
-    4. Versions of the License.
-
-    4.1. New Versions. Sun Microsystems, Inc. is the initial license steward
-    and may publish revised and/or new versions of this License from time to
-    time. Each version will be given a distinguishing version number. Except
-    as provided in Section 4.3, no one other than the license steward has the
-    right to modify this License.
-
-    4.2. Effect of New Versions. You may always continue to use, distribute
-    or otherwise make the Covered Software available under the terms of the
-    version of the License under which You originally received the Covered
-    Software. If the Initial Developer includes a notice in the Original
-    Software prohibiting it from being distributed or otherwise made
-    available under any subsequent version of the License, You must
-    distribute and make the Covered Software available under the terms of
-    the version of the License under which You originally received the
-    Covered Software. Otherwise, You may also choose to use, distribute or
-    otherwise make the Covered Software available under the terms of any
-    subsequent version of the License published by the license steward.
-
-    4.3. Modified Versions. When You are an Initial Developer and You want
-    to create a new license for Your Original Software, You may create and
-    use a modified version of this License if You: (a) rename the license and
-    remove any references to the name of the license steward (except to note
-    that the license differs from this License); and (b) otherwise make it
-    clear that the license contains terms which differ from this License.
-
-    5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE
-    ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
-    IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
-    SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
-    OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
-    THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
-    DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER
-    CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
-    CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF
-    THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER
-    EXCEPT UNDER THIS DISCLAIMER.
-
-    6. TERMINATION.
-
-    6.1. This License and the rights granted hereunder will terminate
-    automatically if You fail to comply with terms herein and fail to cure
-    such breach within 30 days of becoming aware of the breach. Provisions
-    which, by their nature, must remain in effect beyond the termination of
-    this License shall survive.
-
-    6.2. If You assert a patent infringement claim (excluding declaratory
-    judgment actions) against Initial Developer or a Contributor (the Initial
-    Developer or Contributor against whom You assert such claim is referred
-    to as Participant) alleging that the Participant Software (meaning the
-    Contributor Version where the Participant is a Contributor or the
-    Original Software where the Participant is the Initial Developer)
-    directly or indirectly infringes any patent, then any and all rights
-    granted directly or indirectly to You by such Participant, the Initial
-    Developer (if the Initial Developer is not the Participant) and all
-    Contributors under Sections 2.1 and/or 2.2 of this License shall, upon
-    60 days notice from Participant terminate prospectively and automatically
-    at the expiration of such 60 day notice period, unless if within such
-    60 day period You withdraw Your claim with respect to the Participant
-    Software against such Participant either unilaterally or pursuant to a
-    written agreement with Participant.
-
-    6.3. In the event of termination under Sections 6.1 or 6.2 above, all end
-    user licenses that have been validly granted by You or any distributor
-    hereunder prior to termination (excluding licenses granted to You by any
-    distributor) shall survive termination.
-
-    7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
-    THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL
-    YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
-    COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY
-    PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF
-    ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS,
-    LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY
-    AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
-    BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-    LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
-    RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW
-    PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
-    OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
-    AND LIMITATION MAY NOT APPLY TO YOU.
-
-    8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item,
-    as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of
-    commercial computer software (as that term is defined at 48 C.F.R.
-    252.227-7014(a)(1)) and commercial computer software documentation as such
-    terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R.
-    12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
-    Government End Users acquire Covered Software with only those rights set
-    forth herein. This U.S. Government Rights clause is in lieu of, and
-    supersedes, any other FAR, DFAR, or other clause or provision that
-    addresses Government rights in computer software under this License.
-
-    9. MISCELLANEOUS. This License represents the complete agreement
-    concerning subject matter hereof. If any provision of this License is
-    held to be unenforceable, such provision shall be reformed only to the
-    extent necessary to make it enforceable. This License shall be governed
-    by the law of the jurisdiction specified in a notice contained within
-    the Original Software (except to the extent applicable law, if any,
-    provides otherwise), excluding such jurisdictions conflict-of-law
-    provisions. Any litigation relating to this License shall be subject to
-    the jurisdiction of the courts located in the jurisdiction and venue
-    specified in a notice contained within the Original Software, with the
-    losing party responsible for costs, including, without limitation, court
-    costs and reasonable attorneys fees and expenses. The application of the
-    United Nations Convention on Contracts for the International Sale of
-    Goods is expressly excluded. Any law or regulation which provides that
-    the language of a contract shall be construed against the drafter shall
-    not apply to this License. You agree that You alone are responsible for
-    compliance with the United States export administration regulations (and
-    the export control laws and regulation of any other countries) when You
-    use, distribute or otherwise make available any Covered Software.
-
-    10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the
-    Contributors, each party is responsible for claims and damages arising,
-    directly or indirectly, out of its utilization of rights under this
-    License and You agree to work with Initial Developer and Contributors
-    to distribute such responsibility on an equitable basis. Nothing herein
-    is intended or shall be deemed to constitute any admission of liability.
-
-    NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
-    LICENSE (CDDL) The code released under the CDDL shall be governed by the
-    laws of the State of California (excluding conflict-of-law provisions).
-    Any litigation relating to this License shall be subject to the
-    jurisdiction of the Federal Courts of the Northern District of California
-    and the state courts of the State of California, with venue lying in
-    Santa Clara County, California.
-
-
-==============================================================================
-
-For: jaxb-xjc-2.1.7.jar
-    Containing Project URL: 
-
-Copyright (c) 2004 Kohsuke Kawaguchi
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom
-the Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall
-be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-=============================================================================== 
-The following components are BSD Licensed 
-=============================================================================== 
-
-For jibx-bind-1.2.1.jar,jibx-run-1.2.1.jar, antlr-2.7.7.jar,hamcrest-all-1.1.jar,whirr-core-0.7.1.jar, whirr-hadoop-0.7.1.jar:
-    Containing Project URL: http://jibx.sourceforge.net, http://www.antlr.org/
-
-Copyright (c) 2003-2007, Dennis M. Sosnoski
-All rights reserved.
-
-Copyright (c) 2010 Terence Parr
-All rights reserved.
-
-[The BSD License]
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
- * Neither the name of JiBX nor the names of its contributors may be used
-   to endorse or promote products derived from this software without specific
-   prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==============================================================================
-
-For YFilter:
-    Containing Project URL: http://yfilter.cs.umass.edu/
-
-YFilter 1.0 COPYRIGHT, LICENSE and DISCLAIMER
-
-Copyright (c) 2002, 2004, Regents of the University of California All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are
-permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, this
-    list of conditions and the following disclaimer in the documentation and/or other
-    materials provided with the distribution.
-    * Neither the name of the University of California at Berkeley nor the names of
-    its contributors may be used to endorse or promote products derived from this
-    software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
-SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==========================================================================================
-For jaxen-1.1.1.jar:
-    Containing Project URL: http://jaxen.codehaus.org/
-
- Copyright 2003-2006 The Werken Company. All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  * Neither the name of the Jaxen Project nor the names of its
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-=============================================================================== 
-The following components are CPL Licensed 
-=============================================================================== 
-
-For wsdl4j-1.6.2.jar:
-    Containing Project URL: http://sourceforge.net/projects/wsdl4j/
-
-Common Public License Version 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC\u2028LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM\u2028CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-1. DEFINITIONS
-"Contribution" means:
-a) in the case of the initial Contributor, the initial code and\u2028documentation distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-i) changes to the Program, and
-ii) additions to the Program;
-where such changes and/or additions to the Program originate from and are\u2028distributed by that particular Contributor. A Contribution 'originates' from a\u2028Contributor if it was added to the Program by such Contributor itself or anyone\u2028acting on such Contributor's behalf. Contributions do not include additions to\u2028the Program which: (i) are separate modules of software distributed in\u2028conjunction with the Program under their own license agreement, and (ii) are not\u2028derivative works of the Program.
-"Contributor" means any person or entity that distributes the Program.
-"Licensed Patents " mean patent claims licensable by a Contributor which are\u2028necessarily infringed by the use or sale of its Contribution alone or when\u2028combined with the Program.
-"Program" means the Contributions distributed in accordance with this Agreement.
-"Recipient" means anyone who receives the Program under this Agreement,\u2028including all Contributors.
-2. GRANT OF RIGHTS
-a) Subject to the terms of this Agreement, each Contributor hereby grants\u2028Recipient a non-exclusive, worldwide, royalty-free copyright license to\u2028reproduce, prepare derivative works of, publicly display, publicly perform,\u2028distribute and sublicense the Contribution of such Contributor, if any, and such\u2028derivative works, in source code and object code form.
-b) Subject to the terms of this Agreement, each Contributor hereby grants\u2028Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed\u2028Patents to make, use, sell, offer to sell, import and otherwise transfer the\u2028Contribution of such Contributor, if any, in source code and object code form.\u2028This patent license shall apply to the combination of the Contribution and the\u2028Program if, at the time the Contribution is added by the Contributor, such\u2028addition of the Contribution causes such combination to be covered by the\u2028Licensed Patents. The patent license shall not apply to any other combinations\u2028which include the Contribution. No hardware per se is licensed hereunder.
-c) Recipient understands that although each Contributor grants the licenses\u2028to its Contributions set forth herein, no assurances are provided by any\u2028Contributor that the Program does not infringe the patent or other intellectual\u2028property rights of any other entity. Each Contributor disclaims any liability to\u2028Recipient for claims brought by any other entity based on infringement of\u2028intellectual property rights or otherwise. As a condition to exercising the\u2028rights and licenses granted hereunder, each Recipient hereby assumes sole\u2028responsibility to secure any other intellectual property rights needed, if any.\u2028For example, if a third party patent license is required to allow Recipient to\u2028distribute the Program, it is Recipient's responsibility to acquire that license\u2028before distributing the Program.
-d) Each Contributor represents that to its knowledge it has sufficient\u2028copyright rights in its Contribution, if any, to grant the copyright license set\u2028forth in this Agreement.
-3. REQUIREMENTS
-A Contributor may choose to distribute the Program in object code form under its\u2028own license agreement, provided that:
-a) it complies with the terms and conditions of this Agreement; and
-b) its license agreement:
-i) effectively disclaims on behalf of all Contributors all warranties and\u2028conditions, express and implied, including warranties or conditions of title and\u2028non-infringement, and implied warranties or conditions of merchantability and\u2028fitness for a particular purpose;
-ii) effectively excludes on behalf of all Contributors all liability for\u2028damages, including direct, indirect, special, incidental and consequential\u2028damages, such as lost profits;
-iii) states that any provisions which differ from this Agreement are offered\u2028by that Contributor alone and not by any other party; and
-iv) states that source code for the Program is available from such\u2028Contributor, and informs licensees how to obtain it in a reasonable manner on or\u2028through a medium customarily used for software exchange.
-When the Program is made available in source code form:
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the Program.
-Contributors may not remove or alter any copyright notices contained within the\u2028Program.
-Each Contributor must identify itself as the originator of its Contribution, if\u2028any, in a manner that reasonably allows subsequent Recipients to identify the\u2028originator of the Contribution.
-4. COMMERCIAL DISTRIBUTION
-Commercial distributors of software may accept certain responsibilities with\u2028respect to end users, business partners and the like. While this license is\u2028intended to facilitate the commercial use of the Program, the Contributor who\u2028includes the Program in a commercial product offering should do so in a manner\u2028which does not create potential liability for other Contributors. Therefore, if\u2028a Contributor includes the Program in a commercial product offering, such\u2028Contributor ("Commercial Contributor") hereby agrees to defend and indemnify\u2028every other Contributor ("Indemnified Contributor") against any losses, damages\u2028and costs (collectively "Losses") arising from claims, lawsuits and other legal\u2028actions brought by a third party against the Indemnified Contributor to the\u2028extent caused by the acts or omissions of such Commercial Contributor in\u2028connection with its distribution of the Program in a commercial product\u2028offering. The obligations in this section do not ap
 ply to any claims or Losses\u2028relating to any actual or alleged intellectual property infringement. In order\u2028to qualify, an Indemnified Contributor must: a) promptly notify the Commercial\u2028Contributor in writing of such claim, and b) allow the Commercial Contributor to\u2028control, and cooperate with the Commercial Contributor in, the defense and any\u2028related settlement negotiations. The Indemnified Contributor may participate in\u2028any such claim at its own expense.
-For example, a Contributor might include the Program in a commercial product\u2028offering, Product X. That Contributor is then a Commercial Contributor. If that\u2028Commercial Contributor then makes performance claims, or offers warranties\u2028related to Product X, those performance claims and warranties are such\u2028Commercial Contributor's responsibility alone. Under this section, the\u2028Commercial Contributor would have to defend claims against the other\u2028Contributors related to those performance claims and warranties, and if a court\u2028requires any other Contributor to pay any damages as a result, the Commercial\u2028Contributor must pay those damages.
-5. NO WARRANTY
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN\u2028"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR\u2028IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,\u2028NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each\u2028Recipient is solely responsible for determining the appropriateness of using and\u2028distributing the Program and assumes all risks associated with its exercise of\u2028rights under this Agreement, including but not limited to the risks and costs of\u2028program errors, compliance with applicable laws, damage to or loss of data,\u2028programs or equipment, and unavailability or interruption of operations.
-6. DISCLAIMER OF LIABILITY
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY\u2028CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,\u2028SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST\u2028PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\u2028STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\u2028OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS\u2028GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-7. GENERAL
-If any provision of this Agreement is invalid or unenforceable under applicable\u2028law, it shall not affect the validity or enforceability of the remainder of the\u2028terms of this Agreement, and without further action by the parties hereto, such\u2028provision shall be reformed to the minimum extent necessary to make such\u2028provision valid and enforceable.
-If Recipient institutes patent litigation against a Contributor with respect to\u2028a patent applicable to software (including a cross-claim or counterclaim in a\u2028lawsuit), then any patent licenses granted by that Contributor to such Recipient\u2028under this Agreement shall terminate as of the date such litigation is filed. In\u2028addition, if Recipient institutes patent litigation against any entity\u2028(including a cross-claim or counterclaim in a lawsuit) alleging that the Program\u2028itself (excluding combinations of the Program with other software or hardware)\u2028infringes such Recipient's patent(s), then such Recipient's rights granted under\u2028Section 2(b) shall terminate as of the date such litigation is filed.
-All Recipient's rights under this Agreement shall terminate if it fails to\u2028comply with any of the material terms or conditions of this Agreement and does\u2028not cure such failure in a reasonable period of time after becoming aware of\u2028such noncompliance. If all Recipient's rights under this Agreement terminate,\u2028Recipient agrees to cease use and distribution of the Program as soon as\u2028reasonably practicable. However, Recipient's obligations under this Agreement\u2028and any licenses granted by Recipient relating to the Program shall continue and\u2028survive.
-Everyone is permitted to copy and distribute copies of this Agreement, but in\u2028order to avoid inconsistency the Agreement is copyrighted and may only be\u2028modified in the following manner. The Agreement Steward reserves the right to\u2028publish new versions (including revisions) of this Agreement from time to time.\u2028No one other than the Agreement Steward has the right to modify this Agreement.\u2028IBM is the initial Agreement Steward. IBM may assign the responsibility to serve\u2028as the Agreement Steward to a suitable separate entity. Each new version of the\u2028Agreement will be given a distinguishing version number. The Program (including\u2028Contributions) may always be distributed subject to the version of the Agreement\u2028under which it was received. In addition, after a new version of the Agreement\u2028is published, Contributor may elect to distribute the Program (including its\u2028Contributions) under the new version. Except as expressly stated in Sections\u20282(a) and 2(b) above, Recipie
 nt receives no rights or licenses to the\u2028intellectual property of any Contributor under this Agreement, whether\u2028expressly, by implication, estoppel or otherwise. All rights in the Program not\u2028expressly granted under this Agreement are reserved.
-This Agreement is governed by the laws of the State of New York and the\u2028intellectual property laws of the United States of America. No party to this\u2028Agreement will bring a legal action under this Agreement more than one year\u2028after the cause of action arose. Each party waives its rights to a jury trial in\u2028any resulting litigation.
-
-==========================================================================================
-==========================================================================================
-
-For puretls:
-    Containing Project URL: 
-
-  This package is a SSLv3/TLS implementation written by Eric Rescorla
-   <ek...@rtfm.com> and licensed by Claymore Systems, Inc.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-   1. Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-   2. Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-   3. Neither the name of Claymore Systems, Inc. nor the name of Eric
-      Rescorla may be used to endorse or promote products derived from this
-      software without specific prior written permission.
-   THIS SOFTWARE IS PROVIDED BY CLAYMORE SYSTEMS AND CONTRIBUTORS ``AS IS'' AND
-   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-   SUCH DAMAGE.
-
-==============================================================================
-
-For xml-api,woden-api-1.0M8.jar,woden-impl-dom-1.0M8.jar:
-    Containing Project URL: 
-
-For the W3C schema and DTD files in the org.apache.woden.resolver package:
-
-W3C� DOCUMENT LICENSE
-http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
-
-Public documents on the W3C site are provided by the copyright holders under
-the following license. By using and/or copying this document, or the W3C
-document from which this statement is linked, you (the licensee) agree that
-you have read, understood, and will comply with the following terms and
-conditions:
-
-Permission to copy, and distribute the contents of this document, or the W3C
-document from which this statement is linked, in any medium for any purpose
-and without fee or royalty is hereby granted, provided that you include the
-following on ALL copies of the document, or portions thereof, that you use:
-
-  1. A link or URL to the original W3C document.
-  2. The pre-existing copyright notice of the original author, or if it
-     doesn't exist, a notice (hypertext is preferred, but a textual
-     representation is permitted) of the form: "Copyright � [$date-of-document]
-     World Wide Web Consortium, (Massachusetts Institute of Technology,
-     European Research Consortium for Informatics and Mathematics, Keio
-     University). All Rights Reserved.
-     http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231"
-  3. If it exists, the STATUS of the W3C document.
-
-When space permits, inclusion of the full text of this NOTICE should be
-provided. We request that authorship attribution be provided in any software,
-documents, or other items or products that you create pursuant to the
-implementation of the contents of this document, or any portion thereof.
-
-No right to create modifications or derivatives of W3C documents is granted
-pursuant to this license. However, if additional requirements (documented in
-the Copyright FAQ) are satisfied, the right to create modifications or
-derivatives is sometimes granted by the W3C to individuals complying with
-those requirements.
-
-THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
-REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
-LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
-NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE
-FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT
-INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
-PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
-
-The name and trademarks of copyright holders may NOT be used in advertising
-or publicity pertaining to this document or its contents without specific,
-written prior permission. Title to copyright in this document will at all
-times remain with copyright holders.
-
-This formulation of W3C's notice and license became active on December 31 2002. 
-This version removes the copyright ownership notice such that this license can 
-be used with materials other than those owned by the W3C, reflects that ERCIM is 
-now a host of the W3C, includes references to this specific dated version of the 
-license, and removes the ambiguous grant of "use". Otherwise, this version is the 
-same as the previous version and is written so as to preserve the Free Software 
-Foundation's assessment of GPL compatibility and OSI's certification under the 
-Open Source Definition. Please see our Copyright FAQ for common questions about 
-using materials from our site, including specific terms and conditions for packages 
-like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed 
-o site-policy@w3.org.
-
-Joseph Reagle <si...@w3.org>
- 
-Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $ 
-
-==========================================================================================
-
-XML API library, org.w3c classes (xml-apis)
-    Containing Project URL: 
-
-    DOM Java Language Binding:
-    http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/java-binding.html
-
-    W3C IPR SOFTWARE NOTICE
-    Copyright (C) 2000 World Wide Web Consortium, (Massachusetts Institute of
-    Technology, Institut National de Recherche en Informatique et en
-    Automatique, Keio University). All Rights Reserved.
-
-    The DOM bindings are published under the W3C Software Copyright Notice
-    and License. The software license requires "Notice of any changes or
-    modifications to the W3C files, including the date changes were made."
-    Consequently, modified versions of the DOM bindings must document that
-    they do not conform to the W3C standard; in the case of the IDL binding,
-    the pragma prefix can no longer be 'w3c.org'; in the case of the Java
-    binding, the package names can no longer be in the 'org.w3c' package.
-
-    Note: The original version of the W3C Software Copyright Notice and
-    License could be found at
-    http://www.w3.org/Consortium/Legal/copyright-software-19980720
-
-    Copyright (C) 1994-2000 World Wide Web Consortium, (Massachusetts
-    Institute of Technology, Institut National de Recherche en Informatique
-    et en Automatique, Keio University). All Rights Reserved.
-    http://www.w3.org/Consortium/Legal/
-
-    This W3C work (including software, documents, or other related items) is
-    being provided by the copyright holders under the following license. By
-    obtaining, using and/or copying this work, you (the licensee) agree that
-    you have read, understood, and will comply with the following terms and
-    conditions:
-
-    Permission to use, copy, and modify this software and its documentation,
-    with or without modification, for any purpose and without fee or royalty
-    is hereby granted, provided that you include the following on ALL copies
-    of the software and documentation or portions thereof, including
-    modifications, that you make:
-
-      1. The full text of this NOTICE in a location viewable to users of the
-         redistributed or derivative work.
-
-      2. Any pre-existing intellectual property disclaimers, notices, or
-         terms and conditions. If none exist, a short notice of the following
-         form (hypertext is preferred, text is permitted) should be used
-         within the body of any redistributed or derivative code:
-         "Copyright (C) [$date-of-software] World Wide Web Consortium,
-         (Massachusetts Institute of Technology, Institut National de
-         Recherche en Informatique et en Automatique, Keio University).
-         All Rights Reserved. http://www.w3.org/Consortium/Legal/"
-
-      3. Notice of any changes or modifications to the W3C files, including
-         the date changes were made. (We recommend you provide URIs to the
-         location from which the code is derived.)
-
-    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
-    MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
-    NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
-    PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
-    ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
-    OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
-    DOCUMENTATION.
-
-    The name and trademarks of copyright holders may NOT be used in
-    advertising or publicity pertaining to the software without specific,
-    written prior permission. Title to copyright in this software and any
-    associated documentation will at all times remain with copyright holders.
-
-=============================================================================== 
-The following components come under the Eclipse Public 1.0 License 
-=============================================================================== 
-Eclipse JDT Core (core-3.1.1.jar)
-
--AspectJ runtime (http://www.aspectj.org) org.aspectj:aspectjrt:jar:1.6.12
-    License: Eclipse Public License - v 1.0  (http://www.eclipse.org/legal/epl-v10.html)
-
-  Eclipse Public License - v 1.0
-
-    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
-    THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-    1. DEFINITIONS
-
-    "Contribution" means:
-
-    a) in the case of the initial Contributor, the initial code and
-       documentation distributed under this Agreement, and
-
-    b) in the case of each subsequent Contributor:
-
-       i) changes to the Program, and
-
-       ii) additions to the Program;
-
-       where such changes and/or additions to the Program originate from and
-       are distributed by that particular Contributor. A Contribution
-       'originates' from a Contributor if it was added to the Program by
-       such Contributor itself or anyone acting on such Contributor's behalf.
-       Contributions do not include additions to the Program which: (i) are
-       separate modules of software distributed in conjunction with the
-       Program under their own license agreement, and (ii) are not derivative
-       works of the Program.
-
-    "Contributor" means any person or entity that distributes the Program.
-
-    "Licensed Patents " mean patent claims licensable by a Contributor which
-    are necessarily infringed by the use or sale of its Contribution alone or
-    when combined with the Program.
-
-    "Program" means the Contributions distributed in accordance with this
-    Agreement.
-
-    "Recipient" means anyone who receives the Program under this Agreement,
-    including all Contributors.
-
-    2. GRANT OF RIGHTS
-
-    a) Subject to the terms of this Agreement, each Contributor hereby grants
-       Recipient a non-exclusive, worldwide, royalty-free copyright license to
-       reproduce, prepare derivative works of, publicly display, publicly
-       perform, distribute and sublicense the Contribution of such
-       Contributor, if any, and such derivative works, in source code and
-       object code form.
-
-    b) Subject to the terms of this Agreement, each Contributor hereby grants
-       Recipient a non-exclusive, worldwide, royalty-free patent license under
-       Licensed Patents to make, use, sell, offer to sell, import and
-       otherwise transfer the Contribution of such Contributor, if any, in
-       source code and object code form. This patent license shall apply to
-       the combination of the Contribution and the Program if, at the time
-       the Contribution is added by the Contributor, such addition of the
-       Contribution causes such combination to be covered by the Licensed
-       Patents. The patent license shall not apply to any other combinations
-       which include the Contribution. No hardware per se is licensed hereunder.
-
-    c) Recipient understands that although each Contributor grants the
-       licenses to its Contributions set forth herein, no assurances are
-       provided by any Contributor that the Program does not infringe the
-       patent or other intellectual property rights of any other entity. Each
-       Contributor disclaims any liability to Recipient for claims brought by
-       any other entity based on infringement of intellectual property rights
-       or otherwise. As a condition to exercising the rights and licenses
-       granted hereunder, each Recipient hereby assumes sole responsibility
-       to secure any other intellectual property rights needed, if any. For
-       example, if a third party patent license is required to allow Recipient
-       to distribute the Program, it is Recipient's responsibility to acquire
-       that license before distributing the Program.
-
-    d) Each Contributor represents that to its knowledge it has sufficient
-       copyright rights in its Contribution, if any, to grant the copyright
-       license set forth in this Agreement.
-
-    3. REQUIREMENTS
-
-    A Contributor may choose to distribute the Program in object code form
-    under its own license agreement, provided that:
-
-    a) it complies with the terms and conditions of this Agreement; and
-
-    b) its license agreement:
-
-       i)   effectively disclaims on behalf of all Contributors all warranties
-            and conditions, express and implied, including warranties or
-            conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular
-            purpose;
-
-       ii)  effectively excludes on behalf of all Contributors all liability
-            for damages, including direct, indirect, special, incidental and
-            consequential damages, such as lost profits;
-
-       iii) states that any provisions which differ from this Agreement are
-            offered by that Contributor alone and not by any other party; and
-
-       iv)  states that source code for the Program is available from such
-            Contributor, and informs licensees how to obtain it in a
-            reasonable manner on or through a medium customarily used for
-            software exchange.
-
-    When the Program is made available in source code form:
-
-    a) it must be made available under this Agreement; and
-
-    b) a copy of this Agreement must be included with each copy of the
-       Program.
-
-    Contributors may not remove or alter any copyright notices contained
-    within the Program.
-
-    Each Contributor must identify itself as the originator of its
-    Contribution, if any, in a manner that reasonably allows subsequent
-    Recipients to identify the originator of the Contribution.
-
-    4. COMMERCIAL DISTRIBUTION
-
-    Commercial distributors of software may accept certain responsibilities
-    with respect to end users, business partners and the like. While this
-    license is intended to facilitate the commercial use of the Program,
-    the Contributor who includes the Program in a commercial product offering
-    should do so in a manner which does not create potential liability for
-    other Contributors. Therefore, if a Contributor includes the Program in
-    a commercial product offering, such Contributor ("Commercial Contributor")
-    hereby agrees to defend and indemnify every other Contributor
-    ("Indemnified Contributor") against any losses, damages and costs
-    (collectively "Losses") arising from claims, lawsuits and other legal
-    actions brought by a third party against the Indemnified Contributor to
-    the extent caused by the acts or omissions of such Commercial Contributor
-    in connection with its distribution of the Program in a commercial
-    product offering. The obligations in this section do not apply to any
-    claims or Losses relating to any actual or alleged intellectual property
-    infringement. In order to qualify, an Indemnified Contributor must:
-    a) promptly notify the Commercial Contributor in writing of such claim,
-    and b) allow the Commercial Contributor to control, and cooperate with
-    the Commercial Contributor in, the defense and any related settlement
-    negotiations. The Indemnified Contributor may participate in any such
-    claim at its own expense.
-
-    For example, a Contributor might include the Program in a commercial
-    product offering, Product X. That Contributor is then a Commercial
-    Contributor. If that Commercial Contributor then makes performance claims,
-    or offers warranties related to Product X, those performance claims and
-    warranties are such Commercial Contributor's responsibility alone. Under
-    this section, the Commercial Contributor would have to defend claims
-    against the other Contributors related to those performance claims and
-    warranties, and if a court requires any other Contributor to pay any
-    damages as a result, the Commercial Contributor must pay those damages.
-
-    5. NO WARRANTY
-
-    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
-    ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
-    EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
-    CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
-    PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
-    the appropriateness of using and distributing the Program and assumes all
-    risks associated with its exercise of rights under this Agreement ,
-    including but not limited to the risks and costs of program errors,
-    compliance with applicable laws, damage to or loss of data, programs or
-    equipment, and unavailability or interruption of operations.
-
-    6. DISCLAIMER OF LIABILITY
-
-    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
-    ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-    WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-    DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-    HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-    7. GENERAL
-
-    If any provision of this Agreement is invalid or unenforceable under
-    applicable law, it shall not affect the validity or enforceability of
-    the remainder of the terms of this Agreement, and without further action
-    by the parties hereto, such provision shall be reformed to the minimum
-    extent necessary to make such provision valid and enforceable.
-
-    If Recipient institutes patent litigation against any entity (including
-    a cross-claim or counterclaim in a lawsuit) alleging that the Program
-    itself (excluding combinations of the Program with other software or
-    hardware) infringes such Recipient's patent(s), then such Recipient's
-    rights granted under Section 2(b) shall terminate as of the date such
-    litigation is filed.
-
-    All Recipient's rights under this Agreement shall terminate if it fails
-    to comply with any of the material terms or conditions of this Agreement
-    and does not cure such failure in a reasonable period of time after
-    becoming aware of such noncompliance. If all Recipient's rights under
-    this Agreement terminate, Recipient agrees to cease use and distribution
-    of the Program as soon as reasonably practicable. However, Recipient's
-    obligations under this Agreement and any licenses granted by Recipient
-    relating to the Program shall continue and survive.
-
-    Everyone is permitted to copy and distribute copies of this Agre

<TRUNCATED>

[38/48] airavata git commit: removing registry refactoring module

Posted by la...@apache.org.
removing registry refactoring module


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: 12383ccc6022f76ae465869fcf28bfcc1b27e787
Parents: ae54612
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 7 15:15:09 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Sep 7 15:15:09 2016 -0400

----------------------------------------------------------------------
 modules/registry-refactoring/pom.xml            | 127 ---------
 .../registry/core/RegistryException.java        |  28 --
 .../ComputeResourceSchedulingEntity.java        | 170 -----------
 .../entities/expcatalog/ExperimentEntity.java   | 224 ---------------
 .../expcatalog/ExperimentErrorEntity.java       | 118 --------
 .../entities/expcatalog/ExperimentErrorPK.java  |  75 -----
 .../expcatalog/ExperimentInputEntity.java       | 174 -----------
 .../entities/expcatalog/ExperimentInputPK.java  |  74 -----
 .../expcatalog/ExperimentOutputEntity.java      | 165 -----------
 .../entities/expcatalog/ExperimentOutputPK.java |  74 -----
 .../expcatalog/ExperimentStatusEntity.java      |  83 ------
 .../entities/expcatalog/ExperimentStatusPK.java |  74 -----
 .../core/entities/expcatalog/JobEntity.java     | 165 -----------
 .../entities/expcatalog/JobStatusEntity.java    |  83 ------
 .../core/entities/expcatalog/JobStatusPK.java   |  74 -----
 .../core/entities/expcatalog/ProcessEntity.java | 276 ------------------
 .../entities/expcatalog/ProcessErrorEntity.java | 118 --------
 .../entities/expcatalog/ProcessErrorPK.java     |  75 -----
 .../entities/expcatalog/ProcessInputEntity.java | 174 -----------
 .../entities/expcatalog/ProcessInputPK.java     |  74 -----
 .../expcatalog/ProcessOutputEntity.java         | 165 -----------
 .../entities/expcatalog/ProcessOutputPK.java    |  70 -----
 .../ProcessResourceSchedulingEntity.java        | 170 -----------
 .../expcatalog/ProcessStatusEntity.java         |  83 ------
 .../entities/expcatalog/ProcessStatusPK.java    |  74 -----
 .../core/entities/expcatalog/TaskEntity.java    | 147 ----------
 .../entities/expcatalog/TaskErrorEntity.java    | 118 --------
 .../core/entities/expcatalog/TaskErrorPK.java   |  75 -----
 .../entities/expcatalog/TaskStatusEntity.java   |  83 ------
 .../core/entities/expcatalog/TaskStatusPK.java  |  74 -----
 .../expcatalog/UserConfigurationEntity.java     | 131 ---------
 .../workspacecatalog/GatewayEntity.java         | 221 --------------
 .../workspacecatalog/NSFDemographicsEntity.java |  94 ------
 .../workspacecatalog/NotificationEntity.java    | 110 -------
 .../workspacecatalog/ProjectEntity.java         |  92 ------
 .../workspacecatalog/UserProfileEntity.java     | 247 ----------------
 .../core/repositories/AbstractRepository.java   |  78 -----
 .../expcatalog/ExperimentRepository.java        | 101 -------
 .../workspacecatalog/GatewayRepository.java     |  35 ---
 .../NotificationRepository.java                 |  35 ---
 .../workspacecatalog/ProjectRepository.java     |  35 ---
 .../workspacecatalog/UserProfileRepository.java |  43 ---
 .../airavata/registry/core/utils/Committer.java |  27 --
 .../airavata/registry/core/utils/JPAUtils.java  |  82 ------
 .../core/utils/ObjectMapperSingleton.java       |  39 ---
 .../src/main/resources/META-INF/persistence.xml |  50 ----
 .../src/main/resources/experiment_catalog.sql   | 285 -------------------
 .../src/main/resources/workspace_catalog.sql    | 125 --------
 .../core/repositories/RepositoryTest.java       | 100 -------
 pom.xml                                         |   1 -
 50 files changed, 5415 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/pom.xml b/modules/registry-refactoring/pom.xml
deleted file mode 100644
index b794349..0000000
--- a/modules/registry-refactoring/pom.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.airavata</groupId>
-        <artifactId>airavata</artifactId>
-        <version>0.17-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
-    </parent>
-
-    <groupId>org.apache.airavata</groupId>
-    <artifactId>registry-refactoring</artifactId>
-
-    <properties>
-        <derby.version>10.11.1.1</derby.version>
-        <surefire.version>2.18.1</surefire.version>
-        <skipTests>false</skipTests>
-        <mysql.connector.version>5.1.34</mysql.connector.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>airavata-data-models</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.dozer</groupId>
-            <artifactId>dozer</artifactId>
-            <version>5.4.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.openjpa</groupId>
-            <artifactId>openjpa-all</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>${mysql.connector.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derby</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbyclient</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbynet</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbytools</artifactId>
-            <version>${derby.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.openjpa</groupId>
-                <artifactId>openjpa-maven-plugin</artifactId>
-                <version>2.2.0</version>
-                <configuration>
-                    <includes>**/entities/*.class</includes>
-                    <excludes>**/entities/XML*.class</excludes>
-                    <addDefaultConstructor>true</addDefaultConstructor>
-                    <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>enhancer</id>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>enhance</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.apache.openjpa</groupId>
-                        <artifactId>openjpa</artifactId>
-                        <version>2.2.0</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>${surefire.version}</version>
-                <inherited>true</inherited>
-                <configuration>
-                    <failIfNoTests>false</failIfNoTests>
-                    <!--<skipTests>${skipTests}</skipTests>-->
-                    <skipTests>true</skipTests>
-                    <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
deleted file mode 100644
index 8893b34..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/RegistryException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RegistryException extends Exception {
-    private final static Logger logger = LoggerFactory.getLogger(RegistryException.class);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
deleted file mode 100644
index bfbb3e2..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ComputeResourceSchedulingEntity.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_COMPUTE_RESOURCE_SCHEDULING")
-public class ComputeResourceSchedulingEntity {
-    private String experimentId;
-    private String resourceHostId;
-    private int totalCPUCount;
-    private int nodeCount;
-    private int numberOfThreads;
-    private String queueName;
-    private int wallTimeLimit;
-    private int totalPhysicalMemory;
-    private String chessisNumber;
-    private String staticWorkingDir;
-    private String overrideLoginUserName;
-    private String overrideScratchLocation;
-    private String overrideAllocationProjectNumber;
-    private UserConfigurationEntity userConfiguration;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Column(name = "RESOURCE_HOST_ID")
-    public String getResourceHostId() {
-        return resourceHostId;
-    }
-
-    public void setResourceHostId(String resourceHostId) {
-        this.resourceHostId = resourceHostId;
-    }
-
-    @Column(name = "CPU_COUNT")
-    public int getTotalCPUCount() {
-        return totalCPUCount;
-    }
-
-    public void setTotalCPUCount(int totalCPUCount) {
-        this.totalCPUCount = totalCPUCount;
-    }
-
-    @Column(name = "NODE_COUNT")
-    public int getNodeCount() {
-        return nodeCount;
-    }
-
-    public void setNodeCount(int nodeCount) {
-        this.nodeCount = nodeCount;
-    }
-
-    @Column(name = "NUMBER_OF_THREADS")
-    public int getNumberOfThreads() {
-        return numberOfThreads;
-    }
-
-    public void setNumberOfThreads(int numberOfThreads) {
-        this.numberOfThreads = numberOfThreads;
-    }
-
-    @Column(name = "QUEUE_NAME")
-    public String getQueueName() {
-        return queueName;
-    }
-
-    public void setQueueName(String queueName) {
-        this.queueName = queueName;
-    }
-
-    @Column(name = "WALL_TIME_LIMIT")
-    public int getWallTimeLimit() {
-        return wallTimeLimit;
-    }
-
-    public void setWallTimeLimit(int wallTimeLimit) {
-        this.wallTimeLimit = wallTimeLimit;
-    }
-
-    @Column(name = "TOTAL_PHYSICAL_MEMORY")
-    public int getTotalPhysicalMemory() {
-        return totalPhysicalMemory;
-    }
-
-    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
-        this.totalPhysicalMemory = totalPhysicalMemory;
-    }
-
-    @Column(name = "CHESSIS_NUMBER")
-    public String getChessisNumber() {
-        return chessisNumber;
-    }
-
-    public void setChessisNumber(String chessisNumber) {
-        this.chessisNumber = chessisNumber;
-    }
-
-    @Column(name = "STATIC_WORKING_DIRECTORY")
-    public String getStaticWorkingDir() {
-        return staticWorkingDir;
-    }
-
-    public void setStaticWorkingDir(String staticWorkingDir) {
-        this.staticWorkingDir = staticWorkingDir;
-    }
-
-    @Column(name = "OVERRIDE_LOGIN_USERNAME")
-    public String getOverrideLoginUserName() {
-        return overrideLoginUserName;
-    }
-
-    public void setOverrideLoginUserName(String overrideLoginUserName) {
-        this.overrideLoginUserName = overrideLoginUserName;
-    }
-
-    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
-    public String getOverrideScratchLocation() {
-        return overrideScratchLocation;
-    }
-
-    public void setOverrideScratchLocation(String overrideScratchLocation) {
-        this.overrideScratchLocation = overrideScratchLocation;
-    }
-
-    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
-    public String getOverrideAllocationProjectNumber() {
-        return overrideAllocationProjectNumber;
-    }
-
-    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
-        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
-    }
-
-    @OneToOne(targetEntity = UserConfigurationEntity.class, cascade = CascadeType.ALL)
-    @PrimaryKeyJoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public UserConfigurationEntity getUserConfiguration() {
-        return userConfiguration;
-    }
-
-    public void setUserConfiguration(UserConfigurationEntity userConfiguration) {
-        this.userConfiguration = userConfiguration;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
deleted file mode 100644
index e7ea3f6..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_EXPERIMENT")
-public class ExperimentEntity {
-    public String experimentId;
-    public String projectId;
-    public String gatewayId;
-    public String experimentType;
-    public String userName;
-    public String experimentName;
-    public long creationTime;
-    public String description;
-    public String executionId;
-    public String gatewayExecutionId;
-    public String gatewayInstanceId;
-    public boolean enableEmailNotification;
-    public List<String> emailAddresses;
-
-    private List<ExperimentInputEntity> experimentInputs;
-    private List<ExperimentOutputEntity> experimentOutputs;
-    private List<ExperimentErrorEntity> experimentErrors;
-    private List<ExperimentStatusEntity> experimentStatuses;
-
-    private UserConfigurationEntity userConfigurationData;
-
-    private List<ProcessEntity> processes;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Column(name = "PROJECT_ID")
-    public String getProjectId() {
-        return projectId;
-    }
-
-    public void setProjectId(String projectId) {
-        this.projectId = projectId;
-    }
-
-    @Column(name = "GATEWAY_ID")
-    public String getGatewayId() {
-        return gatewayId;
-    }
-
-    public void setGatewayId(String gatewayId) {
-        this.gatewayId = gatewayId;
-    }
-
-    @Column(name = "EXPERIMENT_TYPE")
-    public String getExperimentType() {
-        return experimentType;
-    }
-
-    public void setExperimentType(String experimentType) {
-        this.experimentType = experimentType;
-    }
-
-    @Column(name = "USER_NAME")
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    @Column(name = "EXPERIMENT_NAME")
-    public String getExperimentName() {
-        return experimentName;
-    }
-
-    public void setExperimentName(String experimentName) {
-        this.experimentName = experimentName;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "DESCRIPTION")
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    @Column(name = "EXECUTION_ID")
-    public String getExecutionId() {
-        return executionId;
-    }
-
-    public void setExecutionId(String executionId) {
-        this.executionId = executionId;
-    }
-
-    @Column(name = "GATEWAY_EXECUTION_ID")
-    public String getGatewayExecutionId() {
-        return gatewayExecutionId;
-    }
-
-    public void setGatewayExecutionId(String gatewayExecutionId) {
-        this.gatewayExecutionId = gatewayExecutionId;
-    }
-
-    @Column(name = "GATEWAY_INSTANCE_ID")
-    public String getGatewayInstanceId() {
-        return gatewayInstanceId;
-    }
-
-    public void setGatewayInstanceId(String gatewayInstanceId) {
-        this.gatewayInstanceId = gatewayInstanceId;
-    }
-
-    @Column(name = "ENABLE_EMAIL_NOTIFICATION")
-    public boolean isEnableEmailNotification() {
-        return enableEmailNotification;
-    }
-
-    public void setEnableEmailNotification(boolean enableEmailNotification) {
-        this.enableEmailNotification = enableEmailNotification;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="EXPCAT_EXPERIMENT_EMAIL", joinColumns = @JoinColumn(name="EXPERIMENT_ID"))
-    public List<String> getEmailAddresses() {
-        return emailAddresses;
-    }
-
-    public void setEmailAddresses(List<String> emailAddresses) {
-        this.emailAddresses = emailAddresses;
-    }
-
-    @OneToOne(targetEntity = UserConfigurationEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public UserConfigurationEntity getUserConfigurationData() {
-        return userConfigurationData;
-    }
-
-    public void setUserConfigurationData(UserConfigurationEntity userConfiguration) {
-        this.userConfigurationData = userConfiguration;
-    }
-
-    @OneToMany(targetEntity = ExperimentInputEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public List<ExperimentInputEntity> getExperimentInputs() {
-        return experimentInputs;
-    }
-
-    public void setExperimentInputs(List<ExperimentInputEntity> experimentInputs) {
-        this.experimentInputs = experimentInputs;
-    }
-
-    @OneToMany(targetEntity = ExperimentOutputEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public List<ExperimentOutputEntity> getExperimentOutputs() {
-        return experimentOutputs;
-    }
-
-    public void setExperimentOutputs(List<ExperimentOutputEntity> experimentOutputs) {
-        this.experimentOutputs = experimentOutputs;
-    }
-
-    @OneToMany(targetEntity = ExperimentErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public List<ExperimentErrorEntity> getExperimentErrors() {
-        return experimentErrors;
-    }
-
-    public void setExperimentErrors(List<ExperimentErrorEntity> experimentErrors) {
-        this.experimentErrors = experimentErrors;
-    }
-
-    @OneToMany(targetEntity = ExperimentStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public List<ExperimentStatusEntity> getExperimentStatuses() {
-        return experimentStatuses;
-    }
-
-    public void setExperimentStatuses(List<ExperimentStatusEntity> experimentStatuses) {
-        this.experimentStatuses = experimentStatuses;
-    }
-
-    @OneToMany(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
-    public List<ProcessEntity> getProcesses() {
-        return processes;
-    }
-
-    public void setProcesses(List<ProcessEntity> processes) {
-        this.processes = processes;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
deleted file mode 100644
index 37df525..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorEntity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_EXPERIMENT_ERROR")
-@IdClass(ExperimentErrorPK.class)
-public class ExperimentErrorEntity {
-    private String errorId;
-    private String experimentId;
-    private long creationTime;
-    private String actualErrorMessage;
-    private String userFriendlyMessage;
-    private boolean transientOrPersistent;
-    private List<String> rootCauseErrorIdList;
-
-    private ExperimentEntity experiment;
-
-    @Id
-    @Column(name = "ERROR_ID")
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "ACTUAL_ERROR_MESSAGE")
-    public String getActualErrorMessage() {
-        return actualErrorMessage;
-    }
-
-    public void setActualErrorMessage(String actualErrorMessage) {
-        this.actualErrorMessage = actualErrorMessage;
-    }
-
-    @Column(name = "USER_FRIENDLY_MESSAGE")
-    public String getUserFriendlyMessage() {
-        return userFriendlyMessage;
-    }
-
-    public void setUserFriendlyMessage(String userFriendlyMessage) {
-        this.userFriendlyMessage = userFriendlyMessage;
-    }
-
-
-    @Column(name = "TRANSIENT_OR_PERSISTENT")
-    public boolean isTransientOrPersistent() {
-        return transientOrPersistent;
-    }
-
-    public void setTransientOrPersistent(boolean transientOrPersistent) {
-        this.transientOrPersistent = transientOrPersistent;
-    }
-
-
-    @ElementCollection
-    @CollectionTable(name="EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
-    public List<String> getRootCauseErrorIdList() {
-        return rootCauseErrorIdList;
-    }
-
-    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
-        this.rootCauseErrorIdList = rootCauseErrorIdList;
-    }
-
-
-    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
deleted file mode 100644
index add5616..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentErrorPK.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ExperimentErrorPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentErrorPK.class);
-    private String errorId;
-    private String experimentId;
-
-    @Column(name = "ERROR_ID")
-    @Id
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Column(name = "EXPERIMENT_ID")
-    @Id
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ExperimentErrorPK that = (ExperimentErrorPK) o;
-
-        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
-        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
-        result = 31 * result + (getExperimentId() != null ? getExperimentId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
deleted file mode 100644
index 4a9b2c0..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_EXPERIMENT_INPUT")
-@IdClass(ExperimentInputPK.class)
-public class ExperimentInputEntity {
-    private String experimentId;
-    public String name;
-    public String value;
-    public String type;
-    public String applicationArgument;
-    public boolean standardInput;
-    public String userFriendlyDescription;
-    public String metaData;
-    public int inputOrder;
-    public boolean isRequired;
-    public boolean requiredToAddedToCommandLine;
-    public boolean dataStaged;
-    public String storageResourceId;
-
-    private ExperimentEntity experiment;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Id
-    @Column(name = "INPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Column(name = "INPUT_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @Column(name = "INPUT_TYPE")
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Column(name = "APPLICATION_ARGUMENT")
-    public String getApplicationArgument() {
-        return applicationArgument;
-    }
-
-    public void setApplicationArgument(String applicationArgument) {
-        this.applicationArgument = applicationArgument;
-    }
-
-    @Column(name = "STANDARD_INPUT")
-    public boolean isStandardInput() {
-        return standardInput;
-    }
-
-    public void setStandardInput(boolean standardInput) {
-        this.standardInput = standardInput;
-    }
-
-    @Column(name = "USER_FRIENDLY_DESCRIPTION")
-    public String getUserFriendlyDescription() {
-        return userFriendlyDescription;
-    }
-
-    public void setUserFriendlyDescription(String userFriendlyDescription) {
-        this.userFriendlyDescription = userFriendlyDescription;
-    }
-
-    @Lob
-    @Column(name = "METADATA")
-    public String getMetaData() {
-        return metaData;
-    }
-
-    public void setMetaData(String metaData) {
-        this.metaData = metaData;
-    }
-
-    @Column(name = "INPUT_ORDER")
-    public int getInputOrder() {
-        return inputOrder;
-    }
-
-    public void setInputOrder(int inputOrder) {
-        this.inputOrder = inputOrder;
-    }
-
-    @Column(name = "REQUIRED")
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
-    public boolean isRequiredToAddedToCommandLine() {
-        return requiredToAddedToCommandLine;
-    }
-
-    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
-        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
-    }
-
-    @Column(name = "DATA_STAGED")
-    public boolean isDataStaged() {
-        return dataStaged;
-    }
-
-    public void setDataStaged(boolean dataStaged) {
-        this.dataStaged = dataStaged;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
deleted file mode 100644
index 3479878..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ExperimentInputPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentInputPK.class);
-    private String experimentId;
-    private String name;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Id
-    @Column(name = "INPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ExperimentInputPK that = (ExperimentInputPK) o;
-
-        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
-        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getExperimentId() != null ? getExperimentId().hashCode() : 0;
-        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
deleted file mode 100644
index 871fcd7..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputEntity.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_EXPERIMENT_OUTPUT")
-@IdClass(ExperimentOutputPK.class)
-public class ExperimentOutputEntity {
-    private String experimentId;
-    public String name;
-    public String value;
-    public String type;
-    public String applicationArgument;
-    public boolean isRequired;
-    public boolean requiredToAddedToCommandLine;
-    public boolean dataMovement;
-    public String location;
-    public String searchQuery;
-    public boolean outputStreaming;
-    public String storageResourceId;
-
-    private ExperimentEntity experiment;
-
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Id
-    @Column(name = "OUTPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Column(name = "OUTPUT_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @Column(name = "OUTPUT_TYPE")
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Column(name = "APPLICATION_ARGUMENT")
-    public String getApplicationArgument() {
-        return applicationArgument;
-    }
-
-    public void setApplicationArgument(String applicationArgument) {
-        this.applicationArgument = applicationArgument;
-    }
-
-    @Column(name = "REQUIRED")
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-
-    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
-    public boolean isRequiredToAddedToCommandLine() {
-        return requiredToAddedToCommandLine;
-    }
-
-    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
-        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
-    }
-
-    @Column(name = "DATA_MOVEMENT")
-    public boolean isDataMovement() {
-        return dataMovement;
-    }
-
-    public void setDataMovement(boolean dataMovement) {
-        this.dataMovement = dataMovement;
-    }
-
-    @Column(name = "LOCATION")
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    @Column(name = "SEARCH_QUERY")
-    public String getSearchQuery() {
-        return searchQuery;
-    }
-
-    public void setSearchQuery(String searchQuery) {
-        this.searchQuery = searchQuery;
-    }
-
-    @Column(name = "OUTPUT_STREAMING")
-    public boolean isOutputStreaming() {
-        return outputStreaming;
-    }
-
-    public void setOutputStreaming(boolean outputStreaming) {
-        this.outputStreaming = outputStreaming;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
deleted file mode 100644
index da2864c..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentOutputPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ExperimentOutputPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentOutputPK.class);
-    private String experimentId;
-    private String name;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Id
-    @Column(name = "OUTPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ExperimentOutputPK that = (ExperimentOutputPK) o;
-
-        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
-        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getExperimentId() != null ? getExperimentId().hashCode() : 0;
-        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
deleted file mode 100644
index 7a73e78..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusEntity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_EXPERIMENT_STATUS")
-@IdClass(ExperimentStatusPK.class)
-public class ExperimentStatusEntity {
-    private String experimentId;
-    private String state;
-    private long timeOfStateChange;
-    private String reason;
-
-    private ExperimentEntity experiment;
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Id
-    @Column(name = "STATE")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Column(name = "TIME_OF_STATE_CHANGE")
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    @Column(name = "REASON")
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
deleted file mode 100644
index 4c52ec6..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentStatusPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ExperimentStatusPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ExperimentStatusPK.class);
-    private String state;
-    private String experimentId;
-
-    @Id
-    @Column(name = "STATUS_ID")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Id
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ExperimentStatusPK that = (ExperimentStatusPK) o;
-
-        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
-        if (getExperimentId() != null ? !getExperimentId().equals(that.getExperimentId()) : that.getExperimentId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getState() != null ? getState().hashCode() : 0;
-        result = 31 * result + (getExperimentId() != null ? getExperimentId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
deleted file mode 100644
index 763f5da..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobEntity.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_JOB")
-public class JobEntity {
-    private String jobId;
-    private String taskId;
-    private String processId;
-    private String jobDescription;
-    private long creationTime;
-    private String computeResourceConsumed;
-    private String jobName;
-    private String workingDir;
-    private String stdOut;
-    private String stdErr;
-    private int exitCode;
-
-    private List<JobStatusEntity> jobStatuses;
-
-    private TaskEntity task;
-
-    @Id
-    @Column(name = "JOB_ID")
-    public String getJobId() {
-        return jobId;
-    }
-
-    public void setJobId(String jobId) {
-        this.jobId = jobId;
-    }
-
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Column(name = "JOB_DESCRIPTION")
-    public String getJobDescription() {
-        return jobDescription;
-    }
-
-    public void setJobDescription(String jobDescription) {
-        this.jobDescription = jobDescription;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "COMPUTE_RESOURCE_CONSUMED")
-    public String getComputeResourceConsumed() {
-        return computeResourceConsumed;
-    }
-
-    public void setComputeResourceConsumed(String computeResourceConsumed) {
-        this.computeResourceConsumed = computeResourceConsumed;
-    }
-
-    @Column(name = "JOB_NAME")
-    public String getJobName() {
-        return jobName;
-    }
-
-    public void setJobName(String jobName) {
-        this.jobName = jobName;
-    }
-
-    @Column(name = "WORKING_DIR")
-    public String getWorkingDir() {
-        return workingDir;
-    }
-
-    public void setWorkingDir(String workingDir) {
-        this.workingDir = workingDir;
-    }
-
-    @Lob
-    @Column(name = "STDOUT")
-    public String getStdOut() {
-        return stdOut;
-    }
-
-    public void setStdOut(String stdOut) {
-        this.stdOut = stdOut;
-    }
-
-    @Lob
-    @Column(name = "STDERR")
-    public String getStdErr() {
-        return stdErr;
-    }
-
-    public void setStdErr(String stdErr) {
-        this.stdErr = stdErr;
-    }
-
-    @Column(name = "EXIT_CODE")
-    public int getExitCode() {
-        return exitCode;
-    }
-
-    public void setExitCode(int exitCode) {
-        this.exitCode = exitCode;
-    }
-
-    @OneToMany(targetEntity = JobStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "job")
-    public List<JobStatusEntity> getJobStatuses() {
-        return jobStatuses;
-    }
-
-    public void setJobStatuses(List<JobStatusEntity> jobStatus) {
-        this.jobStatuses = jobStatus;
-    }
-
-    @ManyToOne(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
-    public TaskEntity getTask() {
-        return task;
-    }
-
-    public void setTask(TaskEntity task) {
-        this.task = task;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
deleted file mode 100644
index bcc902b..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusEntity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_JOB_STATUS")
-@IdClass(JobStatusPK.class)
-public class JobStatusEntity {
-    private String jobId;
-    private String state;
-    private long timeOfStateChange;
-    private String reason;
-
-    private JobEntity job;
-
-    @Id
-    @Column(name = "JOB_ID")
-    public String getJobId() {
-        return jobId;
-    }
-
-    public void setJobId(String jobId) {
-        this.jobId = jobId;
-    }
-
-    @Id
-    @Column(name = "STATE")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Column(name = "TIME_OF_STATE_CHANGE")
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    @Column(name = "REASON")
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    @ManyToOne(targetEntity = JobEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "JOB_ID", referencedColumnName = "JOB_ID")
-    public JobEntity getJob() {
-        return job;
-    }
-
-    public void setJob(JobEntity job) {
-        this.job = job;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
deleted file mode 100644
index fa8964f..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/JobStatusPK.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class JobStatusPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(JobStatusPK.class);
-    private String state;
-    private String jobId;
-
-    @Id
-    @Column(name = "STATUS_ID")
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    @Id
-    @Column(name = "JOB_ID")
-    public String getJobId() {
-        return jobId;
-    }
-
-    public void setJobId(String jobId) {
-        this.jobId = jobId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        JobStatusPK that = (JobStatusPK) o;
-
-        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
-        if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getState() != null ? getState().hashCode() : 0;
-        result = 31 * result + (getJobId() != null ? getJobId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
deleted file mode 100644
index a379ef6..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS")
-public class ProcessEntity {
-    private String processId;
-    private String experimentId;
-    private long creationTime;
-    private long lastUpdateTime;
-    private String processDetail;
-    private String applicationInterfaceId;
-    private String applicationDeploymentId;
-    private String computeResourceId;
-    private String taskDag;
-    private String gatewayExecutionId;
-    private boolean enableEmailNotification;
-    private List<String> emailAddresses;
-    private String storageResourceId;
-    private String userDn;
-    private boolean generateCert;
-    private String experimentDataDir;
-    private String userName;
-
-    private List<ProcessStatusEntity> processStatuses;
-    private List<ProcessErrorEntity> processErrors;
-    private List<ProcessInputEntity> processInputs;
-    private List<ProcessOutputEntity> processOutputs;
-    private ProcessResourceSchedulingEntity processResourceSchedule;
-    private List<TaskEntity> tasks;
-
-    private ExperimentEntity experiment;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Column(name = "EXPERIMENT_ID")
-    public String getExperimentId() {
-        return experimentId;
-    }
-
-    public void setExperimentId(String experimentId) {
-        this.experimentId = experimentId;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "LAST_UPDATE_TIME")
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public void setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-    }
-
-    @Column(name = "PROCESS_DETAIL")
-    public String getProcessDetail() {
-        return processDetail;
-    }
-
-    public void setProcessDetail(String processDetail) {
-        this.processDetail = processDetail;
-    }
-
-    @Column(name = "APPLICATION_INTERFACE_ID")
-    public String getApplicationInterfaceId() {
-        return applicationInterfaceId;
-    }
-
-    public void setApplicationInterfaceId(String applicationInterfaceId) {
-        this.applicationInterfaceId = applicationInterfaceId;
-    }
-
-    @Column(name = "APPLICATION_DEPLOYMENT_ID")
-    public String getApplicationDeploymentId() {
-        return applicationDeploymentId;
-    }
-
-    public void setApplicationDeploymentId(String applicationDeploymentId) {
-        this.applicationDeploymentId = applicationDeploymentId;
-    }
-
-
-    @Column(name = "COMPUTE_RESOURCE_ID")
-    public String getComputeResourceId() {
-        return computeResourceId;
-    }
-
-    public void setComputeResourceId(String computeResourceId) {
-        this.computeResourceId = computeResourceId;
-    }
-
-    @Column(name = "TASK_DAG")
-    public String getTaskDag() {
-        return taskDag;
-    }
-
-    public void setTaskDag(String taskDag) {
-        this.taskDag = taskDag;
-    }
-
-    @Column(name = "GATEWAY_EXECUTION_ID")
-    public String getGatewayExecutionId() {
-        return gatewayExecutionId;
-    }
-
-    public void setGatewayExecutionId(String gatewayExecutionId) {
-        this.gatewayExecutionId = gatewayExecutionId;
-    }
-
-    @Column(name = "ENABLE_EMAIL_NOTIFICATION")
-    public boolean isEnableEmailNotification() {
-        return enableEmailNotification;
-    }
-
-    public void setEnableEmailNotification(boolean enableEmailNotification) {
-        this.enableEmailNotification = enableEmailNotification;
-    }
-
-    @ElementCollection
-    @CollectionTable(name="PROCESS_EMAIL", joinColumns = @JoinColumn(name="PROCESS_ID"))
-    public List<String> getEmailAddresses() {
-        return emailAddresses;
-    }
-
-    public void setEmailAddresses(List<String> emailAddresses) {
-        this.emailAddresses = emailAddresses;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @Column(name = "USER_DN")
-    public String getUserDn() {
-        return userDn;
-    }
-
-    public void setUserDn(String userDn) {
-        this.userDn = userDn;
-    }
-
-    @Column(name = "GENERATE_CERT")
-    public boolean isGenerateCert() {
-        return generateCert;
-    }
-
-    public void setGenerateCert(boolean generateCert) {
-        this.generateCert = generateCert;
-    }
-
-    @Column(name = "EXPERIMENT_DATA_DIR")
-    public String getExperimentDataDir() {
-        return experimentDataDir;
-    }
-
-    public void setExperimentDataDir(String experimentDataDir) {
-        this.experimentDataDir = experimentDataDir;
-    }
-
-    @Column(name = "USER_NAME")
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    @OneToMany(targetEntity = ProcessStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessStatusEntity> getProcessStatuses() {
-        return processStatuses;
-    }
-
-    public void setProcessStatuses(List<ProcessStatusEntity> processStatus) {
-        this.processStatuses = processStatus;
-    }
-
-    @OneToMany(targetEntity = ProcessErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessErrorEntity> getProcessErrors() {
-        return processErrors;
-    }
-
-    public void setProcessErrors(List<ProcessErrorEntity> processError) {
-        this.processErrors = processError;
-    }
-
-    @OneToMany(targetEntity = ProcessInputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessInputEntity> getProcessInputs() {
-        return processInputs;
-    }
-
-    public void setProcessInputs(List<ProcessInputEntity> processInputs) {
-        this.processInputs = processInputs;
-    }
-
-    @OneToMany(targetEntity = ProcessOutputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<ProcessOutputEntity> getProcessOutputs() {
-        return processOutputs;
-    }
-
-    public void setProcessOutputs(List<ProcessOutputEntity> processOutputs) {
-        this.processOutputs = processOutputs;
-    }
-
-    @OneToOne(targetEntity = ProcessResourceSchedulingEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public ProcessResourceSchedulingEntity getProcessResourceSchedule() {
-        return processResourceSchedule;
-    }
-
-    public void setProcessResourceSchedule(ProcessResourceSchedulingEntity proceeResourceSchedule) {
-        this.processResourceSchedule = proceeResourceSchedule;
-    }
-
-    @OneToMany(targetEntity = TaskEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
-    public List<TaskEntity> getTasks() {
-        return tasks;
-    }
-
-    public void setTasks(List<TaskEntity> tasks) {
-        this.tasks = tasks;
-    }
-
-    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
-    public ExperimentEntity getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(ExperimentEntity experiment) {
-        this.experiment = experiment;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
deleted file mode 100644
index 60ad9b2..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS_ERROR")
-@IdClass(ProcessErrorPK.class)
-public class ProcessErrorEntity {
-    private String errorId;
-    private String processId;
-    private long creationTime;
-    private String actualErrorMessage;
-    private String userFriendlyMessage;
-    private boolean transientOrPersistent;
-    private List<String> rootCauseErrorIdList;
-
-    private ProcessEntity process;
-
-    @Id
-    @Column(name = "ERROR_ID")
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Column(name = "CREATION_TIME")
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    @Column(name = "ACTUAL_ERROR_MESSAGE")
-    public String getActualErrorMessage() {
-        return actualErrorMessage;
-    }
-
-    public void setActualErrorMessage(String actualErrorMessage) {
-        this.actualErrorMessage = actualErrorMessage;
-    }
-
-    @Column(name = "USER_FRIENDLY_MESSAGE")
-    public String getUserFriendlyMessage() {
-        return userFriendlyMessage;
-    }
-
-    public void setUserFriendlyMessage(String userFriendlyMessage) {
-        this.userFriendlyMessage = userFriendlyMessage;
-    }
-
-
-    @Column(name = "TRANSIENT_OR_PERSISTENT")
-    public boolean isTransientOrPersistent() {
-        return transientOrPersistent;
-    }
-
-    public void setTransientOrPersistent(boolean transientOrPersistent) {
-        this.transientOrPersistent = transientOrPersistent;
-    }
-
-
-    @ElementCollection
-    @CollectionTable(name="EXPCAT_EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
-    public List<String> getRootCauseErrorIdList() {
-        return rootCauseErrorIdList;
-    }
-
-    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
-        this.rootCauseErrorIdList = rootCauseErrorIdList;
-    }
-
-
-    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
deleted file mode 100644
index e7cc6ee..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class ProcessErrorPK implements Serializable {
-    private final static Logger logger = LoggerFactory.getLogger(ProcessErrorPK.class);
-    private String errorId;
-    private String processId;
-
-    @Column(name = "ERROR_ID")
-    @Id
-    public String getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(String errorId) {
-        this.errorId = errorId;
-    }
-
-    @Column(name = "PROCESS_ID")
-    @Id
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ProcessErrorPK that = (ProcessErrorPK) o;
-
-        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
-        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
-        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/12383ccc/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
deleted file mode 100644
index 850c4a9..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.registry.core.entities.expcatalog;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "EXPCAT_PROCESS_INPUT")
-@IdClass(ProcessInputPK.class)
-public class ProcessInputEntity {
-    private String processId;
-    public String name;
-    public String value;
-    public String type;
-    public String applicationArgument;
-    public boolean standardInput;
-    public String userFriendlyDescription;
-    public String metaData;
-    public int inputOrder;
-    public boolean isRequired;
-    public boolean requiredToAddedToCommandLine;
-    public boolean dataStaged;
-    public String storageResourceId;
-
-    private ProcessEntity process;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProceesId() {
-        return processId;
-    }
-
-    public void setProceseId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "INPUT_NAME")
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Column(name = "INPUT_VALUE")
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    @Column(name = "INPUT_TYPE")
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Column(name = "APPLICATION_ARGUMENT")
-    public String getApplicationArgument() {
-        return applicationArgument;
-    }
-
-    public void setApplicationArgument(String applicationArgument) {
-        this.applicationArgument = applicationArgument;
-    }
-
-    @Column(name = "STANDARD_INPUT")
-    public boolean isStandardInput() {
-        return standardInput;
-    }
-
-    public void setStandardInput(boolean standardInput) {
-        this.standardInput = standardInput;
-    }
-
-    @Column(name = "USER_FRIENDLY_DESCRIPTION")
-    public String getUserFriendlyDescription() {
-        return userFriendlyDescription;
-    }
-
-    public void setUserFriendlyDescription(String userFriendlyDescription) {
-        this.userFriendlyDescription = userFriendlyDescription;
-    }
-
-    @Lob
-    @Column(name = "METADATA")
-    public String getMetaData() {
-        return metaData;
-    }
-
-    public void setMetaData(String metaData) {
-        this.metaData = metaData;
-    }
-
-    @Column(name = "INPUT_ORDER")
-    public int getInputOrder() {
-        return inputOrder;
-    }
-
-    public void setInputOrder(int inputOrder) {
-        this.inputOrder = inputOrder;
-    }
-
-    @Column(name = "REQUIRED")
-    public boolean isRequired() {
-        return isRequired;
-    }
-
-    public void setRequired(boolean isRequired) {
-        this.isRequired = isRequired;
-    }
-
-    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
-    public boolean isRequiredToAddedToCommandLine() {
-        return requiredToAddedToCommandLine;
-    }
-
-    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
-        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
-    }
-
-    @Column(name = "DATA_STAGED")
-    public boolean isDataStaged() {
-        return dataStaged;
-    }
-
-    public void setDataStaged(boolean dataStaged) {
-        this.dataStaged = dataStaged;
-    }
-
-    @Column(name = "STORAGE_RESOURCE_ID")
-    public String getStorageResourceId() {
-        return storageResourceId;
-    }
-
-    public void setStorageResourceId(String storageResourceId) {
-        this.storageResourceId = storageResourceId;
-    }
-
-    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
\ No newline at end of file


[46/48] airavata git commit: [AIRAVATA-2054][WIP] create docker images for airavata deployment components

Posted by la...@apache.org.
[AIRAVATA-2054][WIP] create docker images for airavata deployment components

1. Introduce Docker images for each deployment component of airavata.
2. Deployed those in docker hub repository (scigap),
	try: docker search scigap
3. Use exhibitor docker images intead of zookeeper which is a much better
compare to using vanilla zookeeper.
http://techblog.netflix.com/2012/04/introducing-exhibitor-supervisor-system.html

4. IMHO we should never use docker images from public repository, Everything
we should create our own docker images from public images and test with those and
move to production.

5. Added a simple script(airavata/build.sh) to build airavata docker components.

      ./build.sh [component-name] - This will build a docker image for given component.

This is a temporary script we can use until AIRAVATA-2056 which integrates docker push with some CI tool like jenkins.


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: e27c54eafbb443950d213d06afb5e1d43ce72ce7
Parents: 8474763
Author: Lahiru Ginnaliya Gamathige <la...@apache.org>
Authored: Sun Aug 21 00:49:58 2016 -0700
Committer: Lahiru Ginnaliya Gamathige <la...@apache.org>
Committed: Mon Sep 12 23:27:52 2016 -0700

----------------------------------------------------------------------
 deploy/images/kafka/Dockerfile                  |   8 ++
 deploy/images/kafka/start-kafka.sh              |  17 +++
 deploy/images/logstash/Dockerfile               |   5 +
 deploy/images/logstash/elasticsearchpolicy      |  27 ++++
 deploy/images/logstash/logstash-elastic.conf    |  94 ++++++++++++++
 .../logstash-output-amazon_es-0.3-java.gem      | Bin 0 -> 22016 bytes
 deploy/images/logstash/logstash.conf            |  97 +++++++++++++++
 deploy/systemd/kafka-manager.service            |  15 +++
 deploy/systemd/kafka.service                    |  13 ++
 deploy/systemd/logstash.service                 |  16 +++
 .../common/logging/kafka/KafkaAppender.java     | 122 +++++++++++++++++++
 11 files changed, 414 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/kafka/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/kafka/Dockerfile b/deploy/images/kafka/Dockerfile
new file mode 100644
index 0000000..59770e1
--- /dev/null
+++ b/deploy/images/kafka/Dockerfile
@@ -0,0 +1,8 @@
+FROM scigap/java:8
+ENV ZOOKEEPER localhost:2181/kafka
+ENV LOG_DIRS /var/lib/kafka
+ENV JMX_PORT 9999
+ADD start-kafka.sh /start-kafka.sh
+RUN mkdir -p /opt/kafka && curl http://mirrors.sonic.net/apache/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz > /tmp/kafka.tgz && \
+    tar -zxf /tmp/kafka.tgz  -C /opt/kafka --strip-components=1 && rm -f /tmp/kafka.tgz
+ENTRYPOINT /start-kafka.sh
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/kafka/start-kafka.sh
----------------------------------------------------------------------
diff --git a/deploy/images/kafka/start-kafka.sh b/deploy/images/kafka/start-kafka.sh
new file mode 100755
index 0000000..6026010
--- /dev/null
+++ b/deploy/images/kafka/start-kafka.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+if test -z "${BROKER_ID}"; then
+  BROKER_ID=$(ip a | grep 'eth0' | awk '/inet /{print substr($2,4)}'| sed 's/\///g' | head -n1 | tr -d .)
+fi
+
+mkdir -p /opt/kafka/etc
+cat <<EOF > /opt/kafka/etc/server.properties
+broker.id=${BROKER_ID}
+zookeeper.connect=${ZOOKEEPER}
+log.dirs=${LOG_DIRS}
+num.partitions=2
+default.replication.factor=1
+advertised.host.name=${ADVERTISED_HOST_NAME}
+EOF
+
+exec /opt/kafka/bin/kafka-server-start.sh /opt/kafka/etc/server.properties

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/logstash/Dockerfile
----------------------------------------------------------------------
diff --git a/deploy/images/logstash/Dockerfile b/deploy/images/logstash/Dockerfile
new file mode 100644
index 0000000..6fc9bd3
--- /dev/null
+++ b/deploy/images/logstash/Dockerfile
@@ -0,0 +1,5 @@
+FROM logstash:2.3.4
+
+RUN /opt/logstash/bin/plugin install logstash-output-amazon_es
+RUN /opt/logstash/bin/plugin install logstash-codec-avro logstash-codec-cloudtrail logstash-input-journald
+ENTRYPOINT []

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/logstash/elasticsearchpolicy
----------------------------------------------------------------------
diff --git a/deploy/images/logstash/elasticsearchpolicy b/deploy/images/logstash/elasticsearchpolicy
new file mode 100644
index 0000000..8852280
--- /dev/null
+++ b/deploy/images/logstash/elasticsearchpolicy
@@ -0,0 +1,27 @@
+{
+  "Version": "2012-10-17",
+  "Statement": [
+    {
+      "Effect": "Allow",
+      "Principal": {
+        "AWS": "arn:aws:iam::691488976375:root"
+      },
+      "Action": "es:*",
+      "Resource": "arn:aws:es:us-east-1:691488976375:domain/scigap/*"
+    },
+    {
+      "Sid": "",
+      "Effect": "Allow",
+      "Principal": {
+        "AWS": "*"
+      },
+      "Action": "es:*",
+      "Resource": "arn:aws:es:us-east-1:691488976375:domain/scigap/*",
+      "Condition": {
+        "IpAddress": {
+          "aws:SourceIp": "50.200.229.250"
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/logstash/logstash-elastic.conf
----------------------------------------------------------------------
diff --git a/deploy/images/logstash/logstash-elastic.conf b/deploy/images/logstash/logstash-elastic.conf
new file mode 100644
index 0000000..2871657
--- /dev/null
+++ b/deploy/images/logstash/logstash-elastic.conf
@@ -0,0 +1,94 @@
+input {
+  kafka {
+    topic_id => "local_all_logs"
+    zk_connect => "127.0.0.1:2181"
+    auto_offset_reset => "smallest"
+    type => "all_logs"
+  }
+  kafka {
+    topic_id => "local_apiserver_logs"
+    zk_connect => "127.0.0.1:2181"
+    auto_offset_reset => "smallest"
+    type => "apiserver_logs"
+  }
+  kafka {
+    topic_id => "local_gfac_logs"
+    zk_connect => "127.0.0.1:2181"
+    auto_offset_reset => "smallest"
+    type => "gfac_logs"
+  }
+  kafka {
+    topic_id => "local_orchestrator_logs"
+    zk_connect => "127.0.0.1:2181"
+    auto_offset_reset => "smallest"
+    type => "orchestrator_logs"
+  }
+  kafka {
+    topic_id => "local_credentialstore_logs"
+    zk_connect => "127.0.0.1:2181"
+    auto_offset_reset => "smallest"
+    type => "credentialstore_logs"
+  }
+}
+
+filter {
+  mutate { add_field => { "[@metadata][level]" => "%{[level]}" } }
+  mutate { lowercase => ["[@metadata][level]"] }
+  mutate { gsub => ["level", "LOG_", ""] }
+  mutate {
+    add_tag => ["local", "CoreOS-899.13.0"]
+  }
+  ruby {
+    code => "
+    begin
+    t = Time.iso8601(event['timestamp'])
+    rescue ArgumentError => e
+    # drop the event if format is invalid
+    event.cancel
+    return
+    end
+    event['timestamp_usec'] = t.usec % 1000
+    event['timestamp'] = t.utc.strftime('%FT%T.%LZ')
+    "
+  }
+}
+
+output {
+  stdout { codec => rubydebug }
+  if [type] == "apiserver_logs" {
+    elasticsearch {
+      hosts => ["d5b696fac75ae2f1dda3c515ba904ff4.us-east-1.aws.found.io:9200"]
+      user => "admin"
+      password => "15tij9wc26p2qf3fgm"
+      index => "local-apiserver-logs-logstash-%{+YYYY.MM.dd}"
+    }
+  } else if [type] == "gfac_logs" {
+    elasticsearch {
+      hosts => ["d5b696fac75ae2f1dda3c515ba904ff4.us-east-1.aws.found.io:9200"]
+      user => "admin"
+      password => "15tij9wc26p2qf3fgm"
+      index => "local-gfac-logs-logstash-%{+YYYY.MM.dd}"
+    }
+  } else if [type] == "orchestrator_logs" {
+    elasticsearch {
+      hosts => ["d5b696fac75ae2f1dda3c515ba904ff4.us-east-1.aws.found.io:9200"]
+      user => "admin"
+      password => "15tij9wc26p2qf3fgm"
+      index => "local-orchestrator-logs-logstash-%{+YYYY.MM.dd}"
+    }
+  } else if [type] == "credentialstore_logs" {
+    elasticsearch {
+      hosts => ["d5b696fac75ae2f1dda3c515ba904ff4.us-east-1.aws.found.io:9200"]
+      user => "admin"
+      password => "15tij9wc26p2qf3fgm"
+      index => "local-credentialstore-logs-logstash-%{+YYYY.MM.dd}"
+    }
+  } else {
+  elasticsearch {
+    hosts => ["d5b696fac75ae2f1dda3c515ba904ff4.us-east-1.aws.found.io:9200"]
+    user => "admin"
+    password => "15tij9wc26p2qf3fgm"
+    index => "local-airavata-logs-logstash-%{+YYYY.MM.dd}"
+  }
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/logstash/logstash-output-amazon_es-0.3-java.gem
----------------------------------------------------------------------
diff --git a/deploy/images/logstash/logstash-output-amazon_es-0.3-java.gem b/deploy/images/logstash/logstash-output-amazon_es-0.3-java.gem
new file mode 100644
index 0000000..d3c913a
Binary files /dev/null and b/deploy/images/logstash/logstash-output-amazon_es-0.3-java.gem differ

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/images/logstash/logstash.conf
----------------------------------------------------------------------
diff --git a/deploy/images/logstash/logstash.conf b/deploy/images/logstash/logstash.conf
new file mode 100644
index 0000000..6dd3c41
--- /dev/null
+++ b/deploy/images/logstash/logstash.conf
@@ -0,0 +1,97 @@
+input {
+  kafka {
+    topic_id => "local_all_logs"
+    zk_connect => "107.20.88.15:2181/kafka"
+    auto_offset_reset => "smallest"
+    type => "all_logs"
+  }
+  kafka {
+    topic_id => "local_apiserver_logs"
+    zk_connect => "107.20.88.15:2181/kafka"
+    auto_offset_reset => "smallest"
+    type => "apiserver_logs"
+  }
+  kafka {
+    topic_id => "local_gfac_logs"
+    zk_connect => "107.20.88.15:2181/kafka"
+    auto_offset_reset => "smallest"
+    type => "gfac_logs"
+  }
+  kafka {
+    topic_id => "local_orchestrator_logs"
+    zk_connect => "107.20.88.15:2181/kafka"
+    auto_offset_reset => "smallest"
+    type => "orchestrator_logs"
+  }
+  kafka {
+    topic_id => "local_credentialstore_logs"
+    zk_connect => "107.20.88.15:2181/kafka"
+    auto_offset_reset => "smallest"
+    type => "credentialstore_logs"
+  }
+}
+
+filter {
+  mutate { add_field => { "[@metadata][level]" => "%{[level]}" } }
+  mutate { lowercase => ["[@metadata][level]"] }
+  mutate { gsub => ["level", "LOG_", ""] }
+  mutate {
+    add_tag => ["local", "CoreOS-899.13.0"]
+  }
+  ruby {
+    code => "
+    begin
+    t = Time.iso8601(event['timestamp'])
+    rescue ArgumentError => e
+    # drop the event if format is invalid
+    event.cancel
+    return
+    end
+    event['timestamp_usec'] = t.usec % 1000
+    event['timestamp'] = t.utc.strftime('%FT%T.%LZ')
+    "
+  }
+}
+
+output {
+  if [type] == "apiserver_logs" {
+    if [@metadata][level] == "debug" {
+      amazon_es {
+        hosts => ["search-scigap1-je4ln2j5dwlibskeuheh7nr2sa.us-east-1.es.amazonaws.com"]
+        region => "us-east-1"
+        index => "local-apiserver-logs-logstash-%{+YYYY.MM.dd}"
+      }
+    }
+  } else if [type] == "gfac_logs" {
+    if [@metadata][level] == "debug" {
+      amazon_es {
+        hosts => ["search-scigap1-je4ln2j5dwlibskeuheh7nr2sa.us-east-1.es.amazonaws.com"]
+        region => "us-east-1"
+        index => "local-gfac-logs-logstash-%{+YYYY.MM.dd}"
+      }
+    }
+  } else if [type] == "orchestrator_logs" {
+    if [@metadata][level] == "debug" {
+      amazon_es {
+        hosts => ["search-scigap1-je4ln2j5dwlibskeuheh7nr2sa.us-east-1.es.amazonaws.com"]
+        region => "us-east-1"
+        index => "local-orchestrator-logs-logstash-%{+YYYY.MM.dd}"
+            }
+    }
+  } else if [type] == "credentialstore_logs" {
+    if [@metadata][level] == "debug" {
+      amazon_es {
+        hosts => ["search-scigap1-je4ln2j5dwlibskeuheh7nr2sa.us-east-1.es.amazonaws.com"]
+        region => "us-east-1"
+        index => "local-credentialstore-logs-logstash-%{+YYYY.MM.dd}"
+      }
+    }
+  } else {
+  amazon_es {
+    hosts => ["search-scigap1-je4ln2j5dwlibskeuheh7nr2sa.us-east-1.es.amazonaws.com"]
+    region => "us-east-1"
+    index => "local-airavata-logs-logstash-%{+YYYY.MM.dd}"
+  }
+}
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/systemd/kafka-manager.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/kafka-manager.service b/deploy/systemd/kafka-manager.service
new file mode 100644
index 0000000..1bed655
--- /dev/null
+++ b/deploy/systemd/kafka-manager.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=kafka-manager
+After=docker.service
+Requires=docker.service
+[Service]
+EnvironmentFile=/etc/environment
+TimeoutStartSec=60
+Restart=on-failure
+ExecStartPre=-/usr/bin/docker rm -f kafka-manager
+ExecStartPre=-/usr/bin/docker pull sheepkiller/kafka-manager
+ExecStart=/usr/bin/docker run --name kafka-manager -p 9000:9000 -e ZK_HOSTS=localhost:2181 -e APPLICATION_SECRET=face2face sheepkiller/kafka-manager
+ExecStop=/usr/bin/docker stop kafka-manager
+[Install]
+WantedBy=multi-user.target
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/systemd/kafka.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/kafka.service b/deploy/systemd/kafka.service
new file mode 100644
index 0000000..cad29e5
--- /dev/null
+++ b/deploy/systemd/kafka.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kafka
+Requires=docker.service
+[Service]
+EnvironmentFile=/etc/environment
+TimeoutStartSec=60
+Restart=on-failure
+ExecStartPre=-/usr/bin/docker rm -f kafka
+ExecStartPre=-/usr/bin/docker pull scigap/kafka
+ExecStart=/usr/bin/docker run --net=host --name kafka -e ADVERTISED_HOST_NAME=54.163.192.179 -v /var/lib/kafka:/var/lib/kafka scigap/kafka
+ExecStop=/usr/bin/docker stop kafka
+[Install]
+WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/deploy/systemd/logstash.service
----------------------------------------------------------------------
diff --git a/deploy/systemd/logstash.service b/deploy/systemd/logstash.service
new file mode 100644
index 0000000..7ed4955
--- /dev/null
+++ b/deploy/systemd/logstash.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=logstash
+Requires=docker.service
+After=docker.service
+[Service]
+EnvironmentFile=/etc/os-release
+LimitNOFILE=infinity
+TimeoutStartSec=90
+Restart=on-failure
+ExecStartPre=-/usr/bin/docker rm -f logstash
+ExecStartPre=-/usr/bin/docker pull scigap/logstash
+ExecStart=/usr/bin/docker run --name logstash -e ENV_NAME=local -e OS_NAME=${NAME} -e OS_VERSION=${VERSION} \
+    -e KAFKA_ZK="localhost:2181/kafka" -e ES_ENDPOINT="search-scigap-62tebdueebw5dfyn7bfyn63rru.us-east-1.es.amazonaws.com" \
+    -v /etc/logstash:/config -v /var/log/journal:/var/log/journal -v /var/lib/logstash:/var/lib/logstash \
+    scigap/logstash logstash -f /config/logstash.conf
+ExecStop=/usr/bin/docker stop logstash

http://git-wip-us.apache.org/repos/asf/airavata/blob/e27c54ea/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
new file mode 100644
index 0000000..06649c6
--- /dev/null
+++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/kafka/KafkaAppender.java
@@ -0,0 +1,122 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.airavata.common.logging.kafka;
+
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.StackTraceElementProxy;
+import ch.qos.logback.core.UnsynchronizedAppenderBase;
+import com.google.gson.Gson;
+import org.apache.airavata.common.logging.Exception;
+import org.apache.airavata.common.logging.LogEntry;
+import org.apache.airavata.common.logging.ServerId;
+import org.apache.airavata.common.utils.AwsMetadata;
+import org.apache.airavata.common.utils.BuildConstant;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.Producer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.time.Instant;
+import java.util.Arrays;
+import java.util.Properties;
+
+public class KafkaAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
+    private final static Logger logger = LoggerFactory.getLogger(KafkaAppender.class);
+
+    private final Producer<String, String> producer;
+    private final String kafkaTopic;
+
+    private  ServerId serverId = null;
+
+    public KafkaAppender(String kafkaHost, String kafkaTopicPrefix) {
+        Properties props = new Properties();
+        props.put("bootstrap.servers", kafkaHost);
+        props.put("acks", "0");
+        props.put("retries", 0);
+        props.put("batch.size", 16384);
+        props.put("linger.ms", 10000); // Send the batch every 10 seconds
+        props.put("buffer.memory", 33554432);
+        props.put("producer.type", "async");
+        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+        this.kafkaTopic = getKafkaTopic(kafkaTopicPrefix);
+        logger.info("Starting kafka producer: bootstrap-server:{}, topic : {}", kafkaHost, this.kafkaTopic);
+        this.producer = new KafkaProducer<>(props);
+        if(ServerSettings.isRunningOnAws()) {
+            final AwsMetadata awsMetadata = new AwsMetadata();
+            serverId = new ServerId(awsMetadata.getId(), awsMetadata.getHostname(),
+                    BuildConstant.VERSION, ServerSettings.getServerRoles());
+        } else {
+            serverId = new ServerId(ServerSettings.getIp(), ServerSettings.getIp(),
+                    BuildConstant.VERSION, ServerSettings.getServerRoles());
+        }
+    }
+
+    @Override
+    protected void append(ILoggingEvent event) {
+        event.prepareForDeferredProcessing();
+        //todo do more elegant streaming approach to publish logs
+        if (!event.getLevel().equals(Level.ALL) &&         // OFF AND ALL are not loggable levels
+                !event.getLevel().equals(Level.OFF)) {
+            final IThrowableProxy throwableProxy = event.getThrowableProxy();
+            final LogEntry entry = throwableProxy != null ?
+                    new LogEntry(serverId, event.getMessage(), Instant.ofEpochMilli(event.getTimeStamp()).toString(),
+                            event.getLevel().toString(), event.getLoggerName(), event.getMDCPropertyMap(),
+                            event.getThreadName() != null ? event.getThreadName() : null,
+                            new Exception(throwableProxy.getMessage(), toStringArray(throwableProxy.getStackTraceElementProxyArray())
+                            , throwableProxy.getClassName()))
+                    : new LogEntry(serverId, event.getMessage(), Instant.ofEpochMilli(event.getTimeStamp()).toString(),
+                    event.getLevel().toString(), event.getLoggerName(), event.getMDCPropertyMap(),
+                    event.getThreadName() != null ? event.getThreadName() : null);
+            producer.send(new ProducerRecord<>(kafkaTopic, new Gson().toJson(entry)));
+        }
+    }
+
+
+    private String[] toStringArray(StackTraceElementProxy[] stackTraceElement) {
+        return Arrays.stream(stackTraceElement).map(StackTraceElementProxy::getSTEAsString).toArray(String[]::new);
+    }
+
+    private String getKafkaTopic(String kafkaTopicPrefix) {
+        final StringBuilder stringBuffer = new StringBuilder("");
+        final String[] serverRoles = ServerSettings.getServerRoles();
+        if (serverRoles.length == 4) {
+            return kafkaTopicPrefix + "_all";
+        }
+        for (String role : ServerSettings.getServerRoles()) {
+            stringBuffer.append("_");
+            stringBuffer.append(role);
+            stringBuffer.append("_logs");
+            // do not support multiple roles yet, topic name will become complex
+            break;
+        }
+        return kafkaTopicPrefix + stringBuffer.toString();
+    }
+
+    public void close() {
+        producer.close();
+    }
+}


[13/48] airavata git commit: updating the pom.xml to include new module

Posted by la...@apache.org.
updating the pom.xml to include new module


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

Branch: refs/heads/lahiru/AIRAVATA-2065
Commit: c450f400b7d992ddf977d68d93c66a538c54fd01
Parents: ad06b47
Author: scnakandala <su...@gmail.com>
Authored: Fri Aug 26 12:13:09 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Aug 26 12:13:09 2016 -0400

----------------------------------------------------------------------
 pom.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c450f400/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 6594026..fb19cf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -564,6 +564,7 @@
 				<module>modules/workflow</module>
 				<module>modules/test-suite</module>
 				<module>modules/group-manager</module>
+				<module>modules/registry-refactoring</module>
 				<!-- Deprecated Modules-->
 				<!--<module>modules/integration-tests</module>-->
 				<!--<module>modules/workflow-model</module>-->