Author: rmannibucau
Date: Wed Nov  7 22:18:10 2012
New Revision: 1406845

URL: http://svn.apache.org/viewvc?rev=1406845&view=rev
Log:
TOMEE-560 custom bean validation impl in webapp should be possible

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1406845&r1=1406844&r2=1406845&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
 Wed Nov  7 22:18:10 2012
@@ -71,8 +71,8 @@ public class TempClassLoader extends URL
     @Override
     public Enumeration<URL> getResources(final String name) throws IOException 
{
         final Enumeration<URL> urls = super.getResources(name);
-        if (URLClassLoaderFirst.isSlf4jQuery(name)) {
-            return URLClassLoaderFirst.filterSlf4jImpl(urls);
+        if (URLClassLoaderFirst.isFilterableResource(name)) {
+            return URLClassLoaderFirst.filterResources(name, urls);
         }
         return urls;
     }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java?rev=1406845&r1=1406844&r2=1406845&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
 Wed Nov  7 22:18:10 2012
@@ -327,23 +327,24 @@ public class URLClassLoaderFirst extends
     @Override
     public Enumeration<URL> getResources(final String name) throws IOException 
{
         final Enumeration<URL> result = super.getResources(name);
-        if (isSlf4jQuery(name)) {
-            return filterSlf4jImpl(result);
+        if (URLClassLoaderFirst.isFilterableResource(name)) {
+            return URLClassLoaderFirst.filterResources(name, result);
         }
         return result;
     }
 
-    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 boolean isFilterableResource(final String name) {
+        // currently bean validation, Slf4j
+        return 
"META-INF/services/javax.validation.spi.ValidationProvider".equals(name)
+                || "org/slf4j/impl/StaticLoggerBinder.class".equals(name);
     }
 
-    public static Enumeration<URL> filterSlf4jImpl(final Enumeration<URL> 
result) {
+    // useful method for SPI
+    public static Enumeration<URL> filterResources(final String name, final 
Enumeration<URL> result) {
         final Collection<URL> values = Collections.list(result);
         if (values.size() > 1) {
             // remove openejb one
-            final URL url = URLClassLoaderFirst.class.getResource("/" + 
SLF4J_STATIC_LOGGER_BINDER_CLASS);
+            final URL url = URLClassLoaderFirst.class.getResource("/" + name);
             if (url != null) {
                 values.remove(url);
             }

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=1406845&r1=1406844&r2=1406845&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
 Wed Nov  7 22:18:10 2012
@@ -166,8 +166,8 @@ public class LazyStopWebappClassLoader e
     @Override
     public Enumeration<URL> getResources(final String name) throws IOException 
{
         final Enumeration<URL> urls = super.getResources(name);
-        if (URLClassLoaderFirst.isSlf4jQuery(name)) {
-            return URLClassLoaderFirst.filterSlf4jImpl(urls);
+        if (URLClassLoaderFirst.isFilterableResource(name)) {
+            return URLClassLoaderFirst.filterResources(name, urls);
         }
         return urls;
     }


Reply via email to