Author: cbegin Date: Sat Aug 8 01:07:33 2009 New Revision: 802278 URL: http://svn.apache.org/viewvc?rev=802278&view=rev Log: rolling back new ClassLoaderWrapper as it broke the build.
Removed: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/ClassLoaderWrapper.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ClassLoaderWrapperTest.java Modified: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/domain/misc/Employee.java (props changed) ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/resources/nodelet_test.xml (props changed) ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/Resources.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XNode.java (props changed) ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/type/NClobTypeHandler.java (props changed) ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/type/NStringTypeHandler.java (props changed) ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java Propchange: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/domain/misc/Employee.java ('svn:mergeinfo' removed) Propchange: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/resources/nodelet_test.xml ('svn:mergeinfo' removed) Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/Resources.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/Resources.java?rev=802278&r1=802277&r2=802278&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/Resources.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/io/Resources.java Sat Aug 8 01:07:33 2009 @@ -1,8 +1,7 @@ package org.apache.ibatis.io; import java.io.*; -import java.net.URL; -import java.net.URLConnection; +import java.net.*; import java.nio.charset.Charset; import java.util.Properties; @@ -11,8 +10,7 @@ */ public class Resources { - // private static ClassLoader defaultClassLoader; - private static ClassLoaderWrapper classLoaderWrapper = new ClassLoaderWrapper(); + private static ClassLoader defaultClassLoader; /** * Charset to use when calling getResourceAsReader. @@ -20,7 +18,8 @@ */ private static Charset charset; - Resources() {} + private Resources() { + } /** * Returns the default classloader (may be null). @@ -28,7 +27,7 @@ * @return The default classloader */ public static ClassLoader getDefaultClassLoader() { - return classLoaderWrapper.defaultClassLoader; + return defaultClassLoader; } /** @@ -37,7 +36,7 @@ * @param defaultClassLoader - the new default ClassLoader */ public static void setDefaultClassLoader(ClassLoader defaultClassLoader) { - classLoaderWrapper.defaultClassLoader = defaultClassLoader; + Resources.defaultClassLoader = defaultClassLoader; } /** @@ -48,7 +47,7 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static URL getResourceURL(String resource) throws IOException { - return classLoaderWrapper.getResourceAsURL(resource); + return getResourceURL(getClassLoader(), resource); } /** @@ -60,7 +59,11 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static URL getResourceURL(ClassLoader loader, String resource) throws IOException { - return classLoaderWrapper.getResourceAsURL(resource, loader); + URL url = null; + if (loader != null) url = loader.getResource(resource); + if (url == null) url = ClassLoader.getSystemResource(resource); + if (url == null) throw new IOException("Could not find resource " + resource); + return url; } /** @@ -71,7 +74,7 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static InputStream getResourceAsStream(String resource) throws IOException { - return classLoaderWrapper.getResourceAsStream(resource); + return getResourceAsStream(getClassLoader(), resource); } /** @@ -83,7 +86,11 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static InputStream getResourceAsStream(ClassLoader loader, String resource) throws IOException { - return classLoaderWrapper.getResourceAsStream(resource, loader); + InputStream in = null; + if (loader != null) in = loader.getResourceAsStream(resource); + if (in == null) in = ClassLoader.getSystemResourceAsStream(resource); + if (in == null) throw new IOException("Could not find resource " + resource); + return in; } /** @@ -93,7 +100,8 @@ * @return The resource * @throws java.io.IOException If the resource cannot be found or read */ - public static Properties getResourceAsProperties(String resource) throws IOException { + public static Properties getResourceAsProperties(String resource) + throws IOException { Properties props = new Properties(); InputStream in = getResourceAsStream(resource); props.load(in); @@ -109,7 +117,8 @@ * @return The resource * @throws java.io.IOException If the resource cannot be found or read */ - public static Properties getResourceAsProperties(ClassLoader loader, String resource) throws IOException { + public static Properties getResourceAsProperties(ClassLoader loader, String resource) + throws IOException { Properties props = new Properties(); InputStream in = getResourceAsStream(loader, resource); props.load(in); @@ -125,11 +134,14 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static Reader getResourceAsReader(String resource) throws IOException { + Reader reader; if (charset == null) { - return new InputStreamReader(getResourceAsStream(resource)); + reader = new InputStreamReader(getResourceAsStream(resource)); } else { - return new InputStreamReader(getResourceAsStream(resource), charset); + reader = new InputStreamReader(getResourceAsStream(resource), charset); } + + return reader; } /** @@ -141,11 +153,14 @@ * @throws java.io.IOException If the resource cannot be found or read */ public static Reader getResourceAsReader(ClassLoader loader, String resource) throws IOException { + Reader reader; if (charset == null) { - return new InputStreamReader(getResourceAsStream(loader, resource)); + reader = new InputStreamReader(getResourceAsStream(loader, resource)); } else { - return new InputStreamReader(getResourceAsStream(loader, resource), charset); + reader = new InputStreamReader(getResourceAsStream(loader, resource), charset); } + + return reader; } /** @@ -218,7 +233,24 @@ * @throws ClassNotFoundException If the class cannot be found (duh!) */ public static Class classForName(String className) throws ClassNotFoundException { - return classLoaderWrapper.classForName(className); + Class clazz = null; + try { + clazz = getClassLoader().loadClass(className); + } catch (Exception e) { + // Ignore. Failsafe below. + } + if (clazz == null) { + clazz = Class.forName(className); + } + return clazz; + } + + private static ClassLoader getClassLoader() { + if (defaultClassLoader != null) { + return defaultClassLoader; + } else { + return Thread.currentThread().getContextClassLoader(); + } } public static Charset getCharset() { Propchange: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XNode.java ('svn:mergeinfo' removed) Propchange: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/type/NClobTypeHandler.java ('svn:mergeinfo' removed) Propchange: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/type/NStringTypeHandler.java ('svn:mergeinfo' removed) Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java?rev=802278&r1=802277&r2=802278&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java Sat Aug 8 01:07:33 2009 @@ -9,8 +9,6 @@ import java.nio.charset.Charset; import java.util.Properties; -import sun.nio.cs.US_ASCII; - public class ResourcesTest extends BaseDataTest { private static final ClassLoader CLASS_LOADER = ResourcesTest.class.getClassLoader(); @@ -67,25 +65,13 @@ @Test public void shouldGetResourceAsFile() throws Exception { File file = Resources.getResourceAsFile(JPETSTORE_PROPERTIES); - assertTrue(file.getAbsolutePath().endsWith("jpetstore/jpetstore-hsqldb.properties")); + assertTrue(file.toURL().toString().endsWith("jpetstore/jpetstore-hsqldb.properties")); } @Test public void shouldGetResourceAsFileWithClassloader() throws Exception { File file = Resources.getResourceAsFile(CLASS_LOADER, JPETSTORE_PROPERTIES); - assertTrue(file.getAbsolutePath().endsWith("jpetstore/jpetstore-hsqldb.properties")); - } - - @Test - public void shouldGetResourceAsPropertiesWithOutClassloader() throws Exception { - Properties file = Resources.getResourceAsProperties(JPETSTORE_PROPERTIES); - assertNotNull(file); - } - - @Test - public void shouldGetResourceAsPropertiesWithClassloader() throws Exception { - Properties file = Resources.getResourceAsProperties(CLASS_LOADER, JPETSTORE_PROPERTIES); - assertNotNull(file); + assertTrue(file.toURL().toString().endsWith("jpetstore/jpetstore-hsqldb.properties")); } @Test @@ -106,51 +92,5 @@ assertNotNull(clazz); } - @Test(expected = ClassNotFoundException.class) - public void shouldNotFindThisClass() throws ClassNotFoundException { - Resources.classForName("some.random.class.that.does.not.Exist"); - } - - @Test - public void shouldGetReader() throws IOException { - - // save the value - Charset charset = Resources.getCharset(); - - // charset - Resources.setCharset(new US_ASCII()); - assertNotNull(Resources.getResourceAsReader(JPETSTORE_PROPERTIES)); - - // no charset - Resources.setCharset(null); - assertNotNull(Resources.getResourceAsReader(JPETSTORE_PROPERTIES)); - // clean up - Resources.setCharset(charset); - - } - - @Test - public void shouldGetReaderWithClassLoader() throws IOException { - - // save the value - Charset charset = Resources.getCharset(); - - // charset - Resources.setCharset(new US_ASCII()); - assertNotNull(Resources.getResourceAsReader(getClass().getClassLoader(), JPETSTORE_PROPERTIES)); - - // no charset - Resources.setCharset(null); - assertNotNull(Resources.getResourceAsReader(getClass().getClassLoader(), JPETSTORE_PROPERTIES)); - - // clean up - Resources.setCharset(charset); - - } - - @Test - public void stupidJustForCoverage() { - assertNotNull(new Resources()); - } }