You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2014/01/22 23:14:43 UTC

svn commit: r1560543 - in /jackrabbit/commons/filevault/trunk: parent/ vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/ vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/

Author: tripod
Date: Wed Jan 22 22:14:42 2014
New Revision: 1560543

URL: http://svn.apache.org/r1560543
Log:
JCRVLT-25 Implement AccessControllHandling MERGE and MERGE_PRESERVE

- use latest oak

Modified:
    jackrabbit/commons/filevault/trunk/parent/pom.xml
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/JackrabbitACLImporter.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java

Modified: jackrabbit/commons/filevault/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/parent/pom.xml?rev=1560543&r1=1560542&r2=1560543&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/parent/pom.xml (original)
+++ jackrabbit/commons/filevault/trunk/parent/pom.xml Wed Jan 22 22:14:42 2014
@@ -41,7 +41,7 @@
 
     <properties>
         <jackrabbit.version>2.7.2</jackrabbit.version>
-        <oak.version>0.15-SNAPSHOT</oak.version>
+        <oak.version>0.16-SNAPSHOT</oak.version>
     </properties>
 
     <!-- ====================================================================== -->

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/JackrabbitACLImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/JackrabbitACLImporter.java?rev=1560543&r1=1560542&r2=1560543&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/JackrabbitACLImporter.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/JackrabbitACLImporter.java Wed Jan 22 22:14:42 2014
@@ -42,7 +42,6 @@ import org.apache.jackrabbit.vault.fs.io
 import org.apache.jackrabbit.vault.util.DocViewNode;
 import org.apache.jackrabbit.vault.util.DocViewProperty;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
 /**
@@ -54,7 +53,7 @@ public class JackrabbitACLImporter imple
     /**
      * default logger
      */
-    private static final Logger log = LoggerFactory.getLogger(JackrabbitACLImporter.class);
+    private static final Logger log = DocViewSAXImporter.log;
 
     private final Node accessControlledNode;
 
@@ -64,6 +63,8 @@ public class JackrabbitACLImporter imple
 
     private final PrincipalManager pMgr;
 
+    private final String accessControlledPath;
+
     private Map<String, List<ACE>> aceMap = new HashMap<String, List<ACE>>();
 
     private ACE currentACE;
@@ -83,8 +84,10 @@ public class JackrabbitACLImporter imple
             throw new RepositoryException("Error while reading access control content: unsupported AccessControlHandling: " + aclHandling);
         }
         this.accessControlledNode = accessControlledNode;
-        this.acMgr = accessControlledNode.getSession().getAccessControlManager();
-        this.pMgr = ((JackrabbitSession) accessControlledNode.getSession()).getPrincipalManager();
+        this.accessControlledPath = accessControlledNode.getPath();
+        final JackrabbitSession session = ((JackrabbitSession) accessControlledNode.getSession());
+        this.acMgr = session.getAccessControlManager();
+        this.pMgr = session.getPrincipalManager();
         this.aclHandling = aclHandling;
         this.states.push(State.INITIAL);
     }
@@ -103,13 +106,7 @@ public class JackrabbitACLImporter imple
 
             case ACL:
                 try {
-                    currentACE = new ACE(node);
-                    List<ACE> list = aceMap.get(currentACE.principalName);
-                    if (list == null) {
-                        list = new ArrayList<ACE>();
-                        aceMap.put(currentACE.principalName, list);
-                    }
-                    list.add(currentACE);
+                    currentACE = addACE(aceMap, new ACE(node));
                     state = State.ACE;
                 } catch (IllegalArgumentException e) {
                     log.error("Error while reading access control content: {}", e);
@@ -131,6 +128,16 @@ public class JackrabbitACLImporter imple
         states.push(state);
     }
 
+    private static ACE addACE(Map<String, List<ACE>> map, ACE ace) {
+        List<ACE> list = map.get(ace.principalName);
+        if (list == null) {
+            list = new ArrayList<ACE>();
+            map.put(ace.principalName, list);
+        }
+        list.add(ace);
+        return ace;
+    }
+
     public void endNode() throws SAXException {
         State state = states.pop();
         if (state == State.ACE) {
@@ -150,13 +157,12 @@ public class JackrabbitACLImporter imple
     }
 
     private void apply() throws RepositoryException {
-        final String path = accessControlledNode.getPath();
         final ValueFactory valueFactory = accessControlledNode.getSession().getValueFactory();
 
         // find principals of existing ACL
         JackrabbitAccessControlList acl = null;
         Set<String> existingPrincipals = new HashSet<String>();
-        for (AccessControlPolicy p: acMgr.getPolicies(path)) {
+        for (AccessControlPolicy p: acMgr.getPolicies(accessControlledPath)) {
             if (p instanceof JackrabbitAccessControlList) {
                 acl = (JackrabbitAccessControlList) p;
                 for (AccessControlEntry ace: acl.getAccessControlEntries()) {
@@ -167,12 +173,12 @@ public class JackrabbitACLImporter imple
 
         // remove existing policy for 'overwrite'
         if (aclHandling == AccessControlHandling.OVERWRITE && acl != null) {
-            acMgr.removePolicy(path, acl);
+            acMgr.removePolicy(accessControlledPath, acl);
             acl = null;
         }
 
         if (acl == null) {
-            AccessControlPolicyIterator iter = acMgr.getApplicablePolicies(path);
+            AccessControlPolicyIterator iter = acMgr.getApplicablePolicies(accessControlledPath);
             while (iter.hasNext()) {
                 AccessControlPolicy p = iter.nextAccessControlPolicy();
                 if (p instanceof JackrabbitAccessControlList) {
@@ -182,7 +188,7 @@ public class JackrabbitACLImporter imple
             }
         }
         if (acl == null) {
-            throw new RepositoryException("not JackrabbitAccessControlList applicable on " + path);
+            throw new RepositoryException("not JackrabbitAccessControlList applicable on " + accessControlledPath);
         }
 
         // apply ACEs of package
@@ -226,7 +232,7 @@ public class JackrabbitACLImporter imple
                 acl.addEntry(principal, privileges, ace.allow, svRestrictions, mvRestrictions);
             }
         }
-        acMgr.setPolicy(path, acl);
+        acMgr.setPolicy(accessControlledPath, acl);
     }
 
     private static class ACE {

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java?rev=1560543&r1=1560542&r2=1560543&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java Wed Jan 22 22:14:42 2014
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.core.securi
 import org.apache.jackrabbit.oak.jcr.Jcr;
 import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
@@ -87,8 +88,11 @@ public class IntegrationTestBase  {
             userProps.put(AccessControlAction.USER_PRIVILEGE_NAMES, new String[] {PrivilegeConstants.JCR_ALL});
             userProps.put(AccessControlAction.GROUP_PRIVILEGE_NAMES, new String[] {PrivilegeConstants.JCR_READ});
             userProps.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT);
+            Properties authzProps = new Properties();
+            authzProps.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT);
             Properties securityProps = new Properties();
             securityProps.put(UserConfiguration.NAME, ConfigurationParameters.of(userProps));
+            securityProps.put(AuthorizationConfiguration.NAME, ConfigurationParameters.of(authzProps));
             repository = new Jcr()
                     .with(new SecurityProviderImpl(ConfigurationParameters.of(securityProps)))
                     .createRepository();