Smalltalk.st
branchjv
changeset 17859 cc167a69671c
parent 17850 8fa257692c35
child 17862 8a8ae3107950
--- a/Smalltalk.st	Tue Sep 06 10:35:19 2011 +0100
+++ b/Smalltalk.st	Wed Sep 07 17:25:40 2011 +0100
@@ -2186,20 +2186,22 @@
 !
 
 loadExtensionsForPackage:aPackageId
-
     | extensionsLoaded |
+
     extensionsLoaded := false.
-    ProgrammingLanguage allDo:
-        [:lang|
-        extensionsLoaded := extensionsLoaded | (self loadExtensionsForPackage:aPackageId language: lang)].
-    ^extensionsLoaded
+    ProgrammingLanguage allDo:[:lang|
+        extensionsLoaded := extensionsLoaded | (self loadExtensionsForPackage:aPackageId language: lang)
+    ].
+    ^ extensionsLoaded
 
     "Modified: / 18-02-2007 / 11:03:26 / cg"
     "Modified: / 02-01-2010 / 10:43:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 04-09-2011 / 09:19:24 / cg"
 !
 
 loadExtensionsForPackage:aPackageId language: language
-    |mgr packageDirName inStream|
+    |mgr packageDirName inStream projectDefinition extensionsFilename mod dir 
+     extensionsRevisionString extensionsRevisionInfo|
 
     language supportsExtensionMethods ifFalse:[^false].
 
@@ -2208,9 +2210,9 @@
 
     (packageDirName notNil and:[Class tryLocalSourceFirst]) ifTrue:[
         (self loadExtensionsFromDirectory:packageDirName language: language) ifTrue:[
-	    ^ true.
-	].
-	packageDirName := nil.  "do not try again"
+            ^ true.
+        ].
+        packageDirName := nil.  "do not try again"
     ].
 
     "
@@ -2218,20 +2220,40 @@
     "
     mgr := Smalltalk at:#SourceCodeManager.
     mgr notNil ifTrue:[
-	SourceCodeManagerError handle:[:ex |
-	] do:[
-            inStream := mgr getMostRecentSourceStreamForFile:'extensions.' , language sourceFileSuffix inPackage:aPackageId.
-	].
-	inStream notNil ifTrue:[
-	    Class withoutUpdatingChangeSetDo:[
-		inStream fileIn.
-	    ].
-	    inStream close.
-	    SilentLoading ifFalse:[
-		Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
-	    ].
-	    ^ true
-	]
+        extensionsFilename := 'extensions.' , language sourceFileSuffix.
+
+        projectDefinition := ProjectDefinition definitionClassForPackage:aPackageId.
+        projectDefinition notNil ifTrue:[
+            mod := aPackageId asPackageId module.
+            dir := aPackageId asPackageId directory.
+            extensionsRevisionString := projectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
+            extensionsRevisionString notNil ifTrue:[
+                extensionsRevisionInfo := mgr revisionInfoFromString:extensionsRevisionString inClass:nil.
+                extensionsRevisionInfo notNil ifTrue:[
+                    extensionsRevisionInfo fileName = extensionsFilename ifFalse:[^ false].
+                ]
+            ].
+            SourceCodeManagerError handle:[:ex |
+            ] do:[
+                inStream := mgr streamForExtensionFile:extensionsFilename package:aPackageId directory:dir module:mod cache:true.
+            ].
+        ].
+        inStream isNil ifTrue:[
+            SourceCodeManagerError handle:[:ex |
+            ] do:[
+                inStream := mgr getMostRecentSourceStreamForFile:extensionsFilename inPackage:aPackageId.
+            ].
+        ].
+        inStream notNil ifTrue:[
+            Class withoutUpdatingChangeSetDo:[
+                inStream fileIn.
+            ].
+            inStream close.
+            SilentLoading ifFalse:[
+                Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
+            ].
+            ^ true
+        ]
     ].
 
     packageDirName notNil ifTrue:[
@@ -2239,9 +2261,9 @@
     ].
     ^ false
 
-    "Modified: / 18-02-2007 / 11:03:26 / cg"
     "Created: / 02-01-2010 / 10:41:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-03-2011 / 10:03:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-09-2011 / 09:30:22 / cg"
 !
 
 loadExtensionsFromDirectory:packageDirOrString
@@ -7652,11 +7674,11 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Smalltalk.st 10672 2011-08-20 20:29:33Z vranyj1 $'
+    ^ '$Id: Smalltalk.st 10686 2011-09-07 16:25:40Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.974 2011/08/20 14:43:25 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.975 2011/09/04 07:34:07 cg Exp §'
 !
 
 version_SVN
@@ -7666,3 +7688,4 @@
 
 
 
+