ProxyMethodJavaFieldGetter.st
changeset 3602 e35b48285df7
parent 3412 df11bb428463
--- a/ProxyMethodJavaFieldGetter.st	Tue Jul 26 10:21:31 2016 +0100
+++ b/ProxyMethodJavaFieldGetter.st	Tue Jul 26 18:01:16 2016 +0100
@@ -20,6 +20,8 @@
 "
 "{ Package: 'stx:libjava' }"
 
+"{ NameSpace: Smalltalk }"
+
 ProxyMethodJavaFieldAccessor subclass:#ProxyMethodJavaFieldGetter
 	instanceVariableNames:''
 	classVariableNames:''
@@ -55,22 +57,28 @@
 
 !ProxyMethodJavaFieldGetter methodsFor:'evaluating'!
 
-evaluateWithReceiver: receiver arguments: arguments
+evaluateWithReceiver:receiver arguments:arguments 
+    | value |
 
-    self assert: arguments size == 0.
-    ^receiver instVarAt: field index
+    self assert:arguments isEmpty.
+    value := receiver instVarAt:field index.
+    ^ self fieldType javaUnwrap:value
 
-    "Modified: / 17-03-2012 / 16:56:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-07-2016 / 11:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ProxyMethodJavaFieldGetter methodsFor:'generating'!
 
 generate:compiler
+    | valueNode |
 
-    ^(VariableNode type: #InstanceVariable name: field name)
-        index: field index.
+    valueNode := (VariableNode type: #InstanceVariable name: field name)
+                    index: field index.
+    ^ MessageNode receiver: (VariableNode globalNamed: self fieldType name)
+                  selector: #javaUnwrap:
+                       arg: valueNode
 
-    "Modified: / 17-03-2012 / 16:59:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-07-2016 / 11:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ProxyMethodJavaFieldGetter class methodsFor:'documentation'!