-
Notifications
You must be signed in to change notification settings - Fork 9
Description
The current Session method behavior does not match the behavior seen in a standard tode image.
To start with, the Rowan# image does not have SessionMethods enabled from the get go. Here's an annotated doit to show the behavior in 2 different use cases:
Use case 1
Validate that the a method can be compiled against Behavior as DataCurator ... SystemUser is tested mainly to determine if there is a difference between the behavior between DataCuratorandSystemUser`:
login
run
GsPackagePolicy currentOrNil.
GsPackagePolicy current enable.
Behavior compileMethod: 'xxx ^true'.
Object xxx.
System abort.
"tode_375_h DataCurator ... virgin tODE extent MNU"
Object xxx.
"rowan3_dev_h SystemUser ... standard Rowan V3 extent MNU"
"rowan3_dev_h DataCurator ... standard Rowan V3 extent MNU"
Behavior removeSelector: #'xxx'
%
In a tODE image, the session method does not survive across an abort ... as expected.
In a Rowan V3 3.7.5 extent, the method is still present after an abort, however, even though the Object class responds to the message xxx, it is not possible to remove the selector once it has been added.
Use case 2
In this case, we perform an abort at a later point.
run
GsPackagePolicy currentOrNil.
GsPackagePolicy current enable.
Behavior compileMethod: 'xxx ^true'.
Object xxx.
"rowan3_dev_h SystemUser ... standard Rowan V3 extent ERROR"
"rowan3_dev_h DataCurator ... standard Rowan V3 extent ERROR"
Behavior removeSelector: #'xxx'.
"tode_375_h DataCurator ... virgin tODE extent MNU"
Object xxx.
System abort.
Object xxx.
Behavior removeSelector: #'xxx'
%
In a tODE image, the session method is removed as expected.
In a Rowan V3 3.7.5 extent, again we see that in neither the SystemUser case nor the DataCurator are we able to remove the session method.
Summary
The interesting things to learn from these use cases, is that for Rowan SystemUser we do not expect SessionMethods to be invoked, since only DataCurator should require SessionMethods ... and DataCurator should behave indentically to tODE DataCurator ...
Project for use cases
The project used in the above use was derived from RowanSamplle9V4:spec_0004 using the following 3 workspaces (each delineated by "****************...********************":
"****************COPY********************"
| resolvedProject definedProject |
resolvedProject := RwResolvedProject
projectFromUrl: 'https://raw.githubusercontent.com/dalehenrich/RowanSample9V4/refs/heads/master/specs/spec_0004.ston'
projectsHome: '/bosch1/users/dhenrich/_stones/git'.
definedProject := resolvedProject defined.
definedProject _concreteProject diskRepositoryRoot: '/bosch1/users/dhenrich/_stones/37x/stones/rowan3_dev_h/sandbox/', definedProject projectName.
definedProject write
"****************READ/UPDATE/WRTIE********************"
| resolvedProject definedProject package packageDef classExtensionDef |
resolvedProject := RwResolvedProject
projectFromUrl: 'file:///bosch1/users/dhenrich/_stones/37x/stones/rowan3_dev_h/sandbox/RowanSample9V4/rowan/specs/spec_0004.ston'
projectsHome: '/bosch1/users/dhenrich/_stones/37x/stones/rowan3_dev_h/sandbox/'.
definedProject := resolvedProject defined.
packageDef := definedProject
addPackageNamed: 'RowanSample9V4-Base-Extensions'
toComponentNamed: 'Core1'.
(definedProject componentNamed: 'Core2') removeComponentNamed: 'Core1'.
definedProject
gemstoneSetDefaultUseSessionMethodsForExtensionsForUser: 'DataCurator'
to: true;
gemstoneSetSymbolDictName: 'Globals'
forPackageNamed: 'RowanSample9V4-Base-Extensions'.
classExtensionDef := packageDef addClassExtensionNamed: 'Behavior'.
classExtensionDef
addInstanceMethod: 'sample1'
protocol: '*', packageDef name.
definedProject write.
"****************LOAD********************"
| resolvedProject |
resolvedProject := RwResolvedProject
projectFromUrl: 'file:///bosch1/users/dhenrich/_stones/37x/stones/rowan3_dev_h/sandbox/RowanSample9V4/rowan/specs/spec_0004.ston'
projectsHome: '/bosch1/users/dhenrich/_stones/37x/stones/rowan3_dev_h/sandbox/'.
resolvedProject load.
Behavior sample1.
The SessionMethod support has not been tested against multiple users up to this point in time ... and it is a bit suprising that is almost functional 😎