248 "Created: / 21-12-2010 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
248 "Created: / 21-12-2010 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
249 ! ! |
249 ! ! |
250 |
250 |
251 !JavaClassRegistry methodsFor:'registering'! |
251 !JavaClassRegistry methodsFor:'registering'! |
252 |
252 |
253 registerClass: aJavaClass |
253 registerClass: newClass |
254 | classes | |
254 | classes oldClass | |
255 |
255 |
256 self assert: (aJavaClass name includes: $.) not. |
256 self assert: (newClass name includes: $.) not. |
257 loaders keysAndValuesDo:[:loader :classes| |
257 loaders keysAndValuesDo:[:loader :classesPerLoader| |
258 |
258 |
259 (classes includesKey: aJavaClass name) ifTrue:[ |
259 (classesPerLoader includesKey: newClass name) ifTrue:[ |
260 loader == aJavaClass classLoader ifTrue:[ |
260 loader == newClass classLoader ifTrue:[ |
261 (classes at: aJavaClass name) ~~ aJavaClass ifTrue:[ |
261 (oldClass := classesPerLoader at: newClass name) ~~ newClass ifTrue:[ |
262 self breakPoint:#jv info: 'Trying to register class twice!!' |
262 "Class already exists, reload & reinstall" |
|
263 classesPerLoader |
|
264 at: newClass name |
|
265 put: (JavaClassReloader reload: oldClass with: newClass). |
|
266 ^self. |
263 ]. |
267 ]. |
264 ] ifFalse:[ |
268 ] ifFalse:[ |
265 ((aJavaClass name == #Script1) |
269 ((newClass name == #Script1) |
266 and:[aJavaClass superclass name == #'groovy/lang/Script']) ifFalse:[ |
270 and:[newClass superclass name == #'groovy/lang/Script']) ifFalse:[ |
267 self breakPoint: #jv. |
271 self breakPoint: #jv. |
268 ] |
272 ] |
269 ] |
273 ] |
270 ] |
274 ] |
271 ]. |
275 ]. |
272 |
276 |
273 classes := loaders at: aJavaClass classLoader ifAbsent: nil. |
277 classes := loaders at: newClass classLoader ifAbsent: nil. |
274 classes isNil ifTrue:[ |
278 classes isNil ifTrue:[ |
275 classes := loaders at: aJavaClass classLoader put: Dictionary new. |
279 classes := loaders at: newClass classLoader put: Dictionary new. |
276 ]. |
280 ]. |
277 classes at: aJavaClass name put: aJavaClass. |
281 classes at: newClass name put: newClass. |
278 Smalltalk changed: #newClass with: aJavaClass. |
282 Smalltalk changed: #newClass with: newClass. |
279 |
283 |
280 "Created: / 23-10-2011 / 11:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
284 "Created: / 23-10-2011 / 11:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
281 "Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
285 "Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
282 "Modified: / 18-02-2012 / 22:43:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
286 "Modified (format): / 20-02-2012 / 23:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
283 ! ! |
287 ! ! |
284 |
288 |
285 !JavaClassRegistry class methodsFor:'documentation'! |
289 !JavaClassRegistry class methodsFor:'documentation'! |
286 |
290 |
287 version_SVN |
291 version_SVN |