From 18d7bd0e3b2aac7ed6c0d41f4279577c6eb93eb7 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 1 May 2013 15:49:58 +0800 Subject: [PATCH] bug fixed Logging error on osgi --- .../druid/support/logging/LogFactory.java | 11 +++----- .../com/alibaba/druid/bvt/log/LoggerTest.java | 27 ++++++++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java index 930da63210..dbdc21aba9 100644 --- a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java +++ b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java @@ -51,13 +51,10 @@ public class LogFactory { Resources.classForName(testClassName); Class implClass = Resources.classForName(implClassName); logConstructor = implClass.getConstructor(new Class[] { Class.class }); - { - Class declareClass = logConstructor.getDeclaringClass(); - if (!Log.class.isAssignableFrom(declareClass)) { - logConstructor = null; - } else { - return; - } + + Class declareClass = logConstructor.getDeclaringClass(); + if (!Log.class.isAssignableFrom(declareClass)) { + logConstructor = null; } } catch (Throwable t) { t.printStackTrace(); diff --git a/src/test/java/com/alibaba/druid/bvt/log/LoggerTest.java b/src/test/java/com/alibaba/druid/bvt/log/LoggerTest.java index 7bebdc8b0e..5aee798397 100644 --- a/src/test/java/com/alibaba/druid/bvt/log/LoggerTest.java +++ b/src/test/java/com/alibaba/druid/bvt/log/LoggerTest.java @@ -19,8 +19,9 @@ import com.alibaba.druid.util.JdbcUtils; public class LoggerTest extends TestCase { private static java.security.ProtectionDomain DOMAIN; - - private DruidDataSource dataSource; + + private ClassLoader contextClassLoader; + private DruidDataSource dataSource; static { DOMAIN = (java.security.ProtectionDomain) java.security.AccessController.doPrivileged(new PrivilegedAction() { @@ -34,18 +35,18 @@ public class LoggerTest extends TestCase { public static class TestLoader extends ClassLoader { private ClassLoader loader; - + private Set definedSet = new HashSet(); public TestLoader(){ super(null); loader = DruidDriver.class.getClassLoader(); } - + public URL getResource(String name) { return loader.getResource(name); } - + public Enumeration getResources(String name) throws IOException { return loader.getResources(name); } @@ -54,11 +55,11 @@ public class LoggerTest extends TestCase { if (name.startsWith("java")) { return loader.loadClass(name); } - + if (definedSet.contains(name)) { return super.loadClass(name); } - + String resourceName = name.replace('.', '/') + ".class"; InputStream is = loader.getResourceAsStream(resourceName); if (is == null) { @@ -77,9 +78,9 @@ public class LoggerTest extends TestCase { // TODO Auto-generated catch block e.printStackTrace(); } - + Class clazz = super.loadClass(name); - + return clazz; } } @@ -94,9 +95,15 @@ public class LoggerTest extends TestCase { Connection conn = dataSource.getConnection(); conn.close(); } - + + @Override + protected void setUp() throws Exception { + contextClassLoader = Thread.currentThread().getContextClassLoader(); + } + @Override protected void tearDown() throws Exception { + Thread.currentThread().setContextClassLoader(contextClassLoader); JdbcUtils.close(dataSource); } }