adding docs

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

Branch: refs/heads/develop
Commit: 87564d2be2c0a118213443e2938df511cef356f9
Parents: d521922
Author: scnakandala <supun.nakand...@gmail.com>
Authored: Fri Oct 14 17:26:41 2016 -0400
Committer: scnakandala <supun.nakand...@gmail.com>
Committed: Fri Oct 14 17:26:41 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |     8 +-
 modules/sharing-registry/api-docs/index.html    |    10 +-
 .../sharing-registry/api-docs/sharing_cpi.html  |   174 +-
 .../api-docs/sharing_models.html                |   160 +-
 .../migrator/airavata/AiravataDataMigrator.java |     6 +-
 .../registry/db/entities/SharingUserEntity.java |    11 +
 .../registry/db/entities/UserGroupEntity.java   |    11 +
 .../db/repositories/UserGroupRepository.java    |     4 +-
 .../sharing/registry/db/utils/DBConstants.java  |     1 +
 .../server/SharingRegistryServerHandler.java    |    57 +-
 .../main/resources/sharing-registry-derby.sql   |     2 +
 .../main/resources/sharing-registry-mysql.sql   |     2 +
 .../SharingRegistryServerHandlerTest.java       |    26 +-
 .../sharing/registry/models/Domain.java         |    13 +-
 .../sharing/registry/models/Entity.java         |    22 +-
 .../registry/models/EntitySearchField.java      |    10 +
 .../sharing/registry/models/EntityType.java     |    12 +-
 .../sharing/registry/models/GroupChildType.java |     4 +
 .../registry/models/GroupMembership.java        |     6 +-
 .../sharing/registry/models/GroupType.java      |    12 +-
 .../sharing/registry/models/PermissionType.java |    12 +-
 .../registry/models/SearchCondition.java        |    18 +-
 .../sharing/registry/models/SearchCriteria.java |     9 +-
 .../sharing/registry/models/Sharing.java        |     6 +-
 .../models/SharingRegistryException.java        |     6 +-
 .../sharing/registry/models/SharingType.java    |     4 +
 .../airavata/sharing/registry/models/User.java  |   168 +-
 .../sharing/registry/models/UserGroup.java      |   394 +-
 .../service/cpi/SharingRegistryService.java     | 10311 ++++++++++-------
 .../thrift_models/sharing_cpi.thrift            |   226 +-
 .../thrift_models/sharing_models.thrift         |   183 +-
 .../thrift_models/thrift-gen.sh                 |     1 -
 32 files changed, 7065 insertions(+), 4824 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 45ddc3f..7690ca2 100644
--- 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -123,7 +123,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
             user.setDomainId(domain.domainId);
             
user.setUserId(ServerSettings.getDefaultUser()+"@"+ServerSettings.getDefaultUserGateway());
             user.setUserName(ServerSettings.getDefaultUser());
-            sharingRegistryServerHandler.createUser(user);
+            sharingRegistryServerHandler.registerUser(user);
 
             //Creating Entity Types for each domain
             EntityType entityType = new EntityType();
@@ -671,7 +671,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
                 entity.setName(project.getName());
                 entity.setDescription(project.getDescription());
 
-                sharingRegistryServerHandler.createEntity(entity);
+                sharingRegistryServerHandler.registerEntity(entity);
             }
 
             logger.debug("Airavata created project with project Id : " + 
projectId + " for gateway Id : " + gatewayId);
@@ -1046,7 +1046,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
                 entity.setName(experiment.getExperimentName());
                 entity.setDescription(experiment.getDescription());
 
-                sharingRegistryServerHandler.createEntity(entity);
+                sharingRegistryServerHandler.registerEntity(entity);
             }
 
             ExperimentStatusChangeEvent event = new 
ExperimentStatusChangeEvent(ExperimentState.CREATED,
@@ -1586,7 +1586,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
                 entity.setName(existingExperiment.getExperimentName());
                 entity.setDescription(existingExperiment.getDescription());
 
-                sharingRegistryServerHandler.createEntity(entity);
+                sharingRegistryServerHandler.registerEntity(entity);
             }
 
             return expId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/api-docs/index.html
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/api-docs/index.html 
b/modules/sharing-registry/api-docs/index.html
index ead6c2f..6663a9d 100644
--- a/modules/sharing-registry/api-docs/index.html
+++ b/modules/sharing-registry/api-docs/index.html
@@ -7,14 +7,12 @@
 <tr>
 <td>sharing_cpi</td><td><a 
href="sharing_cpi.html#Svc_SharingRegistryService">SharingRegistryService</a><br/>
 <ul>
-<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_addChildGroupToParentGroup">addChildGroupToParentGroup</a></li>
+<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_addChildGroupsToParentGroup">addChildGroupsToParentGroup</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_addUsersToGroup">addUsersToGroup</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createDomain">createDomain</a></li>
-<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createEntity">createEntity</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createEntityType">createEntityType</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createGroup">createGroup</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createPermissionType">createPermissionType</a></li>
-<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_createUser">createUser</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_deleteDomain">deleteDomain</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_deleteEntity">deleteEntity</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_deleteEntityType">deleteEntityType</a></li>
@@ -27,7 +25,8 @@
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getEntityType">getEntityType</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getEntityTypes">getEntityTypes</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getGroup">getGroup</a></li>
-<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getGroupMembers">getGroupMembers</a></li>
+<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getGroupMembersOfTypeGroup">getGroupMembersOfTypeGroup</a></li>
+<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getGroupMembersOfTypeUser">getGroupMembersOfTypeUser</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getGroups">getGroups</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getListOfSharedGroups">getListOfSharedGroups</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getListOfSharedUsers">getListOfSharedUsers</a></li>
@@ -35,6 +34,8 @@
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getPermissionTypes">getPermissionTypes</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getUser">getUser</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_getUsers">getUsers</a></li>
+<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_registerEntity">registerEntity</a></li>
+<li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_registerUser">registerUser</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_removeChildGroupFromParentGroup">removeChildGroupFromParentGroup</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_removeUsersFromGroup">removeUsersFromGroup</a></li>
 <li><a 
href="sharing_cpi.html#Fn_SharingRegistryService_revokeEntitySharingFromGroups">revokeEntitySharingFromGroups</a></li>
@@ -59,6 +60,7 @@
 <a href="sharing_models.html#Struct_Entity">Entity</a><br/>
 <a href="sharing_models.html#Enum_EntitySearchField">EntitySearchField</a><br/>
 <a href="sharing_models.html#Struct_EntityType">EntityType</a><br/>
+<a href="sharing_models.html#Enum_GroupCardinality">GroupCardinality</a><br/>
 <a href="sharing_models.html#Enum_GroupChildType">GroupChildType</a><br/>
 <a href="sharing_models.html#Struct_GroupMembership">GroupMembership</a><br/>
 <a href="sharing_models.html#Enum_GroupType">GroupType</a><br/>

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/api-docs/sharing_cpi.html
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/api-docs/sharing_cpi.html 
b/modules/sharing-registry/api-docs/sharing_cpi.html
index b510ecc..fa1edc1 100644
--- a/modules/sharing-registry/api-docs/sharing_cpi.html
+++ b/modules/sharing-registry/api-docs/sharing_cpi.html
@@ -11,14 +11,12 @@
 <tr>
 <td>sharing_cpi</td><td><a 
