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(); }
