src/JavaClassRegistry.st
author hlopkmar
Thu, 20 Oct 2011 18:20:15 +0000
branchjk_new_structure
changeset 1033 a31de6a4cfa4
parent 1032 c3085c73e150
child 1035 712d2090e68b
permissions -rw-r--r--
refactoringl, moved registry to JavaVM
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     1
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     3
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     4
                            SWING Research Group, Czech Technical University in Prague
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     5
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     6
 Parts of the code written by Claus Gittinger are under following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     7
 license:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     8
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     9
 This software is furnished under a license and may be used
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    14
 hereby transferred.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    15
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    16
 Parts of the code written at SWING Reasearch Group [1] are MIT licensed:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    17
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    18
 Permission is hereby granted, free of charge, to any person
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    19
 obtaining a copy of this software and associated documentation
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    20
 files (the 'Software'), to deal in the Software without
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    21
 restriction, including without limitation the rights to use,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    22
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    23
 copies of the Software, and to permit persons to whom the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    24
 Software is furnished to do so, subject to the following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    25
 conditions:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    26
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    27
 The above copyright notice and this permission notice shall be
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    28
 included in all copies or substantial portions of the Software.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    29
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    30
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    31
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    32
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    33
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    34
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    35
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    36
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    37
 OTHER DEALINGS IN THE SOFTWARE.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    38
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    39
 [1] Code written at SWING Research Group contain a signature
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    40
     of one of the above copright owners.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    41
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    42
"{ Package: 'stx:libjava' }"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    43
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    44
Object subclass:#JavaClassRegistry
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    45
	instanceVariableNames:'classLoadersAndClasses systemClassLoader'
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    46
	classVariableNames:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    47
	poolDictionaries:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    48
	category:'Languages-Java-Support'
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    49
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    50
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    51
!JavaClassRegistry class methodsFor:'documentation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    52
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    53
copyright
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    54
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    55
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    56
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    57
                            SWING Research Group, Czech Technical University in Prague
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    58
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    59
 Parts of the code written by Claus Gittinger are under following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    60
 license:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    61
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    62
 This software is furnished under a license and may be used
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    63
 only in accordance with the terms of that license and with the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    64
 inclusion of the above copyright notice.   This software may not
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    65
 be provided or otherwise made available to, or used by, any
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    66
 other person.  No title to or ownership of the software is
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    67
 hereby transferred.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    68
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    69
 Parts of the code written at SWING Reasearch Group [1] are MIT licensed:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    70
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    71
 Permission is hereby granted, free of charge, to any person
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    72
 obtaining a copy of this software and associated documentation
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    73
 files (the 'Software'), to deal in the Software without
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    74
 restriction, including without limitation the rights to use,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    75
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    76
 copies of the Software, and to permit persons to whom the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    77
 Software is furnished to do so, subject to the following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    78
 conditions:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    79
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    80
 The above copyright notice and this permission notice shall be
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    81
 included in all copies or substantial portions of the Software.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    82
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    83
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    84
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    85
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    86
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    87
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    88
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    89
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    90
 OTHER DEALINGS IN THE SOFTWARE.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    91
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    92
 [1] Code written at SWING Research Group contain a signature
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    93
     of one of the above copright owners.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    94
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    95
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    96
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    97
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    98
!JavaClassRegistry class methodsFor:'instance creation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    99
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   100
new
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   101
^ self basicNew initialize.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   102
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   103
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   104
!JavaClassRegistry methodsFor:'class loaders'!
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   105
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   106
addClassLoader: aJavaClassLoader
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   107
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   108
classLoadersAndClasses at: aJavaClassLoader put: Dictionary new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   109
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   110
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   111
getClassesDefinedBy:classLoader 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   112
    ^classLoadersAndClasses at: classLoader ifAbsent: [nil].
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   113
!
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   114
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   115
getSystemClassLoader
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   116
    systemClassLoader 
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   117
        ifNil: [
1033
a31de6a4cfa4 refactoringl, moved registry to JavaVM
hlopkmar
parents: 1032
diff changeset
   118
            systemClassLoader := (JavaVM classForName: 'java.lang.ClassLoader') 
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   119
                        perform: #'getSystemClassLoader()Ljava/lang/ClassLoader;'.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   120
        ].
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   121
    ^ systemClassLoader.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   122
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   123
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   124
removeClassLoader: aJavaClassLoader 
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   125
    classLoadersAndClasses removeKey: aJavaClassLoader.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   126
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   127
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   128
!JavaClassRegistry methodsFor:'class loading'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   129
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   130
loadClassNamed: className 
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   131
    | result |
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   132
self assert: (className includes: $[) not.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   133
    result := JavaClassReader readClass: className asSTXInternalJavaClassName.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   134
     "java class or primitive array can be in result"
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   135
    result isJavaClass ifTrue: [
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   136
        self addClass: result definedBy: result classLoader.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   137
    ].
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   138
    ^ result.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   139
!
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   140
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   141
loadClassNamed: className using: classLoader 
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   142
    | classObject  result |
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   143
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   144
    self assert: (className includes: $[) not.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   145
    self assert: classLoader isNil not.
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   146
    classObject := classLoader 
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   147
                perform: #'loadClass(Ljava/lang/String;)Ljava/lang/Class;'
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   148
                with: (Java as_String: (className asNiceJavaClassName)).
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   149
    result := JavaVM classForJavaClassObject: classObject.
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   150
    result isJavaClass ifFalse: [ self breakPoint: #mh. ].
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   151
    self addClass: result definedBy: result classLoader.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   152
    ^ result.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   153
!
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   154
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   155
loadFile: aFilename 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   156
    "reads a class from aFilename, installs and returns it."
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   157
    
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   158
    | aClass |
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   159
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   160
    self breakPoint: #mh.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   161
    aClass := JavaClassReader readFile: aFilename ignoring: Set new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   162
    aClass isJavaClass ifFalse:[self breakPoint:#mh].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   163
    self addClass: aClass definedBy: nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   164
    ^ aClass.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   165
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   166
    "Created: / 15.4.1996 / 14:58:53 / cg"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   167
    "Modified: / 12.5.1998 / 22:06:52 / cg"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   168
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   169
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   170
loadStream: javaClassDataStream loader: aJavaClassLoader 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   171
    "reads a class from aStream and returns it.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   172
     The JavaClass is installed as global.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   173
     If new classes are required to be loaded, aClassLoader is
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   174
     asked to do it."
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   175
    
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   176
    | javaClass |
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   177
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   178
    self breakPoint: #mh.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   179
    JavaClassReader classLoaderQuerySignal answer: aJavaClassLoader
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   180
        do: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   181
            javaClass := JavaClassReader readStream: javaClassDataStream
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   182
                        ignoring: (Set new).
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   183
            javaClass 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   184
                ifNil: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   185
                    Logger 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   186
                        log: 'JavaClassReader was not able to read given data stream'
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   187
                        severity: #severe
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   188
                        facility: #JavaClassRegistry.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   189
                    self breakPoint: #mh.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   190
                    ^ nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   191
                ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   192
            javaClass isJavaClass ifFalse: [ self breakPoint: #mh. ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   193
            self addClass: javaClass definedBy: aJavaClassLoader.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   194
        ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   195
    ^ javaClass
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   196
! !
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   197
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   198
!JavaClassRegistry methodsFor:'classes'!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   199
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   200
addClass: aJavaClass definedBy: classLoader 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   201
    | classesDefinedByClassLoader |
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   202
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   203
    classesDefinedByClassLoader := classLoadersAndClasses at: classLoader
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   204
                ifAbsentPut: [ Dictionary new ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   205
    classesDefinedByClassLoader at: aJavaClass name put: aJavaClass.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   206
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   207
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   208
getPrimitiveType: className 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   209
    ^ (JavaDescriptor fromString: className) javaClass.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   210
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   211
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   212
makeArrayOf: loadedJavaClass asDescribedBy: className 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   213
    | arrayClass  dimensions |
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   214
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   215
    arrayClass := loadedJavaClass.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   216
     dimensions := className occurrencesOf:$[.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   217
    arrayClass isJavaArrayClass ifTrue: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   218
        "is already array (primitive arrays case, like ByteArray etc)"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   219
       dimensions := dimensions - 1.].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   220
    dimensions timesRepeat: [ arrayClass := arrayClass javaArrayClass. ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   221
    ^ arrayClass.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   222
! !
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   223
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   224
!JavaClassRegistry methodsFor:'initialization'!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   225
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   226
flush
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   227
    classLoadersAndClasses := Dictionary new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   228
    classLoadersAndClasses at: nil put: Dictionary new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   229
    systemClassLoader := nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   230
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   231
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   232
initialize
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   233
    classLoadersAndClasses := Dictionary new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   234
    classLoadersAndClasses at: nil put: Dictionary new.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   235
! !
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   236
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   237
!JavaClassRegistry methodsFor:'public api'!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   238
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   239
at: className 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   240
    ^ self at: nil at: className ifAbsent: nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   241
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   242
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   243
at: classLoader at: className 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   244
    ^self at: classLoader at: className ifAbsent:nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   245
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   246
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   247
at: classLoader at: className ifAbsent: aBlock 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   248
    "get class loaded by classLoader from registry. Don't load if not found in registry"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   249
    className asJavaComponentClassName isJavaPrimitiveTypeDescriptor ifTrue: [   
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   250
    ^ self getPrimitiveType: className
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   251
        ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   252
    ^ (classLoadersAndClasses at: classLoader
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   253
        ifAbsent: [ self halt: 'cannot find given classLoader in registry' ]) 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   254
            at: className
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   255
            ifAbsent: aBlock.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   256
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   257
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   258
classForName: className
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   259
    "you should be damn sure you don't have class loader"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   260
   ^ self classForName: className definedBy:nil.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   261
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   262
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   263
classForName: className definedBy: aJavaClassLoader 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   264
    "get class from registry, if not present, load it from classPath. Use given classLoader, if nil, it will use native one"
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   265
    
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   266
    | result  cleanClassName |
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   267
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   268
    cleanClassName := className asSTXInternalJavaClassName.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   269
    cleanClassName isJavaPrimitiveTypeDescriptor ifTrue: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   270
        ^ self getPrimitiveType: className
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   271
    ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   272
    result := self 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   273
                at: aJavaClassLoader
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   274
                at: cleanClassName
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   275
                ifAbsent: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   276
                    aJavaClassLoader 
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   277
                        ifNil: [ self loadClassNamed: cleanClassName ]
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   278
                        ifNotNil: [ self loadClassNamed: cleanClassName using: aJavaClassLoader ]
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   279
                ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   280
    (result isJavaClass and: [ result isInitialized not ]) ifTrue: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   281
        self breakPoint: #mh
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   282
    ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   283
    (className isJavaArrayDescriptor) ifTrue: [
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   284
        ^ self makeArrayOf: result asDescribedBy: className.
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   285
    ] ifFalse: [ ^ result ].
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   286
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   287
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   288
loadClassesIn: directory 
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   289
"load all classes (.class files, strictly speaking) found in given directory.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   290
The argument is string containing the name of the directory.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   291
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   292
Returns a set of loaded classes."
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   293
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   294
^ self loadClassesIn: directory matching: '*'.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   295
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   296
"Modified: / 11-06-2011 / 13:35:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   297
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   298
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   299
loadClassesIn: directory matching: pattern 
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   300
    "load all classes (.class files, strictly speaking) found in given directory.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   301
     The arguments are a string containing the name of the directory
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   302
     and a class name pattern. Only classes matching the pattern are loaded.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   303
     class names are matched using String>>matches:.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   304
     ALL CLASSES ARE INSTALLED!!
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   305
     Returns a set of loaded classes."
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   306
    
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   307
    | dir  dirString  className  loadedClasses |
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   308
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   309
    dir := directory asFilename asAbsoluteFilename.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   310
    loadedClasses := Set new.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   311
    Java addToClassPath: dir pathName.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   312
    dir 
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   313
        recursiveDirectoryContentsAsFilenamesDo: [
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   314
            :filename | 
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   315
            (filename isRegularFile and: [ filename suffix = #class ]) ifTrue: [
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   316
                dirString := dir pathName.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   317
                className := filename withoutSuffix pathName.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   318
                className := className subString: dirString size + 2 to: className size.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   319
                className := className copyReplaceAll: (Filename separator) with: $..
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   320
                (className matches: pattern) ifTrue: [
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   321
                    | loadedClass |
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   322
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   323
                    loadedClass := self loadClassNamed: className.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   324
                    self addClass: loadedClass definedBy: nil.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   325
                    loadedClasses add: loadedClass.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   326
                ]
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   327
            ]
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   328
        ].
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   329
    ^ loadedClasses.
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   330
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   331
    "Modified: / 29-04-2011 / 17:43:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   332
    "Created: / 11-06-2011 / 13:34:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   333
    "Modified: / 11-06-2011 / 16:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   334
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   335
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   336
!JavaClassRegistry class methodsFor:'documentation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   337
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   338
version_SVN
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   339
    ^ '$Id$'
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   340
! !