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