href="#Svc_SharingRegistryService">SharingRegistryService</a><br/>
 <ul>
-<li><a 
href="#Fn_SharingRegistryService_addChildGroupToParentGroup">addChildGroupToParentGroup</a></li>
+<li><a 
href="#Fn_SharingRegistryService_addChildGroupsToParentGroup">addChildGroupsToParentGroup</a></li>
 <li><a 
href="#Fn_SharingRegistryService_addUsersToGroup">addUsersToGroup</a></li>
 <li><a href="#Fn_SharingRegistryService_createDomain">createDomain</a></li>
-<li><a href="#Fn_SharingRegistryService_createEntity">createEntity</a></li>
 <li><a 
href="#Fn_SharingRegistryService_createEntityType">createEntityType</a></li>
 <li><a href="#Fn_SharingRegistryService_createGroup">createGroup</a></li>
 <li><a 
href="#Fn_SharingRegistryService_createPermissionType">createPermissionType</a></li>
-<li><a href="#Fn_SharingRegistryService_createUser">createUser</a></li>
 <li><a href="#Fn_SharingRegistryService_deleteDomain">deleteDomain</a></li>
 <li><a href="#Fn_SharingRegistryService_deleteEntity">deleteEntity</a></li>
 <li><a 
href="#Fn_SharingRegistryService_deleteEntityType">deleteEntityType</a></li>
@@ -31,7 +29,8 @@
 <li><a href="#Fn_SharingRegistryService_getEntityType">getEntityType</a></li>
 <li><a href="#Fn_SharingRegistryService_getEntityTypes">getEntityTypes</a></li>
 <li><a href="#Fn_SharingRegistryService_getGroup">getGroup</a></li>
-<li><a 
href="#Fn_SharingRegistryService_getGroupMembers">getGroupMembers</a></li>
+<li><a 
href="#Fn_SharingRegistryService_getGroupMembersOfTypeGroup">getGroupMembersOfTypeGroup</a></li>
+<li><a 
href="#Fn_SharingRegistryService_getGroupMembersOfTypeUser">getGroupMembersOfTypeUser</a></li>
 <li><a href="#Fn_SharingRegistryService_getGroups">getGroups</a></li>
 <li><a 
href="#Fn_SharingRegistryService_getListOfSharedGroups">getListOfSharedGroups</a></li>
 <li><a 
href="#Fn_SharingRegistryService_getListOfSharedUsers">getListOfSharedUsers</a></li>
@@ -39,6 +38,8 @@
 <li><a 
href="#Fn_SharingRegistryService_getPermissionTypes">getPermissionTypes</a></li>
 <li><a href="#Fn_SharingRegistryService_getUser">getUser</a></li>
 <li><a href="#Fn_SharingRegistryService_getUsers">getUsers</a></li>
+<li><a href="#Fn_SharingRegistryService_registerEntity">registerEntity</a></li>
+<li><a href="#Fn_SharingRegistryService_registerUser">registerUser</a></li>
 <li><a 
href="#Fn_SharingRegistryService_removeChildGroupFromParentGroup">removeChildGroupFromParentGroup</a></li>
 <li><a 
href="#Fn_SharingRegistryService_removeUsersFromGroup">removeUsersFromGroup</a></li>
 <li><a 
href="#Fn_SharingRegistryService_revokeEntitySharingFromGroups">revokeEntitySharingFromGroups</a></li>
@@ -61,180 +62,217 @@
 <hr/><h2 id="Services">Services</h2>
 <h3 id="Svc_SharingRegistryService">Service: SharingRegistryService</h3>
 <div class="definition"><h4 
