You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2013/03/12 09:58:27 UTC
svn commit: r1455449 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java
Author: angela
Date: Tue Mar 12 08:58:27 2013
New Revision: 1455449
URL: http://svn.apache.org/r1455449
Log:
OAK-527: permissions (wip)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java?rev=1455449&r1=1455448&r2=1455449&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java Tue Mar 12 08:58:27 2013
@@ -103,8 +103,7 @@ public final class Permissions {
| USER_MANAGEMENT
);
- private static final Map<Long, String> PERMISSION_NAMES = new LinkedHashMap<Long, String>();
-
+ public static final Map<Long, String> PERMISSION_NAMES = new LinkedHashMap<Long, String>();
static {
PERMISSION_NAMES.put(ALL, "ALL");
PERMISSION_NAMES.put(READ, "READ");
@@ -161,6 +160,23 @@ public final class Permissions {
return (permissions & permissionsToTest) == permissionsToTest;
}
+ /**
+ * Returns those bits from {@code permissions} that are not present in
+ * the {@code otherPermissions}, i.e. subtracts the other permissions
+ * from permissions.<br>
+ * If the specified {@code otherPermissions} do not intersect with
+ * {@code permissions}, {@code permissions} are returned.<br>
+ * If {@code permissions} is included in {@code otherPermissions},
+ * {@link #NO_PERMISSION} is returned.
+ *
+ * @param permissions
+ * @param otherPermissions
+ * @return the differences of the 2 permissions or {@link #NO_PERMISSION}.
+ */
+ public static long diff(long permissions, long otherPermissions) {
+ return permissions & ~otherPermissions;
+ }
+
public static long getPermissions(String jcrActions, TreeLocation location) {
Set<String> actions = new HashSet<String>(Arrays.asList(jcrActions.split(",")));
int permissions = 0;