--- 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 @@
+