You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2018/02/06 16:02:33 UTC

svn commit: r1823356 - in /openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave: Meecrowave.java openwebbeans/KnownClassesFilter.java

Author: struberg
Date: Tue Feb  6 16:02:33 2018
New Revision: 1823356

URL: http://svn.apache.org/viewvc?rev=1823356&view=rev
Log:
MEECROWAVE-96 add withPackages 

to not exclude all scanning of anything else like done with excludePackage

Modified:
    openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
    openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownClassesFilter.java

Modified: openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java?rev=1823356&r1=1823355&r2=1823356&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java Tue Feb  6 16:02:33 2018
@@ -1286,6 +1286,10 @@ public class Meecrowave implements AutoC
             return scanningPackageIncludes;
         }
 
+        /**
+         * Define some package names (startsWith) which must get scanned for beans.
+         * This rule get's applied before {@link #setScanningPackageExcludes(String)}
+         */
         public void setScanningPackageIncludes(final String scanningPackageIncludes) {
             this.scanningPackageIncludes = scanningPackageIncludes;
         }
@@ -1294,6 +1298,13 @@ public class Meecrowave implements AutoC
             return scanningPackageExcludes;
         }
 
+        /**
+         * Define some package names (startsWith) which must <em>NOT</em> get scanned for beans.
+         * This rule get's applied after {@link #setScanningPackageIncludes(String)}.
+         *
+         * Defining just a '*' will be a marker for skipping all not-included packages.
+         * Otherwise we will defer to the standard OpenWebBeans class Filter mechanism.
+         */
         public void setScanningPackageExcludes(final String scanningPackageExcludes) {
             this.scanningPackageExcludes = scanningPackageExcludes;
         }
@@ -1303,8 +1314,21 @@ public class Meecrowave implements AutoC
             return this;
         }
 
+        /**
+         * Only scan the very packages given (startsWith).
+         * This will exclude <em>all</em> other packages from bean scanning
+         */
         public Builder includePackages(final String packages) {
             this.setScanningPackageIncludes(packages);
+            this.setScanningPackageExcludes("*");
+            return this;
+        }
+
+        /**
+         * Scan the very packages given (startsWith) <em>in addition</em> to the default rules.
+         */
+        public Builder withPackages(final String packages) {
+            this.setScanningPackageIncludes(packages);
             return this;
         }
 

Modified: openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownClassesFilter.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownClassesFilter.java?rev=1823356&r1=1823355&r2=1823356&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownClassesFilter.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownClassesFilter.java Tue Feb  6 16:02:33 2018
@@ -37,6 +37,7 @@ public class KnownClassesFilter implemen
 
     private final Filter delegateAccept;
     private final Filter delegateSkip;
+    private boolean skipAll = false;
 
     public KnownClassesFilter() {
         final Set<String> excluded = new HashSet<>();
@@ -173,6 +174,9 @@ public class KnownClassesFilter implemen
     public void init(final Meecrowave.Builder config) {
         forced = buildArray(config.getScanningPackageIncludes()).orElse(forced);
         skipped = buildArray(config.getScanningPackageExcludes()).orElse(skipped);
+
+        // if we only got one skip and this is '*' then we skip all packages
+       skipAll = skipped.length == 1 && "*".equals(skipped[0]);
     }
 
     private Optional<String[]> buildArray(final String config) {
@@ -189,9 +193,13 @@ public class KnownClassesFilter implemen
             return true;
         }
 
-        // skip has the same logic than forced + the fact that if we have some forced packaged we skip all others
-        // this is not symmetric but often what is desired
-        if ((skipped != null && skipped.length > 0 && startsWith(skipped, name)) || (skipped != null && skipped.length == 0 && forced != null && forced.length > 0)) {
+        // in case skipped = '*' we skip all and do not delegate
+        if (skipAll) {
+            return false;
+        }
+
+        // skip has the same logic than forced
+        if (skipped != null && skipped.length > 0 && startsWith(skipped, name)) {
             return false;
         }