What is the best way to test the current code?
What I have done fails:
1. Load via Pharo Launcher the latest Build of QCMagritte #3524 for
Pharo 5.0
2. Add in the Seaside Control Panel the ZnZincServerAdaptor with a valid
port
3. Start the Server
4. The Seaside config panel is working correct at
http://localhost:18080/config
5. But going directly to
http://localhost:18080/, I'm getting the
following DNU:
MAPriorityContainer(Object)>>doesNotUnderstand: #descriptionBuilder
QCTutorialModel(QCObject)>>componentClassForContainer:
[ :each | anObject perform: each with: container ] in [ container :=
anObject perform: containerSelector.
extensionSelectors
do: [ :each | anObject perform: each with: container ] ] in
MAPragmaBuilder>>buildContainer: in Block: [ :each | anObject perform:
each with: container ]...etc...
Array(SequenceableCollection)>>do:
[ container := anObject perform: containerSelector.
extensionSelectors
do: [ :each | anObject perform: each with: container ] ] in
MAPragmaBuilder>>buildContainer: in Block: [ container := anObject
perform: containerSelector...etc...
BlockClosure>>on:do:
MADynamicDescribedObject class(MADynamicVariable class)>>use:during:
MAPragmaBuilder>>buildContainer:
MAPragmaBuilder>>build:cache:
[ self build: anObject cache: cache ] in [ ^ cache
at: anObject
ifAbsentPut: [ self build: anObject cache: cache ] ] in
MAPragmaBuilder>>for: in Block: [ self build: anObject cache: cache ]
[ self at: key put: aBlock value ] in
IdentityDictionary(Dictionary)>>at:ifAbsentPut: in Block: [ self at: key
put: aBlock value ]
IdentityDictionary(Dictionary)>>at:ifAbsent:
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
[ ^ cache
at: anObject
ifAbsentPut: [ self build: anObject cache: cache ] ] in
MAPragmaBuilder>>for: in Block: [ ^ cache...
BlockClosure>>on:do:
MADynamicDescriptionCache class(MADynamicVariable class)>>use:during:
MAPragmaBuilder>>for:
MAPragmaBuilder class>>for:
QCTutorialModel(Object)>>basicMagritteDescription
QCTutorialModel(Object)>>magritteDescription
QCTutorialModel(QCApplicationModel)>>basicRoots
QCTutorialModel(QCApplicationModel)>>roots
QCTutorialApplication(QCApplication)>>initializeMenu
QCTutorialApplication(QCApplication)>>initialize
QCTutorialApplication class(GRObject class)>>new
[ self rootClass new ] in WAInitialRenderLoopContinuation>>createRoot in
Block: [ self rootClass new ]
GRSmallDictionary>>at:ifAbsent:
WARequestContext>>rootComponentIfAbsent:
WAInitialRenderLoopContinuation>>createRoot
WAInitialRenderLoopContinuation>>basicPerformAction
Regards,
Franz Josef
Am 03.05.2017 um 21:57 schrieb Diego Lont:
Hi all,
As announced previously I ported the builder back to Magritte, as I believe it was a
missing piece in Magritte. A mail does not suffice to give the details, and in the past I
did 2 presentations on this topic (dry-ing Magritte,
https://www.slideshare.net/esug/drying-magritte?next_slideshow=1).
I also extended the tutorial (build in with QC-Magritte, load QC-Magritte, and start a
web-browser on
http://localhost:8080/) with a chapter “technical details” where I made
another effort in explaining why we need builders. If this gives questions, please ask
them.
Also I am not 100% sure a builder is the correct term: so if there are people with better
suggestions, please post them.
The coming weeks I will fill in the last blanks:
- add testcases specific to the builder. The old ones still run, ensuring no builders ==
no change.
- more work on tutorial.
Of course it motivates me, when people comment or ask questions, so I know it is used. So
thanks Udo for asking a question concerning QCMagritte, this helped me at least finish
this far.
Regards,
Diego
_______________________________________________
Magritte, Pier and Related Tools ...
https://www.list.inf.unibe.ch/listinfo/smallwiki