adding Group Management related API methods

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

Branch: refs/heads/develop
Commit: eaf20ccf26819132d17aed02aed8601383298d54
Parents: 171ee0c
Author: scnakandala <[email protected]>
Authored: Tue Jul 12 11:49:42 2016 -0400
Committer: scnakandala <[email protected]>
Committed: Tue Jul 12 11:49:42 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 42 ++++++++++++++++++--
 .../resources/airavata-default-xacml-policy.xml |  4 ++
 .../airavata/grouper/GroupManagerCPI.java       |  6 +++
 .../airavata/grouper/GroupManagerImpl.java      | 19 +++++++++
 4 files changed, 68 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/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 6441637..6dc976d 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
@@ -4548,7 +4548,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     public boolean deleteGroup(AuthzToken authzToken, String groupId, String 
ownerId, String gatewayId) throws InvalidRequestException, 
AiravataClientException, AiravataSystemException, AuthorizationException, 
TException {
         try {
             GroupManagerCPI groupManager = 
GroupManagerFactory.getGroupManager();
-
+            groupManager.deleteGroup(groupId, ownerId + "@" + gatewayId);
         } catch (Exception e) {
             String msg = "Error Deleting Group. Group ID: " + groupId ;
             logger.error(msg, e);
@@ -4562,13 +4562,49 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     @Override
     @SecurityCheck
     public GroupModel getGroup(AuthzToken authzToken, String groupId) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
AuthorizationException, TException {
-        return null;
+        try {
+            GroupManagerCPI groupManager = 
GroupManagerFactory.getGroupManager();
+            Group group = groupManager.getGroup(groupId);
+            GroupModel groupModel = new GroupModel();
+            groupModel.setId(group.getId());
+            groupModel.setName(group.getName());
+            groupModel.setDescription(group.getDescription());
+            groupModel.setMembers(group.getMembers());
+
+            return  groupModel;
+        } catch (Exception e) {
+            String msg = "Error Retreiving Group. Group ID: " + groupId ;
+            logger.error(msg, e);
+            AiravataSystemException exception = new 
AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg + " More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     @Override
     @SecurityCheck
     public List<GroupModel> getAllGroupsUserBelongs(AuthzToken authzToken, 
String userName, String gatewayId) throws InvalidRequestException, 
AiravataClientException, AiravataSystemException, AuthorizationException, 
TException {
-        return null;
+        try {
+            GroupManagerCPI groupManager = 
GroupManagerFactory.getGroupManager();
+            List<Group> userGroups = 
groupManager.getAllGroupsUserBelongs(userName+"@"+gatewayId);
+            List<GroupModel> groupModels = new ArrayList<>();
+            userGroups.stream().forEach(group->{
+                GroupModel groupModel = new GroupModel();
+                groupModel.setId(group.getId());
+                groupModel.setName(group.getName());
+                groupModel.setDescription(group.getDescription());
+                groupModel.setMembers(group.getMembers());
+
+                groupModels.add(groupModel);
+            });
+            return groupModels;
+        } catch (Exception e) {
+            String msg = "Error Retreiving All Groups for User. User ID: " + 
userName ;
+            logger.error(msg, e);
+            AiravataSystemException exception = new 
AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage(msg + " More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     private void initializeResourceWithGrouper(String resourceId, ResourceType 
resourceType) throws RegistryException, GroupManagerException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml
----------------------------------------------------------------------
diff --git 
a/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml
 
b/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml
index 426f5fe..c5532e2 100644
--- 
a/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml
+++ 
b/modules/configuration/server/src/main/resources/airavata-default-xacml-policy.xml
@@ -29,6 +29,8 @@
                 <AllOf>
                     <Match 
MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
                         <AttributeValue 
DataType="http://www.w3.org/2001/XMLSchema#string";>^(?:(?!
+/airavata/getAllGateways|
+/airavata/getGateway|
 /airavata/getSSHPubKey|
 /airavata/getAllGatewaySSHPubKeys|
 /airavata/getAllGatewayPWDCredentials|
@@ -123,6 +125,8 @@
                     <Match 
MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
                         <AttributeValue 
DataType="http://www.w3.org/2001/XMLSchema#string";>^(?:(?!
 /airavata/getAPIVersion|
+/airavata/getAllGateways|
+/airavata/getGateway|
 /airavata/getNotification|
 /airavata/getAllNotifications|
 /airavata/createProject|

http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java
----------------------------------------------------------------------
diff --git 
a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java
 
b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java
index b5f07b3..fcbbfef 100644
--- 
a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java
+++ 
b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerCPI.java
@@ -26,4 +26,10 @@ public interface GroupManagerCPI {
     void createGroup(Group group);
 
     void updateGroup(Group group);
+
+    void deleteGroup(String groupId, String s);
+
+    Group getGroup(String groupId);
+
+    List<Group> getAllGroupsUserBelongs(String userId);
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/eaf20ccf/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java
 
b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java
index b2bf1a7..e90606c 100644
--- 
a/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java
+++ 
b/modules/group-manager/src/main/java/org/apache/airavata/grouper/GroupManagerImpl.java
@@ -21,6 +21,7 @@
 package org.apache.airavata.grouper;
 
 import org.apache.airavata.grouper.group.Group;
+import org.apache.airavata.grouper.group.GroupMembership;
 import org.apache.airavata.grouper.group.GroupServiceImpl;
 import org.apache.airavata.grouper.permission.PermissionAction;
 import org.apache.airavata.grouper.permission.PermissionServiceImpl;
@@ -96,4 +97,22 @@ public class GroupManagerImpl implements GroupManagerCPI {
     public void updateGroup(Group group) {
         groupService.updateGroup(group);
     }
+
+    @Override
+    public void deleteGroup(String groupId, String userId) {
+        groupService.deleteGroup(groupId, userId);
+    }
+
+    @Override
+    public Group getGroup(String groupId) {
+        return groupService.getGroup(groupId);
+    }
+
+    @Override
+    public List<Group> getAllGroupsUserBelongs(String userId) {
+        List<GroupMembership> groupMemberships = 
groupService.getAllMembershipsForUser(userId);
+        List<Group> groupList = new ArrayList<>();
+        
groupMemberships.stream().forEach(gm->groupList.add(getGroup(gm.getGroupId())));
+        return groupList;
+    }
 }
\ No newline at end of file

Reply via email to