source: trunk/openjdk/hotspot/test/runtime/6626217/Loader2.java

Last change on this file was 278, checked in by dmik, 14 years ago

trunk: Merged in openjdk6 b22 from branches/vendor/oracle.

File size: 1.6 KB
Line 
1import java.io.ByteArrayInputStream;
2import java.io.FileInputStream;
3public class Loader2 extends ClassLoader {
4 int _recur;
5 public void print( String msg ) {
6 for( int i=0; i<_recur; i++ )
7 System.out.print(" ");
8 System.out.println(">>Loader2>> "+msg);
9 }
10
11 protected Class findClass2(String name) throws ClassNotFoundException {
12 print("Fetching the implementation of "+name);
13 int old = _recur;
14 try {
15 FileInputStream fi = new FileInputStream(name+".impl2");
16 byte result[] = new byte[fi.available()];
17 fi.read(result);
18
19 print("DefineClass1 on "+name);
20 _recur++;
21 Class clazz = defineClass(name, result, 0, result.length);
22 _recur = old;
23 print("Returning newly loaded class.");
24 return clazz;
25 } catch (Exception e) {
26 _recur = old;
27 print("Not found on disk.");
28 // If we caught an exception, either the class was not found or
29 // it was unreadable by our process.
30 return null;
31 //throw new ClassNotFoundException(e.toString());
32 }
33 }
34
35 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
36 // Attempt a disk load first
37 Class c = findClass2(name);
38 if( c == null ) {
39 // check if the class has already been loaded
40 print("Checking for prior loaded class "+name);
41 c = findLoadedClass(name);
42 print("Letting super-loader load "+name);
43 int old = _recur;
44 _recur++;
45 c = super.loadClass(name, false);
46 _recur=old;
47 }
48 if (resolve) { print("Resolving class "+name); resolveClass(c); }
49 print("Returning clazz "+c.getClassLoader()+":"+name);
50 return c;
51 }
52}
Note: See TracBrowser for help on using the repository browser.