You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2019/05/29 14:30:44 UTC
[sling-org-apache-sling-fsresource] branch master updated:
SLING-8448 fsresource: Mark builtin properties as protected in "virtual
JCR"
This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git
The following commit(s) were added to refs/heads/master by this push:
new edf43bd SLING-8448 fsresource: Mark builtin properties as protected in "virtual JCR"
edf43bd is described below
commit edf43bdc0cac124bf5e870999ece101cf78c1f6a
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Wed May 29 16:30:32 2019 +0200
SLING-8448 fsresource: Mark builtin properties as protected in "virtual JCR"
---
.../internal/mapper/jcr/FsPropertyDefinition.java | 19 +++++++++++++++++--
.../sling/fsprovider/internal/JsonContentTest.java | 5 +++++
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
index 85920cb..b406fd7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsPropertyDefinition.java
@@ -18,14 +18,29 @@
*/
package org.apache.sling.fsprovider.internal.mapper.jcr;
+import java.util.HashSet;
+import java.util.Set;
+
import javax.jcr.PropertyType;
import javax.jcr.Value;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.version.OnParentVersionAction;
+import org.apache.jackrabbit.JcrConstants;
+
class FsPropertyDefinition implements PropertyDefinition {
-
+
+ private static final Set<String> PROTECTED_PROPERTY_NAMES = new HashSet<>();
+ static {
+ // from nt:base
+ PROTECTED_PROPERTY_NAMES.add(JcrConstants.JCR_PRIMARYTYPE);
+ PROTECTED_PROPERTY_NAMES.add(JcrConstants.JCR_MIXINTYPES);
+ // from mix:created
+ PROTECTED_PROPERTY_NAMES.add(JcrConstants.JCR_CREATED);
+ PROTECTED_PROPERTY_NAMES.add("jcr:createdBy");
+ }
+
private final String name;
public FsPropertyDefinition(String name) {
@@ -59,7 +74,7 @@ class FsPropertyDefinition implements PropertyDefinition {
@Override
public boolean isProtected() {
- return false;
+ return PROTECTED_PROPERTY_NAMES.contains(name);
}
@Override
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
index 9d953f5..2daed26 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/JsonContentTest.java
@@ -43,6 +43,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.nodetype.NodeType;
+import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.fsprovider.internal.TestUtils.RegisterFsResourcePlugin;
@@ -161,10 +162,14 @@ public class JsonContentTest {
assertEquals("/fs-test/folder2/content/toolbar/profiles/jcr:content", node.getPath());
assertEquals(6, node.getDepth());
+ assertTrue(node.hasProperty(JcrConstants.JCR_PRIMARYTYPE));
+ assertTrue(node.getProperty(JcrConstants.JCR_PRIMARYTYPE).getDefinition().isProtected());
+
assertTrue(node.hasProperty("jcr:title"));
assertEquals(PropertyType.STRING, node.getProperty("jcr:title").getType());
assertFalse(node.getProperty("jcr:title").isMultiple());
assertEquals("jcr:title", node.getProperty("jcr:title").getDefinition().getName());
+ assertFalse(node.getProperty("jcr:title").getDefinition().isProtected());
assertEquals("/fs-test/folder2/content/toolbar/profiles/jcr:content/jcr:title", node.getProperty("jcr:title").getPath());
assertEquals("Profiles", node.getProperty("jcr:title").getString());
assertEquals(PropertyType.BOOLEAN, node.getProperty("booleanProp").getType());