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;
}