Skip to content

Commit a124b7e

Browse files
committed
Fixed it up abit...
1 parent 811dcaa commit a124b7e

File tree

1 file changed

+51
-57
lines changed

1 file changed

+51
-57
lines changed

src/main/java/org/mangorage/bootstrap/internal/MangoLoader.java

Lines changed: 51 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -78,40 +78,40 @@ void loadModuleConfiguration() {
7878
});
7979
}
8080

81-
// /**
82-
// * Loads the class with the specified binary name.
83-
// */
84-
// @Override
85-
// protected Class<?> loadClass(String cn, boolean resolve) throws ClassNotFoundException
86-
// {
87-
//
88-
// synchronized (getClassLoadingLock(cn)) {
89-
// // check if already loaded
90-
// Class<?> c = findLoadedClass(cn);
91-
//
92-
// if (c == null) {
93-
//
94-
// LoadedModule loadedModule = findLoadedModule(cn);
95-
//
96-
// if (loadedModule != null) {
97-
//
98-
// // class is in module defined to this class loader
99-
// c = defineClass(cn, loadedModule);
100-
//
101-
// } else {
102-
// return getParent().loadClass(cn);
103-
// }
104-
// }
105-
//
106-
// if (c == null)
107-
// throw new ClassNotFoundException(cn);
108-
//
109-
// if (resolve)
110-
// resolveClass(c);
111-
//
112-
// return c;
113-
// }
114-
// }
81+
/**
82+
* Loads the class with the specified binary name.
83+
*/
84+
@Override
85+
protected Class<?> loadClass(String cn, boolean resolve) throws ClassNotFoundException
86+
{
87+
88+
synchronized (getClassLoadingLock(cn)) {
89+
// check if already loaded
90+
Class<?> c = findLoadedClass(cn);
91+
92+
if (c == null) {
93+
94+
LoadedModule loadedModule = findLoadedModule(cn);
95+
96+
if (loadedModule != null) {
97+
98+
// class is in module defined to this class loader
99+
c = defineClass(cn, loadedModule);
100+
101+
} else {
102+
return getParent().loadClass(cn);
103+
}
104+
}
105+
106+
if (c == null)
107+
throw new ClassNotFoundException(cn);
108+
109+
if (resolve)
110+
resolveClass(c);
111+
112+
return c;
113+
}
114+
}
115115

116116
@Override
117117
protected URL findResource(String moduleName, String name) throws IOException {
@@ -167,30 +167,24 @@ private Class<?> defineClass(String cn, LoadedModule loadedModule) {
167167
return null;
168168
}
169169

170-
try {
171-
return defineClass(cn, bb, loadedModule.getCodeSource());
172-
} finally {
173-
reader.release(bb);
174-
}
170+
if (transformers.containsClass(cn))
171+
return transformers.getClazz(cn);
172+
173+
byte[] classbytes = bb.array();
175174

176-
// if (transformers.containsClass(cn))
177-
// return transformers.getClazz(cn);
178-
//
179-
// byte[] classbytes = bb.array();
180-
//
181-
// byte[] classBytesModified = transformers.transform(cn, classbytes);
182-
//
183-
// if (classBytesModified != null) {
184-
// Class<?> clz = defineClass(cn, classBytesModified, 0, classBytesModified.length, loadedModule.getCodeSource());
185-
// transformers.add(cn, clz);
186-
// return clz;
187-
// } else {
188-
// try {
189-
// return defineClass(cn, bb, loadedModule.getCodeSource());
190-
// } finally {
191-
// reader.release(bb);
192-
// }
193-
// }
175+
byte[] classBytesModified = transformers.transform(cn, classbytes);
176+
177+
if (classBytesModified != null) {
178+
Class<?> clz = defineClass(cn, classBytesModified, 0, classBytesModified.length, loadedModule.getCodeSource());
179+
transformers.add(cn, clz);
180+
return clz;
181+
} else {
182+
try {
183+
return defineClass(cn, bb, loadedModule.getCodeSource());
184+
} finally {
185+
reader.release(bb);
186+
}
187+
}
194188
} catch (IOException ioe) {
195189
// TBD on how I/O errors should be propagated
196190
return null;

0 commit comments

Comments
 (0)