You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/06/27 21:06:22 UTC
[sling-org-apache-sling-feature-cpconverter] branch master updated:
SLING-8540 - ACL permissions from jcr_root are not correctly serialised
This is an automated email from the ASF dual-hosted git repository.
simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
The following commit(s) were added to refs/heads/master by this push:
new 43ee3c0 SLING-8540 - ACL permissions from jcr_root are not correctly serialised
43ee3c0 is described below
commit 43ee3c0833c9c22786c708239e82a670b2472e6c
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Thu Jun 27 23:06:15 2019 +0200
SLING-8540 - ACL permissions from jcr_root are not correctly serialised
---
.../apache/sling/feature/cpconverter/acl/Acl.java | 20 +++++++++++++++++---
.../feature/cpconverter/acl/DefaultAclManager.java | 20 +++++++++++---------
.../cpconverter/handlers/RepPolicyEntryHandler.java | 2 +-
3 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/acl/Acl.java b/src/main/java/org/apache/sling/feature/cpconverter/acl/Acl.java
index 0e21ead..9c22118 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/acl/Acl.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/acl/Acl.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature.cpconverter.acl;
+import java.nio.file.Path;
import java.util.LinkedList;
import java.util.List;
@@ -28,11 +29,11 @@ public final class Acl {
private final String privileges;
- private final String path;
+ private final Path path;
private final List<String> restrictions = new LinkedList<>();
- protected Acl(String operation, String privileges, String path) {
+ protected Acl(String operation, String privileges, Path path) {
this.operation = operation;
this.privileges = privileges;
this.path = path;
@@ -52,7 +53,7 @@ public final class Acl {
return privileges;
}
- public String getPath() {
+ public Path getPath() {
return path;
}
@@ -60,4 +61,17 @@ public final class Acl {
return restrictions;
}
+ @Override
+ public String toString() {
+ return "Acl [operation="
+ + operation
+ + ", privileges="
+ + privileges
+ + ", path="
+ + path
+ + ", restrictions="
+ + restrictions
+ + "]";
+ }
+
}
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
index 9eeeab0..16c79ff 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
@@ -18,6 +18,8 @@ package org.apache.sling.feature.cpconverter.acl;
import java.io.File;
import java.io.FileInputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Formatter;
import java.util.HashMap;
import java.util.HashSet;
@@ -43,7 +45,7 @@ public final class DefaultAclManager implements AclManager {
private final Set<String> preProvidedSystemUsers = new LinkedHashSet<>();
- private final Set<String> preProvidedPaths = new HashSet<String>();
+ private final Set<Path> preProvidedPaths = new HashSet<>();
private final Set<String> systemUsers = new LinkedHashSet<>();
@@ -61,19 +63,19 @@ public final class DefaultAclManager implements AclManager {
}
public Acl addAcl(String systemUser, String operation, String privileges, String path) {
- Acl acl = new Acl(operation, privileges, path);
+ Acl acl = new Acl(operation, privileges, Paths.get(path));
acls.computeIfAbsent(systemUser, k -> new LinkedList<>()).add(acl);
return acl;
}
- private void addPath(String path, Set<String> paths) {
+ private void addPath(Path path, Set<Path> paths) {
if (preProvidedPaths.add(path)) {
paths.add(path);
}
- int endIndex = path.lastIndexOf('/');
- if (endIndex > 0) {
- addPath(path.substring(0, endIndex), paths);
+ Path parent = path.getParent();
+ if (parent != null && parent.getNameCount() > 0) {
+ addPath(parent, paths);
}
}
@@ -177,13 +179,13 @@ public final class DefaultAclManager implements AclManager {
return;
}
- Set<String> paths = new TreeSet<String>();
+ Set<Path> paths = new TreeSet<>();
for (Acl authorization : authorizations) {
addPath(authorization.getPath(), paths);
}
- for (String path : paths) {
- File currentDir = packageAssembler.getEntry(path);
+ for (Path path : paths) {
+ File currentDir = packageAssembler.getEntry(path.toString());
String type = DEFAULT_TYPE;
if (currentDir.exists()) {
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandler.java
index 70ba317..f4ba35c 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandler.java
@@ -36,7 +36,7 @@ import org.xml.sax.SAXException;
public final class RepPolicyEntryHandler extends AbstractRegexEntryHandler {
public RepPolicyEntryHandler() {
- super("/jcr_root(.*)/_rep_policy.xml");
+ super("/jcr_root(.*/)_rep_policy.xml");
}
@Override