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.