You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/09/13 14:19:17 UTC

svn commit: r1384296 - in /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina: LazyStopWebappClassLoader.java TomEEClassLoaderEnricher.java TomEEWebappLoader.java

Author: rmannibucau
Date: Thu Sep 13 12:19:17 2012
New Revision: 1384296

URL: http://svn.apache.org/viewvc?rev=1384296&view=rev
Log:
TOMEE-414 slf4j in the app

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1384296&r1=1384295&r2=1384296&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java Thu Sep 13 12:19:17 2012
@@ -25,6 +25,7 @@ import org.apache.openejb.loader.SystemI
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.util.Enumeration;
 
 public class LazyStopWebappClassLoader extends WebappClassLoader {
     public static final String TOMEE_WEBAPP_FIRST = "tomee.webapp-first";
@@ -95,4 +96,13 @@ public class LazyStopWebappClassLoader e
     public static boolean isDelegate() {
         return !SystemInstance.get().getOptions().get(TOMEE_WEBAPP_FIRST, true);
     }
+
+    @Override
+    public Enumeration<URL> getResources(final String name) throws IOException {
+        final Enumeration<URL> urls = super.getResources(name);
+        if (TomEEClassLoaderEnricher.isSlf4jQuery(name)) {
+            return TomEEClassLoaderEnricher.filterSlf4jImpl(urls);
+        }
+        return urls;
+    }
 }

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java?rev=1384296&r1=1384295&r2=1384296&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java Thu Sep 13 12:19:17 2012
@@ -32,6 +32,8 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
@@ -222,4 +224,25 @@ public final class TomEEClassLoaderEnric
             }
         }
     }
+
+    /**
+     * Helper part
+     */
+    public static final String SLF4J_STATIC_LOGGER_BINDER_CLASS = "org/slf4j/impl/StaticLoggerBinder.class";
+
+    public static boolean isSlf4jQuery(final String name) {
+        return SLF4J_STATIC_LOGGER_BINDER_CLASS.equals(name);
+    }
+
+    public static Enumeration<URL> filterSlf4jImpl(final Enumeration<URL> result) {
+        final Collection<URL> values = Collections.list(result);
+        if (values.size() > 1) {
+            // remove openejb one
+            final URL url = TomEEClassLoaderEnricher.class.getResource("/" + SLF4J_STATIC_LOGGER_BINDER_CLASS);
+            if (url != null) {
+                values.remove(url);
+            }
+        }
+        return Collections.enumeration(values);
+    }
 }

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java?rev=1384296&r1=1384295&r2=1384296&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java Thu Sep 13 12:19:17 2012
@@ -183,12 +183,21 @@ public class TomEEWebappLoader extends W
             final Map<String, URL> urls = new HashMap<String, URL>();
 
 
+            final Enumeration<URL> result;
+
             if (webapp.isStarted() || webapp.getParent() == null) { // we set a parent so if it is null webapp was detroyed
                 add(urls, app.getResources(name));
                 add(urls, webapp.getResources(name));
-                return new ArrayEnumeration(clear(urls.values()));
+                result = new ArrayEnumeration(clear(urls.values()));
+            } else {
+                result = app.getResources(name);
+            }
+
+            if (TomEEClassLoaderEnricher.isSlf4jQuery(name)) {
+                return TomEEClassLoaderEnricher.filterSlf4jImpl(result);
             }
-            return app.getResources(name);
+
+            return result;
         }
 
         private List<URL> clear(Iterable<URL> urls) { // take care of antiJarLocking