-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
Improvements that allow applications with Web Components to run with a lower overhead.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
private | ||
createCache | ||
^ WASingleElementCache new |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
testing | ||
testClear | ||
cache at: 1 put: 'one'. | ||
cache clear. | ||
self assert: (cache at: 1 ifAbsent: [ 'two' ]) = 'two'. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
testing | ||
testKeyAtValue | ||
cache at: 1 put: 'one'. | ||
self assert: (cache keyAtValue: 'one' ifAbsent: [ 2 ]) = 1. | ||
self assert: (cache keyAtValue: 'two' ifAbsent: [ 2 ]) = 2. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
testing | ||
testKeysAndValuesDo | ||
| reference readBack | | ||
reference := Dictionary new. | ||
|
||
cache at: 1 put: 'one'. | ||
reference at: 1 put: 'one'. | ||
|
||
readBack := Dictionary new. | ||
cache keysAndValuesDo: [ :key :value | | ||
readBack at: key put: value ]. | ||
|
||
self assert: readBack = reference |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
testing | ||
testSize | ||
self assert: cache size = 0. | ||
cache at: 1 put: 'one'. | ||
self assert: cache size = 1. | ||
cache at: 2 put: 'two'. | ||
self assert: cache size = 1. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
testing | ||
testStore | ||
| generator | | ||
generator := WAPrecomputedKeyGenerator keys: #(1 2 3). | ||
WAKeyGenerator | ||
use: generator | ||
during: [ | ||
self assert: (cache store: 'key1') = 1. | ||
self assert: (cache store: 'key2') = 2. | ||
self assert: (cache store: 'key3') = 3 ] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"commentStamp" : "", | ||
"super" : "WACacheTest", | ||
"category" : "Seaside-Tests-WebComponents", | ||
"classinstvars" : [ ], | ||
"pools" : [ ], | ||
"classvars" : [ ], | ||
"instvars" : [ ], | ||
"name" : "WASingleElementCacheTest", | ||
"type" : "normal" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
I am a session that stores only a single continuation. I am usesful for cases where state snapshots are not used. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
initialization | ||
createContinuationCache | ||
^ WASingleElementCache new | ||
Check warning on line 3 in repository/Seaside-WebComponents-Core.package/WASingleContinuationSession.class/instance/createContinuationCache.st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WASingleContinuationSession.class/instance/createContinuationCache.st#L1-L3
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"commentStamp" : "xxx 7/11/2024 13:25", | ||
"super" : "WASession", | ||
"category" : "Seaside-WebComponents-Core", | ||
"classinstvars" : [ ], | ||
"pools" : [ ], | ||
"classvars" : [ ], | ||
"instvars" : [ ], | ||
"name" : "WASingleContinuationSession", | ||
"type" : "normal" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
I am a cache that contains at most one element. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
accessing | ||
at: aKey ifAbsent: aBlock | ||
^ key = aKey | ||
ifTrue: [ value ] | ||
ifFalse: [ aBlock value ] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
putting | ||
at: aKey put: anObject | ||
key := aKey. | ||
value := anObject. | ||
^ anObject |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
public | ||
clear | ||
key := nil. | ||
value := nil |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
accessing | ||
keyAtValue: anObject ifAbsent: aBlock | ||
^ value = anObject | ||
ifTrue: [ key ] | ||
ifFalse: [ aBlock value ] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
enumerating | ||
keysAndValuesDo: aTwoArgumentBlock | ||
key isNil ifFalse: [ | ||
aTwoArgumentBlock value: key value: value ] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
removing | ||
remove: anObject | ||
value = anObject ifTrue: [ | ||
key := nil. | ||
value := nil ] | ||
Check warning on line 5 in repository/Seaside-WebComponents-Core.package/WASingleElementCache.class/instance/remove..st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WASingleElementCache.class/instance/remove..st#L1-L5
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
accessing | ||
size | ||
^ key isNil | ||
ifTrue: [ 0 ] | ||
ifFalse: [ 1 ] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
putting | ||
store: anObject | ||
key := WAKeyGenerator current keyOfLength: self keySize. | ||
value := anObject. | ||
^ key |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"commentStamp" : "xxx 7/11/2024 10:46", | ||
"super" : "WACache", | ||
"category" : "Seaside-WebComponents-Core", | ||
"classinstvars" : [ ], | ||
"pools" : [ ], | ||
"classvars" : [ ], | ||
"instvars" : [ | ||
"key", | ||
"value" | ||
], | ||
"name" : "WASingleElementCache", | ||
"type" : "normal" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
I am a special action continuation with optimizations for web components. | ||
|
||
Since web components have no back button and a full page reload results in an entire new page I perform the following optimizations. | ||
|
||
- I do not redirect. | ||
- I do not capture the state. | ||
- I do not restore the state. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
processing | ||
basicPerformAction | ||
super basicPerformAction. | ||
self renderContext callbacks handle: self requestContext | ||
Check warning on line 4 in repository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/basicPerformAction.st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/basicPerformAction.st#L1-L4
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
processing | ||
continue | ||
"do not capture state" | ||
self createRenderContinuation handle: self requestContext | ||
Check warning on line 4 in repository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/continue.st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/continue.st#L1-L4
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
handling | ||
handle: aRequestContext | ||
"don't restore states" | ||
self withUnregisteredHandlerDo: [ super handle: aRequestContext ] | ||
Check warning on line 4 in repository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/handle..st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/handle..st#L1-L4
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
public | ||
jumpToAnchor: aString | ||
"Intentionally empty for compatibility with WACallbackProcessingActionContinuation" | ||
Check warning on line 3 in repository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/jumpToAnchor..st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/jumpToAnchor..st#L1-L3
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
private | ||
shouldRedirect | ||
^ false | ||
Check warning on line 3 in repository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/shouldRedirect.st Codecov / codecov/patchrepository/Seaside-WebComponents-Core.package/WAWebComponentActionContinuation.class/instance/shouldRedirect.st#L1-L3
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"commentStamp" : "xxx 7/11/2024 13:24", | ||
"super" : "WAActionPhaseContinuation", | ||
"category" : "Seaside-WebComponents-Core", | ||
"classinstvars" : [ ], | ||
"pools" : [ ], | ||
"classvars" : [ ], | ||
"instvars" : [ ], | ||
"name" : "WAWebComponentActionContinuation", | ||
"type" : "normal" | ||
} |