Java.st
author cg
Fri, 01 Aug 1997 13:41:45 +0000
changeset 191 b54114a71517
parent 188 5de467ea7e45
child 192 80dde7b3cd73
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#Java
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     2
	instanceVariableNames:''
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
     3
	classVariableNames:'Classes UnresolvedClassRefs ClassPath SourceDirectories
188
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
     4
		Java_lang_String Java_lang_Class PrettyPrintStyle'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     5
	poolDictionaries:''
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     6
	category:'Java-Support'
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     7
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     8
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     9
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    10
!Java class methodsFor:'accessing'!
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    11
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    12
classForName:aString
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    13
    "return a javaClass - either existing or loaded"
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    14
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    15
    |cls|
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    16
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    17
    cls := self at:aString.
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    18
    cls isNil ifTrue:[
191
b54114a71517 *** empty log message ***
cg
parents: 188
diff changeset
    19
        ('JAVA [info]: late class loading: ' , aString) infoPrintCR.
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    20
        cls := JavaClassReader loadClass:aString.
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    21
    ].
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    22
    ^ cls
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    23
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    24
    "Created: 18.3.1997 / 16:45:57 / cg"
191
b54114a71517 *** empty log message ***
cg
parents: 188
diff changeset
    25
    "Modified: 1.8.1997 / 15:19:15 / cg"
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    26
!
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    27
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    28
classNamed:aString
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    29
    ^ self at:aString
32
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    30
!
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    31
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    32
classPath
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    33
    ^ ClassPath
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    34
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    35
    "Created: 7.2.1997 / 19:23:45 / cg"
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    36
    "Modified: 7.2.1997 / 19:23:55 / cg"
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    37
!
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    38
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    39
classPath:aCollectionOfPaths
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    40
    ClassPath := aCollectionOfPaths asOrderedCollection
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    41
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    42
    "Created: 7.2.1997 / 19:23:45 / cg"
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    43
!
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    44
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    45
java_lang_Class
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    46
    Java_lang_Class isNil ifTrue:[
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    47
        Java_lang_Class := self at:'java.lang.Class'
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    48
    ].
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    49
    ^ Java_lang_Class
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    50
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    51
    "Created: 26.3.1997 / 13:42:59 / cg"
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    52
    "Modified: 26.3.1997 / 13:46:24 / cg"
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    53
!
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    54
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    55
java_lang_String
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    56
    Java_lang_String isNil ifTrue:[
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    57
        Java_lang_String := self at:'java.lang.String'
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    58
    ].
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    59
    ^ Java_lang_String
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    60
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    61
    "Created: 26.3.1997 / 13:43:17 / cg"
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
    62
    "Modified: 26.3.1997 / 13:50:21 / cg"
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    63
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    64
188
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    65
prettyPrintStyle
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    66
    ^ PrettyPrintStyle
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    67
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    68
    "Created: 1.8.1997 / 10:37:57 / cg"
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    69
!
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
    70
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    71
sourceDirectories
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    72
    ^ SourceDirectories
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    73
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    74
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    75
sourceDirectories:aCollectionOfPaths
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    76
    SourceDirectories := aCollectionOfPaths asOrderedCollection
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    77
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    78
    "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    79
     Java
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    80
        sourceDirectories:#(
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    81
                            '/phys/ibm3/java/src'
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    82
                           )
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    83
    "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    84
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    85
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    86
! !
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    87
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
    88
