Java.st
author cg
Tue, 02 Jul 1996 12:20:04 +0000
changeset 102 de5ab089cf47
parent 98 bd1f320e757e
child 116 7d612d4450c0
permissions -rw-r--r--
checkin from browser
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:''
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
     3
	classVariableNames:'Classes UnresolvedClassRefs SourceDirectories JavaString'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Support'
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     6
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     7
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     8
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
     9
!Java  class methodsFor:'accessing'!
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    10
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    11
classNamed:aString
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    12
    ^ self at:aString
32
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    13
!
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    14
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    15
javaString
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    16
    ^ JavaString
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    17
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    18
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    19
sourceDirectories
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    20
    ^ SourceDirectories
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    21
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    22
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    23
sourceDirectories:aCollectionOfPaths
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    24
    SourceDirectories := aCollectionOfPaths asOrderedCollection
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    25
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    26
    "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    27
     Java
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    28
        sourceDirectories:#(
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    29
                            '/phys/ibm3/java/src'
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    30
                           )
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    31
    "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    32
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    33
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    34
! !
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    35
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    36
!Java  class methodsFor:'class initialization'!
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    37
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    38
initAllClasses
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    39
     self initAllStaticFields.
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    40
     self allClassesDo:[:cls |
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    41
        cls isInitialized ifFalse:[
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    42
            cls classInit
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    43
        ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    44
     ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    45
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    46
!
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    47
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    48
initAllStaticFields
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    49
     self allClassesDo:[:cls |
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    50
        cls initializeStaticFields
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    51
     ]
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    52
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    53
!
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
    54
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    55
initialize
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    56
     self
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    57
        sourceDirectories:#(
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    58
                                '/home/cg/java/JDK/src'
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    59
                                '/home/cg/java/JWS/src'
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    60
                                '/home/cg/java/src'
98
bd1f320e757e *** empty log message ***
cg
parents: 94
diff changeset
    61
bd1f320e757e *** empty log message ***
cg
parents: 94
diff changeset
    62
                                '/phys/idefix/home/cg/java/JDK/src'
bd1f320e757e *** empty log message ***
cg
parents: 94
diff changeset
    63
                                '/phys/idefix/home/cg/java/JWS/src'
bd1f320e757e *** empty log message ***
cg
parents: 94
diff changeset
    64
                                '/phys/idefix/home/cg/java/src'
bd1f320e757e *** empty log message ***
cg
parents: 94
diff changeset
    65
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    66
                                '/phys/ibm3/java/src'
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    67
                           )
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    68
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    69
     "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    70
      Java initialize
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    71
     "
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
    72
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
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    76
reinitAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    77
     self markAllClassesUninitialized.
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    78
     self initAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    79
! !
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    80
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    81
!Java  class methodsFor:'enumerating'!
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    82
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    83
allClasses
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    84
    ^ Classes
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    85
!
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
    86
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    87
allClassesDo:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    88
    Classes notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    89
        Classes do:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    90
    ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    91
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    92
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    93
!Java  class methodsFor:'registering java classes'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    94
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    95
at:aJavaName
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    96
    "search & return for a class by name;
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    97
     if there is no such class, return nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    98
     The argument, aJavaName may be either an internal name
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    99
     (sep'd by slashes) or an external name (sep'd by periods).
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   100
     The 'java/lang' standard packages prefix may be ommitted."
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   101
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   102
    |sym nm cls|
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   103
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   104
    Classes isNil ifTrue:[^ nil].
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   105
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   106
    sym := aJavaName asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   107
    sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   108
        cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   109
        cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   110
    ].
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   111
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   112
    nm := aJavaName.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   113
    (nm includes:$.) ifTrue:[
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   114
        nm := (nm asString copy replaceAll:$. by:$/).
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   115
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   116
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   117
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   118
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   119
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   120
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   121
        
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   122
    (nm includes:$/) ifFalse:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   123
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   124
        "/ try java.lang.Foo
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   125
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   126
        nm := 'java/lang/' , nm.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   127
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   128
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   129
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   130
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   131
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   132
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   133
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   134
    ^ nil
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   135
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   136
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   137
     Java at:'java/lang/String' 
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   138
     Java at:'java.lang.String'
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   139
     Java at:'String'          
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   140
     Java at:'System'            
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   141
     Java at:'Foo'               
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   142
    "
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   143
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   144
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   145
at:aJavaName put:aJavaClass
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   146
    |nameSymbol|
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   147
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   148
    Classes isNil ifTrue:[
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   149
        Classes := IdentityDictionary new.
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   150
    ].
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   151
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   152
    nameSymbol := aJavaName asSymbol.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   153
    (Classes includesKey:nameSymbol) ifTrue:[
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   154
        self halt:'class ' , aJavaName , ' is already loaded'.
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   155
    ].
54
f37bcefb7091 avoid loading classes twice
cg
parents: 47
diff changeset
   156
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   157
    Classes at:nameSymbol put:aJavaClass.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   158
    nameSymbol == #'java/lang/String' ifTrue:[
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   159
        JavaString := aJavaClass
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   160
    ].
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   161
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   162
"/    UnresolvedClassRefs notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   163
"/        UnresolvedClassRefs do:[:toResolve |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   164
"/        ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   165
"/    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   166
27
4560bb77bb36 checkin from browser
cg
parents: 24
diff changeset
   167
    self changed:#classes
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   168
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   169
    "Created: 17.4.1996 / 23:29:31 / cg"
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   170
    "Modified: 18.4.1996 / 00:45:39 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   171
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   172
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   173
flushClasses
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   174
    Classes := UnresolvedClassRefs := JavaString := nil.
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   175
    JavaInterpreter releaseAllJavaResources.
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   176
    JavaUnresolvedConstant flushPatchLists.
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   177
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   178
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   179
     Java flushClasses
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   180
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   181
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   182
    "Modified: 18.4.1996 / 00:20:23 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   183
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   184
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   185
markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   186
    self allClassesDo:[:aJavaClass |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   187
        aJavaClass markUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   188
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   189
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   190
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   191
     Java markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   192
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   193
!
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   194
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   195
rememberUnresolved:anUnresolvedClassRef
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   196
    ('JAVA: remember unresolved class: ' , anUnresolvedClassRef fullName) infoPrintCR.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   197
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   198
    UnresolvedClassRefs isNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   199
        UnresolvedClassRefs := Set new.
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   200
    ].
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   201
    UnresolvedClassRefs add:anUnresolvedClassRef
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   202
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   203
    "Created: 18.4.1996 / 00:05:31 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   204
    "Modified: 18.4.1996 / 00:05:41 / cg"
