minor, deduplicate returned acl entry

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

Branch: refs/heads/master
Commit: 6f8a91c0dde0cf09efe3ff5e99533baed50f85c1
Parents: f79fa38
Author: Roger Shi <[email protected]>
Authored: Mon Jun 26 20:12:39 2017 +0800
Committer: Hongbin Ma <[email protected]>
Committed: Mon Jun 26 20:23:10 2017 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/rest/service/AccessService.java    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/6f8a91c0/server-base/src/main/java/org/apache/kylin/rest/service/AccessService.java
----------------------------------------------------------------------
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/AccessService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/AccessService.java
index 8b96635..e5cd793 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/AccessService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/AccessService.java
@@ -20,7 +20,9 @@ package org.apache.kylin.rest.service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
+import com.google.common.collect.Sets;
 import org.apache.kylin.common.persistence.AclEntity;
 import org.apache.kylin.common.persistence.RootPersistentEntity;
 import org.apache.kylin.rest.constant.Constant;
@@ -298,10 +300,14 @@ public class AccessService {
 
     public List<AccessEntryResponse> generateAceResponses(Acl acl) {
         List<AccessEntryResponse> result = new 
ArrayList<AccessEntryResponse>();
+        Set<Sid> sidSet = Sets.newHashSet();
 
         while (acl != null) {
             for (AccessControlEntry ace : acl.getEntries()) {
-                result.add(new AccessEntryResponse(ace.getId(), ace.getSid(), 
ace.getPermission(), ace.isGranting()));
+                if (!sidSet.contains(ace.getSid())) {
+                    result.add(new AccessEntryResponse(ace.getId(), 
ace.getSid(), ace.getPermission(), ace.isGranting()));
+                    sidSet.add(ace.getSid());
+                }
             }
             acl = acl.getParentAcl();
         }

Reply via email to