!Java class methodsFor:'class initialization'!
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    89
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    90
initAllClasses
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    91
     |system|
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    92
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    93
     self initAllStaticFields.
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    94
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    95
     system := self at:'java.lang.System'.
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    96
     system isInitialized ifFalse:[
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    97
         system classInit.
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    98
         self initSystemClass.
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
    99
     ].
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   100
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   101
     self allClassesDo:[:cls |
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   102
        cls isInitialized ifFalse:[
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   103
            cls classInit
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   104
        ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   105
     ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   106
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   107
    "Modified: 18.3.1997 / 14:53:46 / cg"
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   108
!
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   109
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   110
initAllStaticFields
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   111
     self allClassesDo:[:cls |
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   112
        cls initializeStaticFields
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   113
     ]
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   114
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   115
!
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   116
146
0aa6ccd0c1b1 checkin from browser
cg
parents: 145
diff changeset
   117
initSystemClass
0aa6ccd0c1b1 checkin from browser
cg
parents: 145
diff changeset
   118
     (Java at:'java.lang.System') invoke:#initializeSystemClass
0aa6ccd0c1b1 checkin from browser
cg
parents: 145
diff changeset
   119
147
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   120
    "
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   121
     Java initSystemClass
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   122
    "
14fc6545fb32 checkin from browser
cg
parents: 146
diff changeset
   123
176
16f64026e8ec *** empty log message ***
cg
parents: 168
diff changeset
   124
    "Modified: 30.7.1997 / 14:08:31 / cg"
146
0aa6ccd0c1b1 checkin from browser
cg
parents: 145
diff changeset
   125
!
0aa6ccd0c1b1 checkin from browser
cg
parents: 145
diff changeset
   126
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   127
initialize
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   128
    self classPath:#(
145
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   129
                        '/home2/java/jdk1.13/java/lib/classes'
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   130
"/                        '/home2/java/jdk1.02/java/lib/classes'
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   131
"/                        '/home2/java/JDK/classes'
188
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   132
                    ).
116
7d612d4450c0 *** empty log message ***
cg
parents: 102
diff changeset
   133
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   134
    self
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   135
        sourceDirectories:#(
145
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   136
                        '/home2/java/jdk1.13/java/src'
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   137
"/                        '/home2/java/jdk1.02/java/src'
204affe03d47 checkin from browser
cg
parents: 137
diff changeset
   138
"/                        '/home2/java/JDK/src'
188
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   139
                          ).
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   140
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   141
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   142
    self initializePrettyPrintStyle.
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   143
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   144
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   145
     "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   146
      Java initialize
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   147
     "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   148
188
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   149
    "Modified: 1.8.1997 / 11:08:52 / cg"
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   150
!
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   151
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   152
initializePrettyPrintStyle
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   153
    PrettyPrintStyle := IdentityDictionary new.
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   154
    PrettyPrintStyle  at:#accessAttribute put:(#color -> (Color red:0 green:0 blue:25)).
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   155
    PrettyPrintStyle  at:#className       put:(Array with:(#color -> Color black) with:#bold).
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   156
    PrettyPrintStyle  at:#methodName      put:(Array with:(#color -> Color black) with:#bold).
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   157
    PrettyPrintStyle  at:#code            put:(#color -> Color black).
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   158
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   159
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   160
     "
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   161
      Java initializePrettyPrintStyle
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   162
     "
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   163
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   164
    "Created: 1.8.1997 / 11:08:43 / cg"
5de467ea7e45 support color printing
cg
parents: 176
diff changeset
   165
    "Modified: 1.8.1997 / 11:09:58 / cg"
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   166
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   167
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   168
reinitAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   169
     self markAllClassesUninitialized.
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   170
     self initAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   171
