Author: rmannibucau
Date: Sat Aug 23 10:29:40 2014
New Revision: 1620001

URL: http://svn.apache.org/r1620001
Log:
TOMEE-1330 allow to scan container for wars

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
    
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1620001&r1=1620000&r2=1620001&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 Sat Aug 23 10:29:40 2014
@@ -56,8 +56,10 @@ import org.apache.xbean.finder.IAnnotati
 import org.apache.xbean.finder.ResourceFinder;
 import org.apache.xbean.finder.UrlSet;
 import org.apache.xbean.finder.archive.ClassesArchive;
+import org.apache.xbean.finder.filter.ExcludeIncludeFilter;
 import org.apache.xbean.finder.filter.Filter;
 import org.apache.xbean.finder.filter.Filters;
+import org.apache.xbean.finder.filter.IncludeExcludeFilter;
 
 import java.io.BufferedInputStream;
 import java.io.File;
@@ -109,6 +111,7 @@ public class DeploymentLoader implements
     private final boolean scanManagedBeans = true;
     private static final Collection<String> KNOWN_DESCRIPTORS = 
Arrays.asList("app-ctx.xml", "module.properties", "application.properties", 
"web.xml", "ejb-jar.xml", "openejb-jar.xml", "env-entries.properties", 
"beans.xml", "ra.xml", "application.xml", "application-client.xml", 
"persistence-fragment.xml", "persistence.xml", "validation.xml", 
NewLoaderLogic.EXCLUSION_FILE);
     private static String ALTDD = 
SystemInstance.get().getOptions().get(OPENEJB_ALTDD_PREFIX, (String) null);
+    private volatile List<URL> containerUrls = null;
 
     public AppModule load(final File jarFile) throws OpenEJBException {
         // verify we have a valid file
@@ -919,7 +922,35 @@ public class DeploymentLoader implements
 
         // determine war class path
 
-        final List<URL> webUrls = new ArrayList<URL>();
+        final List<URL> webUrls = new ArrayList<>();
+        if (containerUrls == null) {
+            if 
("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container",
 "false"))) {
+                synchronized (this) {
+                    if (containerUrls == null) {
+                        try {
+                            UrlSet urlSet = new 
UrlSet(ParentClassLoaderFinder.Helper.get());
+                            urlSet = URLs.cullSystemJars(urlSet);
+                            urlSet = 
NewLoaderLogic.applyBuiltinExcludes(urlSet);
+                            containerUrls = urlSet.getUrls();
+
+                            final Iterator<URL> it = containerUrls.iterator();
+                            while (it.hasNext()) { // remove lib/
+                                final File file = URLs.toFile(it.next());
+                                // TODO: see if websocket should be added in 
default.exclusions
+                                if (file.isDirectory() || 
file.getName().endsWith("tomcat-websocket.jar")) {
+                                    it.remove();
+                                }
+                            }
+                        } catch (final Exception e) {
+                            logger.error(e.getMessage(), e);
+                        }
+                    }
+                }
+            } else {
+                containerUrls = Collections.emptyList();
+            }
+        }
+        webUrls.addAll(containerUrls);
 
         // add these urls first to ensure we load classes from here first
         final String externalRepos = SystemInstance.get().getProperty("tomee." 
+ warFile.getName().replace(".war", "") + ".externalRepositories");

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1620001&r1=1620000&r2=1620001&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 Sat Aug 23 10:29:40 2014
@@ -213,7 +213,7 @@ public class DeploymentsResolver impleme
      * 2- Loading the resource is the default behaviour in case of not 
defining a value for any class-path pattern
      * This appears in step 3 of the above algorithm.
      */
-    public static void loadFromClasspath(final FileUtils base, final List<URL> 
jarList, final ClassLoader classLoader) {
+    public static void loadFromClasspath(final FileUtils ignored, final 
List<URL> jarList, final ClassLoader classLoader) {
         final Options options = SystemInstance.get().getOptions();
         final String include = options.get(CLASSPATH_INCLUDE, ".*");
         final String exclude = options.get(CLASSPATH_EXCLUDE, "");
@@ -299,7 +299,7 @@ public class DeploymentsResolver impleme
             }
 
             final long begin = System.currentTimeMillis();
-            processUrls("DeploymentsResolver1", urls, classLoader, 
requireDescriptors, base, jarList);
+            processUrls("DeploymentsResolver1", urls, classLoader, 
requireDescriptors, ignored, jarList);
             final long end = System.currentTimeMillis();
             final long time = end - begin;
 
@@ -310,7 +310,7 @@ public class DeploymentsResolver impleme
                 if (filterSystemApps) {
                     unchecked = 
unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)");
                 }
-                processUrls("DeploymentsResolver2", unchecked.getUrls(), 
classLoader, EnumSet.allOf(RequireDescriptors.class), base, jarList);
+                processUrls("DeploymentsResolver2", unchecked.getUrls(), 
classLoader, EnumSet.allOf(RequireDescriptors.class), ignored, jarList);
             }
 
             if (logger.isDebugEnabled()) {
@@ -366,7 +366,7 @@ public class DeploymentsResolver impleme
                                    final List<URL> urls,
                                    final ClassLoader classLoader,
                                    final Set<RequireDescriptors> 
requireDescriptors,
-                                   final FileUtils base,
+                                   final FileUtils ignored, // don't use it, 
it will be removed since we already suppose it is null in several places
                                    final List<URL> jarList) {
         for (final URL url : urls) {
 

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions?rev=1620001&r1=1620000&r2=1620001&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions 
(original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions 
Sat Aug 23 10:29:40 2014
@@ -61,8 +61,7 @@ el-api
 eclipselink-
 ehcache-
 FastInfoset
-fleece-core
-fleece-mapper
+fleece-
 fusemq-leveldb-
 geronimo-
 google-


Reply via email to