You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cs...@apache.org on 2022/03/21 14:20:37 UTC

[sling-org-apache-sling-feature-analyser] branch master updated: SLING-11208 - Allow to enable validators by name (#37)

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

cschneider pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-analyser.git


The following commit(s) were added to refs/heads/master by this push:
     new f332e15  SLING-11208 - Allow to enable validators by name (#37)
f332e15 is described below

commit f332e15765d808df8b6a20e662c923ee019a7b67
Author: Christian Schneider <cs...@adobe.com>
AuthorDate: Mon Mar 21 15:20:32 2022 +0100

    SLING-11208 - Allow to enable validators by name (#37)
---
 .../analyser/task/impl/CheckContentPackages.java   | 38 +++++++++++++++-------
 .../task/impl/CheckContentPackagesTest.java        |  2 +-
 2 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackages.java b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackages.java
index 5764ed2..7fb03f4 100644
--- a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackages.java
+++ b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackages.java
@@ -22,13 +22,19 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.Set;
 
 import org.apache.jackrabbit.vault.validation.ValidationViolation;
 import org.apache.jackrabbit.vault.validation.impl.util.ValidatorSettingsImpl;
 import org.apache.jackrabbit.vault.validation.spi.ValidationMessageSeverity;
+import org.apache.jackrabbit.vault.validation.spi.ValidatorFactory;
 import org.apache.jackrabbit.vault.validation.spi.ValidatorSettings;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
@@ -42,8 +48,8 @@ import org.slf4j.LoggerFactory;
  * This analyzer checks for bundles and configurations in packages
  */
 public class CheckContentPackages implements AnalyserTask {
-    // Comma separated list of validator ids to disable
-    static final String DISABLED_VALIDATORS = "disabled-validators";
+    // Comma separated list of validator ids to enable
+    static final String ENABLED_VALIDATORS = "enabled-validators";
     static final String MAX_REPORT_LEVEL = "max-report-level";
     private Logger log = LoggerFactory.getLogger(this.getClass());
     
@@ -59,8 +65,8 @@ public class CheckContentPackages implements AnalyserTask {
 
     @Override
     public void execute(final AnalyserTaskContext ctx) throws Exception {
-        String disabledValidators = ctx.getConfiguration().get(DISABLED_VALIDATORS);
-        Map<String, ValidatorSettings> validatorSettings = disableValidators(disabledValidators);
+        String enabledValidators = ctx.getConfiguration().get(ENABLED_VALIDATORS);
+        Map<String, ValidatorSettings> validatorSettings = enableValidators(enabledValidators);
         String maxReportLevelSt = ctx.getConfiguration().get(MAX_REPORT_LEVEL);
         ValidationMessageSeverity maxReportLevel = maxReportLevelSt == null ? ValidationMessageSeverity.WARN : ValidationMessageSeverity.valueOf(maxReportLevelSt); 
         for (final ContentPackageDescriptor cp : ctx.getFeatureDescriptor().getDescriptors(ContentPackageDescriptor.class)) {
@@ -73,18 +79,28 @@ public class CheckContentPackages implements AnalyserTask {
         }
     }
 
-    private Map<String, ValidatorSettings> disableValidators(String disabledValidators) {
+    private Map<String, ValidatorSettings> enableValidators(String enabledValidators) {
+        ServiceLoader<ValidatorFactory> validatorFactories = ServiceLoader.load(ValidatorFactory.class, PackageValidator.class.getClassLoader());
+
         Map<String, ValidatorSettings> validatorSettings = new HashMap<>();
-        if (disabledValidators == null) {
-            return validatorSettings;
-        }
-        String[] disabledValidatorsAr = disabledValidators.split(",");
-        for (String validatorId : disabledValidatorsAr) {
-            validatorSettings.put(validatorId, new ValidatorSettingsImpl(true));
+        Set<String> enabledValidatorsSet = split(enabledValidators);
+        for (ValidatorFactory validatorFactory : validatorFactories) {
+            String validatorId = validatorFactory.getId();
+            boolean enabled = enabledValidatorsSet.contains(validatorId);
+            validatorSettings.put(validatorId, new ValidatorSettingsImpl(!enabled));
         }
         return validatorSettings;
     }
 
+    private Set<String> split(String enabledValidators) {
+        HashSet<String> enabled = new HashSet<String>();
+        if (enabledValidators != null) {
+            List<String> enabledList = Arrays.asList(enabledValidators.split(","));
+            enabled.addAll(enabledList);
+        }
+        return enabled;
+    }
+
     private void validatePackage(final AnalyserTaskContext ctx, 
             final ContentPackageDescriptor cp,
             URL artifactFile, Map<String, ValidatorSettings> validatorSettings, 
diff --git a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackagesTest.java b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackagesTest.java
index 6d14994..01603bb 100644
--- a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackagesTest.java
+++ b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackagesTest.java
@@ -57,7 +57,7 @@ public class CheckContentPackagesTest {
 
     @Test 
     public void testContentPackageWithInvalidXMLShouldBeReported() throws Exception {
-        ctx.getConfiguration().put(CheckContentPackages.DISABLED_VALIDATORS, "jackrabbit-filter");
+        ctx.getConfiguration().put(CheckContentPackages.ENABLED_VALIDATORS, "jackrabbit-docviewparser");
         ctx.getConfiguration().put(CheckContentPackages.MAX_REPORT_LEVEL, "ERROR");
         final ContentPackageDescriptorImpl cpd = new ContentPackageDescriptorImpl("content", new Artifact(ArtifactId.parse("g:c:1")), 
                 getClass().getClassLoader().getResource("test-invalid-xml.zip").toURI().toURL(),