"{ Package: 'stx:libjava/experiments' }"
String variableByteSubclass:#StString
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Languages-Java-Tests'
!
!StString class methodsFor:'accessing'!
javaObject
^ JavaObjectDictionary new reflectionOf: self name
"Created: / 09-01-2011 / 21:02:37 / Jan Kurs <kurs.jan@post.cz>"
! !
!StString methodsFor:'accessing'!
javaObject
^ self class javaObject.
"/ javaObject ifNil: [
"/ javaObject:= Java classForName: 'Counter'.
"/ ].
"/ ^ javaObject.
"Created: / 09-01-2011 / 13:56:56 / Jan Kurs <kurs.jan@post.cz>"
"Modified: / 09-01-2011 / 21:02:18 / Jan Kurs <kurs.jan@post.cz>"
! !
!StString methodsFor:'error handling'!
doesNotUnderstand:aMessage
| method |
aMessage selector = #'__hash()I' ifTrue:[ ^ self getHash.].
aMessage selector = #'__count()I' ifTrue:[ ^ self getCount.].
aMessage selector = #'__offset()I' ifTrue:[ ^ self getOffset.].
aMessage selector = #'__value()[C' ifTrue:[ ^ self getValue.].
aMessage selector = #'__hash(I)V' ifTrue:[ ^ self setHash: aMessage arguments first].
method := JavaClass
lookupMethod:aMessage selector
numArgs:aMessage arguments size
in:self javaObject
static:false.
^ method
ifNil:[ super doesNotUnderstand:aMessage.]
ifNotNil:[ method valueWithReceiver:self arguments:aMessage arguments.]
"Created: / 09-01-2011 / 13:42:08 / Jan Kurs <kurs.jan@post.cz>"
"Modified: / 09-01-2011 / 15:54:04 / Jan Kurs <kurs.jan@post.cz>"
"Modified: / 17-01-2011 / 12:17:11 / kursjan <kursjan@fit.cvut.cz>"
! !
!StString methodsFor:'java protocol'!
getCount
^ self size.
"Created: / 17-01-2011 / 11:24:29 / kursjan <kursjan@fit.cvut.cz>"
!
getHash
"
hash should be cached in the future
"
self breakPoint: #libjava.
^ 0
"Created: / 17-01-2011 / 11:23:48 / kursjan <kursjan@fit.cvut.cz>"
!
getOffset
^ 0.
"Created: / 17-01-2011 / 11:24:43 / kursjan <kursjan@fit.cvut.cz>"
!
getValue
"VM requires instance of String class"
self breakPoint: #libjava.
^ String fromString: self.
"Created: / 17-01-2011 / 11:24:35 / kursjan <kursjan@fit.cvut.cz>"
!
setHash:newHash
"hash is not cached for this time"
self breakPoint: #libjava
"Created: / 17-01-2011 / 11:35:26 / kursjan <kursjan@fit.cvut.cz>"
! !
!StString methodsFor:'testing'!
isKindOf: aClass
"This override is neccessary for ST <-> Java Object conversions"
(self javaObject includesBehavior: aClass) ifTrue:
[
^ true.
].
^ super isKindOf: aClass.
"Created: / 09-01-2011 / 13:28:10 / Jan Kurs <kurs.jan@post.cz>"
"Modified: / 09-01-2011 / 21:22:41 / Jan Kurs <kurs.jan@post.cz>"
! !
!StString class methodsFor:'documentation'!
version_SVN
^ '$Id$'
! !