[Seaside-dev] Seaside 3.0.4 ... Issue 482

Philippe Marschall philippe.marschall at gmail.com
Wed Feb 16 06:01:40 UTC 2011


2011/2/15 Dale Henrichs <dhenrich at vmware.com>:
>
> I think Issue482 requires a post load doit when loaded into an existing
> Seaside3.0.x installation.
>
> The contents of the table class instance variable were changed to effect the
> speedup, but if you are updating an existing installation the class
> initialize methods won't be re-executed automatically, so the new code will
> be running with the old table contents....
>
> Now it's true that I've seen the tests pass when run in an updated issue,
> but I am wondering if there might be trouble lurking somewhere...
>
> A naive comparison of the WAEncoder code in 3.0.3:
>
>  encoded isString
>    ifTrue: [ stream nextPutAll: encoded ]
>    ifFalse: [ stream nextPut: encoded ]
>
> and in 3.0.4:
>
>  encoded notNil
>    ifTrue: [ stream nextPutAll: encoded ]
>    ifFalse: [ stream nextPut: encoded ]
>
> makes me think that if the encode variable is a Character then it will be
> passed into the #nextPutAll:, which is expecting a String ... now it is
> possible that the Pharo implementation doesn't care whether the arg to
> nextPutAll: is a Character or a String, or maybe I'm missing something ...
>
> Anyway, I guess this is a long winded way of saying that I think an explicit
> post load doit is _required_ that explicitly rebuilds the tables with new
> contents:
>
>  WAUrlEncoder initialize.
>  WAXmlEncoder initialize.
>
> I expect to add this to the Metacello config.

Hmm. I changed the class side #initialize methods of WAUrlEncoder and
WAXmlEncoder in the fix. The way I understand how Monticello works is
that in this case it should send these messages to the class again. At
least on Pharo/Squeak.

Cheers
Philippe


More information about the seaside-dev mailing list