You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2021/05/07 11:33:09 UTC
[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10359 :
RepPrincipalPolicyEntryHandler: rep:effectivePath is defined to be of type
PATH
This is an automated email from the ASF dual-hosted git repository.
angela pushed a commit to branch SLING-10359
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
commit 3ecd4d8a7f745da5a377c99c1c82bb285592e5a6
Author: angela <an...@adobe.com>
AuthorDate: Fri May 7 13:32:54 2021 +0200
SLING-10359 : RepPrincipalPolicyEntryHandler: rep:effectivePath is defined to be of type PATH
---
.../handlers/RepPrincipalPolicyEntryHandler.java | 16 +++++++++++++++-
.../handlers/RepPrincipalPolicyEntryHandlerTest.java | 17 +++++++++++++++++
.../system/services/random1/_rep_principalPolicy.xml | 2 +-
.../system/services/random2/_rep_principalPolicy.xml | 2 +-
.../system/services/random3/_rep_principalPolicy.xml | 2 +-
.../home/users/system/services/random4/.content.xml | 4 ++--
.../system/services/random4/_rep_principalPolicy.xml | 2 +-
.../system/services/{random4 => random5}/.content.xml | 4 ++--
.../{random4 => random5}/_rep_principalPolicy.xml | 4 ++--
9 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandler.java
index bbce52a..933dc7a 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandler.java
@@ -20,6 +20,7 @@ import org.apache.sling.feature.cpconverter.accesscontrol.AccessControlEntry;
import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
import org.apache.sling.feature.cpconverter.shared.RepoPath;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -78,7 +79,7 @@ public final class RepPrincipalPolicyEntryHandler extends AbstractPolicyEntryHan
throw new IllegalStateException("isolated principal-based access control entry. no principal found.");
}
List<String> privileges = extractValues(attributes.getValue(REP_PRIVILEGES));
- RepoPath effectivePath = new RepoPath(attributes.getValue(REP_EFFECTIVE_PATH));
+ RepoPath effectivePath = new RepoPath(extractEffectivePath(attributes.getValue(REP_EFFECTIVE_PATH)));
AccessControlEntry ace = new AccessControlEntry(true, privileges, effectivePath, true);
// NOTE: nt-definition doesn't allow for jr2-stype restrictions defined right below the entry.
@@ -122,5 +123,18 @@ public final class RepPrincipalPolicyEntryHandler extends AbstractPolicyEntryHan
return super.isRestriction(attributeName);
}
}
+
+ @NotNull
+ private static String extractEffectivePath(@Nullable String value) {
+ if (value == null) {
+ return "";
+ }
+ if (value.startsWith("{Path}")) {
+ return value.substring("{Path}".length());
+ } else {
+ // malformed content package that defines rep:effectivePath as prop of type String instead of Path
+ return value;
+ }
+ }
}
}
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
index 2700c36..53ea09c 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
@@ -145,6 +145,23 @@ public final class RepPrincipalPolicyEntryHandlerTest {
assertFalse(operations.isEmpty());
}
+ @Test
+ public void parsePolicyWithWrongTypeEffectivePath() throws Exception {
+ Extension repoinitExtension = parseAndSetRepoinit("service4", "random5").getRepoinitExtension();
+ String expected = normalize(
+ "create service user service4 with path system/services\n" +
+ "set principal ACL for service4\n" +
+ " allow jcr:read on /effective/path/of/type/string\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());
+ }
+
@NotNull
private static SystemUser createSystemUser(@NotNull String systemUsersName, @NotNull String nodeName) {
RepoPath repoPath = new RepoPath("/home/users/system/services/"+nodeName);
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random1/_rep_principalPolicy.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random1/_rep_principalPolicy.xml
index e55c57f..26e5f08 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random1/_rep_principalPolicy.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random1/_rep_principalPolicy.xml
@@ -21,6 +21,6 @@
<entry0
jcr:primaryType="rep:PrincipalEntry"
rep:privileges="{Name}[jcr:read,jcr:readAccessControl]"
- rep:effectivePath="/asd/public">
+ rep:effectivePath="{Path}/asd/public">
</entry0>
</jcr:root>
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random2/_rep_principalPolicy.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random2/_rep_principalPolicy.xml
index d2da38d..b5b2a03 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random2/_rep_principalPolicy.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random2/_rep_principalPolicy.xml
@@ -21,7 +21,7 @@
<entry0
jcr:primaryType="rep:PrincipalEntry"
rep:privileges="{Name}[jcr:read]"
- rep:effectivePath="/asd/public">
+ rep:effectivePath="{Path}/asd/public">
<rep:restrictions
jcr:primaryType="rep:Restrictions"
rep:ntNames="{Name}[nt:folder,sling:Folder]"
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random3/_rep_principalPolicy.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random3/_rep_principalPolicy.xml
index f5048c0..69653d0 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random3/_rep_principalPolicy.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random3/_rep_principalPolicy.xml
@@ -21,6 +21,6 @@
<entry0
jcr:primaryType="rep:PrincipalEntry"
rep:privileges="{Name}[jcr:all]"
- rep:effectivePath="/home/users/system/services/random3/subtree">
+ rep:effectivePath="{Path}/home/users/system/services/random3/subtree">
</entry0>
</jcr:root>
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml
index 327ffdf..9f0a778 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml
@@ -18,5 +18,5 @@
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
jcr:primaryType="rep:SystemUser"
jcr:uuid="342acedc-ac4a-3044-93d0-3288d39668af"
- rep:authorizableId="service3"
- rep:principalName="service3"/>
+ rep:authorizableId="service4"
+ rep:principalName="service4"/>
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml
index eff8224..9b9e602 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml
@@ -21,6 +21,6 @@
<entry0
jcr:primaryType="rep:PrincipalEntry"
rep:privileges="{Name}[jcr:read,rep:userManagement]"
- rep:effectivePath="/home/users/system/services/random3">
+ rep:effectivePath="{Path}/home/users/system/services/random3">
</entry0>
</jcr:root>
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/.content.xml
similarity index 92%
copy from src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml
copy to src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/.content.xml
index 327ffdf..9f0a778 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/.content.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/.content.xml
@@ -18,5 +18,5 @@
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
jcr:primaryType="rep:SystemUser"
jcr:uuid="342acedc-ac4a-3044-93d0-3288d39668af"
- rep:authorizableId="service3"
- rep:principalName="service3"/>
+ rep:authorizableId="service4"
+ rep:principalName="service4"/>
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/_rep_principalPolicy.xml
similarity index 88%
copy from src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml
copy to src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/_rep_principalPolicy.xml
index eff8224..8f21635 100644
--- a/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random4/_rep_principalPolicy.xml
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/home/users/system/services/random5/_rep_principalPolicy.xml
@@ -20,7 +20,7 @@
rep:principalName="service4">
<entry0
jcr:primaryType="rep:PrincipalEntry"
- rep:privileges="{Name}[jcr:read,rep:userManagement]"
- rep:effectivePath="/home/users/system/services/random3">
+ rep:privileges="{Name}[jcr:read]"
+ rep:effectivePath="/effective/path/of/type/string">
</entry0>
</jcr:root>