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/03/16 12:52:35 UTC

svn commit: r1875242 - in /jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation: ValidationExecutor.java spi/impl/AdvancedFilterValidator.java

Author: kwin
Date: Mon Mar 16 12:52:34 2020
New Revision: 1875242

URL: http://svn.apache.org/viewvc?rev=1875242&view=rev
Log:
JCRVLT-415 always pass correct NodeContext

do not swallow exceptions

Modified:
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/ValidationExecutor.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidator.java

Modified: jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/ValidationExecutor.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/ValidationExecutor.java?rev=1875242&r1=1875241&r2=1875242&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/ValidationExecutor.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/ValidationExecutor.java Mon Mar 16 12:52:34 2020
@@ -21,6 +21,7 @@ import java.io.InputStream;
 import java.nio.file.Path;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -266,7 +267,7 @@ public final class ValidationExecutor {
     }
 
     private Collection<ValidationViolation> validateGenericJcrData(@Nullable InputStream input, @NotNull Path filePath, @NotNull Path basePath) throws IOException {
-        Map<String, Integer> nodePathsAndLineNumbers = new HashMap<>();
+        Map<String, Integer> nodePathsAndLineNumbers = new LinkedHashMap<>();
         Collection<ValidationViolation> enrichedMessages = new LinkedList<>();
         
         if (input != null) {
@@ -277,6 +278,7 @@ public final class ValidationExecutor {
                 for (Map.Entry<String, GenericJcrDataValidator> entry : genericJcrDataValidators.entrySet()) {
                     try {
                         GenericJcrDataValidator validator = entry.getValue();
+                        log.debug("Validate {} with validator '{}'", filePath, validator.getClass().getName());
                         if (validator.shouldValidateJcrData(filePath, basePath)) {
                             if (resettableInputStream == null) {
                                 boolean isAnotherValidatorInterested = genericJcrDataValidators.values().stream().filter(t-> !t.equals(validator)).anyMatch(x -> x.shouldValidateJcrData(filePath, basePath));
@@ -291,18 +293,19 @@ public final class ValidationExecutor {
                             if (messages != null && !messages.isEmpty()) {
                                 enrichedMessages.addAll(ValidationViolation.wrapMessages(entry.getKey(), messages, filePath, basePath, null, 0, 0));
                             }
-                        } else {
-                            // only do it if we haven't collected node paths from a previous run
-                            if (nodePathsAndLineNumbers.isEmpty()) {
-                                // convert file name to node path
-                                String nodePath = filePathToNodePath(filePath);
-                                log.debug("Found non-docview node '{}'", nodePath);
-                                nodePathsAndLineNumbers.put(nodePath, 0);
-                            }
+                        } 
+                        // only do it if we haven't collected node paths from a previous run
+                        if (nodePathsAndLineNumbers.isEmpty()) {
+                            // convert file name to node path
+                            String nodePath = filePathToNodePath(filePath);
+                            log.debug("Found non-docview node '{}'", nodePath);
+                            nodePathsAndLineNumbers.put(nodePath, 0);
                         }
                     } catch (RuntimeException e) {
                         if (!(e instanceof ValidatorException)) {
                             throw new ValidatorException(entry.getKey(), filePath, e);
+                        } else {
+                            throw e;
                         }
                     }
                 }
@@ -315,8 +318,9 @@ public final class ValidationExecutor {
             // collect node path for folder only
             nodePathsAndLineNumbers.put(filePathToNodePath(filePath), 0);
         }
+
         // generate node context
-        NodeContext nodeContext = new NodeContextImpl(filePathToNodePath(filePath), filePath, basePath);
+        NodeContext nodeContext = new NodeContextImpl(nodePathsAndLineNumbers.keySet().iterator().next(), filePath, basePath);
         for (Map.Entry<String, JcrPathValidator> entry : jcrPathValidators.entrySet()) {
             Collection<ValidationMessage> messages = entry.getValue().validateJcrPath(nodeContext, input == null);
             if (messages != null && !messages.isEmpty()) {

Modified: jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidator.java?rev=1875242&r1=1875241&r2=1875242&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidator.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidator.java Mon Mar 16 12:52:34 2020
@@ -298,9 +298,9 @@ public final class AdvancedFilterValidat
             boolean isRoot) {
         if (!isRoot) {
             // root has been validated already with validateJcrPath(...)
-            validateFileNodePath(nodeContext.getNodePath());
+            return validateFileNodePath(nodeContext.getNodePath());
         }
-        return DocumentViewXmlValidator.super.validate(node, nodeContext, isRoot);
+        return null;
     }
 
     /** Checks if the regex would at least have the chance to match if the matching path starts with root path.