--- a/JavaObject.st Fri May 03 18:56:04 1996 +0000
+++ b/JavaObject.st Fri May 03 21:14:34 1996 +0000
@@ -45,6 +45,10 @@
^ val
].
+ retValSignature = 'String' ifTrue:[
+ ^ self stringFromJavaString:val
+ ].
+
'no conversion for: ' print. val class name print. ' to: ' print. retValSignature printNL.
^ val.
@@ -61,6 +65,15 @@
s instVarNamed:'offset' put: 0.
s instVarNamed:'count' put: aString size.
^ s
+!
+
+stringFromJavaString:aJavaString
+ "hard-coding internas of java.lang.String here is bad ..."
+
+ (aJavaString instVarNamed:'offset') ~~ 0 ifTrue:[self halt].
+
+ ^ ((aJavaString instVarNamed:'value')
+ copyTo:(aJavaString instVarNamed:'count')) asString
! !
!JavaObject methodsFor:'initialization'!
@@ -99,6 +112,18 @@
^ self doesNotUnderstand:(Message selector:selector)
!
+invokeJava:selector with:arg1 with:arg2
+ "send javaSelector (name+sig) message, with 2 arguments"
+
+ |method|
+
+ method := self class lookupMethodFor:selector.
+ method notNil ifTrue:[
+ ^ self invokeJavaMethod:method with:arg1 with:arg2
+ ].
+ ^ self doesNotUnderstand:(Message selector:selector)
+!
+
invokeJavaMethod:aJavaMethod
"invoke java method, without arguments"
@@ -138,6 +163,29 @@
^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
+!
+
+invokeJavaMethod:aJavaMethod with:arg1 with:arg2
+ "invoke java method, with two arguments"
+
+ |i val|
+
+ aJavaMethod numArgs ~~ 2 ifTrue:[
+ self halt:'argument count'
+ ].
+ aJavaMethod isStatic ifTrue:[
+ self halt:'static function'
+ ].
+
+ i := JavaInterpreter new.
+ i push:self.
+ i push:arg1.
+ i push:arg2.
+
+ val := i interpret:aJavaMethod sender:thisContext sender.
+
+ ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
+
! !
!JavaObject methodsFor:'printing & storing'!
@@ -251,5 +299,5 @@
!JavaObject class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaObject.st,v 1.8 1996/05/03 18:56:04 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaObject.st,v 1.9 1996/05/03 21:14:34 cg Exp $'
! !