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/07/13 11:21:22 UTC
[sling-org-apache-sling-feature-cpconverter] branch master updated:
SLING-8578 - Nodes which contain : are not correctly processed
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 2369b43 SLING-8578 - Nodes which contain : are not correctly processed
new 878a9a0 Merge pull request #10 from andreituicu/issue/SLING-8578
2369b43 is described below
commit 2369b43cd07fd502c249be0883ef07f50f2c3629
Author: Andrei Tuicu <an...@gmail.com>
AuthorDate: Sat Jul 13 13:08:11 2019 +0300
SLING-8578 - Nodes which contain : are not correctly processed
---
.../apache/sling/feature/cpconverter/acl/Acl.java | 10 +++++++
.../feature/cpconverter/acl/DefaultAclManager.java | 5 ++--
.../feature/cpconverter/acl/AclManagerTest.java | 32 ++++++++++++++++++++++
3 files changed, 45 insertions(+), 2 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 23cd723..4e2f199 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,7 +16,10 @@
*/
package org.apache.sling.feature.cpconverter.acl;
+import org.apache.jackrabbit.vault.util.PlatformNameFormat;
+
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.LinkedList;
import java.util.List;
@@ -31,12 +34,15 @@ public final class Acl {
private final Path path;
+ private final Path repositoryPath;
+
private final List<String> restrictions = new LinkedList<>();
public Acl(String operation, String privileges, Path path) {
this.operation = operation;
this.privileges = privileges;
this.path = path;
+ this.repositoryPath = Paths.get(PlatformNameFormat.getRepositoryPath(path.toString()));
}
public void addRestriction(String restriction) {
@@ -57,6 +63,10 @@ public final class Acl {
return path;
}
+ public Path getRepositoryPath() {
+ return repositoryPath;
+ }
+
public List<String> getRestrictions() {
return 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 cebc5c2..da92a6b 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
@@ -32,6 +32,7 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
+import org.apache.jackrabbit.vault.util.PlatformNameFormat;
import org.apache.sling.feature.Extension;
import org.apache.sling.feature.ExtensionType;
import org.apache.sling.feature.Feature;
@@ -204,7 +205,7 @@ public final class DefaultAclManager implements AclManager {
Set<Path> paths = new TreeSet<>();
for (Acl authorization : authorizations) {
- addPath(authorization.getPath(), paths);
+ addPath(authorization.getRepositoryPath(), paths);
}
for (Path path : paths) {
@@ -247,7 +248,7 @@ public final class DefaultAclManager implements AclManager {
formatter.format("%s %s on %s",
authorization.getOperation(),
authorization.getPrivileges(),
- authorization.getPath());
+ authorization.getRepositoryPath());
if (!authorization.getRestrictions().isEmpty()) {
formatter.format(" restriction(%s)",
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/acl/AclManagerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/acl/AclManagerTest.java
index 37afda1..02444df 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/acl/AclManagerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/acl/AclManagerTest.java
@@ -34,6 +34,7 @@ import org.apache.sling.feature.Extension;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
import org.apache.sling.repoinit.parser.RepoInitParser;
+import org.apache.sling.repoinit.parser.RepoInitParsingException;
import org.apache.sling.repoinit.parser.impl.RepoInitParserService;
import org.apache.sling.repoinit.parser.operations.Operation;
import org.junit.After;
@@ -97,4 +98,35 @@ public class AclManagerTest {
assertFalse(operations.isEmpty());
}
+ @Test
+ public void pathWithSpecialCharactersTest() throws RepoInitParsingException {
+ aclManager.addSystemUser(new SystemUser("sys-usr", Paths.get("/home/users/system")));
+ aclManager.addAcl("sys-usr", new Acl("allow", "jcr:read", Paths.get("/content/_cq_tags")));
+ aclManager.addAcl("sys-usr", new Acl("allow", "jcr:write", Paths.get("/content/cq:tags")));
+ VaultPackageAssembler assembler = mock(VaultPackageAssembler.class);
+ when(assembler.getEntry(anyString())).thenReturn(new File(System.getProperty("java.io.tmpdir")));
+ Feature feature = new Feature(new ArtifactId("org.apache.sling", "org.apache.sling.cp2fm", "0.0.1", null, null));
+
+ aclManager.addRepoinitExtension(Arrays.asList(assembler), feature);
+
+ Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
+ assertNotNull(repoinitExtension);
+ System.out.println(repoinitExtension.getText());
+
+ String expected = "create service user sys-usr with path /home/users/system\n" +
+ "create path (sling:Folder) /content\n" +
+ "create path (sling:Folder) /content/cq:tags\n" +
+ "set ACL for sys-usr\n" +
+ "allow jcr:read on /content/cq:tags\n" +
+ "allow jcr:write on /content/cq:tags\n" +
+ "end\n";
+
+ String actual = repoinitExtension.getText();
+ assertEquals(expected, actual);
+
+ RepoInitParser repoInitParser = new RepoInitParserService();
+ List<Operation> operations = repoInitParser.parse(new StringReader(actual));
+ assertFalse(operations.isEmpty());
+ }
+
}