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 2016/02/02 23:59:53 UTC

svn commit: r1728235 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/OpenWebBeansConfiguration.java corespi/scanner/AbstractMetaDataDiscovery.java

Author: struberg
Date: Tue Feb  2 22:59:53 2016
New Revision: 1728235

URL: http://svn.apache.org/viewvc?rev=1728235&view=rev
Log:
OWB-1106 add a openwebbeans.properties flag to only pick up jars with META-INF/beans.xml again.

activated via:
org.apache.webbeans.scanBeansXmlOnly=true
in some META-INF/openwebbeans/openwebbeans.properties

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java?rev=1728235&r1=1728234&r2=1728235&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java Tue Feb  2 22:59:53 2016
@@ -135,6 +135,11 @@ public class OpenWebBeansConfiguration
     public static final String SCAN_EXCLUSION_PATHS = "org.apache.webbeans.scanExclusionPaths";
 
     /**
+     * Flag which indicates that only jars with an explicit META-INF/beans.xml marker file shall get paresed.
+     * Default is {@code false}
+     */
+    public static final String SCAN_ONLY_BEANS_XML_JARS = "org.apache.webbeans.scanBeansXmlOnly";
+    /**
      * a comma-separated list of fully qualified class names that should be ignored
      * when determining if a decorator matches its delegate.  These are typically added by
      * weaving or bytecode modification.
@@ -167,6 +172,9 @@ public class OpenWebBeansConfiguration
     /**Default configuration files*/
     private static final String DEFAULT_CONFIG_PROPERTIES_NAME = "META-INF/openwebbeans/openwebbeans.properties";
 
+    /**
+     * A value which indicates an 'automatic' behaviour.
+     */
     private static final String AUTO_CONFIG = "auto";
 
     /**Property of application*/
@@ -356,6 +364,16 @@ public class OpenWebBeansConfiguration
         return Boolean.valueOf(value);
     }
 
+    /**
+     * Flag which indicates that only jars with an explicit META-INF/beans.xml marker file shall get paresed.
+     * Default is {@code false}
+     */
+    public boolean scanOnlyBeansXmlJars()
+    {
+        String value = getProperty(SCAN_ONLY_BEANS_XML_JARS);
+        return "true".equalsIgnoreCase(value);
+    }
+
     public synchronized Set<String> getIgnoredInterfaces()
     {
         if (ignoredInterfaces == null)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java?rev=1728235&r1=1728234&r2=1728235&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java Tue Feb  2 22:59:53 2016
@@ -204,16 +204,20 @@ public abstract class AbstractMetaDataDi
                 }
             }
 
-            // third step: remove all jars we know they do not contain any CDI beans
-            filterExcludedJars(classPathUrls);
-
-            // forth step: add all 'implicit bean archives'
-            for (URL url : classPathUrls)
+            boolean onlyBeansXmlJars = webBeansContext.getOpenWebBeansConfiguration().scanOnlyBeansXmlJars();
+            if (!onlyBeansXmlJars)
             {
-                if (isBdaUrlEnabled(url))
+                // third step: remove all jars we know they do not contain any CDI beans
+                filterExcludedJars(classPathUrls);
+
+                // forth step: add all 'implicit bean archives'
+                for (URL url : classPathUrls)
                 {
-                    addWebBeansXmlLocation(url);
-                    addDeploymentUrl(url.toExternalForm(), url);
+                    if (isBdaUrlEnabled(url))
+                    {
+                        addWebBeansXmlLocation(url);
+                        addDeploymentUrl(url.toExternalForm(), url);
+                    }
                 }
             }
         }
@@ -247,7 +251,7 @@ public abstract class AbstractMetaDataDi
             final String path = url.toExternalForm();
             // TODO: should extract file path and test file.getName(), not the whole path
             // + should be configurable
-            final int knownJarIdx = isKnownJar(path);
+            final int knownJarIdx = isExcludedJar(path);
             // -Prun-its openwebbeans-tomcat7 in path but WEB-INF/classes
             if (knownJarIdx > 0 && knownJarIdx < path.indexOf(".jar"))
             {
@@ -258,7 +262,7 @@ public abstract class AbstractMetaDataDi
         }
     }
 
-    private int isKnownJar(final String path)
+    private int isExcludedJar(final String path)
     {
         // lazy init - required when using DS CdiTestRunner
         initScanningExcludes();