id="Fn_SharingRegistryService_createDomain">Function: 
SharingRegistryService.createDomain</h4>
-<pre><code>string</code> createDomain(<code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> 
domain)
+<pre><code>string</code> createDomain(<code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> 
domainId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * Domain Operations
-*
+</pre><p>API method to create a new domainId.</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updateDomain">Function: 
SharingRegistryService.updateDomain</h4>
-<pre><code>bool</code> updateDomain(<code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> 
domain)
+<pre><code>bool</code> updateDomain(<code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> 
domainId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteDomain">Function: 
SharingRegistryService.deleteDomain</h4>
+</pre><p>API method to update a domainId.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteDomain">Function: 
SharingRegistryService.deleteDomain</h4>
 <pre><code>bool</code> deleteDomain(<code>string</code> domainId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getDomain">Function: 
SharingRegistryService.getDomain</h4>
+</pre><p>API method to delete domainId.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getDomain">Function: 
SharingRegistryService.getDomain</h4>
 <pre><code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> 
getDomain(<code>string</code> domainId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getDomains">Function: 
SharingRegistryService.getDomains</h4>
+</pre><p>API method to retrieve a domainId.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getDomains">Function: 
SharingRegistryService.getDomains</h4>
 <pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code>&gt;</code>
 getDomains(<code>i32</code> offset,
                                        <code>i32</code> limit)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createUser">Function: 
SharingRegistryService.createUser</h4>
-<pre><code>string</code> createUser(<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code> user)
+</pre><p>API method to get all domainIds.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_registerUser">Function: 
SharingRegistryService.registerUser</h4>
+<pre><code>string</code> registerUser(<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code> user)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * User Operations
-*
+</pre><p>API method to register a user in the system</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updatedUser">Function: 
SharingRegistryService.updatedUser</h4>
 <pre><code>bool</code> updatedUser(<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code> user)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteUser">Function: 
SharingRegistryService.deleteUser</h4>
+</pre><p>API method to update existing user</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteUser">Function: 
SharingRegistryService.deleteUser</h4>
 <pre><code>bool</code> deleteUser(<code>string</code> userId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getUser">Function: 
SharingRegistryService.getUser</h4>
+</pre><p>API method to delete user</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getUser">Function: 
SharingRegistryService.getUser</h4>
 <pre><code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code> 
getUser(<code>string</code> userId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getUsers">Function: 
SharingRegistryService.getUsers</h4>
-<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code>
 getUsers(<code>string</code> domain,
+</pre><p>API method to get a user</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getUsers">Function: 
SharingRegistryService.getUsers</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code>
 getUsers(<code>string</code> domainId,
                                    <code>i32</code> offset,
                                    <code>i32</code> limit)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createGroup">Function: 
SharingRegistryService.createGroup</h4>
+</pre><p>API method to get a list of users in a specific domainId. Users will 
be reverse sorted based on the created time.</p>
+<li>domainId : Domain id</li>
+<li>offset : Starting result number</li>
+<li>limit : Number of max results to be sent</li>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createGroup">Function: 
SharingRegistryService.createGroup</h4>
 <pre><code>string</code> createGroup(<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> 
group)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * Group Operations
-*
+</pre><p>API method to create a new group</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updateGroup">Function: 
SharingRegistryService.updateGroup</h4>
 <pre><code>bool</code> updateGroup(<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> 
group)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteGroup">Function: 
SharingRegistryService.deleteGroup</h4>
+</pre><p>API method to update a group</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteGroup">Function: 
SharingRegistryService.deleteGroup</h4>
 <pre><code>bool</code> deleteGroup(<code>string</code> groupId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroup">Function: 
SharingRegistryService.getGroup</h4>
+</pre><p>API method to delete a group</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroup">Function: 
SharingRegistryService.getGroup</h4>
 <pre><code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> 
getGroup(<code>string</code> groupId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroups">Function: 
SharingRegistryService.getGroups</h4>
-<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code>
 getGroups(<code>string</code> domain,
+</pre><p>API method to get a group</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroups">Function: 
SharingRegistryService.getGroups</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code>
 getGroups(<code>string</code> domainId,
                                          <code>i32</code> offset,
                                          <code>i32</code> limit)
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_addUsersToGroup">Function: 
SharingRegistryService.addUsersToGroup</h4>
+</pre><p>API method to get groups in a domainId. Results are reverse sorted 
based on created time.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_addUsersToGroup">Function: 
SharingRegistryService.addUsersToGroup</h4>
 <pre><code>bool</code> 
addUsersToGroup(<code>list&lt;<code>string</code>&gt;</code> userIds,
                      <code>string</code> groupId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_removeUsersFromGroup">Function: 
SharingRegistryService.removeUsersFromGroup</h4>
+</pre><p>API method to add list of users to a group</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_removeUsersFromGroup">Function: 
SharingRegistryService.removeUsersFromGroup</h4>
 <pre><code>bool</code> 
removeUsersFromGroup(<code>list&lt;<code>string</code>&gt;</code> userIds,
                           <code>string</code> groupId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroupMembers">Function: 
SharingRegistryService.getGroupMembers</h4>
-<pre><code>map&lt;<code>string</code>, <code><a 
href="sharing_models.html#Enum_GroupChildType">sharing_models.GroupChildType</a></code>&gt;</code>
 getGroupMembers(<code>string</code> groupId,
-                                                         <code>i32</code> 
offset,
-                                                         <code>i32</code> 
limit)
-    throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_addChildGroupToParentGroup">Function: 
SharingRegistryService.addChildGroupToParentGroup</h4>
-<pre><code>bool</code> addChildGroupToParentGroup(<code>string</code> childId,
-                                <code>string</code> groupId)
-    throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_removeChildGroupFromParentGroup">Function: 
SharingRegistryService.removeChildGroupFromParentGroup</h4>
+</pre><p>API method to remove users from a group</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroupMembersOfTypeUser">Function: 
SharingRegistryService.getGroupMembersOfTypeUser</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code>
 getGroupMembersOfTypeUser(<code>string</code> groupId,
+                                                    <code>i32</code> offset,
+                                                    <code>i32</code> limit)
+    throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
+</pre><p>API method to get list of child users in a group. Only the direct 
members will be returned. Results are reverse time sorted based on creation 
time</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getGroupMembersOfTypeGroup">Function: 
SharingRegistryService.getGroupMembersOfTypeGroup</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code>
 getGroupMembersOfTypeGroup(<code>string</code> groupId,
+                                                          <code>i32</code> 
offset,
+                                                          <code>i32</code> 
limit)
+    throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
+</pre><p>API method to get list of child groups in a group. Only the direct 
members will be returned. Results are reverse time sorted based on creation 
time</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_addChildGroupsToParentGroup">Function: 
SharingRegistryService.addChildGroupsToParentGroup</h4>
+<pre><code>bool</code> 
addChildGroupsToParentGroup(<code>list&lt;<code>string</code>&gt;</code> 
childIds,
+                                 <code>string</code> groupId)
+    throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
+</pre><p>API method to add a child group to a parent group.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_removeChildGroupFromParentGroup">Function: 
SharingRegistryService.removeChildGroupFromParentGroup</h4>
 <pre><code>bool</code> removeChildGroupFromParentGroup(<code>string</code> 
childId,
                                      <code>string</code> groupId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createEntityType">Function: 
SharingRegistryService.createEntityType</h4>
+</pre><p>API method to remove a child group from parent group.</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createEntityType">Function: 
SharingRegistryService.createEntityType</h4>
 <pre><code>string</code> createEntityType(<code><a 
href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>
 entityType)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * EntityType Operations
-*
+</pre><p>API method to create a new entity type</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updateEntityType">Function: 
SharingRegistryService.updateEntityType</h4>
 <pre><code>bool</code> updateEntityType(<code><a 
href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>
 entityType)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteEntityType">Function: 
SharingRegistryService.deleteEntityType</h4>
+</pre><p>API method to update entity type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteEntityType">Function: 
SharingRegistryService.deleteEntityType</h4>
 <pre><code>bool</code> deleteEntityType(<code>string</code> entityTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntityType">Function: 
SharingRegistryService.getEntityType</h4>
+</pre><p>API method to delete entity type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntityType">Function: 
SharingRegistryService.getEntityType</h4>
 <pre><code><a 
href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>
 getEntityType(<code>string</code> entityTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntityTypes">Function: 
SharingRegistryService.getEntityTypes</h4>
-<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>&gt;</code>
 getEntityTypes(<code>string</code> domain,
+</pre><p>API method to get an entity type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntityTypes">Function: 
SharingRegistryService.getEntityTypes</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>&gt;</code>
 getEntityTypes(<code>string</code> domainId,
                                                <code>i32</code> offset,
                                                <code>i32</code> limit)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createEntity">Function: 
SharingRegistryService.createEntity</h4>
-<pre><code>string</code> createEntity(<code><a 
href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> 
entity)
+</pre><p>API method to get entity types in a domainId. Results are reverse 
time sorted based on creation time</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_registerEntity">Function: 
SharingRegistryService.registerEntity</h4>
+<pre><code>string</code> registerEntity(<code><a 
href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> 
entity)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * Entity Operations
-*
+</pre><p>API method to register new entity</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updateEntity">Function: 
SharingRegistryService.updateEntity</h4>
 <pre><code>bool</code> updateEntity(<code><a 
href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> 
entity)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteEntity">Function: 
SharingRegistryService.deleteEntity</h4>
+</pre><p>API method to update entity</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deleteEntity">Function: 
SharingRegistryService.deleteEntity</h4>
 <pre><code>bool</code> deleteEntity(<code>string</code> entityId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntity">Function: 
SharingRegistryService.getEntity</h4>
+</pre><p>API method to delete entity</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getEntity">Function: 
SharingRegistryService.getEntity</h4>
 <pre><code><a 
href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> 
getEntity(<code>string</code> entityId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_searchEntities">Function: 
SharingRegistryService.searchEntities</h4>
+</pre><p>API method to get entity</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_searchEntities">Function: 
SharingRegistryService.searchEntities</h4>
 <pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code>&gt;</code>
 searchEntities(<code>string</code> userId,
                                            <code>string</code> entityTypeId,
                                            <code>list&lt;<code><a 
href="sharing_models.html#Struct_SearchCriteria">sharing_models.SearchCriteria</a></code>&gt;</code>
 filters,
                                            <code>i32</code> offset,
                                            <code>i32</code> limit)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getListOfSharedUsers">Function: 
SharingRegistryService.getListOfSharedUsers</h4>
+</pre><p>API method to search entities</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getListOfSharedUsers">Function: 
SharingRegistryService.getListOfSharedUsers</h4>
 <pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code>
 getListOfSharedUsers(<code>string</code> entityId,
                                                <code>string</code> 
permissionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getListOfSharedGroups">Function: 
SharingRegistryService.getListOfSharedGroups</h4>
+</pre><p>API method to get a list of shared users given the entity id</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getListOfSharedGroups">Function: 
SharingRegistryService.getListOfSharedGroups</h4>
 <pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code>
 getListOfSharedGroups(<code>string</code> entityId,
                                                      <code>string</code> 
permissionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createPermissionType">Function: 
SharingRegistryService.createPermissionType</h4>
+</pre><p>API method to get a list of shared groups given the entity id</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_createPermissionType">Function: 
SharingRegistryService.createPermissionType</h4>
 <pre><code>string</code> createPermissionType(<code><a 
href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>
 permissionType)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * Permission Operations
-*
+</pre><p>API method to create permission type</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_updatePermissionType">Function: 
SharingRegistryService.updatePermissionType</h4>
 <pre><code>bool</code> updatePermissionType(<code><a 
href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>
 permissionType)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deletePermissionType">Function: 
SharingRegistryService.deletePermissionType</h4>
+</pre><p>API method to update permission type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_deletePermissionType">Function: 
SharingRegistryService.deletePermissionType</h4>
 <pre><code>bool</code> deletePermissionType(<code>string</code> entityTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getPermissionType">Function: 
SharingRegistryService.getPermissionType</h4>
+</pre><p>API method to delete permission type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getPermissionType">Function: 
SharingRegistryService.getPermissionType</h4>
 <pre><code><a 
href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>
 getPermissionType(<code>string</code> permissionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getPermissionTypes">Function: 
SharingRegistryService.getPermissionTypes</h4>
-<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>&gt;</code>
 getPermissionTypes(<code>string</code> domain,
+</pre><p>API method to get permission type</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_getPermissionTypes">Function: 
SharingRegistryService.getPermissionTypes</h4>
+<pre><code>list&lt;<code><a 
href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>&gt;</code>
 getPermissionTypes(<code>string</code> domainId,
                                                        <code>i32</code> offset,
                                                        <code>i32</code> limit)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_shareEntityWithUsers">Function: 
SharingRegistryService.shareEntityWithUsers</h4>
+</pre><p>API method to get list of permission types in a given domainId. 
Results are reverse time sorted based on creation time</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_shareEntityWithUsers">Function: 
SharingRegistryService.shareEntityWithUsers</h4>
 <pre><code>bool</code> shareEntityWithUsers(<code>string</code> domainId,
                           <code>string</code> entityId,
                           <code>list&lt;<code>string</code>&gt;</code> 
userList,
                           <code>string</code> perssionTypeId,
                           <code>bool</code> cascadePermission)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre> * Sharing Entity with Users and Groups
-*
+</pre><p>API method to share an entity with users</p>
 <br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_revokeEntitySharingFromUsers">Function: 
SharingRegistryService.revokeEntitySharingFromUsers</h4>
 <pre><code>bool</code> revokeEntitySharingFromUsers(<code>string</code> 
domainId,
                                   <code>string</code> entityId,
                                   <code>list&lt;<code>string</code>&gt;</code> 
userList,
                                   <code>string</code> perssionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_shareEntityWithGroups">Function: 
SharingRegistryService.shareEntityWithGroups</h4>
+</pre><p>API method to revoke sharing from a list of users</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_shareEntityWithGroups">Function: 
SharingRegistryService.shareEntityWithGroups</h4>
 <pre><code>bool</code> shareEntityWithGroups(<code>string</code> domainId,
                            <code>string</code> entityId,
                            <code>list&lt;<code>string</code>&gt;</code> 
groupList,
                            <code>string</code> perssionTypeId,
                            <code>bool</code> cascadePermission)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_revokeEntitySharingFromGroups">Function: 
SharingRegistryService.revokeEntitySharingFromGroups</h4>
+</pre><p>API method to share an entity with list of groups</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_revokeEntitySharingFromGroups">Function: 
SharingRegistryService.revokeEntitySharingFromGroups</h4>
 <pre><code>bool</code> revokeEntitySharingFromGroups(<code>string</code> 
domainId,
                                    <code>string</code> entityId,
                                    
<code>list&lt;<code>string</code>&gt;</code> groupList,
                                    <code>string</code> perssionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div><div class="definition"><h4 
id="Fn_SharingRegistryService_userHasAccess">Function: 
SharingRegistryService.userHasAccess</h4>
+</pre><p>API method to revoke sharing from list of users</p>
+<br/></div><div class="definition"><h4 
id="Fn_SharingRegistryService_userHasAccess">Function: 
SharingRegistryService.userHasAccess</h4>
 <pre><code>bool</code> userHasAccess(<code>string</code> domainId,
                    <code>string</code> userId,
                    <code>string</code> entityId,
                    <code>string</code> permissionTypeId)
     throws <code><a 
href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre></div></div></body></html>
+</pre><p>API method to check whether a user has access to a specific entity</p>
+<br/></div></div></body></html>

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/api-docs/sharing_models.html
----------------------------------------------------------------------
diff --git a/modules/sharing-registry/api-docs/sharing_models.html 
b/modules/sharing-registry/api-docs/sharing_models.html
index be6bd17..1d4dff8 100644
--- a/modules/sharing-registry/api-docs/sharing_models.html
+++ b/modules/sharing-registry/api-docs/sharing_models.html
@@ -14,6 +14,7 @@
 <a href="#Struct_Entity">Entity</a><br/>
 <a href="#Enum_EntitySearchField">EntitySearchField</a><br/>
 <a href="#Struct_EntityType">EntityType</a><br/>
+<a href="#Enum_GroupCardinality">GroupCardinality</a><br/>
 <a href="#Enum_GroupChildType">GroupChildType</a><br/>
 <a href="#Struct_GroupMembership">GroupMembership</a><br/>
 <a href="#Enum_GroupType">GroupType</a><br/>
@@ -32,22 +33,44 @@
 <hr/><h2 id="Constants">Constants</h2>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Constant</th><th>Type</th><th>Value</th></thead>
 <tr 
id="Const_DO_NOT_SET_AT_CLIENTS_ID"><td><code>DO_NOT_SET_AT_CLIENTS_ID</code></td><td><code>string</code></td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr></table><hr/><h2
 id="Enumerations">Enumerations</h2>
-<div class="definition"><h3 id="Enum_GroupType">Enumeration: GroupType</h3>
-<br/><table class="table-bordered table-striped table-condensed">
+<div class="definition"><h3 id="Enum_GroupCardinality">Enumeration: 
GroupCardinality</h3>
+<p>This is an system internal enum used to define single user groups and multi 
users groups. Every user is also
+considered as a group in it's own right for implementation ease</p>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>SINGLE_USER</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>MULTI_USER</code></td><td><code>1</code></td><td>
 </td></tr>
 </table></div>
+<div class="definition"><h3 id="Enum_GroupType">Enumeration: GroupType</h3>
+<p>Group types can be either user level or domain level groups.</p>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
+<tr><td><code>DOMAIN_LEVEL_GROUP</code></td><td><code>0</code></td><td>
+</td></tr>
+<tr><td><code>USER_LEVEL_GROUP</code></td><td><code>1</code></td><td>
+</td></tr>
+</table></div>
 <div class="definition"><h3 id="Enum_GroupChildType">Enumeration: 
GroupChildType</h3>
-<br/><table class="table-bordered table-striped table-condensed">
+<p>System internal data type to match group child types</p>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>USER</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>GROUP</code></td><td><code>1</code></td><td>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_EntitySearchField">Enumeration: 
EntitySearchField</h3>
-<br/><table class="table-bordered table-striped table-condensed">
+<p>This list of fields that can be used to search entities</p>
+<li>NAME : Name of the entity</li>
+<li>DESCRIPTION : Description of the entity</li>
+<li>FULL_TEXT : Full text field of the entity</li>
+<li>PARENT_ENTITY_ID : Parent entity id of the entity</li>
+<li>CREATED_TIME : Created time of the entity</li>
+<li>UPDATED_TIME : Updated time of the entity</li>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>NAME</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>DESCRIPTION</code></td><td><code>1</code></td><td>
@@ -62,18 +85,29 @@
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_SearchCondition">Enumeration: 
SearchCondition</h3>
-<br/><table class="table-bordered table-striped table-condensed">
+<p>Different search operators that can be used with the entity search 
fields</p>
+<li>EQUAL : Simply matches for equality. Applicable for name, and parent 
entity id</li>
+<li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, 
and description</li>
+<li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT 
field.</li>
+<li>GTE : Greater than or equal. Only applicable for created time and updated 
time.</li>
+<li>LTE : Less than or equal. Only applicable for created time and updated 
time.</li>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>EQUAL</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>LIKE</code></td><td><code>1</code></td><td>
 </td></tr>
-<tr><td><code>GTE</code></td><td><code>2</code></td><td>
+<tr><td><code>FULL_TEXT</code></td><td><code>2</code></td><td>
+</td></tr>
+<tr><td><code>GTE</code></td><td><code>3</code></td><td>
 </td></tr>
-<tr><td><code>LTE</code></td><td><code>3</code></td><td>
+<tr><td><code>LTE</code></td><td><code>4</code></td><td>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_SharingType">Enumeration: SharingType</h3>
-<br/><table class="table-bordered table-striped table-condensed">
+<p>This is an internal enum type for managing sharings</p>
+
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>DIRECT_NON_CASCADING</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>DIRECT_CASCADING</code></td><td><code>1</code></td><td>
@@ -89,34 +123,70 @@
 
<tr><td>3</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>4</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>5</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 id="Struct_User">Struct: 
User</h3>
+</table><br/><p>Domain is the entity that enables multi-tenency in this 
componenet. Every tenant will be
+operating separately it's own silo which is identified by the domain id. In 
the current implementation domain id
+will be same as the domain name</p>
+<li>domainId : Will be generated by the server based on the domain name</li>
+<li><b>name</b> : A single word name that identifies the domain e.g seagrid, 
ultrascan</li>
+<li>description : A short description for the domain</li>
+<li>createdTime : Will be set by the system</li>
+<li>updatedTime : Will be set by the system</li>
+
+<br/></div><div class="definition"><h3 id="Struct_User">Struct: User</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
-<tr><td>1</td><td>userId</td><td><code>string</code></td><td></td><td>optional</td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr>
+<tr><td>1</td><td>userId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>3</td><td>userName</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>4</td><td>firstName</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>5</td><td>lastName</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>6</td><td>icon</td><td><code>binary</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>7</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>8</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 id="Struct_UserGroup">Struct: 
UserGroup</h3>
+<tr><td>6</td><td>email</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>7</td><td>icon</td><td><code>binary</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>8</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>9</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
+</table><br/><p>User is the model used to register a user in the system. 
Minimal user information will be required to provide
+regarding the user.</p>
+<li><b>userId</b> : Client provided user id. (The id is not system generated 
and it is a must to provide this id)</li>
+<li><b>domainId</b> : Domain id for that user</li>
+<li><b>userName</b> : User name for the user</li>
+<li><b>firstName</b> : First name of the user</li>
+<li><b>lastName</b> : Last name of the user</li>
+<li><b>email</b> : Email address of the user</li>
+<li>icon : A binary field for storing the user icon</li>
+<li>createdTime : If client provides this value then the system will use it if 
not the current time will be set</li>
+<li>updatedTime : If client provides this value then the system will use it if 
not the current time will be set</li>
+
+<br/></div><div class="definition"><h3 id="Struct_UserGroup">Struct: 
UserGroup</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>groupId</td><td><code>string</code></td><td></td><td>optional</td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr>
 
<tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>3</td><td>name</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>6</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>7</td><td>ownerId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>4</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>5</td><td>ownerId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>6</td><td>groupType</td><td><code><a 
href="#Enum_GroupType">GroupType</a></code></td><td></td><td>optional</td><td></td></tr>
+<tr><td>7</td><td>groupCardinality</td><td><code><a 
href="#Enum_GroupCardinality">GroupCardinality</a></code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>8</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>9</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>10</td><td>groupType</td><td><code><a 
href="#Enum_GroupType">GroupType</a></code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 
id="Struct_GroupMembership">Struct: GroupMembership</h3>
+</table><br/><p>User group is a collection of users.</p>
+ <li>groupId : System generated grouo id. In the current implementation this 
is of the form domainId:name</li>
+ <li><b>domainId</b> : Domain id for this user group</li>
+ <li><b>name</b> : Name for the user group. should be one word</li>
+ <li>description : Short description for the group.</li>
+ <li><b>ownerId</b> : Owner id of this group.</li>
+ <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
+ <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
+ <li>createdTime : Will be set by the system</li>
+ <li>updatedTime : Will be set by the system</li>
+ 
+<br/></div><div class="definition"><h3 id="Struct_GroupMembership">Struct: 
GroupMembership</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>parentId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>2</td><td>childId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>childType</td><td><code><a 
href="#Enum_GroupChildType">GroupChildType</a></code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>4</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>5</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 id="Struct_EntityType">Struct: 
EntityType</h3>
+</table><br/><p>System internal data type to map group memberships</p>
+
+<br/></div><div class="definition"><h3 id="Struct_EntityType">Struct: 
EntityType</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>entityTypeId</td><td><code>string</code></td><td></td><td>optional</td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr>
 
<tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -124,14 +194,27 @@
 
<tr><td>4</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>5</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>6</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 
id="Struct_SearchCriteria">Struct: SearchCriteria</h3>
+</table><br/><p>client defined entity types</p>
+<li>entityTypeId : System generated entity type id. In the current 
implementation it will of the form domainId:name</li>
+<li><b>domainId</b> : Domain id of the domain.</li>
+<li><b>name</b> : Name for the entity type. Should be a single word.</li>
+<li>description : Short description for the entity type.</li>
+<li>createdTime : Will be set by the system</li>
+<li>updatedTime : Will be set by the system</li>
+
+<br/></div><div class="definition"><h3 id="Struct_SearchCriteria">Struct: 
SearchCriteria</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 <tr><td>1</td><td>searchField</td><td><code><a 
href="#Enum_EntitySearchField">EntitySearchField</a></code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>2</td><td>value</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>searchCondition</td><td><code><a 
href="#Enum_SearchCondition">SearchCondition</a></code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 id="Struct_Entity">Struct: 
Entity</h3>
+</table><br/><p>Container object for search criteria</p>
+<li><b>searchField</b> : Entity search field</li>
+<li><b>value</b> : Search value</li>
+<li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
+
+<br/></div><div class="definition"><h3 id="Struct_Entity">Struct: Entity</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
-<tr><td>1</td><td>entityId</td><td><code>string</code></td><td></td><td>optional</td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr>
+<tr><td>1</td><td>entityId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>3</td><td>entityTypeId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>4</td><td>ownerId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -142,7 +225,20 @@
 
<tr><td>9</td><td>fullText</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>10</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>11</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 
id="Struct_PermissionType">Struct: PermissionType</h3>
+</table><br/><p>Entity object which is used to register an entity in the 
system.</p>
+<li><b>entityId</b> : Client id provided by the client</li>
+<li><b>domainId</b> : Domain id</li>
+<li><b>entityTypeId</b> : Entity type id</li>
+<li><b>ownerId</b> : Owner id</li>
+<li>parentEntityId : Parent entity id</li>
+<li><b>name</b> : Name</li>
+<li>description : Short description for the entity</li>
+<li>metadata : Map of optional metadata</li>
+<li>fullText : A string which will be considered for full text search</li>
+<li>createdTime : If client provides this value then the system will use it if 
not the current time will be set</li>
+<li>updatedTime : If client provides this value then the system will use it if 
not the current time will be set</li>
+
+<br/></div><div class="definition"><h3 id="Struct_PermissionType">Struct: 
PermissionType</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>permissionTypeId</td><td><code>string</code></td><td></td><td>optional</td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr>
 
<tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -150,7 +246,15 @@
 
<tr><td>4</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>5</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>6</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 id="Struct_Sharing">Struct: 
Sharing</h3>
+</table><br/><p>Object for creating client defined permission type</p>
+<li>permissionTypeId : System generated permission type id. In the current 
implementation it will of the form domainId:name</li>
+<li><b>domainId</b> : Domain id</li>
+<li><b>name</b> : Single word name for the permission</li>
+<li>description : Short description for the permission type</li>
+<li>createdTime : Will be set by the system</li>
+<li>updatedTime : Will be set by the system</li>
+
+<br/></div><div class="definition"><h3 id="Struct_Sharing">Struct: Sharing</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>permissionTypeId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>2</td><td>entityId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -159,7 +263,11 @@
 
<tr><td>5</td><td>inheritedParentId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>6</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 
<tr><td>7</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/></div><div class="definition"><h3 
id="Struct_SharingRegistryException">Exception: SharingRegistryException</h3>
+</table><br/><p>This is an internal enum type for managing sharings</p>
+
+<br/></div><div class="definition"><h3 
id="Struct_SharingRegistryException">Exception: SharingRegistryException</h3>
 <table class="table-bordered table-striped 
table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default
 value</th></thead>
 
<tr><td>1</td><td>message</td><td><code>string</code></td><td></td><td>required</td><td></td></tr>
-</table><br/></div></div></body></html>
+</table><br/><p>Exception model used in the sharing registry service</p>
+
+<br/></div></div></body></html>

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
 
b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
index a8ec19f..e38a760 100644
--- 
a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
+++ 
b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
@@ -106,7 +106,7 @@ public class AiravataDataMigrator {
             user.setDomainId(rs.getString("GATEWAY_ID"));
             user.setUserName(rs.getString("USER_NAME"));
 
-            govRegistryServerHandler.createUser(user);
+            govRegistryServerHandler.registerUser(user);
         }
 
         //Creating project entries
@@ -128,7 +128,7 @@ public class AiravataDataMigrator {
             Map<String, String> metadata = new HashMap<>();
             metadata.put("CREATION_TIME", 
rs.getDate("CREATION_TIME").toString());
 
-            govRegistryServerHandler.createEntity(entity);
+            govRegistryServerHandler.registerEntity(entity);
         }
 
         //Creating experiment entries
@@ -158,7 +158,7 @@ public class AiravataDataMigrator {
             metadata.put("GATEWAY_INSTANCE_ID", 
rs.getString("GATEWAY_INSTANCE_ID"));
             metadata.put("ARCHIVE", rs.getString("ARCHIVE"));
 
-            govRegistryServerHandler.createEntity(entity);
+            govRegistryServerHandler.registerEntity(entity);
         }
 
         expCatConnection.close();

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java
 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java
index 0d17279..1482ce9 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java
@@ -35,6 +35,7 @@ public class SharingUserEntity {
     private String userName;
     private String firstName;
     private String lastName;
+    private String email;
     private ByteBuffer icon;
     private Long createdTime;
     private Long updatedTime;
@@ -89,6 +90,16 @@ public class SharingUserEntity {
         this.lastName = lastName;
     }
 
+    @Basic
+    @Column(name = "EMAIL")
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
     @Lob
     @Column(name = "ICON")
     public ByteBuffer getIcon() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
index 10d901a..09fd8d8 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java
@@ -35,6 +35,7 @@ public class UserGroupEntity {
     private String description;
     private String ownerId;
     private String groupType;
+    private String groupCardinality;
     private Long createdTime;
     private Long updatedTime;
 
@@ -89,6 +90,16 @@ public class UserGroupEntity {
     }
 
     @Basic
+    @Column(name = "GROUP_CARDINALITY")
+    public String getGroupCardinality() {
+        return groupCardinality;
+    }
+
+    public void setGroupCardinality(String groupCardinality) {
+        this.groupCardinality = groupCardinality;
+    }
+
+    @Basic
     @Column(name = "GROUP_TYPE")
     public String getGroupType() {
         return groupType;

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java
 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java
index ed49c94..1ed1f06 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java
@@ -23,7 +23,7 @@ package org.apache.airavata.sharing.registry.db.repositories;
 import org.apache.airavata.sharing.registry.db.entities.SharingEntity;
 import org.apache.airavata.sharing.registry.db.entities.UserGroupEntity;
 import org.apache.airavata.sharing.registry.db.utils.DBConstants;
-import org.apache.airavata.sharing.registry.models.GroupType;
+import org.apache.airavata.sharing.registry.models.GroupCardinality;
 import org.apache.airavata.sharing.registry.models.SharingRegistryException;
 import org.apache.airavata.sharing.registry.models.UserGroup;
 import org.slf4j.Logger;
@@ -44,7 +44,7 @@ public class UserGroupRepository extends 
AbstractRepository<UserGroup, UserGroup
         query += "g." + DBConstants.UserGroupTable.GROUP_ID + " = s." + 
DBConstants.SharingTable.GROUP_ID + " AND ";
         query += "s." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId 
+ "' AND ";
         query += "s." + DBConstants.SharingTable.PERMISSION_TYPE_ID + " = '" + 
permissionTypeId + "' AND ";
-        query += "g." + DBConstants.UserGroupTable.GROUP_TYPE + " = '" + 
GroupType.MULTI_USER.toString() + "'";
+        query += "g." + DBConstants.UserGroupTable.GROUP_CARDINALITY + " = '" 
+ GroupCardinality.MULTI_USER.toString() + "'";
         query += " ORDER BY s.createdTime DESC";
         return select(query, 0, -1);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
index 387e0e5..e444c43 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/DBConstants.java
@@ -51,6 +51,7 @@ public class DBConstants {
         public static String DESCRIPTION = "description";
         public static String OWNER_ID = "ownerId";
         public static String GROUP_TYPE = "groupType";
+        public static String GROUP_CARDINALITY = "groupCardinality";
         public static final String CREATED_TIME = "createdTime";
         public static final String UPDATED_TIME = "updatedTime";
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
index a123975..5757f61 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
@@ -119,7 +119,7 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
      * *
      */
     @Override
-    public String createUser(User user) throws SharingRegistryException, 
TException {
+    public String registerUser(User user) throws SharingRegistryException, 
TException {
         if(userRepository.get(user.userId) != null)
             throw new SharingRegistryException("There exist user with given 
user id");
 
@@ -133,7 +133,8 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
         userGroup.setName(user.userName);
         userGroup.setDescription("user " + user.userName + " group");
         userGroup.setOwnerId(user.userId);
-        userGroup.setGroupType(GroupType.SINGLE_USER);
+        userGroup.setGroupType(GroupType.USER_LEVEL_GROUP);
+        userGroup.setGroupCardinality(GroupCardinality.SINGLE_USER);
         createGroup(userGroup);
 
         return user.userId;
@@ -242,25 +243,29 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
     }
 
     @Override
-    public Map<String, GroupChildType> getGroupMembers(String groupId, int 
offset, int limit) throws SharingRegistryException, TException {
-        HashMap<String, GroupChildType> groupMembers = new HashMap<>();
-        HashMap<String, String> filters = new HashMap<>();
-        filters.put(DBConstants.GroupMembershipTable.PARENT_ID, groupId);
-        List<GroupMembership> groupMembershipList = 
groupMembershipRepository.select(filters, 0, -1);
-        
groupMembershipList.stream().forEach(gm->{groupMembers.put(gm.getChildId(), 
gm.getChildType());});
-        return groupMembers;
-    }
-
-    @Override
-    public boolean addChildGroupToParentGroup(String childId, String groupId) 
throws SharingRegistryException, TException {
-        //Todo check for cyclic dependencies
-        GroupMembership groupMembership = new GroupMembership();
-        groupMembership.setParentId(groupId);
-        groupMembership.setChildId(childId);
-        groupMembership.setChildType(GroupChildType.GROUP);
-        groupMembership.setCreatedTime(System.currentTimeMillis());
-        groupMembership.setUpdatedTime(System.currentTimeMillis());
-        groupMembershipRepository.create(groupMembership);
+    public List<User> getGroupMembersOfTypeUser(String groupId, int offset, 
int limit) throws SharingRegistryException, TException {
+        List<User> groupMemberUsers = 
groupMembershipRepository.getAllChildUsers(groupId);
+        return groupMemberUsers;
+    }
+
+    @Override
+    public List<UserGroup> getGroupMembersOfTypeGroup(String groupId, int 
offset, int limit) throws SharingRegistryException, TException {
+        List<UserGroup> groupMemberGroups = 
groupMembershipRepository.getAllChildGroups(groupId);
+        return groupMemberGroups;
+    }
+
+    @Override
+    public boolean addChildGroupsToParentGroup(List<String> childIds, String 
groupId) throws SharingRegistryException, TException {
+        for(String childId : childIds) {
+            //Todo check for cyclic dependencies
+            GroupMembership groupMembership = new GroupMembership();
+            groupMembership.setParentId(groupId);
+            groupMembership.setChildId(childId);
+            groupMembership.setChildType(GroupChildType.GROUP);
+            groupMembership.setCreatedTime(System.currentTimeMillis());
+            groupMembership.setUpdatedTime(System.currentTimeMillis());
+            groupMembershipRepository.create(groupMembership);
+        }
         return true;
     }
 
@@ -362,7 +367,7 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
      * *
      */
     @Override
-    public String createEntity(Entity entity) throws SharingRegistryException, 
TException {
+    public String registerEntity(Entity entity) throws 
SharingRegistryException, TException {
         if(entityRepository.get(entity.entityId) != null)
             throw new SharingRegistryException("There exist Entity with given 
Entity id");
 
@@ -372,7 +377,7 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
             user.setDomainId(entity.domainId);
             user.setUserName(user.userId.split("@")[0]);
 
-            createUser(user);
+            registerUser(user);
         }
 
         entity.setCreatedTime(System.currentTimeMillis());
@@ -463,15 +468,15 @@ public class SharingRegistryServerHandler implements 
SharingRegistryService.Ifac
      */
     @Override
     public boolean shareEntityWithUsers(String domainId, String entityId, 
List<String> userList, String permissionTypeId, boolean cascadePermission) 
throws SharingRegistryException, TException {
-        return shareEntity(domainId, entityId, userList, permissionTypeId, 
GroupType.SINGLE_USER, cascadePermission);
+        return shareEntity(domainId, entityId, userList, permissionTypeId, 
cascadePermission);
     }
 
     @Override
     public boolean shareEntityWithGroups(String domainId, String entityId, 
List<String> groupList, String permissionTypeId, boolean cascadePermission) 
throws SharingRegistryException, TException {
-        return shareEntity(domainId, entityId, groupList, permissionTypeId, 
GroupType.MULTI_USER, cascadePermission);
+        return shareEntity(domainId, entityId, groupList, permissionTypeId, 
cascadePermission);
     }
 
-    private boolean shareEntity(String domainId, String entityId, List<String> 
groupOrUserList, String permissionTypeId, GroupType groupType, boolean 
cascadePermission)  throws SharingRegistryException, TException {
+    private boolean shareEntity(String domainId, String entityId, List<String> 
groupOrUserList, String permissionTypeId, boolean cascadePermission)  throws 
SharingRegistryException, TException {
         
if(permissionTypeId.equals(permissionTypeRepository.getGlobalPermissionTypeIdForDomain(domainId))){
             throw new SharingRegistryException(OWNER_PERMISSION_NAME + " 
permission cannot be assigned");
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
 
b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
index 0e58356..e1937fd 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
@@ -34,6 +34,7 @@ CREATE TABLE SHARING_USER (
   USER_NAME VARCHAR(255) NOT NULL,
   FIRST_NAME VARCHAR (255),
   LAST_NAME VARCHAR (255),
+  EMAIL VARCHAR (255),
   ICON BLOB,
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
@@ -48,6 +49,7 @@ CREATE TABLE USER_GROUP (
   DESCRIPTION VARCHAR(255),
   OWNER_ID VARCHAR(255) NOT NULL,
   GROUP_TYPE VARCHAR(255) NOT NULL,
+  GROUP_CARDINALITY VARCHAR(255) NOT NULL,
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (GROUP_ID),

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
 
b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
index 78d5d78..675fad3 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
+++ 
b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
@@ -34,6 +34,7 @@ CREATE TABLE SHARING_USER (
   USER_NAME VARCHAR(255) NOT NULL,
   FIRST_NAME VARCHAR (255),
   LAST_NAME VARCHAR (255),
+  EMAIL VARCHAR (255),
   ICON BLOB,
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
@@ -48,6 +49,7 @@ CREATE TABLE USER_GROUP (
   DESCRIPTION VARCHAR(255),
   OWNER_ID VARCHAR(255) NOT NULL,
   GROUP_TYPE VARCHAR(255) NOT NULL,
+  GROUP_CARDINALITY VARCHAR(255) NOT NULL,
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
   PRIMARY KEY (GROUP_ID),

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
 
b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
index 8a9bcb2..df0dcba 100644
--- 
a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
+++ 
b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
@@ -73,7 +73,7 @@ public class SharingRegistryServerHandlerTest {
         user1.setCreatedTime(System.currentTimeMillis());
         user1.setUpdatedTime(System.currentTimeMillis());
 
-        Assert.assertNotNull(sharingRegistryServerHandler.createUser(user1));
+        Assert.assertNotNull(sharingRegistryServerHandler.registerUser(user1));
 
         User user2 = new User();
         String userName2 = "test-user-2." + System.currentTimeMillis();
@@ -84,7 +84,7 @@ public class SharingRegistryServerHandlerTest {
         user2.setCreatedTime(System.currentTimeMillis());
         user2.setUpdatedTime(System.currentTimeMillis());
 
-        Assert.assertNotNull(sharingRegistryServerHandler.createUser(user2));
+        Assert.assertNotNull(sharingRegistryServerHandler.registerUser(user2));
 
         User user3 = new User();
         String userName3 = "test-user-3." + System.currentTimeMillis();
@@ -95,7 +95,7 @@ public class SharingRegistryServerHandlerTest {
         user3.setCreatedTime(System.currentTimeMillis());
         user3.setUpdatedTime(System.currentTimeMillis());
 
-        Assert.assertNotNull(sharingRegistryServerHandler.createUser(user3));
+        Assert.assertNotNull(sharingRegistryServerHandler.registerUser(user3));
 
         Assert.assertTrue(sharingRegistryServerHandler.getUsers(domainId, 0, 
10).size() > 0);
 
@@ -108,7 +108,8 @@ public class SharingRegistryServerHandlerTest {
         userGroup1.setName(groupName1);
         userGroup1.setDescription("test group description");
         userGroup1.setOwnerId(userId1);
-        userGroup1.setGroupType(GroupType.MULTI_USER);
+        userGroup1.setGroupType(GroupType.USER_LEVEL_GROUP);
+        userGroup1.setGroupCardinality(GroupCardinality.MULTI_USER);
         userGroup1.setCreatedTime(System.currentTimeMillis());
         userGroup1.setUpdatedTime(System.currentTimeMillis());
 
@@ -122,7 +123,8 @@ public class SharingRegistryServerHandlerTest {
         userGroup2.setName(groupName2);
         userGroup2.setDescription("test group description");
         userGroup2.setOwnerId(userId2);
-        userGroup2.setGroupType(GroupType.MULTI_USER);
+        userGroup2.setGroupType(GroupType.USER_LEVEL_GROUP);
+        userGroup2.setGroupCardinality(GroupCardinality.MULTI_USER);
         userGroup2.setCreatedTime(System.currentTimeMillis());
         userGroup2.setUpdatedTime(System.currentTimeMillis());
 
@@ -130,10 +132,10 @@ public class SharingRegistryServerHandlerTest {
 
         sharingRegistryServerHandler.addUsersToGroup(Arrays.asList(userId1), 
groupId1);
         sharingRegistryServerHandler.addUsersToGroup(Arrays.asList(userId2, 
userId3), groupId2);
-        sharingRegistryServerHandler.addChildGroupToParentGroup(groupId2, 
groupId1);
+        
sharingRegistryServerHandler.addChildGroupsToParentGroup(Arrays.asList(groupId2),
 groupId1);
 
-        
Assert.assertTrue(sharingRegistryServerHandler.getGroupMembers(groupId1, 0, 
10).size() == 2);
-        
Assert.assertTrue(sharingRegistryServerHandler.getGroupMembers(groupId2, 0, 
10).size() == 2);
+        
Assert.assertTrue(sharingRegistryServerHandler.getGroupMembersOfTypeGroup(groupId1,
 0, 10).size() == 1);
+        
Assert.assertTrue(sharingRegistryServerHandler.getGroupMembersOfTypeUser(groupId2,
 0, 10).size() == 2);
 
 
         //Creating permission types
@@ -208,7 +210,7 @@ public class SharingRegistryServerHandlerTest {
         entity1.setCreatedTime(System.currentTimeMillis());
         entity1.setUpdatedTime(System.currentTimeMillis());
 
-        String entityId1 = sharingRegistryServerHandler.createEntity(entity1);
+        String entityId1 = 
sharingRegistryServerHandler.registerEntity(entity1);
         Assert.assertNotNull(entityId1);
 
         Entity entity2 = new Entity();
@@ -226,7 +228,7 @@ public class SharingRegistryServerHandlerTest {
         entity2.setCreatedTime(System.currentTimeMillis());
         entity2.setUpdatedTime(System.currentTimeMillis());
 
-        String entityId2 = sharingRegistryServerHandler.createEntity(entity2);
+        String entityId2 = 
sharingRegistryServerHandler.registerEntity(entity2);
         Assert.assertNotNull(entityId2);
 
         Entity entity3 = new Entity();
@@ -244,7 +246,7 @@ public class SharingRegistryServerHandlerTest {
         entity3.setCreatedTime(System.currentTimeMillis());
         entity3.setUpdatedTime(System.currentTimeMillis());
 
-        String entityId3 = sharingRegistryServerHandler.createEntity(entity3);
+        String entityId3 = 
sharingRegistryServerHandler.registerEntity(entity3);
         Assert.assertNotNull(entityId3);
 
         sharingRegistryServerHandler.shareEntityWithUsers(domainId, entityId1, 
Arrays.asList(userId2), permissionTypeId1, true);
@@ -265,7 +267,7 @@ public class SharingRegistryServerHandlerTest {
         entity4.setCreatedTime(System.currentTimeMillis());
         entity4.setUpdatedTime(System.currentTimeMillis());
 
-        String entityId4 = sharingRegistryServerHandler.createEntity(entity4);
+        String entityId4 = 
sharingRegistryServerHandler.registerEntity(entity4);
         Assert.assertNotNull(entityId4);
 
         Assert.assertTrue(sharingRegistryServerHandler.userHasAccess(domainId, 
userId3, entityId4, permissionTypeId1));

http://git-wip-us.apache.org/repos/asf/airavata/blob/87564d2b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
----------------------------------------------------------------------
diff --git 
a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
 
b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
index 7d8270f..a0e89a5 100644
--- 
a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
+++ 
b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
@@ -34,7 +34,18 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = 
"2016-10-14")
+/**
+ * <p>Domain is the entity that enables multi-tenency in this componenet. 
Every tenant will be
+ * operating separately it's own silo which is identified by the domain id. In 
the current implementation domain id
+ * will be same as the domain name</p>
+ * <li>domainId : Will be generated by the server based on the domain name</li>
+ * <li><b>name</b> : A single word name that identifies the domain e.g 
seagrid, ultrascan</li>
+ * <li>description : A short description for the domain</li>
+ * <li>createdTime : Will be set by the system</li>
+ * <li>updatedTime : Will be set by the system</li>
+ * 
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 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");
 

Reply via email to