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 2016/10/03 15:38:47 UTC

[27/50] [abbrv] airavata git commit: WIP

WIP


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

Branch: refs/heads/airavata-gov-registry
Commit: 0e21ebcd032b0716a941156e6aaa9786803a2142
Parents: 8c2720a
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 21 16:54:11 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Oct 3 11:33:14 2016 -0400

----------------------------------------------------------------------
 .../airavata-gov-registry-core/pom.xml          |   51 +
 .../src/main/java/META-INF/persistence.xml      |   15 -
 .../gov/registry/db/entities/UserEntity.java    |    2 +-
 .../registry/db/entities/UserGroupEntity.java   |    4 +-
 .../db/repositories/AbstractRepository.java     |   12 +-
 .../db/repositories/DomainRepository.java       |   34 +
 .../db/repositories/UserGroupRepository.java    |   34 +
 .../gov/registry/db/utils/DBConstants.java      |   40 +
 .../gov/registry/db/utils/JPAUtils.java         |   20 +-
 .../gov/registry/db/utils/QueryGenerator.java   |   53 +
 .../src/main/resources/META-INF/persistence.xml |   15 +
 .../src/main/resources/gov-registry.sql         |   11 +-
 .../gov/registry/db/RepositoriesTest.java       |  113 ++
 .../airavata/gov/registry/models/Domain.java    |   27 +-
 .../airavata/gov/registry/models/Entity.java    |    2 +-
 .../gov/registry/models/EntityType.java         |    2 +-
 .../registry/models/GovRegistryException.java   |    2 +-
 .../airavata/gov/registry/models/Group.java     | 1154 ------------------
 .../gov/registry/models/PermissionType.java     |    2 +-
 .../airavata/gov/registry/models/User.java      |    2 +-
 .../airavata/gov/registry/models/UserGroup.java | 1154 ++++++++++++++++++
 .../service/cpi/GovRegistryService.java         |  160 +--
 airavata-gov-registry/pom.xml                   |    1 -
 .../thrift_models/gov_reg_cpi.thrift            |    8 +-
 .../thrift_models/gov_reg_models.thrift         |    2 +-
 25 files changed, 1624 insertions(+), 1296 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/pom.xml b/airavata-gov-registry/airavata-gov-registry-core/pom.xml
index d986ebe..84ca5ff 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/pom.xml
+++ b/airavata-gov-registry/airavata-gov-registry-core/pom.xml
@@ -37,6 +37,57 @@
             <artifactId>dozer</artifactId>
             <version>5.4.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-all</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.34</version>
+        </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.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>
+        </plugins>
+    </build>
+
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/META-INF/persistence.xml b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/META-INF/persistence.xml
deleted file mode 100644
index 4a89174..0000000
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/META-INF/persistence.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
-
-    <persistence-unit name="airavata-gov-registry">
-        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-        <class>org.apache.airavata.gov.registry.db.entities.DomainEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.EntityEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.EntityTypeEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.GroupMembershipEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.PermissionTypeEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.SharingEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.UserEntity</class>
-        <class>org.apache.airavata.gov.registry.db.entities.UserGroupEntity</class>
-    </persistence-unit>
-</persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserEntity.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserEntity.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserEntity.java
index d4598d5..7201651 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserEntity.java
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserEntity.java
@@ -46,7 +46,7 @@ public class UserEntity {
         this.userId = userId;
     }
 
