--- a/Tools__NewSystemBrowser.st Fri May 08 06:59:19 2015 +0200
+++ b/Tools__NewSystemBrowser.st Sat May 09 06:56:52 2015 +0200
@@ -45349,87 +45349,103 @@
|s aStream comparedSource currentSource thisRevString
current repositoryChangeSet diffs allDiffs
mclass mselector theNonMetaclass lastClass lastRepositoryChangeSet
- isExtension title labelA labelB|
+ isExtension title labelA labelB failedToGetSource failureMessage|
+
+ failedToGetSource := false.
self withWaitCursorDo:[
- Method flushSourceStreamCache.
-
- methods do:[:eachMethod |
- |classPackage methodPackage|
-
- mclass := eachMethod mclass.
- mclass isNil ifTrue:[
- self warn:('Cannot find methods class (obsolete).').
- ] ifFalse:[
- classPackage := mclass package.
- methodPackage := eachMethod package.
- (classPackage == methodPackage or:[ methodPackage == PackageId noProjectID ]) ifTrue:[
- theNonMetaclass := mclass theNonMetaclass.
- isExtension := false.
- ] ifFalse:[
- isExtension := true.
- ].
-
- mselector := eachMethod selector.
-
- currentSource := eachMethod source asString.
- current := ChangeSet new.
- current addMethodChange:eachMethod in:mclass.
-
- self busyLabel:'getting repository source...' with:nil.
-
- isExtension ifTrue:[
- repositoryChangeSet := manager utilities
- changeSetForExtensionMethodsForPackage:methodPackage
- askForRevision:false
- usingManager:manager.
- repositoryChangeSet := repositoryChangeSet
- select:[:eachChange | eachChange isMethodChange
- and:[eachChange selector = mselector
- and:[eachChange className = mclass name]]].
- lastClass := nil.
+ SourceCodeManagerError handle:[:ex |
+ failedToGetSource := true.
+ failureMessage := 'SourceCodeManager reports: ',ex description.
+ ] do:[
+ Method flushSourceStreamCache.
+
+ methods do:[:eachMethod |
+ |classPackage methodPackage|
+
+ mclass := eachMethod mclass.
+ mclass isNil ifTrue:[
+ self warn:('Cannot find methods class (obsolete).').
] ifFalse:[
- (lastClass ~~ theNonMetaclass) ifTrue:[
- aStream := self sourceStreamForRepositorySourceOfClass:theNonMetaclass.
- aStream notNil ifTrue:[
- aStream class readErrorSignal handle:[:ex |
- self warn:('read error while reading extracted source\\' , ex description) withCRs.
+ classPackage := mclass package.
+ methodPackage := eachMethod package.
+ (classPackage == methodPackage or:[ methodPackage == PackageId noProjectID ]) ifTrue:[
+ theNonMetaclass := mclass theNonMetaclass.
+ isExtension := false.
+ ] ifFalse:[
+ isExtension := true.
+ ].
+
+ mselector := eachMethod selector.
+
+ currentSource := eachMethod source asString.
+ current := ChangeSet new.
+ current addMethodChange:eachMethod in:mclass.
+
+ self busyLabel:'getting repository source...' with:nil.
+
+ isExtension ifTrue:[
+ repositoryChangeSet := manager utilities
+ changeSetForExtensionMethodsForPackage:methodPackage
+ askForRevision:false
+ usingManager:manager.
+ repositoryChangeSet := repositoryChangeSet
+ select:[:eachChange | eachChange isMethodChange
+ and:[eachChange selector = mselector
+ and:[eachChange className = mclass name]]].
+ lastClass := nil.
+ ] ifFalse:[
+ (lastClass ~~ theNonMetaclass) ifTrue:[
+ aStream := self sourceStreamForRepositorySourceOfClass:theNonMetaclass.
+ aStream isNil ifTrue:[
+ failedToGetSource := true.
+ failureMessage := 'No source for ',theNonMetaclass name.
+ ] ifFalse:[
+ aStream class readErrorSignal handle:[:ex |
+ self warn:('read error while reading extracted source\\' , ex description) withCRs.
+ aStream close.
+ comparedSource := nil.
+ ] do:[
+ comparedSource := aStream contents asString.
+ ].
aStream close.
- comparedSource := nil.
- ] do:[
- comparedSource := aStream contents asString.
- ].
- aStream close.
-
- thisRevString := theNonMetaclass revision.
- thisRevString isNil ifTrue:[
- thisRevString := 'no revision'
+
+ thisRevString := theNonMetaclass revision.
+ thisRevString isNil ifTrue:[
+ thisRevString := 'no revision'
+ ].
+
+ lastRepositoryChangeSet := ChangeSet fromStream:(s := comparedSource readStream). s close.
+ lastClass := theNonMetaclass.
+
+ self busyLabel:'comparing...' with:nil.
].
-
- lastRepositoryChangeSet := ChangeSet fromStream:(s := comparedSource readStream). s close.
- lastClass := theNonMetaclass.
-
- self busyLabel:'comparing...' with:nil.
].
- ].
- repositoryChangeSet := (lastRepositoryChangeSet ? #())
- select:[:eachChange | eachChange isMethodChange
- and:[eachChange selector = mselector
- and:[eachChange className = mclass name]]].
- ].
- repositoryChangeSet notEmptyOrNil ifTrue:[
- diffs := repositoryChangeSet diffSetsAgainst:current.
- ].
- allDiffs isNil ifTrue:[
- allDiffs := diffs.
- ] ifFalse:[
- allDiffs changed addAll:(diffs changed).
- allDiffs onlyInArg addAll:(diffs onlyInArg).
- allDiffs onlyInReceiver addAll:(diffs onlyInReceiver).
- ].
- ].
- ].
- ].
+ repositoryChangeSet := (lastRepositoryChangeSet ? #())
+ select:[:eachChange | eachChange isMethodChange
+ and:[eachChange selector = mselector
+ and:[eachChange className = mclass name]]].
+ ].
+ repositoryChangeSet notEmptyOrNil ifTrue:[
+ diffs := repositoryChangeSet diffSetsAgainst:current.
+ ].
+ allDiffs isNil ifTrue:[
+ allDiffs := diffs.
+ ] ifFalse:[
+ allDiffs changed addAll:(diffs changed).
+ allDiffs onlyInArg addAll:(diffs onlyInArg).
+ allDiffs onlyInReceiver addAll:(diffs onlyInReceiver).
+ ].
+ ].
+ ].
+ ].
+ ].
+
+ failedToGetSource ifTrue:[
+ self information:'Failed to fetch the source from the repository:\\',failureMessage.
+ ^ self.
+ ].
+
(allDiffs isNil or:[allDiffs isEmpty]) ifTrue:[
(methods
@@ -62507,11 +62523,11 @@
!NewSystemBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.2219 2015-05-01 14:50:21 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.2220 2015-05-08 12:27:29 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.2219 2015-05-01 14:50:21 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.2220 2015-05-08 12:27:29 cg Exp $'
!
version_HG
@@ -62520,7 +62536,7 @@
!
version_SVN
- ^ '$Id: Tools__NewSystemBrowser.st,v 1.2219 2015-05-01 14:50:21 cg Exp $'
+ ^ '$Id: Tools__NewSystemBrowser.st,v 1.2220 2015-05-08 12:27:29 cg Exp $'
! !