You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/01/13 11:09:57 UTC
svn commit: r1896985 - in /jackrabbit/trunk: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/ jackrabbit-jcr2spi/src/main/java/org/apache/j...
Author: reschke
Date: Thu Jan 13 11:09:57 2022
New Revision: 1896985
URL: http://svn.apache.org/viewvc?rev=1896985&view=rev
Log:
JCR-4758: Implement JackrabbitAccessControlEntry.getPrivilegeCollection in jackrabbit
JCR-4757: Update Jackrabbit trunk to Oak 1.42.0
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlEntryImpl.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractACLTemplateTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEntryTest.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/security/authorization/jackrabbit/acl/AccessControlEntryImpl.java
jackrabbit/trunk/jackrabbit-parent/pom.xml
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlEntryImpl.java?rev=1896985&r1=1896984&r2=1896985&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlEntryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlEntryImpl.java Thu Jan 13 11:09:57 2022
@@ -17,13 +17,13 @@
package org.apache.jackrabbit.core.security.authorization;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
+import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
import org.apache.jackrabbit.value.ValueHelper;
import javax.jcr.NamespaceException;
import javax.jcr.RepositoryException;
-import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.security.AccessControlException;
@@ -31,6 +31,7 @@ import javax.jcr.security.Privilege;
import java.security.Principal;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -307,6 +308,34 @@ public abstract class AccessControlEntry
return new Value[] {getRestriction(restrictionName)};
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() {
+ return new PrivilegeCollection() {
+ @Override
+ public Privilege[] getPrivileges() {
+ return AccessControlEntryImpl.this.getPrivileges();
+ }
+
+ @Override
+ public boolean includes(String... privilegeNames) throws RepositoryException {
+ if (privilegeNames.length == 0) {
+ return true;
+ }
+ PrivilegeBits pb = AccessControlEntryImpl.this.getPrivilegeBits();
+ if (pb.isEmpty()) {
+ return false;
+ }
+ Set<Privilege> privileges = new HashSet<>(privilegeNames.length);
+ PrivilegeManagerImpl privilegeMgr = getPrivilegeManager();
+ for (String pName : privilegeNames) {
+ privileges.add(privilegeMgr.getPrivilege(pName));
+ }
+ PrivilegeBits toTest = privilegeMgr.getBits(privileges.toArray(new Privilege[0]));
+ return pb.includes(toTest);
+ }
+ };
+ }
+
//-------------------------------------------------------------< Object >---
/**
* @see Object#hashCode()
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractACLTemplateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractACLTemplateTest.java?rev=1896985&r1=1896984&r2=1896985&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractACLTemplateTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractACLTemplateTest.java Thu Jan 13 11:09:57 2022
@@ -20,6 +20,7 @@ import java.security.Principal;
import java.util.Collections;
import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.security.AccessControlEntry;
import javax.jcr.security.AccessControlException;
@@ -29,6 +30,7 @@ import org.apache.jackrabbit.api.Jackrab
import org.apache.jackrabbit.api.JackrabbitWorkspace;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
+import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.core.security.TestPrincipal;
@@ -130,6 +132,11 @@ public abstract class AbstractACLTemplat
return null;
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
public Principal getPrincipal() {
return testPrincipal;
}
@@ -169,6 +176,11 @@ public abstract class AbstractACLTemplat
return null;
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
public Principal getPrincipal() {
return testPrincipal;
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEntryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEntryTest.java?rev=1896985&r1=1896984&r2=1896985&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEntryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEntryTest.java Thu Jan 13 11:09:57 2022
@@ -24,16 +24,20 @@ import java.util.List;
import java.util.Map;
import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.security.AccessControlEntry;
import javax.jcr.security.AccessControlException;
import javax.jcr.security.Privilege;
import org.apache.jackrabbit.api.JackrabbitWorkspace;
+import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.test.api.security.AbstractAccessControlTest;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
+import static org.junit.Assert.assertArrayEquals;
+
/**
* <code>AbstractEntryTest</code>...
*/
@@ -125,6 +129,22 @@ public abstract class AbstractEntryTest
assertEquals(privMgr.getBits(privs), privMgr.getBits(entry.getPrivileges()));
}
+ public void testGetPrivilegeCollection() throws RepositoryException, NotExecutableException {
+ JackrabbitAccessControlEntry entry = createEntry(new String[] {Privilege.JCR_READ, Privilege.JCR_WRITE}, true);
+
+ PrivilegeCollection pc = entry.getPrivilegeCollection();
+ assertArrayEquals(entry.getPrivileges(), pc.getPrivileges());
+
+ assertTrue(pc.includes(Privilege.JCR_READ));
+ assertTrue(pc.includes(Privilege.JCR_WRITE));
+ assertTrue(pc.includes(Privilege.JCR_READ, Privilege.JCR_WRITE));
+ assertTrue(pc.includes(Privilege.JCR_READ, Privilege.JCR_MODIFY_PROPERTIES, Privilege.JCR_REMOVE_CHILD_NODES));
+
+ assertFalse(pc.includes(Privilege.JCR_READ, Privilege.JCR_LIFECYCLE_MANAGEMENT));
+ assertFalse(pc.includes(Privilege.JCR_VERSION_MANAGEMENT));
+ assertFalse(pc.includes(Privilege.JCR_ALL));
+ }
+
public void testEquals() throws RepositoryException, NotExecutableException {
Map<AccessControlEntry, AccessControlEntry> equalAces = new HashMap<AccessControlEntry, AccessControlEntry>();
@@ -210,6 +230,11 @@ public abstract class AbstractEntryTest
return null;
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
public Principal getPrincipal() {
return testPrincipal;
}
@@ -298,6 +323,11 @@ public abstract class AbstractEntryTest
return null;
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
public Principal getPrincipal() {
return testPrincipal;
}
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/security/authorization/jackrabbit/acl/AccessControlEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/security/authorization/jackrabbit/acl/AccessControlEntryImpl.java?rev=1896985&r1=1896984&r2=1896985&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/security/authorization/jackrabbit/acl/AccessControlEntryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/security/authorization/jackrabbit/acl/AccessControlEntryImpl.java Thu Jan 13 11:09:57 2022
@@ -25,12 +25,14 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFormatException;
import javax.jcr.security.AccessControlException;
import javax.jcr.security.Privilege;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
+import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.QValueFactory;
@@ -152,6 +154,11 @@ class AccessControlEntryImpl implements
return new Value[] {getRestriction(restrictionName)};
}
+ @Override
+ public PrivilegeCollection getPrivilegeCollection() throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
//-------------------------------------------------------------< Object >---
@Override
public int hashCode() {
Modified: jackrabbit/trunk/jackrabbit-parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-parent/pom.xml?rev=1896985&r1=1896984&r2=1896985&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-parent/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-parent/pom.xml Thu Jan 13 11:09:57 2022
@@ -46,7 +46,7 @@
<test.opts.memory>-Xmx256m</test.opts.memory>
<test.opts.modules />
<test.opts>${test.opts.modules} ${test.opts.coverage} ${test.opts.memory} -enableassertions</test.opts>
- <oak.version>1.40.0</oak.version>
+ <oak.version>1.42.0</oak.version>
<jetty.version>9.2.30.v20200428</jetty.version>
<tika.version>2.2.1</tika.version>
<project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>