-    @Id
+    @Basic
     @Column(name = "DOMAIN_ID")
     public String getDomainId() {
         return domainId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserGroupEntity.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserGroupEntity.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserGroupEntity.java
index 560f171..aacf263 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserGroupEntity.java
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/entities/UserGroupEntity.java
@@ -50,7 +50,7 @@ public class UserGroupEntity {
         this.groupId = groupId;
     }
 
-    @Id
+    @Basic
     @Column(name = "DOMAIN_ID")
     public String getDomainId() {
         return domainId;
@@ -60,7 +60,7 @@ public class UserGroupEntity {
         this.domainId = domainId;
     }
 
-    @Id
+    @Basic
     @Column(name = "OWNER_ID")
     public String getOwnerId() {
         return ownerId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/AbstractRepository.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/AbstractRepository.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/AbstractRepository.java
index 03c3b41..b78060c 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/AbstractRepository.java
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/AbstractRepository.java
@@ -22,6 +22,7 @@ package org.apache.airavata.gov.registry.db.repositories;
 
 import org.apache.airavata.gov.registry.db.utils.JPAUtils;
 import org.apache.airavata.gov.registry.db.utils.ObjectMapperSingleton;
+import org.apache.airavata.gov.registry.db.utils.QueryGenerator;
 import org.apache.airavata.gov.registry.models.GovRegistryException;
 import org.dozer.Mapper;
 import org.slf4j.Logger;
@@ -29,16 +30,19 @@ import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 public abstract class AbstractRepository<T, E, Id> {
     private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class);
 
     private Class<T> thriftGenericClass;
     private Class<E> dbEntityGenericClass;
+    private QueryGenerator queryGenerator;
 
     public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){
         this.thriftGenericClass = thriftGenericClass;
         this.dbEntityGenericClass = dbEntityGenericClass;
+        this.queryGenerator = new QueryGenerator(dbEntityGenericClass.getSimpleName());
     }
 
     public T create(T t) throws GovRegistryException {
@@ -68,9 +72,11 @@ public abstract class AbstractRepository<T, E, Id> {
         return mapper.map(entity, thriftGenericClass);
     }
 
-    public List<T> select(String query, int limit, int offset) throws GovRegistryException {
-        List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(query).setFirstResult(offset)
-                .setMaxResults(offset).getResultList());
+    public List<T> select(Map<String, String> filters, int offset, int limit) throws GovRegistryException {
+        String queryString = queryGenerator.getSelectQuery(filters);
+
+        List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(queryString).setFirstResult(offset)
+                .setMaxResults(limit).getResultList());
         Mapper mapper = ObjectMapperSingleton.getInstance();
         List<T> gatewayList = new ArrayList<>();
         resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass)));

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/DomainRepository.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/DomainRepository.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/DomainRepository.java
new file mode 100644
index 0000000..5442c58
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/DomainRepository.java
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.gov.registry.db.repositories;
+
+import org.apache.airavata.gov.registry.db.entities.DomainEntity;
+import org.apache.airavata.gov.registry.models.Domain;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DomainRepository extends AbstractRepository<Domain, DomainEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public DomainRepository(Class<Domain> thriftGenericClass, Class<DomainEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/UserGroupRepository.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/UserGroupRepository.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/UserGroupRepository.java
new file mode 100644
index 0000000..c1a8bae
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/repositories/UserGroupRepository.java
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.gov.registry.db.repositories;
+
+import org.apache.airavata.gov.registry.db.entities.UserGroupEntity;
+import org.apache.airavata.gov.registry.models.UserGroup;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserGroupRepository extends AbstractRepository<UserGroup, UserGroupEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(UserGroupRepository.class);
+
+    public UserGroupRepository(Class<UserGroup> thriftGenericClass, Class<UserGroupEntity> dbEntityGenericClass) {
+        super(thriftGenericClass, dbEntityGenericClass);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/DBConstants.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/DBConstants.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/DBConstants.java
new file mode 100644
index 0000000..6045806
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/DBConstants.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.gov.registry.db.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DBConstants {
+    private final static Logger logger = LoggerFactory.getLogger(DBConstants.class);
+
+    public static class DomainTable {
+        public static String DOMAIN_ID = "domainId";
+        public static String NAME = "name";
+        public static String DESCRIPTION = "description";
+    }
+
+    public static class UserTable {
+        public static String USER_ID = "userId";
+        public static String DOMAIN_ID = "domainId";
+        public static String USER_NAME = "userName";
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/JPAUtils.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/JPAUtils.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/JPAUtils.java
index 0d8b78f..6e8d11c 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/JPAUtils.java
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/JPAUtils.java
@@ -33,7 +33,7 @@ import java.util.Map;
 public class JPAUtils {
     private final static Logger logger = LoggerFactory.getLogger(JPAUtils.class);
 
-    private static final String PERSISTENCE_UNIT_NAME = "appcatalog_data";
+    private static final String PERSISTENCE_UNIT_NAME = "airavata-gov-registry";
     private static final String GOV_REG_JDBC_DRIVER = "appcatalog.jdbc.driver";
     private static final String GOV_REG_JDBC_URL = "appcatalog.jdbc.url";
     private static final String GOV_REG_JDBC_USER = "appcatalog.jdbc.user";
@@ -42,10 +42,10 @@ public class JPAUtils {
     private static final String JPA_CACHE_SIZE = "jpa.cache.size";
     private static final String JPA_CACHE_ENABLED = "cache.enable";
 
-    @PersistenceUnit(unitName = "airavata-gov-registry")
+    @PersistenceUnit(unitName = PERSISTENCE_UNIT_NAME)
     protected static EntityManagerFactory factory;
-    @PersistenceContext(unitName = "airavata-gov-registry")
-    private static EntityManager appCatEntityManager;
+    @PersistenceContext(unitName = PERSISTENCE_UNIT_NAME)
+    private static EntityManager entityManager;
 
     public static EntityManager getEntityManager() {
         if (factory == null) {
@@ -55,7 +55,12 @@ public class JPAUtils {
 //                    "Password=" + readServerProperties(GOV_REG_JDBC_PWD) +
 //                    ",validationQuery=" + readServerProperties(GOV_REG_VALIDATION_QUERY);
 //
-            String connectionProperties = "jdbc:mysql://localhost:3306/airavata_gov_registry;create=true;user=root;password=";
+
+            String connectionProperties = "DriverClassName=com.mysql.jdbc.Driver," +
+                    "Url=jdbc:mysql://localhost:3306/airavata_gov_registry?autoReconnect=true," +
+                    "Username=root," +
+                    "Password=," +
+                    ",validationQuery=SELECT 1 FROM CONFIGURATION";
 
             Map<String, String> properties = new HashMap<String, String>();
             properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");
@@ -71,10 +76,11 @@ public class JPAUtils {
             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");
+            properties.put("openjpa.RuntimeUnenhancedClasses", "warn");
             factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
         }
-        appCatEntityManager = factory.createEntityManager();
-        return appCatEntityManager;
+        entityManager = factory.createEntityManager();
+        return entityManager;
     }
 
     private static String readServerProperties(String propertyName) throws GovRegistryException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/QueryGenerator.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/QueryGenerator.java b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/QueryGenerator.java
new file mode 100644
index 0000000..2844a4a
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/java/org/apache/airavata/gov/registry/db/utils/QueryGenerator.java
@@ -0,0 +1,53 @@
+/*
+ *
+ * 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.gov.registry.db.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+public class QueryGenerator {
+    private final static Logger logger = LoggerFactory.getLogger(QueryGenerator.class);
+
+    private String tableName;
+
+
+    public QueryGenerator(String tableName){
+        this.tableName = tableName;
+    }
+
+    public String getSelectQuery(Map<String, String> filters){
+        String query = "SELECT p from " + tableName + " as p WHERE ";
+        if(filters == null || filters.size() == 0){
+            query +=  "1";
+        }else{
+            for(String k : filters.keySet()){
+                query += "p." + k + " LIKE '%" + filters.get(k) + "%' AND ";
+            }
+            query = query.substring(0, query.length()-5);
+        }
+
+        query += " ORDER BY p.createdTime DESC";
+
+        return query;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/META-INF/persistence.xml b/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..4a89174
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+
+    <persistence-unit name="airavata-gov-registry">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.airavata.gov.registry.db.entities.DomainEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.EntityEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.EntityTypeEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.GroupMembershipEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.PermissionTypeEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.SharingEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.UserEntity</class>
+        <class>org.apache.airavata.gov.registry.db.entities.UserGroupEntity</class>
+    </persistence-unit>
+</persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/gov-registry.sql
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/gov-registry.sql b/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/gov-registry.sql
index 68e1a95..a9ca3dc 100644
--- a/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/gov-registry.sql
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/main/resources/gov-registry.sql
@@ -111,4 +111,13 @@ CREATE TABLE SHARING (
   FOREIGN KEY (PERMISSION_TYPE_ID) REFERENCES PERMISSION_TYPE(PERMISSION_TYPE_ID),
   FOREIGN KEY (ENTITY_TYPE_ID) REFERENCES  ENTITY_TYPE(ENTITY_TYPE_ID),
   FOREIGN KEY (GROUP_ID) REFERENCES USER_GROUP(GROUP_ID)
-)
\ No newline at end of file
+)
+
+CREATE TABLE CONFIGURATION
+(
+          CONFIG_KEY VARCHAR(255),
+          CONFIG_VALUE VARCHAR(255),
+          PRIMARY KEY(CONFIG_KEY, CONFIG_VALUE)
+);
+
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('gov_reg_version', '0.17');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-core/src/test/java/org/apache/airavata/gov/registry/db/RepositoriesTest.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-core/src/test/java/org/apache/airavata/gov/registry/db/RepositoriesTest.java b/airavata-gov-registry/airavata-gov-registry-core/src/test/java/org/apache/airavata/gov/registry/db/RepositoriesTest.java
new file mode 100644
index 0000000..0b0da15
--- /dev/null
+++ b/airavata-gov-registry/airavata-gov-registry-core/src/test/java/org/apache/airavata/gov/registry/db/RepositoriesTest.java
@@ -0,0 +1,113 @@
+/*
+ *
+ * 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.gov.registry.db;
+
+import junit.framework.Assert;
+import org.apache.airavata.gov.registry.db.entities.DomainEntity;
+import org.apache.airavata.gov.registry.db.entities.UserEntity;
+import org.apache.airavata.gov.registry.db.repositories.DomainRepository;
+import org.apache.airavata.gov.registry.db.repositories.UserRepository;
+import org.apache.airavata.gov.registry.db.utils.DBConstants;
+import org.apache.airavata.gov.registry.models.Domain;
+import org.apache.airavata.gov.registry.models.GovRegistryException;
+import org.apache.airavata.gov.registry.models.User;
+import org.apache.airavata.gov.registry.models.UserGroup;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RepositoriesTest {
+    private final static Logger logger = LoggerFactory.getLogger(RepositoriesTest.class);
+
+    @Test
+    public void test() throws GovRegistryException {
+
+        //Creating domain
+        Domain domain = new Domain();
+        String domainId = "test-domain."+System.currentTimeMillis();
+        domain.setDomainId(domainId);
+        domain.setName(domainId);
+        domain.setDescription("test domain description");
+        domain.setCreatedTime(System.currentTimeMillis());
+        domain.setUpdatedTime(System.currentTimeMillis());
+
+        DomainRepository domainRepository = new DomainRepository(Domain.class, DomainEntity.class);
+        domain = domainRepository.create(domain);
+        Assert.assertNotNull(domain);
+
+        Map<String, String> filters = new HashMap<>();
+        filters.put(DBConstants.DomainTable.DESCRIPTION, "test");
+        Assert.assertTrue(domainRepository.select(filters, 0, 10).size() > 0);
+
+
+        //Creating users
+        User user1 = new User();
+        String userName1 = "test-user." + System.currentTimeMillis();
+        String userId1 = domainId + ":" + userName1;
+        user1.setUserId(userId1);
+        user1.setUserName(userName1);
+        user1.setDomainId(domainId);
+        user1.setCreatedTime(System.currentTimeMillis());
+        user1.setUpdatedTime(System.currentTimeMillis());
+
+        UserRepository userRepository = new UserRepository(User.class, UserEntity.class);
+        user1 = userRepository.create(user1);
+        Assert.assertNotNull(user1);
+
+        User user2 = new User();
+        String userName2 = "test-user." + System.currentTimeMillis();
+        String userId2 = domainId + ":" + userName2;
+        user2.setUserId(userId2);
+        user2.setUserName(userName2);
+        user2.setDomainId(domainId);
+        user2.setCreatedTime(System.currentTimeMillis());
+        user2.setUpdatedTime(System.currentTimeMillis());
+
+        User user3 = new User();
+        String userName3 = "test-user." + System.currentTimeMillis();
+        String userId3 = domainId + ":" + userName3;
+        user3.setUserId(userId3);
+        user3.setUserName(userName3);
+        user3.setDomainId(domainId);
+        user3.setCreatedTime(System.currentTimeMillis());
+        user3.setUpdatedTime(System.currentTimeMillis());
+
+        filters = new HashMap<>();
+        filters.put(DBConstants.UserTable.USER_NAME, "test");
+        Assert.assertTrue(userRepository.select(filters, 0, 10).size() > 0);
+
+        //Creating Groups
+        UserGroup userGroup1 = new UserGroup();
+        String groupName1 = "test-group";
+        String groupId1 = domainId + ":" + groupName1 + "." + System.currentTimeMillis();
+        userGroup1.setGroupId(groupId1);
+        userGroup1.setDomainId(domainId);
+        userGroup1.setName(groupName1);
+        userGroup1.setDescription("test group description");
+        userGroup1.setOwnerId(userId1);
+        userGroup1.setCreatedTime(System.currentTimeMillis());
+        userGroup1.setUpdatedTime(System.currentTimeMillis());
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Domain.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Domain.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Domain.java
index 0bebf24..a373892 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Domain.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Domain.java
@@ -6,35 +6,18 @@
  */
 package org.apache.airavata.gov.registry.models;
 
+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)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>, java.io.Serializable, Cloneable, Comparable<Domain> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Domain");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Entity.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Entity.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Entity.java
index 93059c4..0c1d447 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Entity.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Entity.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>, java.io.Serializable, Cloneable, Comparable<Entity> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Entity");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/EntityType.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/EntityType.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/EntityType.java
index 689453f..3585243 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/EntityType.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/EntityType.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class EntityType implements org.apache.thrift.TBase<EntityType, EntityType._Fields>, java.io.Serializable, Cloneable, Comparable<EntityType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EntityType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/GovRegistryException.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/GovRegistryException.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/GovRegistryException.java
index 74a8b75..d265c23 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/GovRegistryException.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/GovRegistryException.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class GovRegistryException extends TException implements org.apache.thrift.TBase<GovRegistryException, GovRegistryException._Fields>, java.io.Serializable, Cloneable, Comparable<GovRegistryException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GovRegistryException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Group.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Group.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Group.java
deleted file mode 100644
index fc3e5d5..0000000
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/Group.java
+++ /dev/null
@@ -1,1154 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-package org.apache.airavata.gov.registry.models;
-
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
-public class Group implements org.apache.thrift.TBase<Group, Group._Fields>, java.io.Serializable, Cloneable, Comparable<Group> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Group");
-
-  private static final org.apache.thrift.protocol.TField GROUP_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("groupId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField DOMAIN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("domainId", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)6);
-  private static final org.apache.thrift.protocol.TField OWNER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("ownerId", org.apache.thrift.protocol.TType.STRING, (short)7);
-  private static final org.apache.thrift.protocol.TField CREATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("createdTime", org.apache.thrift.protocol.TType.I64, (short)8);
-  private static final org.apache.thrift.protocol.TField UPDATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("updatedTime", org.apache.thrift.protocol.TType.I64, (short)9);
-  private static final org.apache.thrift.protocol.TField GROUP_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("groupType", org.apache.thrift.protocol.TType.I32, (short)10);
-
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new GroupStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new GroupTupleSchemeFactory());
-  }
-
-  public String groupId; // optional
-  public String domainId; // optional
-  public String name; // optional
-  public String description; // optional
-  public String ownerId; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
-  /**
-   * 
-   * @see GroupType
-   */
-  public GroupType groupType; // optional
-
-  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
-  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-    GROUP_ID((short)1, "groupId"),
-    DOMAIN_ID((short)2, "domainId"),
-    NAME((short)3, "name"),
-    DESCRIPTION((short)6, "description"),
-    OWNER_ID((short)7, "ownerId"),
-    CREATED_TIME((short)8, "createdTime"),
-    UPDATED_TIME((short)9, "updatedTime"),
-    /**
-     * 
-     * @see GroupType
-     */
-    GROUP_TYPE((short)10, "groupType");
-
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
-
-    static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
-        byName.put(field.getFieldName(), field);
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, or null if its not found.
-     */
-    public static _Fields findByThriftId(int fieldId) {
-      switch(fieldId) {
-        case 1: // GROUP_ID
-          return GROUP_ID;
-        case 2: // DOMAIN_ID
-          return DOMAIN_ID;
-        case 3: // NAME
-          return NAME;
-        case 6: // DESCRIPTION
-          return DESCRIPTION;
-        case 7: // OWNER_ID
-          return OWNER_ID;
-        case 8: // CREATED_TIME
-          return CREATED_TIME;
-        case 9: // UPDATED_TIME
-          return UPDATED_TIME;
-        case 10: // GROUP_TYPE
-          return GROUP_TYPE;
-        default:
-          return null;
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, throwing an exception
-     * if it is not found.
-     */
-    public static _Fields findByThriftIdOrThrow(int fieldId) {
-      _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-      return fields;
-    }
-
-    /**
-     * Find the _Fields constant that matches name, or null if its not found.
-     */
-    public static _Fields findByName(String name) {
-      return byName.get(name);
-    }
-
-    private final short _thriftId;
-    private final String _fieldName;
-
-    _Fields(short thriftId, String fieldName) {
-      _thriftId = thriftId;
-      _fieldName = fieldName;
-    }
-
-    public short getThriftFieldId() {
-      return _thriftId;
-    }
-
-    public String getFieldName() {
-      return _fieldName;
-    }
-  }
-
-  // isset id assignments
-  private static final int __CREATEDTIME_ISSET_ID = 0;
-  private static final int __UPDATEDTIME_ISSET_ID = 1;
-  private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.GROUP_ID,_Fields.DOMAIN_ID,_Fields.NAME,_Fields.DESCRIPTION,_Fields.OWNER_ID,_Fields.CREATED_TIME,_Fields.UPDATED_TIME,_Fields.GROUP_TYPE};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-  static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-    tmpMap.put(_Fields.GROUP_ID, new org.apache.thrift.meta_data.FieldMetaData("groupId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.DOMAIN_ID, new org.apache.thrift.meta_data.FieldMetaData("domainId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("description", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.OWNER_ID, new org.apache.thrift.meta_data.FieldMetaData("ownerId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.CREATED_TIME, new org.apache.thrift.meta_data.FieldMetaData("createdTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.UPDATED_TIME, new org.apache.thrift.meta_data.FieldMetaData("updatedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.GROUP_TYPE, new org.apache.thrift.meta_data.FieldMetaData("groupType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, GroupType.class)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Group.class, metaDataMap);
-  }
-
-  public Group() {
-    this.groupId = "DO_NOT_SET_AT_CLIENTS_ID";
-
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public Group(Group other) {
-    __isset_bitfield = other.__isset_bitfield;
-    if (other.isSetGroupId()) {
-      this.groupId = other.groupId;
-    }
-    if (other.isSetDomainId()) {
-      this.domainId = other.domainId;
-    }
-    if (other.isSetName()) {
-      this.name = other.name;
-    }
-    if (other.isSetDescription()) {
-      this.description = other.description;
-    }
-    if (other.isSetOwnerId()) {
-      this.ownerId = other.ownerId;
-    }
-    this.createdTime = other.createdTime;
-    this.updatedTime = other.updatedTime;
-    if (other.isSetGroupType()) {
-      this.groupType = other.groupType;
-    }
-  }
-
-  public Group deepCopy() {
-    return new Group(this);
-  }
-
-  @Override
-  public void clear() {
-    this.groupId = "DO_NOT_SET_AT_CLIENTS_ID";
-
-    this.domainId = null;
-    this.name = null;
-    this.description = null;
-    this.ownerId = null;
-    setCreatedTimeIsSet(false);
-    this.createdTime = 0;
-    setUpdatedTimeIsSet(false);
-    this.updatedTime = 0;
-    this.groupType = null;
-  }
-
-  public String getGroupId() {
-    return this.groupId;
-  }
-
-  public Group setGroupId(String groupId) {
-    this.groupId = groupId;
-    return this;
-  }
-
-  public void unsetGroupId() {
-    this.groupId = null;
-  }
-
-  /** Returns true if field groupId is set (has been assigned a value) and false otherwise */
-  public boolean isSetGroupId() {
-    return this.groupId != null;
-  }
-
-  public void setGroupIdIsSet(boolean value) {
-    if (!value) {
-      this.groupId = null;
-    }
-  }
-
-  public String getDomainId() {
-    return this.domainId;
-  }
-
-  public Group setDomainId(String domainId) {
-    this.domainId = domainId;
-    return this;
-  }
-
-  public void unsetDomainId() {
-    this.domainId = null;
-  }
-
-  /** Returns true if field domainId is set (has been assigned a value) and false otherwise */
-  public boolean isSetDomainId() {
-    return this.domainId != null;
-  }
-
-  public void setDomainIdIsSet(boolean value) {
-    if (!value) {
-      this.domainId = null;
-    }
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public Group setName(String name) {
-    this.name = name;
-    return this;
-  }
-
-  public void unsetName() {
-    this.name = null;
-  }
-
-  /** Returns true if field name is set (has been assigned a value) and false otherwise */
-  public boolean isSetName() {
-    return this.name != null;
-  }
-
-  public void setNameIsSet(boolean value) {
-    if (!value) {
-      this.name = null;
-    }
-  }
-
-  public String getDescription() {
-    return this.description;
-  }
-
-  public Group setDescription(String description) {
-    this.description = description;
-    return this;
-  }
-
-  public void unsetDescription() {
-    this.description = null;
-  }
-
-  /** Returns true if field description is set (has been assigned a value) and false otherwise */
-  public boolean isSetDescription() {
-    return this.description != null;
-  }
-
-  public void setDescriptionIsSet(boolean value) {
-    if (!value) {
-      this.description = null;
-    }
-  }
-
-  public String getOwnerId() {
-    return this.ownerId;
-  }
-
-  public Group setOwnerId(String ownerId) {
-    this.ownerId = ownerId;
-    return this;
-  }
-
-  public void unsetOwnerId() {
-    this.ownerId = null;
-  }
-
-  /** Returns true if field ownerId is set (has been assigned a value) and false otherwise */
-  public boolean isSetOwnerId() {
-    return this.ownerId != null;
-  }
-
-  public void setOwnerIdIsSet(boolean value) {
-    if (!value) {
-      this.ownerId = null;
-    }
-  }
-
-  public long getCreatedTime() {
-    return this.createdTime;
-  }
-
-  public Group setCreatedTime(long createdTime) {
-    this.createdTime = createdTime;
-    setCreatedTimeIsSet(true);
-    return this;
-  }
-
-  public void unsetCreatedTime() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATEDTIME_ISSET_ID);
-  }
-
-  /** Returns true if field createdTime is set (has been assigned a value) and false otherwise */
-  public boolean isSetCreatedTime() {
-    return EncodingUtils.testBit(__isset_bitfield, __CREATEDTIME_ISSET_ID);
-  }
-
-  public void setCreatedTimeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATEDTIME_ISSET_ID, value);
-  }
-
-  public long getUpdatedTime() {
-    return this.updatedTime;
-  }
-
-  public Group setUpdatedTime(long updatedTime) {
-    this.updatedTime = updatedTime;
-    setUpdatedTimeIsSet(true);
-    return this;
-  }
-
-  public void unsetUpdatedTime() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UPDATEDTIME_ISSET_ID);
-  }
-
-  /** Returns true if field updatedTime is set (has been assigned a value) and false otherwise */
-  public boolean isSetUpdatedTime() {
-    return EncodingUtils.testBit(__isset_bitfield, __UPDATEDTIME_ISSET_ID);
-  }
-
-  public void setUpdatedTimeIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UPDATEDTIME_ISSET_ID, value);
-  }
-
-  /**
-   * 
-   * @see GroupType
-   */
-  public GroupType getGroupType() {
-    return this.groupType;
-  }
-
-  /**
-   * 
-   * @see GroupType
-   */
-  public Group setGroupType(GroupType groupType) {
-    this.groupType = groupType;
-    return this;
-  }
-
-  public void unsetGroupType() {
-    this.groupType = null;
-  }
-
-  /** Returns true if field groupType is set (has been assigned a value) and false otherwise */
-  public boolean isSetGroupType() {
-    return this.groupType != null;
-  }
-
-  public void setGroupTypeIsSet(boolean value) {
-    if (!value) {
-      this.groupType = null;
-    }
-  }
-
-  public void setFieldValue(_Fields field, Object value) {
-    switch (field) {
-    case GROUP_ID:
-      if (value == null) {
-        unsetGroupId();
-      } else {
-        setGroupId((String)value);
-      }
-      break;
-
-    case DOMAIN_ID:
-      if (value == null) {
-        unsetDomainId();
-      } else {
-        setDomainId((String)value);
-      }
-      break;
-
-    case NAME:
-      if (value == null) {
-        unsetName();
-      } else {
-        setName((String)value);
-      }
-      break;
-
-    case DESCRIPTION:
-      if (value == null) {
-        unsetDescription();
-      } else {
-        setDescription((String)value);
-      }
-      break;
-
-    case OWNER_ID:
-      if (value == null) {
-        unsetOwnerId();
-      } else {
-        setOwnerId((String)value);
-      }
-      break;
-
-    case CREATED_TIME:
-      if (value == null) {
-        unsetCreatedTime();
-      } else {
-        setCreatedTime((Long)value);
-      }
-      break;
-
-    case UPDATED_TIME:
-      if (value == null) {
-        unsetUpdatedTime();
-      } else {
-        setUpdatedTime((Long)value);
-      }
-      break;
-
-    case GROUP_TYPE:
-      if (value == null) {
-        unsetGroupType();
-      } else {
-        setGroupType((GroupType)value);
-      }
-      break;
-
-    }
-  }
-
-  public Object getFieldValue(_Fields field) {
-    switch (field) {
-    case GROUP_ID:
-      return getGroupId();
-
-    case DOMAIN_ID:
-      return getDomainId();
-
-    case NAME:
-      return getName();
-
-    case DESCRIPTION:
-      return getDescription();
-
-    case OWNER_ID:
-      return getOwnerId();
-
-    case CREATED_TIME:
-      return getCreatedTime();
-
-    case UPDATED_TIME:
-      return getUpdatedTime();
-
-    case GROUP_TYPE:
-      return getGroupType();
-
-    }
-    throw new IllegalStateException();
-  }
-
-  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
-  public boolean isSet(_Fields field) {
-    if (field == null) {
-      throw new IllegalArgumentException();
-    }
-
-    switch (field) {
-    case GROUP_ID:
-      return isSetGroupId();
-    case DOMAIN_ID:
-      return isSetDomainId();
-    case NAME:
-      return isSetName();
-    case DESCRIPTION:
-      return isSetDescription();
-    case OWNER_ID:
-      return isSetOwnerId();
-    case CREATED_TIME:
-      return isSetCreatedTime();
-    case UPDATED_TIME:
-      return isSetUpdatedTime();
-    case GROUP_TYPE:
-      return isSetGroupType();
-    }
-    throw new IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof Group)
-      return this.equals((Group)that);
-    return false;
-  }
-
-  public boolean equals(Group that) {
-    if (that == null)
-      return false;
-
-    boolean this_present_groupId = true && this.isSetGroupId();
-    boolean that_present_groupId = true && that.isSetGroupId();
-    if (this_present_groupId || that_present_groupId) {
-      if (!(this_present_groupId && that_present_groupId))
-        return false;
-      if (!this.groupId.equals(that.groupId))
-        return false;
-    }
-
-    boolean this_present_domainId = true && this.isSetDomainId();
-    boolean that_present_domainId = true && that.isSetDomainId();
-    if (this_present_domainId || that_present_domainId) {
-      if (!(this_present_domainId && that_present_domainId))
-        return false;
-      if (!this.domainId.equals(that.domainId))
-        return false;
-    }
-
-    boolean this_present_name = true && this.isSetName();
-    boolean that_present_name = true && that.isSetName();
-    if (this_present_name || that_present_name) {
-      if (!(this_present_name && that_present_name))
-        return false;
-      if (!this.name.equals(that.name))
-        return false;
-    }
-
-    boolean this_present_description = true && this.isSetDescription();
-    boolean that_present_description = true && that.isSetDescription();
-    if (this_present_description || that_present_description) {
-      if (!(this_present_description && that_present_description))
-        return false;
-      if (!this.description.equals(that.description))
-        return false;
-    }
-
-    boolean this_present_ownerId = true && this.isSetOwnerId();
-    boolean that_present_ownerId = true && that.isSetOwnerId();
-    if (this_present_ownerId || that_present_ownerId) {
-      if (!(this_present_ownerId && that_present_ownerId))
-        return false;
-      if (!this.ownerId.equals(that.ownerId))
-        return false;
-    }
-
-    boolean this_present_createdTime = true && this.isSetCreatedTime();
-    boolean that_present_createdTime = true && that.isSetCreatedTime();
-    if (this_present_createdTime || that_present_createdTime) {
-      if (!(this_present_createdTime && that_present_createdTime))
-        return false;
-      if (this.createdTime != that.createdTime)
-        return false;
-    }
-
-    boolean this_present_updatedTime = true && this.isSetUpdatedTime();
-    boolean that_present_updatedTime = true && that.isSetUpdatedTime();
-    if (this_present_updatedTime || that_present_updatedTime) {
-      if (!(this_present_updatedTime && that_present_updatedTime))
-        return false;
-      if (this.updatedTime != that.updatedTime)
-        return false;
-    }
-
-    boolean this_present_groupType = true && this.isSetGroupType();
-    boolean that_present_groupType = true && that.isSetGroupType();
-    if (this_present_groupType || that_present_groupType) {
-      if (!(this_present_groupType && that_present_groupType))
-        return false;
-      if (!this.groupType.equals(that.groupType))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_groupId = true && (isSetGroupId());
-    list.add(present_groupId);
-    if (present_groupId)
-      list.add(groupId);
-
-    boolean present_domainId = true && (isSetDomainId());
-    list.add(present_domainId);
-    if (present_domainId)
-      list.add(domainId);
-
-    boolean present_name = true && (isSetName());
-    list.add(present_name);
-    if (present_name)
-      list.add(name);
-
-    boolean present_description = true && (isSetDescription());
-    list.add(present_description);
-    if (present_description)
-      list.add(description);
-
-    boolean present_ownerId = true && (isSetOwnerId());
-    list.add(present_ownerId);
-    if (present_ownerId)
-      list.add(ownerId);
-
-    boolean present_createdTime = true && (isSetCreatedTime());
-    list.add(present_createdTime);
-    if (present_createdTime)
-      list.add(createdTime);
-
-    boolean present_updatedTime = true && (isSetUpdatedTime());
-    list.add(present_updatedTime);
-    if (present_updatedTime)
-      list.add(updatedTime);
-
-    boolean present_groupType = true && (isSetGroupType());
-    list.add(present_groupType);
-    if (present_groupType)
-      list.add(groupType.getValue());
-
-    return list.hashCode();
-  }
-
-  @Override
-  public int compareTo(Group other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = Boolean.valueOf(isSetGroupId()).compareTo(other.isSetGroupId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetGroupId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.groupId, other.groupId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetDomainId()).compareTo(other.isSetDomainId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetDomainId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.domainId, other.domainId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetDescription()).compareTo(other.isSetDescription());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetDescription()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.description, other.description);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetOwnerId()).compareTo(other.isSetOwnerId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetOwnerId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ownerId, other.ownerId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetCreatedTime()).compareTo(other.isSetCreatedTime());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetCreatedTime()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.createdTime, other.createdTime);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetUpdatedTime()).compareTo(other.isSetUpdatedTime());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetUpdatedTime()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.updatedTime, other.updatedTime);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = Boolean.valueOf(isSetGroupType()).compareTo(other.isSetGroupType());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetGroupType()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.groupType, other.groupType);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    return 0;
-  }
-
-  public _Fields fieldForId(int fieldId) {
-    return _Fields.findByThriftId(fieldId);
-  }
-
-  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
-  }
-
-  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Group(");
-    boolean first = true;
-
-    if (isSetGroupId()) {
-      sb.append("groupId:");
-      if (this.groupId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.groupId);
-      }
-      first = false;
-    }
-    if (isSetDomainId()) {
-      if (!first) sb.append(", ");
-      sb.append("domainId:");
-      if (this.domainId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.domainId);
-      }
-      first = false;
-    }
-    if (isSetName()) {
-      if (!first) sb.append(", ");
-      sb.append("name:");
-      if (this.name == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.name);
-      }
-      first = false;
-    }
-    if (isSetDescription()) {
-      if (!first) sb.append(", ");
-      sb.append("description:");
-      if (this.description == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.description);
-      }
-      first = false;
-    }
-    if (isSetOwnerId()) {
-      if (!first) sb.append(", ");
-      sb.append("ownerId:");
-      if (this.ownerId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.ownerId);
-      }
-      first = false;
-    }
-    if (isSetCreatedTime()) {
-      if (!first) sb.append(", ");
-      sb.append("createdTime:");
-      sb.append(this.createdTime);
-      first = false;
-    }
-    if (isSetUpdatedTime()) {
-      if (!first) sb.append(", ");
-      sb.append("updatedTime:");
-      sb.append(this.updatedTime);
-      first = false;
-    }
-    if (isSetGroupType()) {
-      if (!first) sb.append(", ");
-      sb.append("groupType:");
-      if (this.groupType == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.groupType);
-      }
-      first = false;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    // check for sub-struct validity
-  }
-
-  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-    try {
-      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
-    try {
-      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-      __isset_bitfield = 0;
-      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private static class GroupStandardSchemeFactory implements SchemeFactory {
-    public GroupStandardScheme getScheme() {
-      return new GroupStandardScheme();
-    }
-  }
-
-  private static class GroupStandardScheme extends StandardScheme<Group> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, Group struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TField schemeField;
-      iprot.readStructBegin();
-      while (true)
-      {
-        schemeField = iprot.readFieldBegin();
-        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
-          break;
-        }
-        switch (schemeField.id) {
-          case 1: // GROUP_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.groupId = iprot.readString();
-              struct.setGroupIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 2: // DOMAIN_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.domainId = iprot.readString();
-              struct.setDomainIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 3: // NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.name = iprot.readString();
-              struct.setNameIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 6: // DESCRIPTION
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.description = iprot.readString();
-              struct.setDescriptionIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 7: // OWNER_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.ownerId = iprot.readString();
-              struct.setOwnerIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 8: // CREATED_TIME
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.createdTime = iprot.readI64();
-              struct.setCreatedTimeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 9: // UPDATED_TIME
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.updatedTime = iprot.readI64();
-              struct.setUpdatedTimeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 10: // GROUP_TYPE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.groupType = org.apache.airavata.gov.registry.models.GroupType.findByValue(iprot.readI32());
-              struct.setGroupTypeIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          default:
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-        }
-        iprot.readFieldEnd();
-      }
-      iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
-      struct.validate();
-    }
-
-    public void write(org.apache.thrift.protocol.TProtocol oprot, Group struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.groupId != null) {
-        if (struct.isSetGroupId()) {
-          oprot.writeFieldBegin(GROUP_ID_FIELD_DESC);
-          oprot.writeString(struct.groupId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.domainId != null) {
-        if (struct.isSetDomainId()) {
-          oprot.writeFieldBegin(DOMAIN_ID_FIELD_DESC);
-          oprot.writeString(struct.domainId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.name != null) {
-        if (struct.isSetName()) {
-          oprot.writeFieldBegin(NAME_FIELD_DESC);
-          oprot.writeString(struct.name);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.description != null) {
-        if (struct.isSetDescription()) {
-          oprot.writeFieldBegin(DESCRIPTION_FIELD_DESC);
-          oprot.writeString(struct.description);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.ownerId != null) {
-        if (struct.isSetOwnerId()) {
-          oprot.writeFieldBegin(OWNER_ID_FIELD_DESC);
-          oprot.writeString(struct.ownerId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.isSetCreatedTime()) {
-        oprot.writeFieldBegin(CREATED_TIME_FIELD_DESC);
-        oprot.writeI64(struct.createdTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetUpdatedTime()) {
-        oprot.writeFieldBegin(UPDATED_TIME_FIELD_DESC);
-        oprot.writeI64(struct.updatedTime);
-        oprot.writeFieldEnd();
-      }
-      if (struct.groupType != null) {
-        if (struct.isSetGroupType()) {
-          oprot.writeFieldBegin(GROUP_TYPE_FIELD_DESC);
-          oprot.writeI32(struct.groupType.getValue());
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class GroupTupleSchemeFactory implements SchemeFactory {
-    public GroupTupleScheme getScheme() {
-      return new GroupTupleScheme();
-    }
-  }
-
-  private static class GroupTupleScheme extends TupleScheme<Group> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, Group struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
-      if (struct.isSetGroupId()) {
-        optionals.set(0);
-      }
-      if (struct.isSetDomainId()) {
-        optionals.set(1);
-      }
-      if (struct.isSetName()) {
-        optionals.set(2);
-      }
-      if (struct.isSetDescription()) {
-        optionals.set(3);
-      }
-      if (struct.isSetOwnerId()) {
-        optionals.set(4);
-      }
-      if (struct.isSetCreatedTime()) {
-        optionals.set(5);
-      }
-      if (struct.isSetUpdatedTime()) {
-        optionals.set(6);
-      }
-      if (struct.isSetGroupType()) {
-        optionals.set(7);
-      }
-      oprot.writeBitSet(optionals, 8);
-      if (struct.isSetGroupId()) {
-        oprot.writeString(struct.groupId);
-      }
-      if (struct.isSetDomainId()) {
-        oprot.writeString(struct.domainId);
-      }
-      if (struct.isSetName()) {
-        oprot.writeString(struct.name);
-      }
-      if (struct.isSetDescription()) {
-        oprot.writeString(struct.description);
-      }
-      if (struct.isSetOwnerId()) {
-        oprot.writeString(struct.ownerId);
-      }
-      if (struct.isSetCreatedTime()) {
-        oprot.writeI64(struct.createdTime);
-      }
-      if (struct.isSetUpdatedTime()) {
-        oprot.writeI64(struct.updatedTime);
-      }
-      if (struct.isSetGroupType()) {
-        oprot.writeI32(struct.groupType.getValue());
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, Group struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(8);
-      if (incoming.get(0)) {
-        struct.groupId = iprot.readString();
-        struct.setGroupIdIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.domainId = iprot.readString();
-        struct.setDomainIdIsSet(true);
-      }
-      if (incoming.get(2)) {
-        struct.name = iprot.readString();
-        struct.setNameIsSet(true);
-      }
-      if (incoming.get(3)) {
-        struct.description = iprot.readString();
-        struct.setDescriptionIsSet(true);
-      }
-      if (incoming.get(4)) {
-        struct.ownerId = iprot.readString();
-        struct.setOwnerIdIsSet(true);
-      }
-      if (incoming.get(5)) {
-        struct.createdTime = iprot.readI64();
-        struct.setCreatedTimeIsSet(true);
-      }
-      if (incoming.get(6)) {
-        struct.updatedTime = iprot.readI64();
-        struct.setUpdatedTimeIsSet(true);
-      }
-      if (incoming.get(7)) {
-        struct.groupType = org.apache.airavata.gov.registry.models.GroupType.findByValue(iprot.readI32());
-        struct.setGroupTypeIsSet(true);
-      }
-    }
-  }
-
-}
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/PermissionType.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/PermissionType.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/PermissionType.java
index e8702ac..717969e 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/PermissionType.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/PermissionType.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class PermissionType implements org.apache.thrift.TBase<PermissionType, PermissionType._Fields>, java.io.Serializable, Cloneable, Comparable<PermissionType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PermissionType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/0e21ebcd/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/User.java
----------------------------------------------------------------------
diff --git a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/User.java b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/User.java
index 76ef8b6..14573fe 100644
--- a/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/User.java
+++ b/airavata-gov-registry/airavata-gov-registry-stubs/src/main/java/org/apache/airavata/gov/registry/models/User.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-09-21")
 public class User implements org.apache.thrift.TBase<User, User._Fields>, java.io.Serializable, Cloneable, Comparable<User> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("User");