! !
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
   172
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   173
!Java class methodsFor:'enumerating'!
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   174
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   175
allClasses
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   176
    ^ Classes
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   177
!
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   178
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   179
allClassesDo:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   180
    Classes notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   181
        Classes do:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   182
    ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   183
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   184
168
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   185
!Java class methodsFor:'queries'!
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   186
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   187
smalltalkClassFor:typeRef
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   188
self halt.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   189
"/    (typeString startsWith:'[[') ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   190
"/        ^ Array
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   191
"/    ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   192
"/    (typeString startsWith:'[F') ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   193
"/        ^ FloatArray
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   194
"/    ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   195
    self halt.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   196
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   197
    "Modified: 7.4.1997 / 13:33:46 / cg"
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   198
!
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   199
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   200
smalltalkDerefType:typeString
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   201
    (typeString startsWith:'[') ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   202
        ^ typeString copyFrom:2
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   203
    ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   204
    self halt.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   205
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   206
    "Modified: 7.4.1997 / 13:13:24 / cg"
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   207
! !
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   208
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   209
!Java class methodsFor:'registering java classes'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   210
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   211
at:aJavaName
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   212
    "search & return for a class by name;
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   213
     if there is no such class, return nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   214
     The argument, aJavaName may be either an internal name
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   215
     (sep'd by slashes) or an external name (sep'd by periods).
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   216
     The 'java/lang' standard packages prefix may be ommitted."
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   217
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   218
    |sym nm cls|
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   219
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   220
    Classes isNil ifTrue:[^ nil].
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   221
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   222
    sym := aJavaName asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   223
    sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   224
        cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   225
        cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   226
    ].
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   227
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   228
    nm := aJavaName.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   229
    (nm includes:$.) ifTrue:[
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   230
        nm := (nm asString copy replaceAll:$. by:$/).
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   231
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   232
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   233
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   234
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   235
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   236
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   237
        
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   238
    (nm includes:$/) ifFalse:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   239
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   240
        "/ try java.lang.Foo
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   241
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   242
        nm := 'java/lang/' , nm.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   243
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   244
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   245
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   246
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   247
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   248
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   249
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   250
    ^ nil
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   251
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   252
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   253
     Java at:'java/lang/String' 
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   254
     Java at:'java.lang.String'
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   255
     Java at:'String'          
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   256
     Java at:'System'            
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   257
     Java at:'Foo'               
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   258
    "
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   259
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   260
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   261
at:aJavaName put:aJavaClass
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   262
    |nameSymbol|
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   263
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   264
    Classes isNil ifTrue:[
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   265
        Classes := IdentityDictionary new.
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   266
    ].
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   267
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   268
    nameSymbol := aJavaName asSymbol.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   269
    (Classes includesKey:nameSymbol) ifTrue:[
121
878a72e7f605 checkin from browser
cg
parents: 116
diff changeset
   270
        ('JAVA: class ' , aJavaName , ' is already loaded') infoPrintCR.
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   271
        self updateClassRefsFrom:(Classes at:nameSymbol) to:aJavaClass
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   272
    ].
54
f37bcefb7091 avoid loading classes twice
cg
parents: 47
diff changeset
   273
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   274
    Classes at:nameSymbol put:aJavaClass.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   275
    nameSymbol == #'java/lang/String' ifTrue:[
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   276
        Java_lang_String := aJavaClass
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   277
    ].
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   278
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   279
"/    UnresolvedClassRefs notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   280
"/        UnresolvedClassRefs do:[:toResolve |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   281
"/        ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   282
"/    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   283
27
4560bb77bb36 checkin from browser
cg
parents: 24
diff changeset
   284
    self changed:#classes
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   285
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   286
    "Created: 17.4.1996 / 23:29:31 / cg"
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   287
    "Modified: 26.3.1997 / 13:48:15 / cg"
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   288
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   289
168
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   290
flushAllJavaResources
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   291
    self flushClasses.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   292
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   293
    ObjectMemory allObjectsDo:[:someObject |
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   294
        someObject isBehavior ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   295
            someObject isJavaClass ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   296
                someObject setConstantPool:nil.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   297
                someObject setInterfaces:nil.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   298
                someObject setMethodDictionary:(MethodDictionary new).
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   299
someObject fullName printCR.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   300
            ]
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   301
        ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   302
        (someObject isMemberOf:JavaMethod) ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   303
            someObject setJavaClass:nil.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   304
            someObject setExceptionTable:nil.
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   305
        ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   306
        (someObject isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   307
            someObject constantPool:nil
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   308
        ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   309
    ].
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   310
    self flushClasses
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   311
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   312
    "
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   313
     Java flushAllJavaResources
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   314
    "
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   315
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   316
    "Modified: 7.4.1997 / 16:49:23 / cg"
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   317
!
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   318
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   319
flushClasses
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   320
    Classes := UnresolvedClassRefs := nil.
