comparison test/runtime/6626217/Loader2.java @ 1715:495caa35b1b5

6977952: Test: Sync missing tests from hs16.3 to hs17.x Reviewed-by: wrockett
author asaha
date Tue, 17 Aug 2010 22:52:50 -0700
parents
children
comparison
equal deleted inserted replaced
1714:f121b2772674 1715:495caa35b1b5
1 import java.io.ByteArrayInputStream;
2 import java.io.FileInputStream;
3 public 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 }