You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/05/07 23:24:49 UTC

[sling-org-apache-sling-feature-cpconverter] branch master updated: resource filter stuff moved in a proper package

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

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


The following commit(s) were added to refs/heads/master by this push:
     new fda1191  resource filter stuff moved in a proper package
fda1191 is described below

commit fda1191d4c583f4af45f747744fb942d172e971b
Author: stripodi <st...@simos-mbp>
AuthorDate: Wed May 8 01:24:42 2019 +0200

    resource filter stuff moved in a proper package
---
 .../ContentPackage2FeatureModelConverter.java      | 20 ++++++++-----------
 ...ntentPackage2FeatureModelConverterLauncher.java |  5 ++++-
 .../{ => filtering}/RegexBasedResourceFilter.java  | 12 +++++++++--
 .../cpconverter/filtering/ResourceFilter.java      | 23 ++++++++++++++++++++++
 .../cpconverter/filtering/package-info.java        | 21 ++++++++++++++++++++
 .../ContentPackage2FeatureModelConverterTest.java  |  5 ++++-
 .../RegexBasedResourceFilterTest.java              |  3 ++-
 7 files changed, 72 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
index 2c76343..bd66980 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -43,6 +43,7 @@ import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.cpconverter.acl.AclManager;
+import org.apache.sling.feature.cpconverter.filtering.ResourceFilter;
 import org.apache.sling.feature.cpconverter.interpolator.SimpleVariablesInterpolator;
 import org.apache.sling.feature.cpconverter.interpolator.VariablesInterpolator;
 import org.apache.sling.feature.cpconverter.spi.BundlesDeployer;
@@ -77,10 +78,10 @@ public class ContentPackage2FeatureModelConverter {
 
     private final AclManager aclManager = new AclManager();
 
-    private final RegexBasedResourceFilter filter = new RegexBasedResourceFilter();
-
     private final VariablesInterpolator interpolator = new SimpleVariablesInterpolator();
 
+    private ResourceFilter resourceFilter;
+
     private BundlesDeployer artifactDeployer;
 
     private boolean strictValidation = false;
@@ -144,15 +145,6 @@ public class ContentPackage2FeatureModelConverter {
         return targetFeature;
     }
 
-    public void addFilteringPattern(String filteringPattern) {
-        requireNonNull(filteringPattern, "Null pattern to filter resources out is not a valid filtering pattern");
-        if (filteringPattern.isEmpty()) {
-            throw new IllegalArgumentException("Empty pattern to filter resources out is not a valid filtering pattern");
-        }
-
-        filter.addFilteringPattern(filteringPattern);
-    }
-
     public ContentPackage2FeatureModelConverter setId(String id) {
         this.id = id;
         return this;
@@ -168,6 +160,10 @@ public class ContentPackage2FeatureModelConverter {
         return this;
     }
 
+    public void setResourceFilter(ResourceFilter resourceFilter) {
+        this.resourceFilter = resourceFilter;
+    }
+
     public AclManager getAclManager() {
         return aclManager;
     }
@@ -442,7 +438,7 @@ public class ContentPackage2FeatureModelConverter {
 
         logger.info("Processing entry {}...", entryPath);
 
-        if (filter.isFilteredOut(entryPath)) {
+        if (resourceFilter != null && resourceFilter.isFilteredOut(entryPath)) {
             throw new IllegalArgumentException("Path '"
                                                + entryPath
                                                + "' in archive "
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
index 5393a29..ad5a5ce 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.vault.packaging.Dependency;
 import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage;
 import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
+import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -124,8 +125,10 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
                                                              .setProperties(properties);
 
             if (filteringPatterns != null && filteringPatterns.length > 0) {
+                RegexBasedResourceFilter filter = new RegexBasedResourceFilter();
+
                 for (String filteringPattern : filteringPatterns) {
-                    converter.addFilteringPattern(filteringPattern);    
+                    filter.addFilteringPattern(filteringPattern);
                 }
             }
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java b/src/main/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilter.java
similarity index 79%
rename from src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java
rename to src/main/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilter.java
index 52785b5..d6fd02a 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilter.java
@@ -14,7 +14,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.sling.feature.cpconverter;
+package org.apache.sling.feature.cpconverter.filtering;
+
+import static java.util.Objects.requireNonNull;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -23,13 +25,19 @@ import java.util.regex.Pattern;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class RegexBasedResourceFilter {
+public final class RegexBasedResourceFilter implements ResourceFilter {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
     private final List<Pattern> patterns = new LinkedList<>();
 
     public void addFilteringPattern(String filteringPattern) {
+        requireNonNull(filteringPattern, "Null pattern to filter resources out is not a valid filtering pattern");
+
+        if (filteringPattern.isEmpty()) {
+            throw new IllegalArgumentException("Empty pattern to filter resources out is not a valid filtering pattern");
+        }
+
         patterns.add(Pattern.compile(filteringPattern));
     }
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/filtering/ResourceFilter.java b/src/main/java/org/apache/sling/feature/cpconverter/filtering/ResourceFilter.java
new file mode 100644
index 0000000..2959efc
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/cpconverter/filtering/ResourceFilter.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.sling.feature.cpconverter.filtering;
+
+public interface ResourceFilter {
+
+    boolean isFilteredOut(String path);
+
+}
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/filtering/package-info.java b/src/main/java/org/apache/sling/feature/cpconverter/filtering/package-info.java
new file mode 100644
index 0000000..2b79a34
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/cpconverter/filtering/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+/**
+ * Resources filter definition and default implementation.
+ */
+package org.apache.sling.feature.cpconverter.filtering;
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
index b924a4c..0a4ef47 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -38,6 +38,7 @@ import java.util.zip.ZipFile;
 import org.apache.commons.io.FileUtils;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.junit.After;
 import org.junit.Before;
@@ -242,7 +243,9 @@ public class ContentPackage2FeatureModelConverterTest {
 
     @Test(expected = IllegalArgumentException.class)
     public void verifyFilteringOutUndesiredPackages() throws Exception {
-        converter.addFilteringPattern(".*\\/install(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.zip$).*");
+        RegexBasedResourceFilter resourceFilter = new RegexBasedResourceFilter();
+        resourceFilter.addFilteringPattern(".*\\/install(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.zip$).*");
+        converter.setResourceFilter(resourceFilter);
 
         URL packageUrl = getClass().getResource("test-content-package-unacceptable.zip");
         File packageFile = FileUtils.toFile(packageUrl);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilterTest.java
similarity index 95%
rename from src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java
rename to src/test/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilterTest.java
index 346d4f7..a2bac90 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/filtering/RegexBasedResourceFilterTest.java
@@ -14,10 +14,11 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.sling.feature.cpconverter;
+package org.apache.sling.feature.cpconverter.filtering;
 
 import static org.junit.Assert.*;
 
+import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;