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
30
31
32
33
34
35
36 @SuppressWarnings({"UnnecessaryLocalVariable", "DeprecatedIsStillUsed", "rawtypes"})
37 @Deprecated
38 public class ClassRealmAdapter implements ClassRealm {
39
40 public static ClassRealmAdapter getInstance(org.codehaus.plexus.classworlds.realm.ClassRealm newRealm) {
41 ClassRealmAdapter adapter = new ClassRealmAdapter(newRealm);
42
43 return adapter;
44 }
45
46 private final org.codehaus.plexus.classworlds.realm.ClassRealm realm;
47
48 private ClassRealmAdapter(org.codehaus.plexus.classworlds.realm.ClassRealm newRealm) {
49 this.realm = newRealm;
50 }
51
52 public String getId() {
53 return realm.getId();
54 }
55
56 public ClassWorld getWorld() {
57 return ClassWorldAdapter.getInstance(realm.getWorld());
58 }
59
60 public void importFrom(String realmId, String pkgName) throws NoSuchRealmException {
61 try {
62 realm.importFrom(realmId, pkgName);
63 } catch (org.codehaus.plexus.classworlds.realm.NoSuchRealmException e) {
64 throw new NoSuchRealmException(getWorld(), e.getId());
65 }
66 }
67
68 public void addConstituent(URL constituent) {
69 realm.addURL(constituent);
70 }
71
72 public ClassRealm locateSourceRealm(String className) {
73 ClassLoader importLoader = realm.getImportClassLoader(className);
74
75 if (importLoader instanceof org.codehaus.plexus.classworlds.realm.ClassRealm) {
76 return ClassRealmAdapter.getInstance((org.codehaus.plexus.classworlds.realm.ClassRealm) importLoader);
77 } else {
78 return null;
79 }
80 }
81
82 public void setParent(ClassRealm classRealm) {
83 if (classRealm != null) {
84 realm.setParentRealm(ClassRealmReverseAdapter.getInstance(classRealm));
85 }
86 }
87
88 public ClassRealm createChildRealm(String id) throws DuplicateRealmException {
89 try {
90 return ClassRealmAdapter.getInstance(realm.createChildRealm(id));
91 } catch (org.codehaus.plexus.classworlds.realm.DuplicateRealmException e) {
92 throw new DuplicateRealmException(getWorld(), e.getId());
93 }
94 }
95
96 public ClassLoader getClassLoader() {
97 return realm;
98 }
99
100 public ClassRealm getParent() {
101 return ClassRealmAdapter.getInstance(realm.getParentRealm());
102 }
103
104 public ClassRealm getParentRealm() {
105 return ClassRealmAdapter.getInstance(realm.getParentRealm());
106 }
107
108 public URL[] getConstituents() {
109 return realm.getURLs();
110 }
111
112 public Class loadClass(String name) throws ClassNotFoundException {
113 return realm.loadClass(name);
114 }
115
116 public URL getResource(String name) {
117 return realm.getResource(trimLeadingSlash(name));
118 }
119
120 public Enumeration findResources(String name) throws IOException {
121 return realm.findResources(trimLeadingSlash(name));
122 }
123
124 public InputStream getResourceAsStream(String name) {
125 return realm.getResourceAsStream(trimLeadingSlash(name));
126 }
127
128 public void display() {
129 realm.display();
130 }
131
132 public boolean equals(Object o) {
133 if (!(o instanceof ClassRealm)) return false;
134
135 return getId().equals(((ClassRealm) o).getId());
136 }
137
138
139
140
141 private String trimLeadingSlash(String resource) {
142 if (resource != null && resource.startsWith("/")) {
143 return resource.substring(1);
144 } else {
145 return resource;
146 }
147 }
148 }