168
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   321
    Smalltalk keys copy do:[:aKey | 
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   322
        (aKey startsWith:'JAVA::') ifTrue:[ Smalltalk removeKey:aKey ]
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   323
    ].
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   324
    Java_lang_String := Java_lang_Class := nil.
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   325
    JavaInterpreter releaseAllJavaResources.
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   326
    JavaUnresolvedConstant flushPatchLists.
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   327
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   328
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   329
     Java flushClasses
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   330
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   331
168
90e39cb3fa04 *** empty log message ***
cg
parents: 167
diff changeset
   332
    "Modified: 7.4.1997 / 15:25:46 / cg"
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   333
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   334
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   335
markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   336
    self allClassesDo:[:aJavaClass |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   337
        aJavaClass markUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   338
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   339
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   340
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   341
     Java markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   342
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   343
!
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   344
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   345
rememberUnresolved:anUnresolvedClassRef
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   346
    ('JAVA: remember unresolved class: ' , anUnresolvedClassRef fullName) infoPrintCR.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   347
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   348
    UnresolvedClassRefs isNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   349
        UnresolvedClassRefs := Set new.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   350
    ].
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   351
    UnresolvedClassRefs add:anUnresolvedClassRef
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   352
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   353
    "Created: 18.4.1996 / 00:05:31 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   354
    "Modified: 18.4.1996 / 00:05:41 / cg"
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   355
!
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   356
162
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   357
removeClass:aJavaClass
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   358
    "/ remove it from myself
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   359
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   360
    |javaName sym nm cls |
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   361
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   362
    javaName := aJavaClass fullName.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   363
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   364
    sym := javaName asSymbolIfInterned.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   365
    sym notNil ifTrue:[
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   366
        cls := Classes at:sym ifAbsent:nil.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   367
    ].
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   368
    cls isNil ifTrue:[
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   369
        nm := javaName.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   370
        (nm includes:$.) ifTrue:[
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   371
            "/
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   372
            "/ try pckg/.../name
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   373
            "/
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   374
            nm := (nm asString copy replaceAll:$. by:$/).
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   375
            sym := nm asSymbolIfInterned.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   376
            sym notNil ifTrue:[
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   377
                cls := Classes at:sym ifAbsent:nil.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   378
            ].
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   379
        ].
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   380
    ].
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   381
    cls notNil ifTrue:[
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   382
        Classes removeKey:sym
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   383
    ].
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   384
"/
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   385
    self halt.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   386
    Classes  at:sym put:aJavaClass.
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   387
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   388
    "Created: 22.3.1997 / 13:44:54 / cg"
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   389
    "Modified: 22.3.1997 / 13:48:14 / cg"
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   390
!
15b1e9c8e2f5 preps for class-remove
cg
parents: 147
diff changeset
   391
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   392
unresolvedClassRefFor:aClassName
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   393
    UnresolvedClassRefs isNil ifTrue:[^ nil].
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   394
    ^ UnresolvedClassRefs at:aClassName ifAbsent:nil.
