9 * @author Jan Vrany |
9 * @author Jan Vrany |
10 * |
10 * |
11 */ |
11 */ |
12 public class SmalltalkWebappClassLoader extends WebappClassLoader { |
12 public class SmalltalkWebappClassLoader extends WebappClassLoader { |
13 |
13 |
14 ClassLoader scl; |
14 ClassLoader stcl; |
15 |
15 |
16 public SmalltalkWebappClassLoader() { |
16 public SmalltalkWebappClassLoader() { |
17 init(); |
17 init(); |
|
18 } |
|
19 |
|
20 public SmalltalkWebappClassLoader(ClassLoader parent) { |
|
21 super(parent); |
|
22 init(); |
|
23 } |
|
24 |
|
25 protected void init() { |
|
26 try { |
|
27 Class<ClassLoader> sclClass = (Class<ClassLoader>) Class.forName("stx.libjava.ClassLoader"); |
|
28 Method m = sclClass.getMethod("getSystemClassLoader", new Class[0] ); |
|
29 stcl = (ClassLoader)m.invoke(null, new Object[0]); |
|
30 } catch (ClassNotFoundException e1) { |
|
31 // Not running under stx:libjava? |
|
32 stcl = null; |
|
33 } catch (IllegalArgumentException e) { |
|
34 e.printStackTrace(); |
|
35 } catch (IllegalAccessException e) { |
|
36 // TODO Auto-generated catch block |
|
37 e.printStackTrace(); |
|
38 } catch (InvocationTargetException e) { |
|
39 // TODO Auto-generated catch block |
|
40 e.printStackTrace(); |
|
41 } catch (SecurityException e) { |
|
42 // TODO Auto-generated catch block |
|
43 e.printStackTrace(); |
|
44 } catch (NoSuchMethodException e) { |
|
45 // TODO Auto-generated catch block |
|
46 e.printStackTrace(); |
18 } |
47 } |
19 |
48 } |
20 public SmalltalkWebappClassLoader(ClassLoader parent) { |
|
21 super(parent); |
|
22 init(); |
|
23 } |
|
24 |
49 |
25 protected void init() { |
50 public Class findClass(String name) throws ClassNotFoundException { |
26 try { |
51 if ((stcl != null) && ( name.startsWith("SMALLTALK.") )) { |
27 Class<ClassLoader> sclClass = (Class<ClassLoader>) Class.forName("stx.libjava.ClassLoader"); |
52 return stcl.loadClass(name); |
28 Method m = sclClass.getMethod("getSystemClassLoader", new Class[0] ); |
53 } else { |
29 scl = (ClassLoader)m.invoke(null, new Object[0]); |
54 return super.findClass(name); |
30 } catch (ClassNotFoundException e1) { |
55 } |
31 // Not running under stx:libjava? |
56 } |
32 scl = null; |
|
33 } catch (IllegalArgumentException e) { |
|
34 e.printStackTrace(); |
|
35 } catch (IllegalAccessException e) { |
|
36 // TODO Auto-generated catch block |
|
37 e.printStackTrace(); |
|
38 } catch (InvocationTargetException e) { |
|
39 // TODO Auto-generated catch block |
|
40 e.printStackTrace(); |
|
41 } catch (SecurityException e) { |
|
42 // TODO Auto-generated catch block |
|
43 e.printStackTrace(); |
|
44 } catch (NoSuchMethodException e) { |
|
45 // TODO Auto-generated catch block |
|
46 e.printStackTrace(); |
|
47 } |
|
48 } |
|
49 |
57 |
50 } |
58 } |