src/JavaFieldDescriptor.st
author vranyj1
Thu, 16 Aug 2012 11:52:58 +0000
branchjk_new_structure
changeset 1609 7a2627788ad7
parent 1288 444181770028
child 1610 15c74eeadcc0
permissions -rw-r--r--
- JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader. - JavaMethodDescriptor added: #parameterClassesUsingClassLoader: #returnClassUsingClassLoader: - JavaFieldDescriptor added: #javaClassUsingClassLoader: ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     1
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
     3
1155
vranyj1
parents: 1152
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
     5
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     8
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     9
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    10
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    12
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    13
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    14
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    15
1155
vranyj1
parents: 1152
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    18
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
    19
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    20
"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    22
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    23
JavaDescriptor subclass:#JavaFieldDescriptor
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    24
	instanceVariableNames:'javaClassName javaClass'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    25
	classVariableNames:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    26
	poolDictionaries:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    27
	category:'Languages-Java-Support'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    28
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    30
!JavaFieldDescriptor class methodsFor:'documentation'!
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    31
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    32
copyright
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    33
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    34
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
    35
1155
vranyj1
parents: 1152
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
    37
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    38
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    40
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    41
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    42
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    44
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    45
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    46
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    47
1155
vranyj1
parents: 1152
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    50
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1033
diff changeset
    51
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    52
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    53
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    54
! !
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    55
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    56
!JavaFieldDescriptor class methodsFor:'instance creation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    57
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    58
javaClass: cls
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    59
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    60
    ^self new javaClass: cls
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    61
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    62
    "Created: / 25-11-2010 / 18:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    63
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    64
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    65
javaClassName: clsName
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    66
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    67
    ^self new javaClassName: clsName
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    68
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
    "Created: / 25-11-2010 / 18:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    70
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    71
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    72
!JavaFieldDescriptor methodsFor:'accessing'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    73
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    74
javaClass
1033
a31de6a4cfa4 refactoringl, moved registry to JavaVM
hlopkmar
parents: 912
diff changeset
    75
    javaClass ifNil: [ javaClass := JavaVM classForName: self javaClassName ].
a31de6a4cfa4 refactoringl, moved registry to JavaVM
hlopkmar
parents: 912
diff changeset
    76
    ^ javaClass
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    77
912
e651488f5741 Many fixes in reflection, expecially for generic types support
vranyj1
parents: 877
diff changeset
    78
    "Modified: / 13-08-2011 / 01:24:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    79
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    80
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    81
javaClassName
912
e651488f5741 Many fixes in reflection, expecially for generic types support
vranyj1
parents: 877
diff changeset
    82
1159
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    83
    javaClassName notNil ifTrue:[        
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
    84
        ^ javaClassName
1159
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    85
    ].
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    86
    javaClass notNil ifTrue:[
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
    87
        ^ javaClass javaName
1159
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    88
    ].
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    89
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    90
    self error:'javaClassName nor javaClass set'
afe8ab363ca3 Mainly fixes:
vranyj1
parents: 1155
diff changeset
    91
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
    92
    "Modified: / 06-12-2011 / 21:41:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    93
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    94
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    95
javaClassObject
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    96
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    97
    ^JavaVM javaClassObjectForClass: self javaClass
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    98
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    99
    "Created: / 25-11-2010 / 18:10:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1609
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   100
!
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   101
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   102
javaClassUsingClassLoader: classLoaderOrNil
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   103
    javaClass isNil ifTrue:[
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   104
        javaClass := JavaVM classForName: self javaClassName definedBy: classLoaderOrNil.
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   105
    ].
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   106
    ^javaClass
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   107
7a2627788ad7 - JavaMirror: fixed method/constructor reflection for classes loaded by other than system/primordial classloader.
vranyj1
parents: 1288
diff changeset
   108
    "Created: / 16-08-2012 / 12:48:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   109
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   110
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   111
!JavaFieldDescriptor methodsFor:'comparing'!
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   112
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   113
= another
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   114
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   115
    ^ self class == another class 
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   116
        and:[ self javaClass = another javaClass ]
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   117
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   118
    "Created: / 06-12-2011 / 22:43:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   119
!
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   120
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   121
hash
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   122
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   123
    ^self javaClass hash
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   124
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   125
    "Created: / 06-12-2011 / 22:43:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   126
!
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   127
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   128
match: another
1281
b46adbe75503 Some cleanup
vranyj1
parents: 1271
diff changeset
   129
    another javaClass isJavaPrimitiveType ifTrue: [
1271
2caa288596fd Fixed some errors in Java - Smalltalk interop.
kursjan
parents: 1227
diff changeset
   130
        ^JavaVM canCast: self javaClass to: another javaClass
2caa288596fd Fixed some errors in Java - Smalltalk interop.
kursjan
parents: 1227
diff changeset
   131
    ].
2caa288596fd Fixed some errors in Java - Smalltalk interop.
kursjan
parents: 1227
diff changeset
   132
    "/ I have no idea, if some object may match another Smalltalk object, so be generous
2caa288596fd Fixed some errors in Java - Smalltalk interop.
kursjan
parents: 1227
diff changeset
   133
    ^ true.
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   134
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   135
    "Created: / 06-12-2011 / 22:56:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1271
2caa288596fd Fixed some errors in Java - Smalltalk interop.
kursjan
parents: 1227
diff changeset
   136
    "Modified: / 12-12-2011 / 17:58:07 / kursjan <kursjan@fit.cvut.cz>"
1281
b46adbe75503 Some cleanup
vranyj1
parents: 1271
diff changeset
   137
    "Modified: / 14-12-2011 / 21:55:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   138
! !
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   139
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   140
!JavaFieldDescriptor methodsFor:'initialization'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   141
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   142
javaClass:aJavaClass
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   143
    javaClass := aJavaClass.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   144
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   145
1227
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   146
javaClassName:aString
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   147
    javaClassName := aString upTo: $<.
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   148
5b7722ac31a4 Few changes to support new interop code
vranyj1
parents: 1159
diff changeset
   149
    "Modified: / 06-12-2011 / 21:41:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   150
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   151
1288
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   152
!JavaFieldDescriptor methodsFor:'queries'!
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   153
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   154
slots
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   155
    "Return a number of slots that this type occupied in
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   156
     argument array or on method operational stack"
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   157
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   158
    ^(self javaClass == LargeInteger or:[self javaClass == Float]) ifTrue:[
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   159
        2
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   160
    ] ifFalse:[
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   161
        1
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   162
    ]
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   163
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   164
    "Created: / 16-12-2011 / 00:22:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   165
! !
444181770028 - JavaParser renamed to JavaPetitParser
vranyj1
parents: 1281
diff changeset
   166
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   167
!JavaFieldDescriptor class methodsFor:'documentation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   168
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   169
version_SVN
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   170
    ^ '$Id$'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   171
! !