90
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   205
!
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   206
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   207
unresolvedClassRefFor:aClassName
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   208
    UnresolvedClassRefs isNil ifTrue:[^ nil].
918e2740098c resolve rewritten
cg
parents: 84
diff changeset
   209
    ^ UnresolvedClassRefs at:aClassName ifAbsent:nil.
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   210
! !
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   211
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   212
!Java  class methodsFor:'source management'!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   213
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   214
classSourceOf:aClass
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   215
    |package dirName binary sourceFileName sourceFile dirHolder fileName path|
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   216
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   217
    aClass isNil ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   218
        ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   219
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   220
    package := aClass package.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   221
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   222
    "/ first, look in the directory, where the binary
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   223
    "/ was loaded from.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   224
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   225
    binary := aClass binaryFile asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   226
    sourceFileName := binary withSuffix:'java'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   227
    sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   228
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   229
    sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   230
        sourceFileName := binary withSuffix:'jav'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   231
        sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   232
        sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   233
            sourceFileName := binary withSuffix:'JAV'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   234
            sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   235
            sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   236
                sourceFileName := binary withSuffix:'JAVA'.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   237
                sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   238
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   239
        ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   240
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   241
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   242
    "/ special case: there where multiple classes in a single
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   243
    "/ source file.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   244
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   245
    binary withoutSuffix baseName ~= aClass sourceFile asFilename withoutSuffix baseName ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   246
        'JAVA: trouble extracting fileName: ' print.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   247
        binary withoutSuffix baseName print. ' vs. ' print.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   248
        aClass sourceFile asFilename withoutSuffix baseName printCR.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   249
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   250
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   251
    "/ if that fails, look in standard places
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   252
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   253
    sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   254
        sourceFileName := aClass sourceFile.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   255
        sourceFile := sourceFileName asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   256
        sourceFile exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   257
            "/
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   258
            "/ mhmh - look for its directory
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   259
            "/
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   260
            dirName := sourceFile directoryName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   261
            fileName := sourceFile baseName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   262
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   263
            (dirName asFilename exists 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   264
            and:[(dirName asFilename construct:(package , '/' , fileName)) exists])
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   265
            ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   266
                (dirName asFilename exists 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   267
                and:[(dirName asFilename construct:(fileName)) exists])
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   268
                ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   269
                    dirName := self findSourceDirOf:fileName inPackage:package.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   270
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   271
    "/                [dirName isNil] whileTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   272
    "/                    dirName := Dialog requestDirectoryName:'top directory for ' , package , '/' , fileName.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   273
    "/                    (dirName isNil or:[dirName isEmpty]) ifTrue:[^ self].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   274
    "/                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   275
                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   276
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   277
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   278
            (dirName notNil and:[dirName asFilename exists]) ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   279
                path := (dirName asFilename construct:(package , '/' , fileName)) asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   280
                path exists ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   281
                    path := (dirName asFilename construct:(fileName)) asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   282
                ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   283
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   284
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   285
            (path notNil and:[path exists]) ifFalse:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   286
                ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   287
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   288
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   289
            sourceFile := path asFilename.
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   290
        ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   291
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   292
    ^ (sourceFile contentsOfEntireFile).
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   293
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   294
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   295
!
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   296
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   297
findSourceDirOf:fileName inPackage:aPackage
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   298
    SourceDirectories notNil ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   299
        SourceDirectories do:[:aDir |
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   300
            (aDir asFilename construct:('/' , aPackage , '/' , fileName))
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   301
            asFilename exists ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   302
                ^ aDir 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   303
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   304
            (aDir asFilename construct:('/' , fileName))
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   305
            asFilename exists ifTrue:[
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   306
                ^ aDir 
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   307
            ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   308
        ]
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   309
    ].
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   310
    ^ nil
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   311
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   312
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   313
! !
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   314
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   315
!Java  class methodsFor:'documentation'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   316
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   317
version
102
de5ab089cf47 checkin from browser
cg
parents: 98
diff changeset
   318
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/Java.st,v 1.17 1996/07/02 12:19:31 cg Exp $'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   319
! !
76
9ff95e14dbfb *** empty log message ***
cg
parents: 71
diff changeset
   320
Java initialize!