1 package serp.bytecode;
2
3
4
5
6
7
8
9 public class BCClassLoader extends ClassLoader {
10 private Project _project = null;
11
12
13
14
15 public BCClassLoader(Project project) {
16 _project = project;
17 }
18
19
20
21
22
23
24 public BCClassLoader(Project project, ClassLoader loader) {
25 super(loader);
26 _project = project;
27 }
28
29
30
31
32 public Project getProject() {
33 return _project;
34 }
35
36 protected Class findClass(String name) throws ClassNotFoundException {
37 byte[] bytes;
38 try {
39 BCClass type;
40 if (!_project.containsClass(name))
41 type = createClass(name);
42 else
43 type = _project.loadClass(name);
44 if (type == null)
45 throw new ClassNotFoundException(name);
46 bytes = type.toByteArray();
47 } catch (RuntimeException re) {
48 throw new ClassNotFoundException(re.toString());
49 }
50 return defineClass(name, bytes, 0, bytes.length);
51 }
52
53
54
55
56
57 protected BCClass createClass(String name) {
58 return null;
59 }
60 }