--- a/src/JavaArray.st Sun May 22 16:04:51 2011 +0000
+++ b/src/JavaArray.st Sun May 22 17:09:22 2011 +0000
@@ -41,6 +41,22 @@
^'[L' , componentClass javaName, ';'
"Created: / 25-02-2011 / 19:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaPackage
+
+ ^componentClass javaPackage
+
+ "Created: / 22-05-2011 / 18:07:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lookupMethodByNameAndType: aJavaNameAndType
+
+ "Trick, since java arrays should respond to all messages
+ understood by java.lang.object"
+ ^ (Java at:'java.lang.Object') lookupMethodByNameAndType: aJavaNameAndType
+
+ "Created: / 22-05-2011 / 18:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaArray class methodsFor:'class creation'!
--- a/src/JavaDescriptor.st Sun May 22 16:04:51 2011 +0000
+++ b/src/JavaDescriptor.st Sun May 22 17:09:22 2011 +0000
@@ -47,6 +47,13 @@
!JavaDescriptor class methodsFor:'accessing'!
+baseTypes
+
+ ^BaseTypes
+
+ "Created: / 22-05-2011 / 17:45:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
baseTypesByTypeName
^BaseTypesByTypeName
--- a/src/JavaResolver.st Sun May 22 16:04:51 2011 +0000
+++ b/src/JavaResolver.st Sun May 22 17:09:22 2011 +0000
@@ -70,8 +70,13 @@
[ self halt.
"tell mh, he will throw exception instead, for now, he wants to halt."
].
- result classInit.
+ "JV@2011-05-22: Take primitive types into an account"
+ result isJavaPrimitiveType ifTrue:
+ [^self checkIfArrayRef: aJavaClassRef andWrap: result].
+
+ result classInit.
+
"
If C is an array class and its element type is a reference type, then the symbolic reference
to the class or interface representing the element type is resolved by invoking the algorithm
@@ -90,6 +95,7 @@
"Created: / 11-04-2011 / 19:07:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
"Modified: / 13-05-2011 / 17:51:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+ "Modified: / 22-05-2011 / 17:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaResolver methodsFor:'class resolving helpers'!
@@ -127,10 +133,20 @@
!
loadUnresolvedClass: aJavaClassRef
+
+ | nm |
+ nm := aJavaClassRef javaClassName.
+ "JV@2011-05-22: Take primitive types into an account"
+ nm size == 1 and:
+ [JavaDescriptor baseTypes
+ at: nm first
+ ifPresent:[:cls|^cls]].
+
^ Java classForName: aJavaClassRef javaClassName.
"Created: / 11-04-2011 / 19:27:10 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
"Modified: / 19-05-2011 / 13:10:27 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+ "Modified: / 22-05-2011 / 17:58:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
loadUnresolvedClass: aJavaClassRef withJavaClassLoader: classLoader
@@ -159,16 +175,16 @@
wrapJavaClass: aJavaClass withArrayAsSpecifiedIn: aJavaClassRef
"wraps aJavaClass with as many array dimensions as needed (zero means no array)"
- | wrappedResult |
+ | arrayClass |
aJavaClassRef isJavaArrayClassRef ifFalse: [ ^ aJavaClass ].
aJavaClassRef arrayDimensions timesRepeat:
- [wrappedResult := aJavaClass.
- wrappedResult := JavaArray javaArrayClassFor: wrappedResult.
- ^ wrappedResult ].
+ [arrayClass := aJavaClass.
+ arrayClass := arrayClass arrayClass.
+ ^ arrayClass ].
"Created: / 08-04-2011 / 18:40:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
- "Modified: / 22-05-2011 / 14:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 22-05-2011 / 17:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaResolver methodsFor:'common helpers'!