You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/05/27 09:53:31 UTC
svn commit: r1128185 - in /jackrabbit/branches/2.2: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/
jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/
Author: angela
Date: Fri May 27 07:53:30 2011
New Revision: 1128185
URL: http://svn.apache.org/viewvc?rev=1128185&view=rev
Log:
2.2: Merging JCR-2977 (revision 1128175)
Added:
jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java (with props)
Modified:
jackrabbit/branches/2.2/ (props changed)
jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java
jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/TestAll.java
Propchange: jackrabbit/branches/2.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri May 27 07:53:30 2011
@@ -2,4 +2,4 @@
/jackrabbit/sandbox/JCR-1456:774917-886178
/jackrabbit/sandbox/JCR-2170:812417-816332
/jackrabbit/sandbox/tripod-JCR-2209:795441-795863
-/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090,1040459,1040601,1040606,1040661,1040958,1041379,1041439,1041761,1042643,1042647,1042978-1042982,1043084-1043086,1043088,1043343,1043357-1043358,1043430,1043554,1043616,1043618,1043637,1043656,1043893,1043897,1044239,1044312,1044451,1044613,1049473,1049491,1049514,1049518,1049520,1049859,1049870,1049874,1049878,1049880,1049883,1049889,1049891,1049894-1049895,1049899-1049901,1049909-1049911,1049915-1049916,1049919,1049923,1049925,1049931,1049936,1049939,1050212,1050298,1050346,1050551,1055068,1055070-1055071,1055116-1055117,1055127,1055134,1055164,1055498,1060431,1060434,1060753,1063756,1064670,1065599,1065622,1066059,1066071,1069831,1071562,1071573,1071680,1074140,1079314,1079317,1080186,1080540,1087304,1088991,1089032,1089053,1089436,1092106,1092117,1092683,1097513-1097514,1098963-1098964,1099033,1099172,1100286,1104027
+/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090,1040459,1040601,1040606,1040661,1040958,1041379,1041439,1041761,1042643,1042647,1042978-1042982,1043084-1043086,1043088,1043343,1043357-1043358,1043430,1043554,1043616,1043618,1043637,1043656,1043893,1043897,1044239,1044312,1044451,1044613,1049473,1049491,1049514,1049518,1049520,1049859,1049870,1049874,1049878,1049880,1049883,1049889,1049891,1049894-1049895,1049899-1049901,1049909-1049911,1049915-1049916,1049919,1049923,1049925,1049931,1049936,1049939,1050212,1050298,1050346,1050551,1055068,1055070-1055071,1055116-1055117,1055127,1055134,1055164,1055498,1060431,1060434,1060753,1063756,1064670,1065599,1065622,1066059,1066071,1069831,1071562,1071573,1071680,1074140,1079314,1079317,1080186,1080540,1087304,1088991,1089032,1089053,1089436,1092106,1092117,1092683,1097513-1097514,1098963-1098964,1099033,1099172,1100286,1104027,1128175
Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java?rev=1128185&r1=1128184&r2=1128185&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java Fri May 27 07:53:30 2011
@@ -130,11 +130,19 @@ public class ACLEditor extends Protected
NodeImpl aclNode = getAclNode(controlledNode);
if (aclNode == null) {
// create an empty acl unless the node is protected or cannot have
- // rep:AccessControllable mixin set (e.g. due to a lock)
- String mixin = session.getJCRName(NT_REP_ACCESS_CONTROLLABLE);
- if (controlledNode.isNodeType(mixin) || controlledNode.canAddMixin(mixin)) {
- acl = new ACLTemplate(nodePath, session.getPrincipalManager(),
- privilegeRegistry, session.getValueFactory(), session);
+ // rep:AccessControllable mixin set (e.g. due to a lock) or
+ // has colliding rep:policy child node set.
+ if (controlledNode.hasNode(N_POLICY)) {
+ // policy child node without node being access controlled
+ log.warn("Colliding rep:policy child without node being access controllable ({}).", nodePath);
+ } else {
+ String mixin = session.getJCRName(NT_REP_ACCESS_CONTROLLABLE);
+ if (controlledNode.isNodeType(mixin) || controlledNode.canAddMixin(mixin)) {
+ acl = new ACLTemplate(nodePath, session.getPrincipalManager(),
+ privilegeRegistry, session.getValueFactory(), session);
+ } else {
+ log.warn("Node {} cannot be made access controllable.", nodePath);
+ }
}
} // else: acl already present -> getPolicies must be used.
return (acl != null) ? new AccessControlPolicy[] {acl} : new AccessControlPolicy[0];
Added: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java?rev=1128185&view=auto
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java (added)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java Fri May 27 07:53:30 2011
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core.security.authorization.acl;
+
+import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
+import org.apache.jackrabbit.core.security.authorization.AbstractEvaluationTest;
+import org.apache.jackrabbit.test.NotExecutableException;
+
+import javax.jcr.ItemExistsException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.security.AccessControlManager;
+import javax.jcr.security.AccessControlPolicy;
+import javax.jcr.security.AccessControlPolicyIterator;
+import javax.jcr.version.VersionException;
+import java.security.Principal;
+import java.util.Map;
+
+/**
+ * <code>ACLEditorTest</code>...
+ */
+public class ACLEditorTest extends AbstractEvaluationTest {
+
+ private String testPath;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ Node node = testRootNode.addNode(nodeName1, "nt:unstructured");
+ Node pseudoPolicy = node.addNode("rep:policy", "rep:ACL");
+ superuser.save();
+
+ testPath = node.getPath();
+ }
+
+ @Override
+ protected boolean isExecutable() {
+ return EvaluationUtil.isExecutable(acMgr);
+ }
+
+ @Override
+ protected JackrabbitAccessControlList getPolicy(AccessControlManager acMgr, String path, Principal princ) throws RepositoryException, NotExecutableException {
+ return EvaluationUtil.getPolicy(acMgr, path, princ);
+ }
+
+ @Override
+ protected Map<String, Value> getRestrictions(Session session, String path) throws RepositoryException, NotExecutableException {
+ return EvaluationUtil.getRestrictions(session, path);
+ }
+
+ public void testNodeNotRepAccessControllable() throws RepositoryException, LockException, ConstraintViolationException, NoSuchNodeTypeException, ItemExistsException, VersionException {
+ AccessControlPolicy[] plcs = acMgr.getPolicies(testPath);
+ assertNotNull(plcs);
+ assertEquals(0, plcs.length);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(testPath);
+ assertNotNull(it);
+ assertEquals(0, it.getSize());
+ }
+
+ public void testNodeNotRepAccessControllableAddMixin() throws RepositoryException, LockException, ConstraintViolationException, NoSuchNodeTypeException, ItemExistsException, VersionException {
+ superuser.getNode(testPath).addMixin("rep:AccessControllable");
+ superuser.save();
+
+ AccessControlPolicy[] plcs = acMgr.getPolicies(testPath);
+ assertNotNull(plcs);
+ assertEquals(1, plcs.length);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(testPath);
+ assertNotNull(it);
+ assertEquals(0, it.getSize());
+ }
+}
Propchange: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditorTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/TestAll.java?rev=1128185&r1=1128184&r2=1128185&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/TestAll.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/TestAll.java Fri May 27 07:53:30 2011
@@ -48,7 +48,8 @@ public class TestAll extends TestCase {
suite.addTestSuite(VersionTest.class);
suite.addTestSuite(NodeTypeTest.class);
suite.addTestSuite(EffectivePolicyTest.class);
-
+ suite.addTestSuite(ACLEditorTest.class);
+
return suite;
}