You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2015/06/07 19:00:57 UTC

[16/44] airavata git commit: Adding mongo-registry WIP

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsDeserializer.java
new file mode 100644
index 0000000..03399f8
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.qosp;
+
+import org.apache.airavata.model.workspace.experiment.QualityOfServiceParams;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class QualityOfServiceParamsDeserializer extends
+        AbstractThriftDeserializer<QualityOfServiceParams._Fields, QualityOfServiceParams> {
+
+    @Override
+    protected QualityOfServiceParams._Fields getField(final String fieldName) {
+        return QualityOfServiceParams._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected QualityOfServiceParams newInstance() {
+        return new QualityOfServiceParams();
+    }
+
+    @Override
+    protected void validate(final QualityOfServiceParams instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsSerializer.java
new file mode 100644
index 0000000..c6c6d05
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/qosp/QualityOfServiceParamsSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.qosp;
+
+import org.apache.airavata.model.workspace.experiment.QualityOfServiceParams;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class QualityOfServiceParamsSerializer extends
+        AbstractThriftSerializer<QualityOfServiceParams._Fields, QualityOfServiceParams> {
+    private final static Logger logger = LoggerFactory.getLogger(QualityOfServiceParamsSerializer.class);
+
+    @Override
+    protected QualityOfServiceParams._Fields[] getFieldValues() {
+        return QualityOfServiceParams._Fields.values();
+    }
+
+    @Override
+    protected Class<QualityOfServiceParams> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsDeserializer.java
new file mode 100644
index 0000000..cb710c9
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.taskdetails;
+
+import org.apache.airavata.model.workspace.experiment.TaskDetails;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class TaskDetailsDeserializer extends
+        AbstractThriftDeserializer<TaskDetails._Fields, TaskDetails> {
+
+    @Override
+    protected TaskDetails._Fields getField(final String fieldName) {
+        return TaskDetails._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected TaskDetails newInstance() {
+        return new TaskDetails();
+    }
+
+    @Override
+    protected void validate(final TaskDetails instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsSerializer.java
new file mode 100644
index 0000000..ccfe1b4
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskdetails/TaskDetailsSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.taskdetails;
+
+import org.apache.airavata.model.workspace.experiment.TaskDetails;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TaskDetailsSerializer extends
+        AbstractThriftSerializer<TaskDetails._Fields, TaskDetails> {
+    private final static Logger logger = LoggerFactory.getLogger(TaskDetailsSerializer.class);
+
+    @Override
+    protected TaskDetails._Fields[] getFieldValues() {
+        return TaskDetails._Fields.values();
+    }
+
+    @Override
+    protected Class<TaskDetails> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusDeserializer.java
new file mode 100644
index 0000000..d198242
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.taskstatus;
+
+import org.apache.airavata.model.workspace.experiment.TaskStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class TaskStatusDeserializer extends
+        AbstractThriftDeserializer<TaskStatus._Fields, TaskStatus> {
+
+    @Override
+    protected TaskStatus._Fields getField(final String fieldName) {
+        return TaskStatus._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected TaskStatus newInstance() {
+        return new TaskStatus();
+    }
+
+    @Override
+    protected void validate(final TaskStatus instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusSerializer.java
new file mode 100644
index 0000000..b09095e
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/taskstatus/TaskStatusSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.taskstatus;
+
+import org.apache.airavata.model.workspace.experiment.TaskStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TaskStatusSerializer extends
+        AbstractThriftSerializer<TaskStatus._Fields, TaskStatus> {
+    private final static Logger logger = LoggerFactory.getLogger(TaskStatusSerializer.class);
+
+    @Override
+    protected TaskStatus._Fields[] getFieldValues() {
+        return TaskStatus._Fields.values();
+    }
+
+    @Override
+    protected Class<TaskStatus> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusDeserializer.java
new file mode 100644
index 0000000..5662715
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.trstatus;
+
+import org.apache.airavata.model.workspace.experiment.TransferStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class TransferStatusDeserializer extends
+        AbstractThriftDeserializer<TransferStatus._Fields, TransferStatus> {
+
+    @Override
+    protected TransferStatus._Fields getField(final String fieldName) {
+        return TransferStatus._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected TransferStatus newInstance() {
+        return new TransferStatus();
+    }
+
+    @Override
+    protected void validate(final TransferStatus instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusSerializer.java
new file mode 100644
index 0000000..bf94779
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/trstatus/TransferStatusSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.trstatus;
+
+import org.apache.airavata.model.workspace.experiment.TransferStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TransferStatusSerializer extends
+        AbstractThriftSerializer<TransferStatus._Fields, TransferStatus> {
+    private final static Logger logger = LoggerFactory.getLogger(TransferStatusSerializer.class);
+
+    @Override
+    protected TransferStatus._Fields[] getFieldValues() {
+        return TransferStatus._Fields.values();
+    }
+
+    @Override
+    protected Class<TransferStatus> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataDeserializer.java
new file mode 100644
index 0000000..aa8c7a2
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.ucdata;
+
+import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class UserConfigurationDataDeserializer extends
+        AbstractThriftDeserializer<UserConfigurationData._Fields, UserConfigurationData> {
+
+    @Override
+    protected UserConfigurationData._Fields getField(final String fieldName) {
+        return UserConfigurationData._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected UserConfigurationData newInstance() {
+        return new UserConfigurationData();
+    }
+
+    @Override
+    protected void validate(final UserConfigurationData instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataSerializer.java
new file mode 100644
index 0000000..dca810d
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/ucdata/UserConfigurationDataSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.ucdata;
+
+import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserConfigurationDataSerializer extends
+        AbstractThriftSerializer<UserConfigurationData._Fields, UserConfigurationData> {
+    private final static Logger logger = LoggerFactory.getLogger(UserConfigurationDataSerializer.class);
+
+    @Override
+    protected UserConfigurationData._Fields[] getFieldValues() {
+        return UserConfigurationData._Fields.values();
+    }
+
+    @Override
+    protected Class<UserConfigurationData> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsDeserializer.java
new file mode 100644
index 0000000..f13c9dc
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.validationrslt;
+
+import org.apache.airavata.model.workspace.experiment.ValidationResults;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class ValidationResultsDeserializer extends
+        AbstractThriftDeserializer<ValidationResults._Fields, ValidationResults> {
+
+    @Override
+    protected ValidationResults._Fields getField(final String fieldName) {
+        return ValidationResults._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected ValidationResults newInstance() {
+        return new ValidationResults();
+    }
+
+    @Override
+    protected void validate(final ValidationResults instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsSerializer.java
new file mode 100644
index 0000000..6d6dd64
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validationrslt/ValidationResultsSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.validationrslt;
+
+import org.apache.airavata.model.workspace.experiment.ValidationResults;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ValidationResultsSerializer extends
+        AbstractThriftSerializer<ValidationResults._Fields, ValidationResults> {
+    private final static Logger logger = LoggerFactory.getLogger(ValidationResultsSerializer.class);
+
+    @Override
+    protected ValidationResults._Fields[] getFieldValues() {
+        return ValidationResults._Fields.values();
+    }
+
+    @Override
+    protected Class<ValidationResults> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultDeserializer.java
new file mode 100644
index 0000000..333f9eb
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.validatorrslt;
+
+import org.apache.airavata.model.error.ValidatorResult;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class ValidatorResultDeserializer extends
+        AbstractThriftDeserializer<ValidatorResult._Fields, ValidatorResult> {
+
+    @Override
+    protected ValidatorResult._Fields getField(final String fieldName) {
+        return ValidatorResult._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected ValidatorResult newInstance() {
+        return new ValidatorResult();
+    }
+
+    @Override
+    protected void validate(final ValidatorResult instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultSerializer.java
new file mode 100644
index 0000000..c7e5c6c
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/validatorrslt/ValidatorResultSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.validatorrslt;
+
+import org.apache.airavata.model.error.ValidatorResult;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ValidatorResultSerializer extends
+        AbstractThriftSerializer<ValidatorResult._Fields, ValidatorResult> {
+    private final static Logger logger = LoggerFactory.getLogger(ValidatorResultSerializer.class);
+
+    @Override
+    protected ValidatorResult._Fields[] getFieldValues() {
+        return ValidatorResult._Fields.values();
+    }
+
+    @Override
+    protected Class<ValidatorResult> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsDeserializer.java
new file mode 100644
index 0000000..a51bcee
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.wfnd;
+
+import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class WorkflowNodeDetailsDeserializer extends
+        AbstractThriftDeserializer<WorkflowNodeDetails._Fields, WorkflowNodeDetails> {
+
+    @Override
+    protected WorkflowNodeDetails._Fields getField(final String fieldName) {
+        return WorkflowNodeDetails._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected WorkflowNodeDetails newInstance() {
+        return new WorkflowNodeDetails();
+    }
+
+    @Override
+    protected void validate(final WorkflowNodeDetails instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsSerializer.java
new file mode 100644
index 0000000..cfdef1a
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfnd/WorkflowNodeDetailsSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.wfnd;
+
+import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WorkflowNodeDetailsSerializer extends
+        AbstractThriftSerializer<WorkflowNodeDetails._Fields, WorkflowNodeDetails> {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowNodeDetailsSerializer.class);
+
+    @Override
+    protected WorkflowNodeDetails._Fields[] getFieldValues() {
+        return WorkflowNodeDetails._Fields.values();
+    }
+
+    @Override
+    protected Class<WorkflowNodeDetails> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusDeserializer.java
new file mode 100644
index 0000000..92b0047
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.wfns;
+
+import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class WorkflowNodeStatusDeserializer extends
+        AbstractThriftDeserializer<WorkflowNodeStatus._Fields, WorkflowNodeStatus> {
+
+    @Override
+    protected WorkflowNodeStatus._Fields getField(final String fieldName) {
+        return WorkflowNodeStatus._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected WorkflowNodeStatus newInstance() {
+        return new WorkflowNodeStatus();
+    }
+
+    @Override
+    protected void validate(final WorkflowNodeStatus instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusSerializer.java
new file mode 100644
index 0000000..16dc293
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/experiment/wfns/WorkflowNodeStatusSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.experiment.wfns;
+
+import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WorkflowNodeStatusSerializer extends
+        AbstractThriftSerializer<WorkflowNodeStatus._Fields, WorkflowNodeStatus> {
+    private final static Logger logger = LoggerFactory.getLogger(WorkflowNodeStatusSerializer.class);
+
+    @Override
+    protected WorkflowNodeStatus._Fields[] getFieldValues() {
+        return WorkflowNodeStatus._Fields.values();
+    }
+
+    @Override
+    protected Class<WorkflowNodeStatus> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewayDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewayDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewayDeserializer.java
new file mode 100644
index 0000000..32c929b
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewayDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.gateway;
+
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class GatewayDeserializer extends
+        AbstractThriftDeserializer<Gateway._Fields, Gateway> {
+
+    @Override
+    protected Gateway._Fields getField(final String fieldName) {
+        return Gateway._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected Gateway newInstance() {
+        return new Gateway();
+    }
+
+    @Override
+    protected void validate(final Gateway instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewaySerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewaySerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewaySerializer.java
new file mode 100644
index 0000000..f863e7e
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/gateway/GatewaySerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.gateway;
+
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GatewaySerializer extends
+        AbstractThriftSerializer<Gateway._Fields, Gateway> {
+    private final static Logger logger = LoggerFactory.getLogger(GatewaySerializer.class);
+
+    @Override
+    protected Gateway._Fields[] getFieldValues() {
+        return Gateway._Fields.values();
+    }
+
+    @Override
+    protected Class<Gateway> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupDeserializer.java
new file mode 100644
index 0000000..6ed949c
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.group;
+
+import org.apache.airavata.model.workspace.Group;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class GroupDeserializer extends
+        AbstractThriftDeserializer<Group._Fields, Group> {
+
+    @Override
+    protected Group._Fields getField(final String fieldName) {
+        return Group._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected Group newInstance() {
+        return new Group();
+    }
+
+    @Override
+    protected void validate(final Group instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupSerializer.java
new file mode 100644
index 0000000..f28348a
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/group/GroupSerializer.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.group;
+
+import org.apache.airavata.model.workspace.Group;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GroupSerializer extends
+        AbstractThriftSerializer<Group._Fields, Group> {
+    private final static Logger logger = LoggerFactory.getLogger(GroupSerializer.class);
+
+    @Override
+    protected Group._Fields[] getFieldValues() {
+        return Group._Fields.values();
+    }
+
+    @Override
+    protected Class<Group> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectDeserializer.java
new file mode 100644
index 0000000..5e5c5ea
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.project;
+
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class ProjectDeserializer extends
+        AbstractThriftDeserializer<Project._Fields, Project> {
+
+    @Override
+    protected Project._Fields getField(final String fieldName) {
+        return Project._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected Project newInstance() {
+        return new Project();
+    }
+
+    @Override
+    protected void validate(final Project instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectSerializer.java
new file mode 100644
index 0000000..056ee66
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/project/ProjectSerializer.java
@@ -0,0 +1,40 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.project;
+
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProjectSerializer extends AbstractThriftSerializer<Project._Fields, Project> {
+    private final static Logger logger = LoggerFactory.getLogger(ProjectSerializer.class);
+
+    @Override
+    protected Project._Fields[] getFieldValues() {
+        return Project._Fields.values();
+    }
+
+    @Override
+    protected Class<Project> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserDeserializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserDeserializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserDeserializer.java
new file mode 100644
index 0000000..df595bf
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserDeserializer.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.user;
+
+import org.apache.airavata.model.workspace.User;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftDeserializer;
+import org.apache.thrift.TException;
+
+public class UserDeserializer extends
+        AbstractThriftDeserializer<User._Fields, User> {
+
+    @Override
+    protected User._Fields getField(final String fieldName) {
+        return User._Fields.valueOf(fieldName);
+    }
+
+    @Override
+    protected User newInstance() {
+        return new User();
+    }
+
+    @Override
+    protected void validate(final User instance) throws TException {
+        instance.validate();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserSerializer.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserSerializer.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserSerializer.java
new file mode 100644
index 0000000..a09aca2
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/conversion/user/UserSerializer.java
@@ -0,0 +1,40 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.conversion.user;
+
+import org.apache.airavata.model.workspace.User;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.AbstractThriftSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserSerializer extends AbstractThriftSerializer<User._Fields, User> {
+    private final static Logger logger = LoggerFactory.getLogger(UserSerializer.class);
+
+    @Override
+    protected User._Fields[] getFieldValues() {
+        return User._Fields.values();
+    }
+
+    @Override
+    protected Class<User> getThriftClass() {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/dao/ExperimentDao.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/dao/ExperimentDao.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/dao/ExperimentDao.java
new file mode 100644
index 0000000..85375ed
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/dao/ExperimentDao.java
@@ -0,0 +1,346 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.persistance.registry.jpa.mongo.dao;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.mongodb.*;
+import com.mongodb.util.JSON;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.model.workspace.experiment.TaskDetails;
+import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
+import org.apache.airavata.persistance.registry.jpa.mongo.conversion.ModelConversionHelper;
+import org.apache.airavata.persistance.registry.jpa.mongo.utils.MongoUtil;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.apache.airavata.registry.cpi.ResultOrderType;
+import org.apache.airavata.registry.cpi.utils.Constants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class ExperimentDao{
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentDao.class);
+
+    private static final String EXPERIMENTS_COLLECTION_NAME = "experiments";
+    private DBCollection collection;
+    private ModelConversionHelper modelConversionHelper;
+
+    private static final String EXPERIMENT_ID = "experiment_id";
+    private static final String EXPERIMENT_NAME= "experiment_name";
+    private static final String EXPERIMENT_DESCRIPTION = "experiment_description";
+    private static final String USER_NAME = "user_name";
+    private static final String GATEWAY = "gateway_execution_id";
+    private static final String APPLICATION_ID = "application_id";
+    private static final String EXPERIMENT_STATUS_STATE = "experiment_status.experiment_state";
+    private static final String CREATION_TIME = "creation_time";
+
+    private static final String WORKFLOW_NODE_ID = "workflow_node_details_list.node_instance_id";
+    private static final String TASK_ID = "workflow_node_details_list.task_details_list.task_id";
+
+
+    public ExperimentDao(){
+        collection = MongoUtil.getAiravataRegistry().getCollection(EXPERIMENTS_COLLECTION_NAME);
+        modelConversionHelper = new ModelConversionHelper();
+        //collection.dropIndexes();
+        initIndexes();
+    }
+
+    /**
+     * If indexes are already defined this will simply ignore them
+     */
+    private void initIndexes(){
+        collection.createIndex(new BasicDBObject(EXPERIMENT_ID, 1), new BasicDBObject("unique", true));
+        collection.createIndex(new BasicDBObject(WORKFLOW_NODE_ID, 1));
+        collection.createIndex(new BasicDBObject(TASK_ID, 1));
+
+        //Defining a full-text index on experiment name and experiment description
+        BasicDBObject object = new BasicDBObject();
+        object.put(EXPERIMENT_NAME, "text");
+        object.put(EXPERIMENT_DESCRIPTION, "text");
+        collection.createIndex (object);
+    }
+
+    public List<Experiment> getAllExperiments() throws RegistryException{
+        List<Experiment> experimentList = new ArrayList<Experiment>();
+        DBCursor cursor = collection.find();
+        for(DBObject document: cursor){
+            try {
+                experimentList.add((Experiment) modelConversionHelper.deserializeObject(
+                        Experiment.class, document.toString()));
+            } catch (IOException e) {
+                throw new RegistryException(e);
+            }
+        }
+        return experimentList;
+    }
+
+    public void createExperiment(Experiment experiment) throws RegistryException{
+        try {
+            WriteResult result = collection.insert((DBObject) JSON.parse(
+                    modelConversionHelper.serializeObject(experiment)));
+            logger.debug("No of inserted results "+ result.getN());
+        } catch (JsonProcessingException e) {
+            throw new RegistryException(e);
+        }
+    }
+
+    /**
+     * The following operation replaces the document with item equal to
+     * the given experiment id. The newly replaced document will only
+     * contain the the _id field and the fields in the replacement document.
+     * @param experiment
+     * @throws RegistryException
+     */
+    public void updateExperiment(Experiment experiment) throws RegistryException{
+        try {
+            DBObject query = BasicDBObjectBuilder.start().add(
+                    EXPERIMENT_ID, experiment.getExperimentId()).get();
+            WriteResult result = collection.update(query, (DBObject) JSON.parse(
+                    modelConversionHelper.serializeObject(experiment)));
+            logger.debug("No of updated results "+ result.getN());
+        } catch (JsonProcessingException e) {
+            throw new RegistryException(e);
+        }
+    }
+
+    public void deleteExperiment(Experiment experiment) throws RegistryException{
+        DBObject query = BasicDBObjectBuilder.start().add(
+                EXPERIMENT_ID, experiment.getExperimentId()).get();
+        WriteResult result = collection.remove(query);
+        logger.debug("No of removed experiments " + result.getN());
+    }
+
+
+    public Experiment getExperiment(String experimentId) throws RegistryException{
+        try {
+            DBObject criteria = new BasicDBObject(EXPERIMENT_ID, experimentId);
+            DBObject doc = collection.findOne(criteria);
+            if(doc != null){
+                String json = doc.toString();
+                return (Experiment)modelConversionHelper.deserializeObject(
+                        Experiment.class, json);
+            }
+        } catch (IOException e) {
+            throw new RegistryException(e);
+        }
+        return null;
+    }
+
+    public List<Experiment> searchExperiments(Map<String, String> filters, int limit,
+        int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException{
+        List<Experiment> experimentList = new ArrayList<Experiment>();
+        BasicDBObjectBuilder queryBuilder = BasicDBObjectBuilder.start();
+        for (String field : filters.keySet()) {
+            if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
+                //Fixme This is expensive operation
+                queryBuilder.add(EXPERIMENT_NAME, "/.*" + filters.get(field) + "/.*");
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                queryBuilder.add(USER_NAME, filters.get(field));
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
+                queryBuilder.add(GATEWAY, filters.get(field));
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
+                //Fixme This is expensive operation
+                queryBuilder.add(EXPERIMENT_DESCRIPTION, "/.*" + filters.get(field) + "/.*");
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
+                queryBuilder.add(APPLICATION_ID, filters.get(field));
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
+                queryBuilder.add(EXPERIMENT_STATUS_STATE, filters.get(field));
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.FROM_DATE)) {
+                queryBuilder.add(CREATION_TIME,new BasicDBObject("$gte",filters.get(field)));
+            } else if (field.equals(Constants.FieldConstants.ExperimentConstants.TO_DATE)) {
+                queryBuilder.add(CREATION_TIME,new BasicDBObject("$lte",filters.get(field)));
+            }
+        }
+
+        //handling pagination and ordering. ordering is allowed only on CREATION_TIME
+        DBCursor cursor;
+        if(limit > 0 && offset >= 0) {
+            if(orderByIdentifier != null && orderByIdentifier.equals(
+                    Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+                if(resultOrderType.equals(ResultOrderType.ASC)) {
+                    cursor = collection.find(queryBuilder.get()).sort(new BasicDBObject(CREATION_TIME, 1))
+                            .skip(offset).limit(limit);
+                }else{
+                    cursor = collection.find(queryBuilder.get()).sort(new BasicDBObject(CREATION_TIME, -1))
+                            .skip(offset).limit(limit);
+                }
+            }else {
+                cursor = collection.find(queryBuilder.get()).skip(offset).limit(limit);
+            }
+        }else{
+            if(resultOrderType != null && resultOrderType.equals(
+                    Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+                if(resultOrderType.equals(ResultOrderType.ASC)) {
+                    cursor = collection.find(queryBuilder.get()).sort(new BasicDBObject(CREATION_TIME, 1));
+                }else{
+                    cursor = collection.find(queryBuilder.get()).sort(new BasicDBObject(CREATION_TIME, -1));
+                }
+            }else {
+                cursor = collection.find(queryBuilder.get());
+            }
+        }
+        for(DBObject document: cursor){
+            try {
+                experimentList.add((Experiment) modelConversionHelper.deserializeObject(
+                        Experiment.class, document.toString()));
+            } catch (IOException e) {
+                throw new RegistryException(e);
+            }
+        }
+        return experimentList;
+    }
+
+    public void createWFNode(String experimentId, WorkflowNodeDetails workflowNodeDetail) throws RegistryException{
+        Experiment experiment = getExperiment(experimentId);
+        experiment.getWorkflowNodeDetailsList().add(workflowNodeDetail);
+        updateExperiment(experiment);
+    }
+
+    public void updateWFNode(WorkflowNodeDetails workflowNodeDetail) throws RegistryException{
+        Experiment experiment = getExperimentOfWFNode(workflowNodeDetail.getNodeInstanceId());
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            if(wfnd.getNodeInstanceId().equals(workflowNodeDetail.getNodeInstanceId())){
+                experiment.getWorkflowNodeDetailsList().remove(wfnd);
+                experiment.getWorkflowNodeDetailsList().add(workflowNodeDetail);
+                updateExperiment(experiment);
+                return;
+            }
+        }
+    }
+
+    public void deleteWFNode(WorkflowNodeDetails workflowNodeDetail) throws RegistryException{
+        Experiment experiment = getExperimentOfWFNode(workflowNodeDetail.getNodeInstanceId());
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            if(wfnd.getNodeInstanceId().equals(workflowNodeDetail.getNodeInstanceId())){
+                experiment.getWorkflowNodeDetailsList().remove(wfnd);
+                updateExperiment(experiment);
+                return;
+            }
+        }
+    }
+
+    public WorkflowNodeDetails getWFNode(String nodeId) throws RegistryException{
+        Experiment experiment = getExperimentOfWFNode(nodeId);
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            if(wfnd.getNodeInstanceId().equals(nodeId)){
+                return wfnd;
+            }
+        }
+        return null;
+    }
+
+
+    public void createTaskDetail(String nodeId, TaskDetails taskDetail) throws RegistryException{
+        Experiment experiment = getExperimentOfWFNode(nodeId);
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            if(wfnd.getNodeInstanceId().equals(nodeId)){
+                wfnd.getTaskDetailsList().add(taskDetail);
+                updateExperiment(experiment);
+                return;
+            }
+        }
+    }
+
+    public void updateTaskDetail(TaskDetails taskDetail) throws RegistryException{
+        Experiment experiment = getExperimentOfTask(taskDetail.getTaskId());
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            for(TaskDetails taskDetails: wfnd.getTaskDetailsList()){
+                if(taskDetails.getTaskId().equals(taskDetail)){
+                    wfnd.getTaskDetailsList().remove(taskDetail);
+                    wfnd.getTaskDetailsList().add(taskDetail);
+                    updateExperiment(experiment);
+                    return;
+                }
+            }
+        }
+    }
+
+    public void deleteTaskDetail(TaskDetails taskDetail) throws RegistryException{
+        Experiment experiment = getExperimentOfTask(taskDetail.getTaskId());
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            for(TaskDetails taskDetails: wfnd.getTaskDetailsList()){
+                if(taskDetails.getTaskId().equals(taskDetail)){
+                    wfnd.getTaskDetailsList().remove(taskDetail);
+                    updateExperiment(experiment);
+                    return;
+                }
+            }
+        }
+    }
+
+    public TaskDetails getTaskDetail(String taskId) throws RegistryException{
+        Experiment experiment = getExperimentOfTask(taskId);
+        for(WorkflowNodeDetails wfnd: experiment.getWorkflowNodeDetailsList()){
+            for(TaskDetails taskDetails: wfnd.getTaskDetailsList()){
+                if(taskDetails.getTaskId().equals(taskId)){
+                    return taskDetails;
+                }
+            }
+        }
+        return null;
+    }
+
+
+    /**
+     * Method to getExperiment the parent Experiment of a given workflow node instance id
+     * @param nodeInstanceId
+     * @return
+     * @throws RegistryException
+     */
+    public Experiment getExperimentOfWFNode(String nodeInstanceId) throws RegistryException{
+        try {
+            DBObject criteria = new BasicDBObject(WORKFLOW_NODE_ID, nodeInstanceId);
+            DBObject doc = collection.findOne(criteria);
+            if(doc != null){
+                String json = doc.toString();
+                return (Experiment)modelConversionHelper.deserializeObject(
+                        Experiment.class, json);
+            }
+        } catch (IOException e) {
+            throw new RegistryException(e);
+        }
+        return null;
+    }
+
+    /**
+     * Method to getExperiment the parent experiment of a given task id
+     * @param taskId
+     * @return
+     * @throws RegistryException
+     */
+    public Experiment getExperimentOfTask(String taskId) throws RegistryException{
+        try {
+            DBObject criteria = new BasicDBObject(TASK_ID, taskId);
+            DBObject doc = collection.findOne(criteria);
+            if(doc != null){
+                String json = doc.toString();
+                return (Experiment)modelConversionHelper.deserializeObject(
+                        Experiment.class, json);
+            }
+        } catch (IOException e) {
+            throw new RegistryException(e);
+        }
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/utils/MongoUtil.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/utils/MongoUtil.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/utils/MongoUtil.java
new file mode 100644
index 0000000..4b7a2f9
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/mongo/utils/MongoUtil.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.persistance.registry.jpa.mongo.utils;
+
+import com.mongodb.DB;
+import com.mongodb.MongoClient;
+import com.mongodb.MongoException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MongoUtil {
+    private final static Logger logger = LoggerFactory.getLogger(MongoUtil.class);
+
+    private static final int port = 27017;
+    private static final String host = "localhost";
+    private static MongoClient mongoClient = null;
+    private static DB airavataRegistry;
+    public static String AIRAVATA_REGISTRY_NAME = "airavata-registry";
+
+    public static MongoClient getMongoClient() {
+        if (mongoClient == null) {
+            try {
+                mongoClient = new MongoClient(host, port);
+                logger.debug("New Mongo Client created with [" + host + "] and ["
+                        + port + "]");
+            } catch (MongoException e) {
+                logger.error(e.getMessage());
+            }
+        }
+        return mongoClient;
+    }
+
+    public static DB getAiravataRegistry(){
+        if (airavataRegistry == null) {
+            try {
+                airavataRegistry = getMongoClient().getDB(AIRAVATA_REGISTRY_NAME);
+            } catch (MongoException e) {
+                logger.error(e.getMessage());
+            }
+        }
+        return airavataRegistry;
+    }
+
+    public static void dropAiravataRegistry(){
+        try {
+            getMongoClient().dropDatabase(AIRAVATA_REGISTRY_NAME);
+            logger.debug("Dropped Airavata Registry");
+        } catch (MongoException e) {
+            logger.error(e.getMessage());
+        }
+    }
+}
\ No newline at end of file