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());