Skip to content

Commit f360e73

Browse files
committed
Accelerate loading of plugins by using observer pattern instead of #allInstancesDo:
Also only trigger the update once for adding all plugins. Tbh I did not test whether the update mechanism actually works because in practice every dialog has its own environment.
1 parent 5cac442 commit f360e73

File tree

13 files changed

+37
-24
lines changed

13 files changed

+37
-24
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
SquotTrackedObjectMetadata {
22
#objectClassName : #PackageInfo,
3+
#id : UUID [ 'a13546282d404a8e98ff29387e39c8c8' ],
4+
#objectsReplacedByNames : true,
35
#serializer : #SquotCypressCodeSerializer
46
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
initialization
22
onEnvironment: aSLEnvironment
33

4+
self removeDependent: environment.
45
environment := aSLEnvironment.
6+
self addDependent: environment.
57
self update.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
updating
2+
update: aspect
3+
4+
aspect == self environment ifTrue:
5+
[self update].
6+
^ super update: aspect

packages/SwaLint-Core.package/SLDefaultDialog.class/methodProperties.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"loadFastTests" : "BD 6/29/2018 15:57",
7171
"loadFullTests" : "BD 6/29/2018 15:48",
7272
"loadSelectionTests" : "BD 6/29/2018 15:19",
73-
"onEnvironment:" : "NA 7/30/2015 14:32",
73+
"onEnvironment:" : "ct 12/13/2024 00:59",
7474
"open" : "NA 6/30/2015 11:55",
7575
"openConfigureDialog" : "NA 7/14/2015 11:43",
7676
"perform:orSendTo:" : "NA 7/2/2015 18:29",
@@ -116,6 +116,7 @@
116116
"testsSelected:" : "BD 6/29/2018 14:43",
117117
"toggleCategorySelectionMethod" : "NA 7/17/2015 00:49",
118118
"update" : "fm 6/29/2018 03:24",
119+
"update:" : "ct 12/13/2024 01:01",
119120
"updateCategories" : "NA 7/30/2015 14:38",
120121
"updateClasses" : "fm 6/29/2018 03:50",
121122
"updateTestCategories" : "NA 7/30/2015 14:36",

packages/SwaLint-Core.package/SLDefaultEnvironment.class/instance/fetchSystemClasses.st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ accessing
22
fetchSystemClasses
33

44
systemClasses := Dictionary new.
5-
Smalltalk allClasses do: [ :aClass |
5+
Smalltalk allClassesDo: [ :aClass |
66
aClass category ifNotNil: [
77
(self category: aClass category)
88
add: aClass name]].

packages/SwaLint-Core.package/SLDefaultEnvironment.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"class" : {
33
},
44
"instance" : {
5-
"fetchSystemClasses" : "BD 6/16/2018 11:19",
5+
"fetchSystemClasses" : "ct 12/13/2024 01:02",
66
"initialize" : "NA 7/31/2015 18:56",
77
"initializeInstanceVariables" : "NA 7/29/2015 16:27",
88
"selectableTestCategories" : "NA 7/28/2015 13:16",

packages/SwaLint-Core.package/SLEnvironment.class/instance/addPlugIn..st

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,5 @@ SwaLint
22
addPlugIn: aSLPlugInClass
33
"Register all tests offered by the plug-in class."
44

5-
aSLPlugInClass subclasses
6-
do: [ :subclass | self addPlugIn: subclass]
7-
displayingProgress: ('Loading ', aSLPlugInClass).
8-
aSLPlugInClass offeredTests
9-
do: [ :test | self addTest: test]
10-
displayingProgress: [ :test | 'Loading Test:',test name].
11-
12-
SwaLint refreshAllDialogs.
5+
self basicAddPlugIn: aSLPlugInClass.
6+
self changed: #plugIns.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
private
2+
basicAddPlugIn: aSLPlugInClass
3+
4+
aSLPlugInClass subclasses
5+
do: [ :subclass | self basicAddPlugIn: subclass]
6+
displayingProgress: ('Loading ', aSLPlugInClass).
7+
aSLPlugInClass offeredTests
8+
do: [ :test | self addTest: test]
9+
displayingProgress: [ :test | 'Loading Test: ', test name].
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
private
2+
basicRemovePlugIn: aSLPlugInClass
3+
4+
aSLPlugInClass subclassesDo: [:subclass | self basicRemovePlugIn: subclass].
5+
aSLPlugInClass offeredTests do: [ :each |
6+
self removeTest: each].
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
updating
22
removePlugIn: aSLPlugInClass
33

4-
aSLPlugInClass subclassesDo: [:subclass | self removePlugIn: subclass].
5-
aSLPlugInClass offeredTests do: [ :each |
6-
self removeTest: each].
7-
SwaLint refreshAllDialogs.
4+
self basicRemovePlugIn: aSLPlugInClass.
5+
self changed: #plugIns.

0 commit comments

Comments
 (0)