[Seaside] ShoreComponents test cases -- worth doing?

Pavel Krivanek squeak3 at continentalbrno.cz
Tue Jul 19 17:35:41 CEST 2005


There’s new version on repository which uses the first solution (parent 
method). Thank you for your analysis. This may enable to use some 
ShoreComponents in classical Seaside applications.

-- Pavel


>>It’s really mainly "self check“. Every component except real root
>>should have a parent. If we will use #mustBeChild method, we loose
>>this checking functionality anyway. What about to use any nonviolent
>>way to warn the programmer (any message in Transcript etc.)?
>>    
>>
>
>
>Hmm...then there would be lots of Transcript traffic for my test cases. 
>Better than the current situation but not ideal.  Also means the
>self-check isn't as in-your-face as you might want it to be (no debugger
>means it's too easily ignored and eventually will just become an
>annoyance).  Is it feasible to throw an exception in #parent?
>
>parent
>    "Returns the receivers parent component"
>
>    ^parent ifNil: [self class canBeRoot ifFalse: [self error:
>'Component has no parent.  Consider creating the instance with parent:
>instead of new.'] ifTrue: []]
>
>This delays the error message a bit but in cases where it _should_ occur
>it seems like it would.  That is, sending #parent to a component asserts
>that it either has a parent or is allowed to be a root component,
>otherwise its an error.  So, non-canBeRoot components who are parentless
>are OK until you ask them for their parent.  It's a bit of a change in
>philosophy.  I made this change in my image and the demos still run just
>fine.  This would fix my tests since most of these components don't
>really need to be parented (they never send #parent to themselves).
>
>Another idea:  What if the component checks to see if its class it is
>the root class of the application?
>
>new
>    "Returns a new instance of the receiver"
>
>    (self canBeRoot or: [self classIsRootOfApplication])
>        ifTrue: [ ^ super new ]
>        ifFalse: [ self error: 'use parent:'.].
>
>classIsRootOfApplication
>    ^(self session application preferenceAt: #rootClass) = self
>
>So, if the component was intentionally made the root of an application
>it is OK.  Otherwise it is an error.  This would catch all of the cases
>you were talking about.  It seems a bit hack-ish though.
> 
>
>David
>
>_______________________________________________
>Seaside mailing list
>Seaside at lists.squeakfoundation.org
>http://lists.squeakfoundation.org/listinfo/seaside
>
>
>  
>


More information about the Seaside mailing list