|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
[bug] Deserialize breaks ctype inheritanceI've sent it to Lassosoft already, but thought the list archives might benefit from a 'heads-up' on a bug that bit me this afternoon involving inheritance, custom types and overloading onDeserialise (it's a ctype that's stored in a session variable, hence the deserialise).
When a ctype is deserialised into a var it seems to break the parent/child inheritance 'context' of the ctype. This means that the child type's member tags that should overload the parent's member tags are effectively unavailable. Test case below. James Harvard <?LassoScript define_type('type1'); local( 'msgs' = array ); define_tag('oncreate'); self->whoami; /define_tag; define_tag('whoami'); self->'msgs'->insert( 'This is a ' self->type ); /define_tag; define_tag('membertag'); self->'msgs'->insert('type1->membertag'); /define_tag; define_tag('ondeserialize'); self->'msgs'->insert('type1->ondeserialize'); self->membertag; self->whoami; /define_tag; /define_type; define_type( 'type2','type1' ); define_tag('membertag'); self->'msgs'->insert('type2->membertag'); /define_tag; /define_type; var( 'type2_normal' = type2 ); var('type2_deserialised')->deserialize( $type2_normal->serialize ); $type2_normal->ondeserialize; encode_break( '$type2_normal:\n' + $type2_normal->'msgs'->join('\n') ); '<br />' * 2 ; encode_break( '$type2_deserialised:\n' + $type2_deserialised->'msgs'->join('\n') ); /* On Lasso 8.5.6 this returns: $type2_normal: This is a type2 type1->ondeserialize type2->membertag This is a type2 $type2_deserialised: This is a type2 type1->ondeserialize type1->membertag This is a type1 */ ?> -- This list is a free service of LassoSoft: http://www.LassoSoft.com/ Search the list archives: http://www.ListSearch.com/Lasso/Browse/ Manage your subscription: http://www.ListSearch.com/Lasso/ |
|
|
Re: [bug] Deserialize breaks ctype inheritanceYou might get different results if you define the ctypes from the
LassoStartup folder. I do remember having issues with deserialization and ctypes when they were defined during the page load. Or...you might need to load/define all your ctypes _before_ you issue the session_start in your code. /Göran James Harvard wrote: > I've sent it to Lassosoft already, but thought the list archives might benefit from a 'heads-up' on a bug that bit me this afternoon involving inheritance, custom types and overloading onDeserialise (it's a ctype that's stored in a session variable, hence the deserialise). > > When a ctype is deserialised into a var it seems to break the parent/child inheritance 'context' of the ctype. This means that the child type's member tags that should overload the parent's member tags are effectively unavailable. > > Test case below. > > James Harvard > > > <?LassoScript > > define_type('type1'); > > local( 'msgs' = array ); > > define_tag('oncreate'); > self->whoami; > /define_tag; > > define_tag('whoami'); > self->'msgs'->insert( 'This is a ' self->type ); > /define_tag; > > define_tag('membertag'); > self->'msgs'->insert('type1->membertag'); > /define_tag; > > define_tag('ondeserialize'); > self->'msgs'->insert('type1->ondeserialize'); > self->membertag; > self->whoami; > /define_tag; > > /define_type; > > define_type( 'type2','type1' ); > > define_tag('membertag'); > self->'msgs'->insert('type2->membertag'); > /define_tag; > > /define_type; > > var( 'type2_normal' = type2 ); > > var('type2_deserialised')->deserialize( $type2_normal->serialize ); > $type2_normal->ondeserialize; > > encode_break( '$type2_normal:\n' + $type2_normal->'msgs'->join('\n') ); > > '<br />' * 2 ; > > encode_break( '$type2_deserialised:\n' + $type2_deserialised->'msgs'->join('\n') ); > > /* > > On Lasso 8.5.6 this returns: > > $type2_normal: > This is a type2 > type1->ondeserialize > type2->membertag > This is a type2 > > $type2_deserialised: > This is a type2 > type1->ondeserialize > type1->membertag > This is a type1 > > */ > > ?> > > -- > This list is a free service of LassoSoft: http://www.LassoSoft.com/ > Search the list archives: http://www.ListSearch.com/Lasso/Browse/ > Manage your subscription: http://www.ListSearch.com/Lasso/ > > > > -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- This list is a free service of LassoSoft: http://www.LassoSoft.com/ Search the list archives: http://www.ListSearch.com/Lasso/Browse/ Manage your subscription: http://www.ListSearch.com/Lasso/ |
|
|
Re: [bug] Deserialize breaks ctype inheritance>You might get different results if you define the ctypes from the LassoStartup folder. I do remember having issues with deserialization and ctypes when they were defined during the page load.
Ah - that might be the case. Thanks. >Or...you might need to load/define all your ctypes _before_ you issue the session_start in your code. Pretty sure they were defined before session_start and the problem occurred without any session involvement anyway. Lassosoft, could we please have a bit more feedback on bug reports? Currently it just seems that they disappear into a black hole. It would be nice to know that they've at least been read! James -- This list is a free service of LassoSoft: http://www.LassoSoft.com/ Search the list archives: http://www.ListSearch.com/Lasso/Browse/ Manage your subscription: http://www.ListSearch.com/Lasso/ |
|
|
Re: [bug] Deserialize breaks ctype inheritanceJames Harvard wrote on 7/18/2009 8:01 AM:
> Lassosoft, could we please have a bit more feedback on bug reports? > Currently it just seems that they disappear into a black hole. It > would be nice to know that they've at least been read! If you report it via "My Account" at Lassosoft.com, then you can track it. - Bil -- This list is a free service of LassoSoft: http://www.LassoSoft.com/ Search the list archives: http://www.ListSearch.com/Lasso/Browse/ Manage your subscription: http://www.ListSearch.com/Lasso/ |
| Free embeddable forum powered by Nabble | Forum Help |