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/01/27 11:10:06 UTC

svn commit: r1873203 - in /jackrabbit/commons/filevault-package-maven-plugin/trunk: ./ src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ src/site/markdown/ src/test/java/org/apache/jackrabbit/filevault/maven/packaging/

Author: kwin
Date: Mon Jan 27 11:10:05 2020
New Revision: 1873203

URL: http://svn.apache.org/viewvc?rev=1873203&view=rev
Log:
JCRVLT-404 allow to adjust validator settings per package id

Modified:
    jackrabbit/commons/filevault-package-maven-plugin/trunk/.travis.yml
    jackrabbit/commons/filevault-package-maven-plugin/trunk/README.md
    jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/howto_release.md
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/validators.md
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/.travis.yml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/.travis.yml?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/.travis.yml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/.travis.yml Mon Jan 27 11:10:05 2020
@@ -64,4 +64,4 @@ cache:
     # This avoids re-downloading the JDK every time, but Travis recommends not to do it
     # - $HOME/.jabba/
     # Cache Maven repo
-    - $HOME/.m2
\ No newline at end of file
+    #- $HOME/.m2
\ No newline at end of file

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/README.md
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/README.md?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/README.md (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/README.md Mon Jan 27 11:10:05 2020
@@ -3,8 +3,8 @@
 Welcome to Apache Jackrabbit FileVault Package Maven Plugin
 ===========================================================
 
-The Apache Jackrabbit FileVault package maven plugin is an Apache maven plugin 
-that simplifies the creation of content package maven artifacts. The content 
+The Apache Jackrabbit FileVault package maven plugin is an Apache Maven Plugin 
+that simplifies the creation of content package Maven artifacts. The content 
 packages can later be used to install content into a JCR repository using the 
 Apache Jackrabbit FileVault packaging runtime.
 

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml Mon Jan 27 11:10:05 2020
@@ -259,6 +259,36 @@
                 </executions>
             </plugin>
         </plugins>
+        <pluginManagement>
+            <plugins>
+                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+                <plugin>
+                    <groupId>org.eclipse.m2e</groupId>
+                    <artifactId>lifecycle-mapping</artifactId>
+                    <version>1.0.0</version>
+                    <configuration>
+                        <lifecycleMappingMetadata>
+                            <pluginExecutions>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>org.apache.maven.plugins</groupId>
+                                        <artifactId>maven-plugin-plugin</artifactId>
+                                        <versionRange>[3.6.0,)</versionRange>
+                                        <goals>
+                                            <goal>descriptor</goal>
+                                            <goal>helpmojo</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore></ignore>
+                                    </action>
+                                </pluginExecution>
+                            </pluginExecutions>
+                        </lifecycleMappingMetadata>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
 
     <!-- ====================================================================== -->

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java Mon Jan 27 11:10:05 2020
@@ -28,6 +28,7 @@ import org.apache.commons.lang3.StringUt
 import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.DependencyResolver;
 import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
 import org.apache.jackrabbit.vault.packaging.Dependency;
+import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.PackageInfo;
 import org.apache.jackrabbit.vault.validation.ValidationExecutorFactory;
 import org.apache.jackrabbit.vault.validation.spi.ValidationMessageSeverity;
@@ -42,6 +43,7 @@ import org.apache.maven.plugin.AbstractM
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
@@ -55,19 +57,21 @@ public abstract class AbstractValidateMo
     @Parameter(property = "vault.skipValidation", defaultValue = "false", required = true)
     boolean skipValidation;
 
-    /** All validator settings in a map. The keys are the validator ids and the values
-     * are a complex object of type ValdidatorSettings.
+    /** All validator settings in a map. The keys are the validator ids (optionally suffixed by {@code :<package group>:<package name>} to be restricted to certain packages).
+     * You can use {@code *} as wildcard value for {@code package group}.
+     * Alternatively you can use the suffix {@code :subpackages} to influence the settings for all sub packages only!
+     * The values are a complex object of type ValdidatorSettings.
      * An example configuration looks like
      * <pre>
      *  &lt;jackrabbit-filter&gt;
      *      &lt;options&gt;
-     *          &lt;
+     *          &lt;severityForUncoveredAncestorNodes&gt;error&lt;/severityForUncoveredAncestorNodes&gt;
      *      &lt;/options&gt;
      *  &lt;/jackrabbit-filter&gt;
      * </pre>
      */
     @Parameter
-    Map<String, ValidatorSettings> validatorsSettings;
+    private Map<String, ValidatorSettings> validatorsSettings;
 
     /** Controls if errors during dependency validation should fail the build. 
      *  
@@ -263,5 +267,69 @@ public abstract class AbstractValidateMo
         }
     }
 
+
+    protected void disableChecksOnlyWorkingForPackages() throws MojoExecutionException {
+        final ValidatorSettings filterValidatorSettings;
+        if (validatorsSettings == null) {
+            validatorsSettings = new HashMap<>();
+        }
+        if (validatorsSettings.containsKey(AdvancedFilterValidatorFactory.ID)) {
+            getLog().warn("Overwriting settings for validator " + AdvancedFilterValidatorFactory.ID + " as some checks do not work reliably for this mojo!"); 
+            filterValidatorSettings = validatorsSettings.get(AdvancedFilterValidatorFactory.ID);
+        } else {
+            filterValidatorSettings = new ValidatorSettings();
+        }
+        // orphaned filter rules cannot be realiably detected, as the package is not yet build
+        filterValidatorSettings.addOption(AdvancedFilterValidatorFactory.OPTION_SEVERITY_FOR_ORPHANED_FILTER_RULES, "debug");
+    }
+    
     public abstract void doExecute() throws MojoExecutionException, MojoFailureException;
+    
+    protected Map<String, ValidatorSettings> getValidatorSettingsForPackage(PackageId packageId, boolean isSubPackage) {
+        return getValidatorSettingsForPackage(getLog(), validatorsSettings, packageId, isSubPackage);
+    }
+        
+    static Map<String, ValidatorSettings> getValidatorSettingsForPackage(Log log, Map<String, ValidatorSettings> validatorsSettings, PackageId packageId, boolean isSubPackage) {
+        Map<String, ValidatorSettings> validatorSettingsById = new HashMap<>();
+        if (validatorsSettings == null) {
+            return validatorSettingsById;
+        }
+        for (Map.Entry<String, ValidatorSettings> validatorSettingByIdAndPackage : validatorsSettings.entrySet()) {
+            // does this setting belong to this package?
+            boolean shouldAdd = false;
+            String[] parts = validatorSettingByIdAndPackage.getKey().split(":", 3);
+            final String validatorId = parts[0];
+            
+            if (parts.length == 2) {
+                if (parts[1].equals("subpackage")) {
+                    shouldAdd = isSubPackage;
+                } else {
+                    log.warn("Invalid validatorSettings key '" + validatorSettingByIdAndPackage.getKey() +"'" );
+                    continue;
+                }
+            }
+            // does it contain a package id filter?
+            else if (parts.length == 3) {
+                String group = parts[1];
+                String name = parts[2];
+                if (group != "*") {
+                    if (!group.equals(packageId.getGroup())) {
+                        log.debug("Not applying validator settings with id '" + validatorSettingByIdAndPackage.getKey() +"' as it does not match the package " + packageId);
+                        continue;
+                    }
+                }
+                if (!name.equals(packageId.getName())) {
+                    log.debug("Not applying validator settings with id '" + validatorSettingByIdAndPackage.getKey() +"' as it does not match the package " + packageId);
+                    continue;
+                }
+                shouldAdd = true;
+            } else {
+                shouldAdd = true;
+            }
+            if (shouldAdd) {
+                validatorSettingsById.put(validatorId, validatorSettingByIdAndPackage.getValue());
+            }
+        }
+        return validatorSettingsById;
+    }
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java Mon Jan 27 11:10:05 2020
@@ -24,7 +24,6 @@ import java.io.InputStream;
 import java.nio.file.Paths;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
@@ -34,7 +33,6 @@ import org.apache.jackrabbit.vault.util.
 import org.apache.jackrabbit.vault.validation.ValidationExecutor;
 import org.apache.jackrabbit.vault.validation.ValidationViolation;
 import org.apache.jackrabbit.vault.validation.spi.ValidationContext;
-import org.apache.jackrabbit.vault.validation.spi.impl.AdvancedFilterValidatorFactory;
 import org.apache.maven.lifecycle.LifecycleExecutor;
 import org.apache.maven.lifecycle.LifecycleNotFoundException;
 import org.apache.maven.lifecycle.LifecyclePhaseNotFoundException;
@@ -59,8 +57,11 @@ import org.codehaus.plexus.util.Abstract
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.Scanner;
 
-/** Validates individual files with all registered validators. This is only active for incremental builds (i.e. inside m2e)
-    or when mojo "validate-package" is not executed in the current Maven execution */
+/** 
+ * Validates individual files with all registered validators. This is only active for incremental builds (i.e. inside m2e)
+ * or when mojo "validate-package" is not executed in the current Maven execution
+ * @see <a href="https://jackrabbit.apache.org/filevault-package-maven-plugin/validators.html">Validators</a>
+ */
 @Mojo(name = "validate-files", defaultPhase = LifecyclePhase.PROCESS_CLASSES, requiresDependencyResolution = ResolutionScope.COMPILE, threadSafe = true)
 public class ValidateFilesMojo extends AbstractValidateMojo {
 
@@ -141,20 +142,6 @@ public class ValidateFilesMojo extends A
     public ValidateFilesMojo() {
     }
 
-    private void disableChecksOnlyWorkingForPackages() throws MojoExecutionException {
-        final ValidatorSettings filterValidatorSettings;
-        if (validatorsSettings == null) {
-            validatorsSettings = new HashMap<>();
-        }
-        if (validatorsSettings.containsKey(AdvancedFilterValidatorFactory.ID)) {
-            getLog().warn("Overwriting settings for validator " + AdvancedFilterValidatorFactory.ID + " as some checks do not work reliably for this mojo!"); 
-            filterValidatorSettings = validatorsSettings.get(AdvancedFilterValidatorFactory.ID);
-        } else {
-            filterValidatorSettings = new ValidatorSettings();
-        }
-        // orphaned filter rules cannot be realiably detected, as the package is not yet build
-        filterValidatorSettings.addOption(AdvancedFilterValidatorFactory.OPTION_SEVERITY_FOR_ORPHANED_FILTER_RULES, "debug");
-    }
 
     @Override
     public void doExecute() throws MojoExecutionException, MojoFailureException {
@@ -187,7 +174,7 @@ public class ValidateFilesMojo extends A
             File generatedMetaInfRootDirectory = new File(workDirectory, Constants.META_INF);
             getLog().info("Using generatedMetaInfRootDirectory: " + generatedMetaInfRootDirectory + " and metaInfRootDir: " + metaInfRootDirectory);
             ValidationContext context = new DirectoryValidationContext(generatedMetaInfRootDirectory, metaInfRootDirectory, resolver, getLog());
-            ValidationExecutor executor = validationExecutorFactory.createValidationExecutor(context, false, false, validatorsSettings);
+            ValidationExecutor executor = validationExecutorFactory.createValidationExecutor(context, false, false, getValidatorSettingsForPackage(context.getProperties().getId(), false));
             if (executor == null) {
                 throw new MojoExecutionException("No registered validators found!");
             }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java Mon Jan 27 11:10:05 2020
@@ -44,7 +44,10 @@ import org.apache.maven.plugins.annotati
 import org.xml.sax.SAXException;
 
 
-/** Validates the whole package with all registered validators. This is only active for incremental builds (i.e. inside m2e) */
+/** 
+ * Validates the whole package with all registered validators.
+ * @see <a href="https://jackrabbit.apache.org/filevault-package-maven-plugin/validators.html">Validators</a>
+ */
 @Mojo(
         name = "validate-package", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = false, threadSafe = true)
 public class ValidatePackageMojo extends AbstractValidateMojo {
@@ -79,7 +82,7 @@ public class ValidatePackageMojo extends
         try (Archive archive = new ZipArchive(file)) {
             archive.open(true);
             context = new ArchiveValidationContextImpl(archive, file.toPath(), resolver, getLog());
-            executor = validationExecutorFactory.createValidationExecutor(context, false, enforceRecursiveSubpackageValidation, validatorsSettings);
+            executor = validationExecutorFactory.createValidationExecutor(context, false, enforceRecursiveSubpackageValidation, getValidatorSettingsForPackage(context.getProperties().getId(), false));
             if (executor != null) {
                 validationHelper.printUsedValidators(getLog(), executor, context, true);
                 validateArchive(archive, file.toPath(), context, executor);
@@ -128,7 +131,7 @@ public class ValidatePackageMojo extends
                 subArchive.open(true);
                 SubPackageValidationContext subPackageValidationContext = new SubPackageValidationContext(context, subArchive, subPackagePath, resolver, getLog());
                 ValidationExecutor subPackageValidationExecutor = validationExecutorFactory
-                        .createValidationExecutor(subPackageValidationContext, true, enforceRecursiveSubpackageValidation, validatorsSettings);
+                        .createValidationExecutor(subPackageValidationContext, true, enforceRecursiveSubpackageValidation, getValidatorSettingsForPackage(subPackageValidationContext.getProperties().getId(), true));
                 if (subPackageValidationExecutor != null) {
                     validationHelper.printUsedValidators(getLog(), executor, subPackageValidationContext, false);
                     validateArchive(subArchive, subPackagePath, subPackageValidationContext, subPackageValidationExecutor);

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.java?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.java Mon Jan 27 11:10:05 2020
@@ -39,14 +39,16 @@ public class ValidatorSettings implement
         this.defaultSeverity = defaultSeverity;
     }
 
-    public void setDefaultSeverity(String defaultSeverity) {
+    public ValidatorSettings setDefaultSeverity(String defaultSeverity) {
         if (defaultSeverity != null) {
             this.defaultSeverity = ValidationMessageSeverity.valueOf(defaultSeverity.toUpperCase());
         }
+        return this;
     }
 
-    protected String addOption(String key, String value) {
-        return options.put(key, value);
+    protected ValidatorSettings addOption(String key, String value) {
+        options.put(key, value);
+        return this;
     }
 
     @Override
@@ -64,4 +66,42 @@ public class ValidatorSettings implement
         return isDisabled;
     }
 
+    @Override
+    public String toString() {
+        return "ValidatorSettings [isDisabled=" + isDisabled + ", "
+                + (defaultSeverity != null ? "defaultSeverity=" + defaultSeverity + ", " : "")
+                + (options != null ? "options=" + options : "") + "]";
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((defaultSeverity == null) ? 0 : defaultSeverity.hashCode());
+        result = prime * result + (isDisabled ? 1231 : 1237);
+        result = prime * result + ((options == null) ? 0 : options.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        ValidatorSettings other = (ValidatorSettings) obj;
+        if (defaultSeverity != other.defaultSeverity)
+            return false;
+        if (isDisabled != other.isDisabled)
+            return false;
+        if (options == null) {
+            if (other.options != null)
+                return false;
+        } else if (!options.equals(other.options))
+            return false;
+        return true;
+    }
+
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/howto_release.md
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/howto_release.md?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/howto_release.md (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/howto_release.md Mon Jan 27 11:10:05 2020
@@ -285,8 +285,6 @@ Jackrabbit project logo are trademarks o
 
 ```
 
-
-<!-- references -->
 [0]: http://www.apache.org/dev/release-signing.html#generate
 [1]: http://www.apache.org/dev/release-signing.html#apache-wot
 [2]: https://repository.apache.org/index.html#stagingRepositories

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/validators.md
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/validators.md?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/validators.md (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/markdown/validators.md Mon Jan 27 11:10:05 2020
@@ -26,7 +26,7 @@ Look there on which validators are conta
 
 Configuration
 --------
-It is possible to adjust every validator registered in the system (both default and external validators) with the parameter `validatorsSettings`. This is a map with the keys being the validator ids and the values being complex objects.
+It is possible to adjust every validator registered in the system (both default and external validators) with the parameter `validatorsSettings`. This is a map with the keys being the validator ids (and optionally suffixed by `:<package group>:<package name>` to restrict to only certain package ids) and the values being complex objects.
 Here is an example configuration
 
 ```
@@ -39,6 +39,10 @@ Here is an example configuration
         <severityForUncoveredAncestorNodes>error</severityForUncoveredAncestorNodes>
       </options>
     </jackrabbit-filter>
+    <!-- later items potentially overwrite earlier items -->
+    <jackrabbit-filter:mygroup:mypackage>
+      <isDisabled>true</isDisabled><!-- disable the validator for a specific package -->
+    </jackrabbit-filter>
   </validatorsSettings>
 </configuration>
 ```

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java?rev=1873203&r1=1873202&r2=1873203&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java Mon Jan 27 11:10:05 2020
@@ -17,10 +17,14 @@
 package org.apache.jackrabbit.filevault.maven.packaging;
 
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.jackrabbit.vault.packaging.Dependency;
+import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.InvalidArtifactRTException;
+import org.apache.maven.plugin.logging.SystemStreamLog;
 import org.hamcrest.Matchers;
 import org.junit.Assert;
 import org.junit.Test;
@@ -34,18 +38,41 @@ public class AbstractValidateMojoTest {
                     Matchers.hasEntry(Dependency.fromString("group1:name1"), new DefaultArtifact("groupId1", "artifactId1", "", "", "", "", null)),
                     Matchers.hasEntry(Dependency.fromString("group2:name2"), new DefaultArtifact("groupId2", "artifactId2", "", "", "", "", null)),
                     Matchers.aMapWithSize(2)));
-       
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testInvalidMap1() {
         AbstractValidateMojo.resolveMap(Arrays.asList("group1:=artifactId1")); 
-       
     }
 
     @Test(expected = InvalidArtifactRTException.class)
     public void testInvalidMap2() {
         AbstractValidateMojo.resolveMap(Arrays.asList("group1:=:groupId")); 
-       
+    }
+
+    @Test
+    public void testGetValidatorSettingsForPackage() {
+        Map<String, ValidatorSettings> validatorsSettings = new HashMap<>();
+        validatorsSettings.put("id1", new ValidatorSettings().addOption("id1", "foo"));
+        validatorsSettings.put("id2:mygroup:myname", new ValidatorSettings().addOption("id2", "foo"));
+        validatorsSettings.put("id3:subpackage", new ValidatorSettings().addOption("id3", "foo"));
+        validatorsSettings.put("id4:invalid", new ValidatorSettings().addOption("id4", "foo"));
+        validatorsSettings.put("id5:othergroup:myname", new ValidatorSettings().addOption("id5", "foo"));
+        validatorsSettings.put("id6:mygroup:myothername", new ValidatorSettings().addOption("id3", "foo"));
+        validatorsSettings.put("id7:", new ValidatorSettings().addOption("id7", "foo"));
+        
+        Map<String, ValidatorSettings> actualValidatorSettings = AbstractValidateMojo.getValidatorSettingsForPackage(new SystemStreamLog(), validatorsSettings, PackageId.fromString("mygroup:myname:1.0.0"), false);
+        Map<String, ValidatorSettings> expectedValidatorSettings = new HashMap<>();
+        expectedValidatorSettings.put("id1", new ValidatorSettings().addOption("id1", "foo"));
+        expectedValidatorSettings.put("id2", new ValidatorSettings().addOption("id2", "foo"));
+        Assert.assertThat(actualValidatorSettings, Matchers.equalTo(expectedValidatorSettings));
+        
+        actualValidatorSettings = AbstractValidateMojo.getValidatorSettingsForPackage(new SystemStreamLog(), validatorsSettings, PackageId.fromString("mygroup:myname:1.0.0"), true);
+        expectedValidatorSettings.put("id3", new ValidatorSettings().addOption("id3", "foo"));
+        Assert.assertThat(actualValidatorSettings, Matchers.equalTo(expectedValidatorSettings));
+        
+        actualValidatorSettings = AbstractValidateMojo.getValidatorSettingsForPackage(new SystemStreamLog(), null, PackageId.fromString("mygroup:myname:1.0.0"), true);
+        expectedValidatorSettings.clear();
+        Assert.assertThat(actualValidatorSettings, Matchers.equalTo(expectedValidatorSettings));
     }
 }