Author: rmannibucau
Date: Thu Sep 13 10:53:23 2012
New Revision: 1384271

URL: http://svn.apache.org/viewvc?rev=1384271&view=rev
Log:
finally right handling of bval log message even in tomee (need to be done with 
the right classloader)

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java?rev=1384271&r1=1384270&r2=1384271&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
 Thu Sep 13 10:53:23 2012
@@ -101,6 +101,21 @@ public final class ValidatorBuilder {
             providerClassName = 
SystemInstance.get().getOptions().get(VALIDATION_PROVIDER_KEY, (String) null);
         }
 
+        // the only message logged by bval is "ignoreXmlConfiguration == true"
+        // which is false since we parse it ourself so hidding it
+        if (providerClassName == null || 
"org.apache.bval.jsr303.ApacheValidationProvider".equals(providerClassName)) {
+            bvalOffLogging(); // do it with original classloader
+
+            // it is important to switch of classloader because tomee uses a 
hierarchic logmanager
+            final ClassLoader original = 
Thread.currentThread().getContextClassLoader();
+            
Thread.currentThread().setContextClassLoader(ValidatorBuilder.class.getClassLoader());
+            try {
+                bvalOffLogging();
+            } finally {
+                Thread.currentThread().setContextClassLoader(original);
+            }
+        }
+
         if (providerClassName != null) {
             try {
                 @SuppressWarnings({"unchecked","rawtypes"})
@@ -123,15 +138,6 @@ public final class ValidatorBuilder {
         }
 
         // config is manage here so ignore provider parsing so ignore it from 
the impl
-        //
-        // the only message logged by bval is "ignoreXmlConfiguration == true"
-        // which is false since we parse it ourself so hidding it
-        if (providerClassName == null || 
"org.apache.bval.jsr303.ApacheValidationProvider".equals(providerClassName)) {
-            final java.util.logging.Logger offLogger = 
java.util.logging.Logger.getLogger("org.apache.bval.jsr303.ConfigurationImpl");
-            if (!Level.SEVERE.equals(offLogger.getLevel())) {
-                offLogger.setLevel(Level.SEVERE);
-            }
-        }
         target.ignoreXmlConfiguration();
 
         String messageInterpolatorClass = info.messageInterpolatorClass;
@@ -191,4 +197,12 @@ public final class ValidatorBuilder {
 
         return target;
     }
+
+    private static void bvalOffLogging() {
+        final java.util.logging.Logger offLogger = 
java.util.logging.Logger.getLogger("org.apache.bval.jsr303.ConfigurationImpl");
+        if (!Level.SEVERE.equals(offLogger.getLevel())) {
+            offLogger.setLevel(Level.SEVERE);
+            offLogger.setUseParentHandlers(false);
+        }
+    }
 }

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=1384271&r1=1384270&r2=1384271&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
 Thu Sep 13 10:53:23 2012
@@ -303,7 +303,9 @@ public class URLClassLoaderFirst extends
             if (org.startsWith("w3c.dom")) return true;
             if (org.startsWith("quartz")) return true;
             if (org.startsWith("eclipse.jdt.")) return true;
-            if (org.startsWith("slf4j")) return true;
+
+            // let an app use its own slf4j impl (so its own api too)
+            // if (org.startsWith("slf4j")) return true;
 
             return false;
         }


Reply via email to