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/15 14:36:00 UTC
[sling-org-apache-sling-feature-analyser] 01/01: SLING-11208 - Allow to enable validators by name
This is an automated email from the ASF dual-hosted git repository.
cschneider pushed a commit to branch SLING-11208
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-analyser.git
commit 8cbaa0155d386f7adade655c84022132507fc17a
Author: Christian Schneider <cs...@adobe.com>
AuthorDate: Tue Mar 15 15:35:44 2022 +0100
SLING-11208 - Allow to enable validators by name
---
.../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(),