You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ad...@apache.org on 2012/02/20 20:09:43 UTC

svn commit: r1291412 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/openejb/util/ server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/

Author: adc
Date: Mon Feb 20 19:09:43 2012
New Revision: 1291412

URL: http://svn.apache.org/viewvc?rev=1291412&view=rev
Log:
OPENEJB-1783 Sometimes the list of URLs is too large when searching for annotated classes

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
    openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1291412&r1=1291411&r2=1291412&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Mon Feb 20 19:09:43 2012
@@ -1023,10 +1023,7 @@ public class DeploymentLoader implements
         UrlSet urlSet;
         try {
             urlSet = new UrlSet(parentClassLoader);
-            urlSet = urlSet.excludeJavaEndorsedDirs();
-            urlSet = urlSet.excludeJavaExtDirs();
-            urlSet = urlSet.excludeJavaHome();
-            urlSet = urlSet.exclude(ClassLoader.getSystemClassLoader());
+            urlSet = URLs.cullSystemJars(urlSet);
         } catch (IOException e) {
             logger.warning("Error scanning class loader for JSP tag libraries", e);
             return urls;

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1291412&r1=1291411&r2=1291412&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Mon Feb 20 19:09:43 2012
@@ -22,6 +22,8 @@ import org.apache.openejb.loader.FileUti
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.URLs;
+
 import org.apache.xbean.finder.UrlSet;
 import org.apache.xbean.finder.filter.ExcludeIncludeFilter;
 import org.apache.xbean.finder.filter.Filter;
@@ -194,12 +196,7 @@ public class DeploymentsResolver impleme
         try {
             UrlSet urlSet = new UrlSet(classLoader);
 
-            urlSet = urlSet.exclude(ClassLoader.getSystemClassLoader().getParent());
-            urlSet = urlSet.excludeJavaExtDirs();
-            urlSet = urlSet.excludeJavaEndorsedDirs();
-            urlSet = urlSet.excludeJavaHome();
-            urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path", ""));
-            urlSet = urlSet.exclude(".*/JavaVM.framework/.*");
+            urlSet = URLs.cullSystemJars(urlSet);
 
             // save the prefiltered list of jars before excluding system apps
             // so that we can choose not to filter modules with descriptors on the full list

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1291412&r1=1291411&r2=1291412&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java Mon Feb 20 19:09:43 2012
@@ -342,12 +342,7 @@ public class NewLoaderLogic {
             UrlSet urlSet = new UrlSet(classLoader);
 
             timer.event("exclude system urls");
-            urlSet = urlSet.exclude(ClassLoader.getSystemClassLoader().getParent());
-            urlSet = urlSet.excludeJavaExtDirs();
-            urlSet = urlSet.excludeJavaEndorsedDirs();
-            urlSet = urlSet.excludeJavaHome();
-            urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path", ""));
-            urlSet = urlSet.exclude(".*/JavaVM.framework/.*");
+            urlSet = URLs.cullSystemJars(urlSet);
 
 
             timer.event("classpath filter");

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java?rev=1291412&r1=1291411&r2=1291412&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java Mon Feb 20 19:09:43 2012
@@ -20,13 +20,18 @@ package org.apache.openejb.util;
 import static org.apache.openejb.loader.JarLocation.decode;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import org.apache.xbean.finder.UrlSet;
+
+
 /**
  * @version $Rev$ $Date$
  */
 public class URLs {
+    public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, URLs.class.getPackage().getName());
 
     public static File toFile(URL url) {
         if ("jar".equals(url.getProtocol())) {
@@ -53,4 +58,29 @@ public class URLs {
     public static String toFilePath(URL url) {
         return toFile(url).getAbsolutePath();
     }
+
+    public static UrlSet cullSystemAndOpenEJBJars(UrlSet original) throws IOException {
+        return cullSystemJars(cullOpenEJBJars(original));
+    }
+
+    public static UrlSet cullSystemJars(UrlSet original) throws IOException {
+        UrlSet urls = new UrlSet(original.getUrls());
+        urls = urls.exclude(ClassLoader.getSystemClassLoader().getParent());
+        urls = urls.excludeJavaExtDirs();
+        urls = urls.excludeJavaEndorsedDirs();
+        urls = urls.excludeJavaHome();
+        urls = urls.excludePaths(System.getProperty("sun.boot.class.path", ""));
+        urls = urls.exclude(".*/JavaVM.framework/.*");
+        if (LOGGER.isDebugEnabled()) LOGGER.debug("Cullled {} system urls from set", original.size() - urls.size());
+        return urls;
+    }
+
+    public static UrlSet cullOpenEJBJars(UrlSet original) throws IOException {
+        UrlSet urls = new UrlSet(original.getUrls());
+        urls = urls.exclude(".*openejb.*");
+        if (LOGGER.isDebugEnabled()) LOGGER.debug("Cullled {} OpenEJB urls from set", original.size() - urls.size());
+        return urls;
+    }
+
+    private URLs() { }
 }

Modified: openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java?rev=1291412&r1=1291411&r2=1291412&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java (original)
+++ openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java Mon Feb 20 19:09:43 2012
@@ -23,6 +23,8 @@ import org.apache.openejb.config.NewLoad
 import org.apache.openejb.server.cli.command.AbstractCommand;
 import org.apache.openejb.server.cli.command.Command;
 import org.apache.openejb.util.OpenEjbVersion;
+import org.apache.openejb.util.URLs;
+
 import org.apache.xbean.finder.Annotated;
 import org.apache.xbean.finder.ClassFinder;
 import org.apache.xbean.finder.UrlSet;
@@ -79,7 +81,7 @@ public class CliRunnable implements Runn
             final UrlSet forceCommonCli = new UrlSet(CliRunnable.class.getClassLoader()).matching(".*openejb-common-cli.*");
             UrlSet urls = new UrlSet(CliRunnable.class.getClassLoader());
             urls = NewLoaderLogic.applyBuiltinExcludes(urls);
-            urls = urls.exclude(".*openejb.*");
+            urls = URLs.cullSystemAndOpenEJBJars(urls);
             urls = urls.include(forceCommonCli);
 
             final ClassFinder finder = new ClassFinder(CliRunnable.class.getClassLoader(), urls.getUrls());