You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2020/12/09 17:45:23 UTC

[jackrabbit-filevault] branch master updated: JCRVLT-485 do not validate protected/mandatory for JCR system properties which are handled specially in filevault

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git


The following commit(s) were added to refs/heads/master by this push:
     new 0fa305d  JCRVLT-485 do not validate protected/mandatory for JCR system properties which are handled specially in filevault
0fa305d is described below

commit 0fa305d5b0f6dec43e181db3fabeb32603d69501
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Mon Dec 7 15:13:42 2020 +0100

    JCRVLT-485 do not validate protected/mandatory for JCR system properties
    which are handled specially in filevault
---
 .../spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java          | 13 ++++++++++---
 .../validation/spi/impl/nodetype/NodeTypeValidatorTest.java |  1 -
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
index ec1fb2d..9961fc0 100644
--- a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
+++ b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/JcrNodeTypeMetaDataImpl.java
@@ -87,8 +87,11 @@ public class JcrNodeTypeMetaDataImpl implements JcrNodeTypeMetaData {
     static final String MESSAGE_MANDATORY_PROPERTY_MISSING = "Mandatory property '%s' missing in node with types [%s] at %s";
     static final String MESSAGE_MANDATORY_PROPERTY_WITH_WRONG_TYPE = "Mandatory property '%s' has type '%s' while it should have '%s' in node with types [%s] at %s";
 
-    private static final Collection<Name> ALLOWED_PROTECTED_PROPERTIES = Arrays.asList(NameConstants.JCR_PRIMARYTYPE,
-            NameConstants.JCR_MIXINTYPES);
+    // do not validate protected/mandatory for JCR system properties that are handled by FileVault specially 
+    // (https://github.com/apache/jackrabbit-filevault/blob/f785fcb24d4cbd01c734e9273310a925c29ae15b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L921)
+    private static final Collection<Name> JCR_SYSTEM_PROPERTIES = Arrays.asList(
+            NameConstants.JCR_PRIMARYTYPE, NameConstants.JCR_MIXINTYPES, NameConstants.JCR_UUID,
+            NameConstants.JCR_BASEVERSION, NameConstants.JCR_PREDECESSORS, NameConstants.JCR_SUCCESSORS, NameConstants.JCR_VERSIONHISTORY);
 
     private static final Name NT_REP_POLICY = NameFactoryImpl.getInstance().create(Name.NS_REP_URI, "Policy");
     private static final Name NT_REP_AUTHORIZABLE = NameFactoryImpl.getInstance().create(Name.NS_REP_URI, "Authorizable");
@@ -483,6 +486,10 @@ public class JcrNodeTypeMetaDataImpl implements JcrNodeTypeMetaData {
             if (mandatoryPropertyDefinition.isAutoCreated()) {
                 continue;
             }
+            // ignore certain properties which are handled specially in filevault
+            if (JCR_SYSTEM_PROPERTIES.contains(mandatoryPropertyDefinition.getName()) ) {
+                continue;
+            }
             try {
                 if (!propertyTypesByName.containsKey(mandatoryPropertyDefinition.getName())) {
                     messages.add(new ValidationMessage(severity,
@@ -564,7 +571,7 @@ public class JcrNodeTypeMetaDataImpl implements JcrNodeTypeMetaData {
         } catch (ConstraintViolationException t) {
             return Optional.of(CONSTRAINT_PROPERTY_NOT_ALLOWED);
         }
-        if (applicablePropertyDefinition.isProtected() && !allowProtected && !ALLOWED_PROTECTED_PROPERTIES.contains(name)) {
+        if (applicablePropertyDefinition.isProtected() && !allowProtected && !JCR_SYSTEM_PROPERTIES.contains(name)) {
             return Optional.of(CONSTRAINT_PROPERTY_PROTECTED);
         }
 
diff --git a/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/NodeTypeValidatorTest.java b/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/NodeTypeValidatorTest.java
index 44b0cc2..f5843db 100644
--- a/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/NodeTypeValidatorTest.java
+++ b/vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/nodetype/NodeTypeValidatorTest.java
@@ -292,7 +292,6 @@ public class NodeTypeValidatorTest {
         Assert.assertThat(validator.done(), AnyValidationMessageMatcher.noValidationInCollection());
     }
 
-    @Ignore("JCRVLT-485")
     @Test
     public void testMandatoryVersioningProperties() throws IOException, RepositoryException, ParseException {
         validator = createValidator(filter, NameConstants.NT_UNSTRUCTURED, "tccl:test-nodetypes.cnd");