167
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   395
!
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   396
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   397
updateClassRefsFrom:oldClass to:newClass
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   398
    "update all references to oldClass to now refer to newClass.
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   399
     sent, when a class is reloaded"
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   400
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   401
    self halt.
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   402
77dcbc4b2201 *** empty log message ***
cg
parents: 162
diff changeset
   403
    "Created: 26.3.1997 / 13:49:20 / cg"
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   404
! !
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   405
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   406
!Java class methodsFor:'source management'!
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   407
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   408
classSourceOf:aClass
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   409
    |package dirName binary sourceFileName sourceFile dirHolder fileName path|
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   410
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   411
    aClass isNil ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   412
        ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   413
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   414
    package := aClass package.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   415
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   416
    "/ first, look in the directory, where the binary
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   417
    "/ was loaded from.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   418
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   419
    binary := aClass binaryFile asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   420
    sourceFileName := binary withSuffix:'java'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   421
    sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   422
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   423
    sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   424
        sourceFileName := binary withSuffix:'jav'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   425
        sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   426
        sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   427
            sourceFileName := binary withSuffix:'JAV'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   428
            sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   429
            sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   430
                sourceFileName := binary withSuffix:'JAVA'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   431
                sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   432
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   433
        ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   434
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   435
176
16f64026e8ec *** empty log message ***
cg
parents: 168
diff changeset
   436
    "/ special case: there were multiple classes in a single
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   437
    "/ source file.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   438
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   439
    binary withoutSuffix baseName ~= aClass sourceFile asFilename withoutSuffix baseName ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   440
        'JAVA: trouble extracting fileName: ' print.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   441
        binary withoutSuffix baseName print. ' vs. ' print.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   442
        aClass sourceFile asFilename withoutSuffix baseName printCR.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   443
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   444
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   445
    "/ if that fails, look in standard places
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   446
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   447
    sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   448
        sourceFileName := aClass sourceFile.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   449
        sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   450
        sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   451
            "/
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   452
            "/ mhmh - look for its directory
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   453
            "/
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   454
            dirName := sourceFile directoryName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   455
            fileName := sourceFile baseName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   456
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   457
            (dirName asFilename exists 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   458
            and:[(dirName asFilename construct:(package , '/' , fileName)) exists])
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   459
            ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   460
                (dirName asFilename exists 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   461
                and:[(dirName asFilename construct:(fileName)) exists])
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   462
                ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   463
                    dirName := self findSourceDirOf:fileName inPackage:package.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   464
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   465
    "/                [dirName isNil] whileTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   466
    "/                    dirName := Dialog requestDirectoryName:'top directory for ' , package , '/' , fileName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   467
    "/                    (dirName isNil or:[dirName isEmpty]) ifTrue:[^ self].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   468
    "/                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   469
                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   470
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   471
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   472
            (dirName notNil and:[dirName asFilename exists]) ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   473
                path := (dirName asFilename construct:(package , '/' , fileName)) asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   474
                path exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   475
                    path := (dirName asFilename construct:(fileName)) asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   476
                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   477
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   478
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   479
            (path notNil and:[path exists]) ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   480
                ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   481
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   482
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   483
            sourceFile := path asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   484
        ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   485
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   486
    ^ (sourceFile contentsOfEntireFile).
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   487
176
16f64026e8ec *** empty log message ***
cg
parents: 168
diff changeset
   488
    "Modified: 30.7.1997 / 14:28:55 / cg"
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   489
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   490
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   491
findSourceDirOf:fileName inPackage:aPackage
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   492
    SourceDirectories notNil ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   493
        SourceDirectories do:[:aDir |
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   494
            (aDir asFilename construct:('/' , aPackage , '/' , fileName))
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   495
            asFilename exists ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   496
                ^ aDir 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   497
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   498
            (aDir asFilename construct:('/' , fileName))
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   499
            asFilename exists ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   500
                ^ aDir 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   501
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   502
        ]
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   503
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   504
    ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   505
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   506
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   507
! !
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   508
135
098936234135 *** empty log message ***
cg
parents: 121
diff changeset
   509
!Java class methodsFor:'documentation'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   510
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   511
version
191
b54114a71517 *** empty log message ***
cg
parents: 188
diff changeset
   512
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/Java.st,v 1.30 1997/08/01 13:41:45 cg Exp $'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   513
! !
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   514
Java initialize!