--- a/JavaClassReader.st Fri Aug 15 11:06:15 1997 +0000
+++ b/JavaClassReader.st Fri Aug 15 11:07:06 1997 +0000
@@ -249,6 +249,16 @@
Perform all class initialization functions (of those which are not
yet initialized)."
+ ^ self postLoadActions:true
+
+ "Modified: 15.8.1997 / 01:02:17 / cg"
+!
+
+postLoadActions:loadUnresolved
+ "Resolve all classes' string constants.
+ Perform all class initialization functions (of those which are not
+ yet initialized)."
+
|classes prevUnresolved newUnresolved loader|
"/ need at least java.lang.String, for valid constants
@@ -261,26 +271,27 @@
prevUnresolved := nil.
newUnresolved := JavaUnresolvedConstant unresolvedClassNames asArray.
- [prevUnresolved ~= newUnresolved] whileTrue:[
- newUnresolved do:[:nextUnresolved |
- (Java at:nextUnresolved) isNil ifTrue:[ "/ could have been loaded in the meantime
- Silent ifFalse:[
- 'loading unresolved: ' print. nextUnresolved printCR.
- ].
+ loadUnresolved ifTrue:[
+ [prevUnresolved ~= newUnresolved] whileTrue:[
+ newUnresolved do:[:nextUnresolved |
+ (Java at:nextUnresolved) isNil ifTrue:[ "/ could have been loaded in the meantime
+ Silent ifFalse:[
+ 'loading unresolved: ' print. nextUnresolved printCR.
+ ].
- loader isNil ifTrue:[
- self
- loadClassLazy:nextUnresolved
- ignoring:Set new.
- ] ifFalse:[
- loader loadClass:nextUnresolved
+ loader isNil ifTrue:[
+ self
+ loadClassLazy:nextUnresolved
+ ignoring:Set new.
+ ] ifFalse:[
+ loader loadClass:nextUnresolved
+ ]
]
- ]
+ ].
+ prevUnresolved := newUnresolved.
+ newUnresolved := JavaUnresolvedConstant unresolvedClassNames asArray.
].
- prevUnresolved := newUnresolved.
- newUnresolved := JavaUnresolvedConstant unresolvedClassNames asArray.
].
-
newUnresolved size == 0 ifTrue:[
"/ nothing unresolved
@@ -302,6 +313,7 @@
]
"Modified: 14.8.1997 / 19:54:07 / cg"
+ "Created: 15.8.1997 / 01:01:44 / cg"
!
readFile:aFilename ignoring:classesBeingLoaded
@@ -368,13 +380,28 @@
asked to do it. If aClassLoader is nil, a new standard loader
is created."
+ ^ self
+ readStream:aStream
+ loader:aClassLoader
+ loadUnresolved:true
+
+ "Modified: 15.8.1997 / 01:00:35 / cg"
+!
+
+readStream:aStream loader:aClassLoader loadUnresolved:loadUnresolved
+ "reads a class from aStream and returns it.
+ The JavaClass is installed as global.
+ If new classes are required to be loaded, aClassLoader is
+ asked to do it. If aClassLoader is nil, a new standard loader
+ is created."
+
|javaClass|
javaClass := self readStream:aStream ignoring:(Set new).
javaClass notNil ifTrue:[
ClassLoaderQuerySignal answer:aClassLoader
do:[
- self postLoadActions.
+ self postLoadActions:loadUnresolved.
Java at:(javaClass fullName asSymbol) put:javaClass.
JavaUnresolvedConstant resolveFor:javaClass.
].
@@ -382,7 +409,7 @@
^ javaClass
"Modified: 3.8.1997 / 19:48:45 / cg"
- "Created: 14.8.1997 / 19:51:04 / cg"
+ "Created: 15.8.1997 / 00:59:24 / cg"
! !
!JavaClassReader methodsFor:'file reading'!
@@ -1355,6 +1382,6 @@
!JavaClassReader class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.46 1997/08/14 18:37:13 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.47 1997/08/15 11:07:06 cg Exp $'
! !
JavaClassReader initialize!