diff options
author | Ralph Steiner | 2019-09-19 13:28:21 +0000 |
---|---|---|
committer | Ralph Steiner | 2019-10-02 14:51:36 +0000 |
commit | 8b14a9af35cf48062ce34b14a3d60d9c0851fb44 (patch) | |
tree | 0a12ca336eef07867a2175236e7ecb59671a04e0 /org.eclipse.scout.rt.security | |
parent | ee95ff86beddb8d63d1eba3228c574f98e361a3c (diff) | |
download | org.eclipse.scout.rt-8b14a9af35cf48062ce34b14a3d60d9c0851fb44.tar.gz org.eclipse.scout.rt-8b14a9af35cf48062ce34b14a3d60d9c0851fb44.tar.xz org.eclipse.scout.rt-8b14a9af35cf48062ce34b14a3d60d9c0851fb44.zip |
Add stream methods to IPermissionCollection
Change-Id: I96f4ac261d5aa31dff9ffa2c0b86534666e11850
Reviewed-on: https://git.eclipse.org/r/150199
Tested-by: CI Bot
Reviewed-by: Ralph Steiner <rst@bsiag.com>
Diffstat (limited to 'org.eclipse.scout.rt.security')
6 files changed, 53 insertions, 5 deletions
diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AbstractPermission.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AbstractPermission.java index 76a36139f0..8cdfe5f4d3 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AbstractPermission.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AbstractPermission.java @@ -102,7 +102,7 @@ public abstract class AbstractPermission extends Permission implements IPermissi } protected void validateLevel() { - Assertions.assertNotNull(m_level, "Granted level is not set"); + Assertions.assertNotNull(m_level, "Granted level is not set on {}", this); } @Override diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AccessSupport.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AccessSupport.java index e2c786cbf5..f8e574a118 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AccessSupport.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AccessSupport.java @@ -78,7 +78,7 @@ public class AccessSupport { .withContextInfo("permission", "{}", p); } - public AccessForbiddenException getAccessCheckFailedException(IPermission p) { + protected AccessForbiddenException getAccessCheckFailedException(IPermission p) { return new AccessForbiddenException(p.getAccessCheckFailedMessage()) .withContextInfo("permission", "{}", p); } diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AllPermissionCollection.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AllPermissionCollection.java index 2d50b41968..3a32934d41 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AllPermissionCollection.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/AllPermissionCollection.java @@ -14,6 +14,7 @@ import java.security.AllPermission; import java.security.Permission; import java.util.Collections; import java.util.Enumeration; +import java.util.stream.Stream; public class AllPermissionCollection extends AbstractPermissionCollection { private static final long serialVersionUID = 1L; @@ -49,4 +50,14 @@ public class AllPermissionCollection extends AbstractPermissionCollection { public Enumeration<Permission> elements() { return Collections.enumeration(Collections.singletonList(m_allPermission)); } + + @Override + public Stream<IPermission> stream() { + return Stream.empty(); + } + + @Override + public Stream<IPermission> stream(IPermission permission) { + return Stream.empty(); + } } diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/DefaultPermissionCollection.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/DefaultPermissionCollection.java index 62b53a5565..0135434938 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/DefaultPermissionCollection.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/DefaultPermissionCollection.java @@ -56,6 +56,7 @@ public class DefaultPermissionCollection extends AbstractPermissionCollection { @Override public void add(IPermission permission) { + assertNotReadOnly(); m_permissions.computeIfAbsent(permission.getName(), k -> new ArrayList<>()).add((IPermission) permission); } @@ -102,8 +103,7 @@ public class DefaultPermissionCollection extends AbstractPermissionCollection { return PermissionLevel.UNDEFINED; } - Set<PermissionLevel> grantedLevels = m_permissions.getOrDefault(permission.getName(), Collections.emptyList()).stream() - .filter(def -> def.matches(permission)) + Set<PermissionLevel> grantedLevels = stream(permission) .map(IPermission::getLevel) .collect(Collectors.toSet()); @@ -118,8 +118,22 @@ public class DefaultPermissionCollection extends AbstractPermissionCollection { } @Override + public Stream<IPermission> stream() { + return m_permissions.values().stream().flatMap(Collection::stream); + } + + @Override + public Stream<IPermission> stream(IPermission permission) { + if (permission == null) { + return Stream.empty(); + } + return m_permissions.getOrDefault(permission.getName(), Collections.emptyList()).stream() + .filter(def -> def.matches(permission)); + } + + @Override public Enumeration<Permission> elements() { return EnumerationUtility.asEnumeration( - Stream.concat(m_permissions.values().stream().flatMap(Collection::stream).map(Permission.class::cast), m_javaPermissions.stream()).iterator()); + Stream.concat(stream().map(Permission.class::cast), m_javaPermissions.stream()).iterator()); } } diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/IPermissionCollection.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/IPermissionCollection.java index 53fbfda592..6151af5b9b 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/IPermissionCollection.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/IPermissionCollection.java @@ -12,6 +12,7 @@ package org.eclipse.scout.rt.security; import java.security.Permission; import java.security.PermissionCollection; +import java.util.stream.Stream; import org.eclipse.scout.rt.platform.Bean; @@ -57,6 +58,17 @@ public interface IPermissionCollection { PermissionLevel getGrantedPermissionLevel(IPermission permission); /** + * @return stream with all assigned {@link IPermission} + */ + Stream<IPermission> stream(); + + /** + * @param permission + * @return stream with {@link IPermission} for which holds {@link IPermission#matches(IPermission)} + */ + Stream<IPermission> stream(IPermission permission); + + /** * @see PermissionCollection#add(Permission) */ void add(Permission permission); diff --git a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/NonePermissionCollection.java b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/NonePermissionCollection.java index 51653af681..749e8bafde 100644 --- a/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/NonePermissionCollection.java +++ b/org.eclipse.scout.rt.security/src/main/java/org/eclipse/scout/rt/security/NonePermissionCollection.java @@ -13,6 +13,7 @@ package org.eclipse.scout.rt.security; import java.security.Permission; import java.util.Collections; import java.util.Enumeration; +import java.util.stream.Stream; public class NonePermissionCollection extends AbstractPermissionCollection { private static final long serialVersionUID = 1L; @@ -46,4 +47,14 @@ public class NonePermissionCollection extends AbstractPermissionCollection { public Enumeration<Permission> elements() { return Collections.enumeration(Collections.emptyList()); } + + @Override + public Stream<IPermission> stream() { + return Stream.empty(); + } + + @Override + public Stream<IPermission> stream(IPermission permission) { + return Stream.empty(); + } } |