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