Skip to content

Commit c60bc2e

Browse files
committed
1 parent 1be38ff commit c60bc2e

File tree

1 file changed

+22
-40
lines changed

1 file changed

+22
-40
lines changed

src/main/java/org/apache/ibatis/io/ClassLoaderWrapper.java

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,24 @@
99
public class ClassLoaderWrapper {
1010

1111
ClassLoader defaultClassLoader;
12+
ClassLoader systemClassLoader;
1213

1314
ClassLoaderWrapper() {
15+
try {
16+
systemClassLoader = ClassLoader.getSystemClassLoader();
17+
} catch (Exception ignored) {
18+
// AccessControlException on Google App Engine
19+
}
1420
}
15-
21+
1622
/**
1723
* Get a resource as a URL using the current class path
1824
*
1925
* @param resource - the resource to locate
2026
* @return the resource or null
2127
*/
2228
public URL getResourceAsURL(String resource) {
23-
return getResourceAsURL(resource, new ClassLoader[]{
24-
defaultClassLoader,
25-
Thread.currentThread().getContextClassLoader(),
26-
getClass().getClassLoader(),
27-
ClassLoader.getSystemClassLoader()
28-
});
29+
return getResourceAsURL(resource, getClassLoaders(null));
2930
}
3031

3132
/**
@@ -36,13 +37,7 @@ public URL getResourceAsURL(String resource) {
3637
* @return the stream or null
3738
*/
3839
public URL getResourceAsURL(String resource, ClassLoader classLoader) {
39-
return getResourceAsURL(resource, new ClassLoader[]{
40-
classLoader,
41-
defaultClassLoader,
42-
Thread.currentThread().getContextClassLoader(),
43-
getClass().getClassLoader(),
44-
ClassLoader.getSystemClassLoader()
45-
});
40+
return getResourceAsURL(resource, getClassLoaders(classLoader));
4641
}
4742

4843
/**
@@ -52,12 +47,7 @@ public URL getResourceAsURL(String resource, ClassLoader classLoader) {
5247
* @return the stream or null
5348
*/
5449
public InputStream getResourceAsStream(String resource) {
55-
return getResourceAsStream(resource, new ClassLoader[]{
56-
defaultClassLoader,
57-
Thread.currentThread().getContextClassLoader(),
58-
getClass().getClassLoader(),
59-
ClassLoader.getSystemClassLoader()
60-
});
50+
return getResourceAsStream(resource, getClassLoaders(null));
6151
}
6252

6353
/**
@@ -68,13 +58,7 @@ public InputStream getResourceAsStream(String resource) {
6858
* @return the stream or null
6959
*/
7060
public InputStream getResourceAsStream(String resource, ClassLoader classLoader) {
71-
return getResourceAsStream(resource, new ClassLoader[]{
72-
classLoader,
73-
defaultClassLoader,
74-
Thread.currentThread().getContextClassLoader(),
75-
getClass().getClassLoader(),
76-
ClassLoader.getSystemClassLoader()
77-
});
61+
return getResourceAsStream(resource, getClassLoaders(classLoader));
7862
}
7963

8064
/**
@@ -85,12 +69,7 @@ public InputStream getResourceAsStream(String resource, ClassLoader classLoader)
8569
* @throws ClassNotFoundException Duh.
8670
*/
8771
public Class<?> classForName(String name) throws ClassNotFoundException {
88-
return classForName(name, new ClassLoader[]{
89-
defaultClassLoader,
90-
Thread.currentThread().getContextClassLoader(),
91-
getClass().getClassLoader(),
92-
ClassLoader.getSystemClassLoader()
93-
});
72+
return classForName(name, getClassLoaders(null));
9473
}
9574

9675
/**
@@ -102,13 +81,7 @@ public Class<?> classForName(String name) throws ClassNotFoundException {
10281
* @throws ClassNotFoundException Duh.
10382
*/
10483
public Class<?> classForName(String name, ClassLoader classLoader) throws ClassNotFoundException {
105-
return classForName(name, new ClassLoader[]{
106-
classLoader,
107-
defaultClassLoader,
108-
Thread.currentThread().getContextClassLoader(),
109-
getClass().getClassLoader(),
110-
ClassLoader.getSystemClassLoader()
111-
});
84+
return classForName(name, getClassLoaders(classLoader));
11285
}
11386

11487
/**
@@ -201,4 +174,13 @@ Class<?> classForName(String name, ClassLoader[] classLoader) throws ClassNotFou
201174

202175
}
203176

177+
ClassLoader[] getClassLoaders(ClassLoader classLoader) {
178+
return new ClassLoader[]{
179+
classLoader,
180+
defaultClassLoader,
181+
Thread.currentThread().getContextClassLoader(),
182+
getClass().getClassLoader(),
183+
systemClassLoader};
184+
}
185+
204186
}

0 commit comments

Comments
 (0)