1 package org.codehaus.classworlds;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.net.URL;
22 import java.util.Enumeration;
23
24
25
26
27
28
29 @Deprecated
30 public class ClassRealmAdapter implements ClassRealm {
31
32 public static ClassRealmAdapter getInstance(org.codehaus.plexus.classworlds.realm.ClassRealm newRealm) {
33 ClassRealmAdapter adapter = new ClassRealmAdapter(newRealm);
34
35 return adapter;
36 }
37
38 private org.codehaus.plexus.classworlds.realm.ClassRealm realm;
39
40 private ClassRealmAdapter(org.codehaus.plexus.classworlds.realm.ClassRealm newRealm) {
41 this.realm = newRealm;
42 }
43
44 public String getId() {
45 return realm.getId();
46 }
47
48 public ClassWorld getWorld() {
49 return ClassWorldAdapter.getInstance(realm.getWorld());
50 }
51
52 public void importFrom(String realmId, String pkgName) throws NoSuchRealmException {
53 try {
54 realm.importFrom(realmId, pkgName);
55 } catch (org.codehaus.plexus.classworlds.realm.NoSuchRealmException e) {
56 throw new NoSuchRealmException(getWorld(), e.getId());
57 }
58 }
59
60 public void addConstituent(URL constituent) {
61 realm.addURL(constituent);
62 }
63
64 public ClassRealm locateSourceRealm(String className) {
65 ClassLoader importLoader = realm.getImportClassLoader(className);
66
67 if (importLoader instanceof org.codehaus.plexus.classworlds.realm.ClassRealm) {
68 return ClassRealmAdapter.getInstance((org.codehaus.plexus.classworlds.realm.ClassRealm) importLoader);
69 } else {
70 return null;
71 }
72 }
73
74 public void setParent(ClassRealm classRealm) {
75 if (classRealm != null) {
76 realm.setParentRealm(ClassRealmReverseAdapter.getInstance(classRealm));
77 }
78 }
79
80 public ClassRealm createChildRealm(String id) throws DuplicateRealmException {
81 try {
82 return ClassRealmAdapter.getInstance(realm.createChildRealm(id));
83 } catch (org.codehaus.plexus.classworlds.realm.DuplicateRealmException e) {
84 throw new DuplicateRealmException(getWorld(), e.getId());
85 }
86 }
87
88 public ClassLoader getClassLoader() {
89 return realm;
90 }
91
92 public ClassRealm getParent() {
93 return ClassRealmAdapter.getInstance(realm.getParentRealm());
94 }
95
96 public ClassRealm getParentRealm() {
97 return ClassRealmAdapter.getInstance(realm.getParentRealm());
98 }
99
100 public URL[] getConstituents() {
101 return realm.getURLs();
102 }
103
104 public Class loadClass(String name) throws ClassNotFoundException {
105 return realm.loadClass(name);
106 }
107
108 public URL getResource(String name) {
109 return realm.getResource(trimLeadingSlash(name));
110 }
111
112 public Enumeration findResources(String name) throws IOException {
113 return realm.findResources(trimLeadingSlash(name));
114 }
115
116 public InputStream getResourceAsStream(String name) {
117 return realm.getResourceAsStream(trimLeadingSlash(name));
118 }
119
120 public void display() {
121 realm.display();
122 }
123
124 public boolean equals(Object o) {
125 if (!(o instanceof ClassRealm)) return false;
126
127 return getId().equals(((ClassRealm) o).getId());
128 }
129
130
131
132
133 private String trimLeadingSlash(String resource) {
134 if (resource != null && resource.startsWith("/")) {
135 return resource.substring(1);
136 } else {
137 return resource;
138 }
139 }
140 }