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

cziegeler pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 3e93661  SLING-7961 : Adjust feature file reading to latest state
3e93661 is described below

commit 3e936619ae0cbd088f55d4c2270c950abf4bb8c3
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Oct 1 10:43:17 2018 +0200

    SLING-7961 : Adjust feature file reading to latest state
---
 .../sling/feature/maven/FeatureProjectConfig.java  | 32 +++++++++++++++++++++-
 .../apache/sling/feature/maven/Preprocessor.java   | 24 +++++++++-------
 .../feature/maven/mojos/AbstractFeatureMojo.java   | 26 ++++++++++++++++++
 3 files changed, 71 insertions(+), 11 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java 
b/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
index 137b47d..1edc63c 100644
--- a/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
+++ b/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
@@ -22,8 +22,16 @@ public class FeatureProjectConfig {
 
     public static final String CFG_FEATURES = "features";
 
+    public static final String CFG_FEATURES_INCLUDES = "featuresIncludes";
+
+    public static final String CFG_FEATURES_EXCLUDES = "featuresExcludes";
+
     public static final String CFG_TEST_FEATURES = "testFeatures";
 
+    public static final String CFG_TEST_FEATURES_INCLUDES = 
"testFeaturesIncludes";
+
+    public static final String CFG_TEST_FEATURES_EXCLUDES = 
"testFeaturesExcludes";
+
     public static final String CFG_SKIP_ADD_FEATURE_DEPENDENCIES = 
"skipAddFeatureDependencies";
 
     public static final String CFG_SKIP_ADD_TEST_FEATURE_DEPENDENCIES = 
"skipAddTestFeatureDependencies";
@@ -37,10 +45,16 @@ public class FeatureProjectConfig {
 
     public static final String DEFAULT_FEATURE_DIR = "src/main/features";
 
-    public static final String DEFAULT_TEST_FEATURE_DIR = 
"src/test/osgi/features";
+    public static final String DEFAULT_FEATURE_INCLUDES = "**/*.json";
+
+    public static final String DEFAULT_TEST_FEATURE_DIR = "src/test/features";
 
     private final String featuresDirName;
 
+    private final String includes;
+
+    private final String excludes;
+
     private final boolean skipAddDep;
 
     private final String name;
@@ -67,11 +81,15 @@ public class FeatureProjectConfig {
         final String defaultDir;
         final String skipAddDepCfgName;
         final String defaultSkipValue;
+        final String incCfgName;
+        final String exCfgName;
         if ( test ) {
             featuresDirCfgName = CFG_TEST_FEATURES;
             defaultDir = DEFAULT_TEST_FEATURE_DIR;
             this.scope = Artifact.SCOPE_TEST;
             skipAddDepCfgName = CFG_SKIP_ADD_TEST_FEATURE_DEPENDENCIES;
+            incCfgName = CFG_TEST_FEATURES_INCLUDES;
+            exCfgName = CFG_TEST_FEATURES_EXCLUDES;
             defaultSkipValue = "true";
             this.name = "test feature";
             this.skipAddJar = 
"true".equals(ProjectHelper.getConfigValue(info.plugin, 
CFG_SKIP_ADD_JAR_TO_TEST_FEATURE, "true"));
@@ -80,11 +98,15 @@ public class FeatureProjectConfig {
             defaultDir = DEFAULT_FEATURE_DIR;
             this.scope = Artifact.SCOPE_PROVIDED;
             skipAddDepCfgName = CFG_SKIP_ADD_FEATURE_DEPENDENCIES;
+            incCfgName = CFG_FEATURES_INCLUDES;
+            exCfgName = CFG_FEATURES_EXCLUDES;
             defaultSkipValue = "false";
             this.name = "feature";
             this.skipAddJar = 
"true".equals(ProjectHelper.getConfigValue(info.plugin, 
CFG_SKIP_ADD_JAR_TO_FEATURE, "true"));
         }
         this.featuresDirName = ProjectHelper.getConfigValue(info.plugin, 
featuresDirCfgName, defaultDir);
+        this.includes = ProjectHelper.getConfigValue(info.plugin, incCfgName, 
null);
+        this.excludes = ProjectHelper.getConfigValue(info.plugin, exCfgName, 
null);
         final String skipCfg = ProjectHelper.getConfigValue(info.plugin, 
skipAddDepCfgName, defaultSkipValue);
         this.skipAddDep = "true".equals(skipCfg.toLowerCase());
         this.jarStartOrder = ProjectHelper.getConfigValue(info.plugin, 
CFG_JAR_START_ORDER, null);
@@ -98,6 +120,14 @@ public class FeatureProjectConfig {
         return this.featuresDirName;
     }
 
+    public String getIncludes() {
+        return this.includes;
+    }
+
+    public String getExcludes() {
+        return this.excludes;
+    }
+
     public boolean isSkipAddDependencies() {
         return this.skipAddDep;
     }
diff --git a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java 
b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
index 65e0d07..0ad4514 100644
--- a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
+++ b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
@@ -32,6 +32,7 @@ import java.util.stream.Collectors;
 
 import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Extension;
@@ -162,15 +163,18 @@ public class Preprocessor {
         }
     }
 
-    private void scan(final List<File> files, final File dir) {
-        for(final File f : dir.listFiles()) {
-            if ( !f.getName().startsWith(".") ) {
-                if ( f.isDirectory() ) {
-                    scan(files, f);
-                } else if ( f.getName().endsWith(".json") ) {
-                    files.add(f);
-                }
-            }
+    private void scan(final List<File> files, final File dir, final String 
includes, final String excludes) {
+        final DirectoryScanner scanner = new DirectoryScanner();
+        scanner.setBasedir(dir);
+        if ( includes != null ) {
+            scanner.setIncludes(includes.split(","));
+        }
+        if ( excludes != null ) {
+            scanner.setExcludes(excludes.split(","));
+        }
+        scanner.scan();
+        for(final String f : scanner.getIncludedFiles()) {
+            files.add(new File(dir, f));
         }
     }
 
@@ -238,7 +242,7 @@ public class Preprocessor {
         if ( dir.exists() ) {
             final Map<String, Feature> featureMap = new TreeMap<>();
             final List<File> files = new ArrayList<>();
-            scan(files, dir);
+            scan(files, dir, config.getIncludes(), config.getExcludes());
 
             for(final File file : files) {
                 final StringBuilder sb = new StringBuilder();
diff --git 
a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java 
b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
index 51bed52..2ac07a7 100644
--- 
a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
+++ 
b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
@@ -40,6 +40,19 @@ public abstract class AbstractFeatureMojo extends 
AbstractMojo {
     protected File features;
 
     /**
+     * Comma separated list of includes
+     */
+    @Parameter(name = FeatureProjectConfig.CFG_FEATURES_INCLUDES,
+            defaultValue = FeatureProjectConfig.DEFAULT_FEATURE_INCLUDES)
+    private String featuresIncludes;
+
+    /**
+     * Comma separated list of excludes
+     */
+    @Parameter(name = FeatureProjectConfig.CFG_FEATURES_EXCLUDES)
+    private String featuresExcludes;
+
+    /**
      * Directory containing test feature files
      */
     @Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES,
@@ -48,6 +61,19 @@ public abstract class AbstractFeatureMojo extends 
AbstractMojo {
     private File testFeatures;
 
     /**
+     * Comma separated list of includes
+     */
+    @Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES_INCLUDES,
+            defaultValue = FeatureProjectConfig.DEFAULT_FEATURE_INCLUDES)
+    private String testFeaturesIncludes;
+
+    /**
+     * Comma separated list of excludes
+     */
+    @Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES_EXCLUDES)
+    private String testFeaturesExcludes;
+
+    /**
      * If set to {@code true} the artifacts from the feature are not as 
dependencies to the project.
      */
     @Parameter(name=FeatureProjectConfig.CFG_SKIP_ADD_FEATURE_DEPENDENCIES,

Reply via email to