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 f09f785 SLING-8578 - Nodes which contain : are not correctly processed
f09f785 is described below
commit f09f78581a4367aa2e0583372989bdd00a1860a2
Author: Simo Tripodi <[email protected]>
AuthorDate: Sun Jul 14 10:39:03 2019 +0200
SLING-8578 - Nodes which contain : are not correctly processed
minor optimizations
---
.../org/apache/sling/feature/cpconverter/acl/Acl.java | 7 ++-----
.../sling/feature/cpconverter/acl/DefaultAclManager.java | 1 -
.../cpconverter/handlers/RepPolicyEntryHandler.java | 16 ++++++++++++----
.../sling/feature/cpconverter/acl/AclManagerTest.java | 15 ++++++++++-----
4 files changed, 24 insertions(+), 15 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 4e2f199..b195441 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,10 +16,7 @@
*/
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;
@@ -38,11 +35,11 @@ public final class Acl {
private final List<String> restrictions = new LinkedList<>();
- public Acl(String operation, String privileges, Path path) {
+ public Acl(String operation, String privileges, Path path, Path
repositoryPath) {
this.operation = operation;
this.privileges = privileges;
this.path = path;
- this.repositoryPath =
Paths.get(PlatformNameFormat.getRepositoryPath(path.toString()));
+ this.repositoryPath = repositoryPath;
}
public void addRestriction(String restriction) {
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 da92a6b..2c0fb84 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,7 +32,6 @@ 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;
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 79995f4..6658264 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
@@ -23,6 +23,7 @@ import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
@@ -40,6 +41,7 @@ import javax.xml.transform.stream.StreamResult;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
+import org.apache.jackrabbit.vault.util.PlatformNameFormat;
import
org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
import org.apache.sling.feature.cpconverter.acl.Acl;
import org.apache.sling.feature.cpconverter.acl.AclManager;
@@ -80,7 +82,10 @@ public final class RepPolicyEntryHandler extends
AbstractRegexEntryHandler {
StringWriter stringWriter = new StringWriter();
handler.setResult(new StreamResult(stringWriter));
- RepPolicyParser systemUserParser = new RepPolicyParser(resourcePath,
converter.getAclManager(), handler);
+ RepPolicyParser systemUserParser = new
RepPolicyParser(Paths.get(resourcePath),
+
Paths.get(PlatformNameFormat.getRepositoryPath(resourcePath)),
+
converter.getAclManager(),
+ handler);
boolean hasRejectedAcls;
try (InputStream input = archive.openInputStream(entry)) {
@@ -122,7 +127,9 @@ public final class RepPolicyEntryHandler extends
AbstractRegexEntryHandler {
private final Stack<Acl> acls = new Stack<>();
- private final String path;
+ private final Path path;
+
+ private final Path repositoryPath;
private final AclManager aclManager;
@@ -136,9 +143,10 @@ public final class RepPolicyEntryHandler extends
AbstractRegexEntryHandler {
// just internal pointer for every iteration
private boolean processCurrentAcl = false;
- public RepPolicyParser(String path, AclManager aclManager,
TransformerHandler handler) {
+ public RepPolicyParser(Path path, Path repositoryPath, AclManager
aclManager, TransformerHandler handler) {
super(REP_ACL);
this.path = path;
+ this.repositoryPath = repositoryPath;
this.aclManager = aclManager;
this.handler = handler;
}
@@ -160,7 +168,7 @@ public final class RepPolicyEntryHandler extends
AbstractRegexEntryHandler {
String privileges =
extractValue(attributes.getValue(REP_PRIVILEGES));
- Acl acl = new Acl(operation, privileges, Paths.get(path));
+ Acl acl = new Acl(operation, privileges, path,
repositoryPath);
processCurrentAcl = aclManager.addAcl(principalName, acl);
if (processCurrentAcl) {
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 02444df..384168c 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
@@ -29,6 +29,7 @@ import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
+import org.apache.jackrabbit.vault.util.PlatformNameFormat;
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Extension;
import org.apache.sling.feature.Feature;
@@ -64,11 +65,11 @@ public class AclManagerTest {
aclManager.addSystemUser(new
SystemUser("acs-commons-package-replication-status-event-service",
Paths.get("/asd/public")));
- aclManager.addAcl("acs-commons-ensure-oak-index-service", new
Acl("allow", "jcr:read,rep:write,rep:indexDefinitionManagement",
Paths.get("/asd/public")));
-
aclManager.addAcl("acs-commons-package-replication-status-event-service", new
Acl("allow", "jcr:read,crx:replicate,jcr:removeNode",
Paths.get("/asd/public")));
+ aclManager.addAcl("acs-commons-ensure-oak-index-service",
newAcl("allow", "jcr:read,rep:write,rep:indexDefinitionManagement",
"/asd/public"));
+
aclManager.addAcl("acs-commons-package-replication-status-event-service",
newAcl("allow", "jcr:read,crx:replicate,jcr:removeNode", "/asd/public"));
// add an ACL for unknown user
- aclManager.addAcl("acs-commons-on-deploy-scripts-service", new
Acl("allow", "jcr:read,crx:replicate,jcr:removeNode",
Paths.get("/asd/public")));
+ aclManager.addAcl("acs-commons-on-deploy-scripts-service",
newAcl("allow", "jcr:read,crx:replicate,jcr:removeNode", "/asd/public"));
VaultPackageAssembler assembler = mock(VaultPackageAssembler.class);
when(assembler.getEntry(anyString())).thenReturn(new
File(System.getProperty("java.io.tmpdir")));
@@ -101,8 +102,8 @@ public class AclManagerTest {
@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")));
+ aclManager.addAcl("sys-usr", newAcl("allow", "jcr:read",
"/content/_cq_tags"));
+ aclManager.addAcl("sys-usr", newAcl("allow", "jcr:write",
"/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));
@@ -129,4 +130,8 @@ public class AclManagerTest {
assertFalse(operations.isEmpty());
}
+ private static Acl newAcl(String operation, String privileges, String
path) {
+ return new Acl(operation, privileges, Paths.get(path),
Paths.get(PlatformNameFormat.getRepositoryPath(path)));
+ }
+
}