more classLoader hooks
authorcg
Fri, 15 Aug 1997 11:07:06 +0000
changeset 225 b11dde7c1df2
parent 224 164850a15533
child 226 a48121c92205
more classLoader hooks
JavaClassReader.st
--- 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!