Merge pull request #5 from bosschaert/filter-pattern

SLING-10041 Support the filter pattern option on the converter
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java
index 6498b95..949950f 100644
--- a/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java
@@ -30,6 +30,8 @@
 import org.apache.sling.feature.cpconverter.acl.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
+import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
+import org.apache.sling.feature.cpconverter.filtering.ResourceFilter;
 import org.apache.sling.feature.cpconverter.handlers.DefaultEntryHandlersManager;
 import org.apache.sling.feature.cpconverter.vltpkg.DefaultPackagesEventsEmitter;
 import org.eclipse.aether.RepositorySystem;
@@ -87,7 +89,9 @@
 
     public static final String CFG_API_REGIONS = "apiRegions";
 
-    public static final String CFP_EXPORT_TO_API_REGION = "exportToApiRegion";
+    public static final String CFG_EXPORT_TO_API_REGION = "exportToApiRegion";
+
+    public static final String CFG_FILTER_PATTERNS = "filterPatterns";
 
     public static final boolean DEFAULT_STRING_VALIDATION = false;
 
@@ -180,9 +184,15 @@
      * Specify the API Region to export all exported packages to, if not specified
      * packages will not be added to the api-regions extension.
      */
-    @Parameter(property = CFP_EXPORT_TO_API_REGION)
+    @Parameter(property = CFG_EXPORT_TO_API_REGION)
     private String exportToApiRegion;
 
+    /**
+     * Regex based pattern(s) to reject content-package archive entries.
+     */
+    @Parameter(property = CFG_FILTER_PATTERNS)
+    private List<String> filterPatterns;
+
     @Parameter(defaultValue="${repositorySystemSession}")
     private RepositorySystemSession repoSession;
 
@@ -245,7 +255,8 @@
                 .setAclManager(
                     new DefaultAclManager()
                 )
-                .setEmitter(DefaultPackagesEventsEmitter.open(fmOutput));
+                .setEmitter(DefaultPackagesEventsEmitter.open(fmOutput))
+                .setResourceFilter(getResourceFilter());
 
             if(contentPackages == null || contentPackages.isEmpty()) {
                 getLog().info("Project Artifact File: " + project.getArtifact());
@@ -293,6 +304,18 @@
 
     }
 
+    private ResourceFilter getResourceFilter() {
+        if (filterPatterns == null || filterPatterns.size() == 0)
+            return null;
+
+        RegexBasedResourceFilter filter = new RegexBasedResourceFilter();
+        for (String filterPattern : filterPatterns) {
+            filter.addFilteringPattern(filterPattern);
+        }
+
+        return filter;
+    }
+
     /**
      * For now this is a hack to update the local Maven Repo (.m2/repository) correctly
      * bypassing the Maven Installer as this is giving us grief