--- a/JavaMirror.st Sat May 18 22:49:58 2013 +0100
+++ b/JavaMirror.st Sat May 18 23:03:23 2013 +0100
@@ -273,7 +273,7 @@
"
| ctor |
- ctor := self create: (JavaVM classForName:'java.lang.reflect.Constructor')
+ ctor := self create: (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil)
for: class
method: method
signature: signature
@@ -284,6 +284,7 @@
^ctor
"Created: / 01-08-2012 / 10:20:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:55:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
createFieldFor: javaField
@@ -300,9 +301,15 @@
name := JavaVM reflection javaStringObjectForString: javaField name
interned: true.
slot := javaField index.
- type := JavaVM javaClassObjectForClass: javaField typeClass.
+ "/ Following could be coded like (and actually it was):
+ "/
+ "/type := JavaVM javaClassObjectForClass: javaField typeClass.
+ "/
+ "/ however, for performance reasons its better to avoid ClassLoader query, so:
+ type := JavaVM javaClassObjectForClass:
+ ((JavaDescriptor fromString: javaField descriptor) javaClassUsingClassLoader: javaField javaClass classLoader).
modifiers := javaField accessFlags.
- field := (JavaVM classForName: 'java.lang.reflect.Field') new.
+ field := (JavaVM classForName: 'java.lang.reflect.Field' definedBy: nil) new.
field
instVarNamed: #clazz put: clazz;
instVarNamed: #name put: name;
@@ -318,6 +325,7 @@
^ field.
"Created: / 22-08-2012 / 12:09:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 11:51:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
createMethodFor: class method: method name: name signature: signature modifiers: modifiers parameterTyoes: parameterClasses returnType: returnClass exceptionTypes: exceptionClasses annotations: annotations
@@ -335,7 +343,7 @@
"
| mthd |
- mthd := self create: (JavaVM classForName:'java.lang.reflect.Method')
+ mthd := self create: (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil)
for: class
method: method
signature: signature
@@ -352,6 +360,7 @@
^mthd
"Created: / 01-08-2012 / 10:46:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:55:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaMirror::AlienClassMirror class methodsFor:'documentation'!
@@ -378,9 +387,9 @@
getClassLoader
"Returns a class loader that loaded this class"
- ^ (JavaVM classForName:'stx.libjava.ClassLoader') instVarNamed: #scl.
+ ^ (JavaVM classForName:'stx.libjava.ClassLoader' definedBy: nil) instVarNamed: #scl.
- "Modified: / 07-05-2013 / 11:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredConstructors:publicOnly
@@ -404,9 +413,9 @@
ctors add: (self getDeclaredConstructorFor: (klass lookupMethodFor: #initialize)).
].
- ^(JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass withAll: ctors
+ ^(JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass withAll: ctors
- "Modified: / 22-08-2012 / 11:37:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredFields:publicOnly
@@ -431,10 +440,10 @@
fields add: (self createFieldFor: field)
].
- ^ (JavaVM classForName:'java.lang.reflect.Field') javaArrayClass
+ ^ (JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass
withAll:fields
- "Modified: / 22-08-2012 / 12:19:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredMethods:publicOnly
@@ -449,17 +458,17 @@
methods add: (self getDeclaredMethodFor: mthd).
].
].
- ^(JavaVM classForName:'java.lang.reflect.Method') javaArrayClass withAll: methods
+ ^(JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass withAll: methods
- "Modified: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getInterfaces
"Return a list if interfaces"
- ^ Array with: (JavaVM classForName: 'java.lang.Cloneable')
+ ^ Array with: (JavaVM classForName: 'java.lang.Cloneable' definedBy: nil)
- "Modified: / 22-08-2012 / 11:06:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getModifiers
@@ -586,37 +595,37 @@
"Returns an java.lang.reflect.Constructor[] with all constructors
declared by this class"
- ^ (JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass new:0.
+ ^ (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass new:0.
- "Modified: / 31-07-2012 / 18:41:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredFields:publicOnly
"Returns an java.lang.reflect.Field[] with all constructors
declared by this class."
- ^(JavaVM classForName:'java.lang.reflect.Field') javaArrayClass new:0.
+ ^(JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass new:0.
- "Modified: / 22-08-2012 / 12:03:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredMethods:publicOnly
"Returns an java.lang.reflect.Method[] with all methods
declared by this class"
- ^ (JavaVM classForName:'java.lang.reflect.Method') javaArrayClass new:0.
+ ^ (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass new:0.
- "Modified: / 01-08-2012 / 11:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getInterfaces
"Return a list if interfaces"
^ Array
- with: (JavaVM classForName: 'java.lang.Cloneable')
- with: (JavaVM classForName: 'java.io.Serializable')
+ with: (JavaVM classForName: 'java.lang.Cloneable' definedBy: nil)
+ with: (JavaVM classForName: 'java.io.Serializable' definedBy: nil)
- "Modified: / 22-08-2012 / 11:06:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getModifiers
@@ -667,9 +676,9 @@
ctors add: (self getDeclaredConstructorFor: mthd).
].
].
- ^(JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass withAll: ctors
+ ^(JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass withAll: ctors
- "Modified: / 01-08-2012 / 11:04:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredFields:publicOnly
@@ -683,10 +692,10 @@
JavaClassReader classLoaderQuerySignal answer: klass classLoader do:[
fields := fields collect:[:f | self createFieldFor:f ].
].
- ^ (JavaVM classForName:'java.lang.reflect.Field') javaArrayClass
+ ^ (JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass
withAll:fields
- "Modified: / 22-08-2012 / 12:10:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredMethods:publicOnly
@@ -705,9 +714,9 @@
]
].
].
- ^(JavaVM classForName:'java.lang.reflect.Method') javaArrayClass withAll: methods
+ ^(JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass withAll: methods
- "Modified: / 19-09-2012 / 16:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getGenericSignature
@@ -793,27 +802,27 @@
"Returns an java.lang.reflect.Constructor[] with all constructors
declared by this class"
- ^ (JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass new:0.
+ ^ (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass new:0.
- "Modified: / 31-07-2012 / 18:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredFields:publicOnly
"Returns an java.lang.reflect.Field[] with all constructors
declared by this class."
- ^(JavaVM classForName:'java.lang.reflect.Field') javaArrayClass new:0.
+ ^(JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass new:0.
- "Modified: / 22-08-2012 / 12:03:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getDeclaredMethods:publicOnly
"Returns an java.lang.reflect.Method[] with all methods
declared by this class"
- ^ (JavaVM classForName:'java.lang.reflect.Method') javaArrayClass new:0.
+ ^ (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass new:0.
- "Modified: / 01-08-2012 / 11:08:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-05-2013 / 10:58:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
getInterfaces