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