DoesNotUnderstand: in Pharo vs Gemstone

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dear List,

In Pharo a doesNotUnderstand: aMessage method receives a Message object instance; which contains a selector, a args array and a lookupClass field.

In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

If in my implementation of doesNotUnderstand I do something like:
doesNotUnderstand: aMessage
    ^aMessage sendTo: decorated.

It works fine in Pharo, but fails in Gemstone because the message sendTo: is not known in the Gemstone system.

Is there a way I can implement this so it works in both systems (without testing whether incoming aMessage(Descriptor)  is an array or a message type?)

Thanks for your help!

Kind Regards,

Bart

--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Bart,

To start with I've submitted Issue 157
(http://code.google.com/p/glassdb/issues/detail?id=157) to track this.

The right answer is for us to fix the bug by adding a Message or
FailedMessage class and implement the necessary messages - a quick look
makes me think that lookupClass wouldn't be included for example.

Until then I think the best workaround would be to implement #sendTo: in
Array as an extension method for GemStone.

In 2.4.4.1, it looks like a FailedMessage instance is available that
encapsulates the selector and args (but does not implement #sendTo:), so
#sendTo: would need to be implemented there as well.

Once the fix for Issue 157 is released, you won't need your patch anymore.

Dale


Bart Gauquie wrote:

> Dear List,
>
> In Pharo a doesNotUnderstand: aMessage method receives a Message object
> instance; which contains a selector, a args array and a lookupClass field.
>
> In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array:
> anArray( #'testme:', anArray( 'sdflsdjkf'))
>
> If in my implementation of doesNotUnderstand I do something like:
> doesNotUnderstand: aMessage
>     ^aMessage sendTo: decorated.
>
> It works fine in Pharo, but fails in Gemstone because the message
> sendTo: is not known in the Gemstone system.
>
> Is there a way I can implement this so it works in both systems (without
> testing whether incoming aMessage(Descriptor)  is an array or a message
> type?)
>
> Thanks for your help!
>
> Kind Regards,
>
> Bart
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dale,

I've implemented a fix like this:

Array>>sendTo: receiver
    ^ receiver perform: (self at: 1) withArguments: (self at: 2)

This works ... mostly ...

It fails if the receiver is a decorator itself implementing

doesNotUnderstand: aMessage
    ^aMessage sendTo: decorated.

for most of its methods.

Then this fails because apparently Object>>perform: withArguments does not delegate to doesNotUnderstand: aMessage if message not found, but instead throws:

InterpreterError 2013: <aNARenderContextDecorator> cannot perform the selector <#'actionUrl'> with the arguments in <anArray( )>. Perform may have been attempted with wrong number of args.

I could not directly find another method to call on Object so that the second decoration works ...

Thanks for any help,

Kind Regards,

Bart


On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]> wrote:
Bart,

To start with I've submitted Issue 157 (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.

The right answer is for us to fix the bug by adding a Message or FailedMessage class and implement the necessary messages - a quick look makes me think that lookupClass wouldn't be included for example.

Until then I think the best workaround would be to implement #sendTo: in Array as an extension method for GemStone.

In 2.4.4.1, it looks like a FailedMessage instance is available that encapsulates the selector and args (but does not implement #sendTo:), so #sendTo: would need to be implemented there as well.

Once the fix for Issue 157 is released, you won't need your patch anymore.

Dale



Bart Gauquie wrote:
Dear List,

In Pharo a doesNotUnderstand: aMessage method receives a Message object instance; which contains a selector, a args array and a lookupClass field.

In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

If in my implementation of doesNotUnderstand I do something like:
doesNotUnderstand: aMessage
   ^aMessage sendTo: decorated.

It works fine in Pharo, but fails in Gemstone because the message sendTo: is not known in the Gemstone system.

Is there a way I can implement this so it works in both systems (without testing whether incoming aMessage(Descriptor)  is an array or a message type?)

Thanks for your help!

Kind Regards,

Bart

--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Hi all,

I did a quick test in Pharo with the same code, and there everything is working as expected.

Kind Regards,

Bart

On Sun, Aug 15, 2010 at 9:59 PM, Bart Gauquie <[hidden email]> wrote:
Dale,

I've implemented a fix like this:

Array>>sendTo: receiver
    ^ receiver perform: (self at: 1) withArguments: (self at: 2)

This works ... mostly ...

It fails if the receiver is a decorator itself implementing


doesNotUnderstand: aMessage
    ^aMessage sendTo: decorated.

for most of its methods.

Then this fails because apparently Object>>perform: withArguments does not delegate to doesNotUnderstand: aMessage if message not found, but instead throws:

InterpreterError 2013: <aNARenderContextDecorator> cannot perform the selector <#'actionUrl'> with the arguments in <anArray( )>. Perform may have been attempted with wrong number of args.

I could not directly find another method to call on Object so that the second decoration works ...

Thanks for any help,

Kind Regards,

Bart



On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]> wrote:
Bart,

To start with I've submitted Issue 157 (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.

The right answer is for us to fix the bug by adding a Message or FailedMessage class and implement the necessary messages - a quick look makes me think that lookupClass wouldn't be included for example.

Until then I think the best workaround would be to implement #sendTo: in Array as an extension method for GemStone.

In 2.4.4.1, it looks like a FailedMessage instance is available that encapsulates the selector and args (but does not implement #sendTo:), so #sendTo: would need to be implemented there as well.

Once the fix for Issue 157 is released, you won't need your patch anymore.

Dale



Bart Gauquie wrote:
Dear List,

In Pharo a doesNotUnderstand: aMessage method receives a Message object instance; which contains a selector, a args array and a lookupClass field.

In Gemstone a doesNotUnderstand: aMessageDescriptor receives an Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

If in my implementation of doesNotUnderstand I do something like:
doesNotUnderstand: aMessage
   ^aMessage sendTo: decorated.

It works fine in Pharo, but fails in Gemstone because the message sendTo: is not known in the Gemstone system.

Is there a way I can implement this so it works in both systems (without testing whether incoming aMessage(Descriptor)  is an array or a message type?)

Thanks for your help!

Kind Regards,

Bart

--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
In reply to this post by Bart Gauquie
Bart,

Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of
the gaps...

If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so
you could modify ExceptionA class>>gsNumber:arguments:, replacing the
line marked 'change -->' with the line marked "    to -->" :

gsNumber: errNum arguments: args

        | errorClass |
        (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass :=
CompilerError ].
        (errNum >= 2001 and: [errNum <= 2999])
       ifTrue: [
"change -->"  errNum == 2010 ifTrue: [
"    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [

And that should do the trick. I've added Issue 159
(http://code.google.com/p/glassdb/issues/detail?id=159) to track the
official fix.

Thanks,

Dale

Bart Gauquie wrote:

> Dale,
>
> I've implemented a fix like this:
>
> Array>>sendTo: receiver
>     ^ receiver perform: (self at: 1) withArguments: (self at: 2)
>
> This works ... mostly ...
>
> It fails if the receiver is a decorator itself implementing
>
> doesNotUnderstand: aMessage
>     ^aMessage sendTo: decorated.
>
> for most of its methods.
>
> Then this fails because apparently Object>>perform: withArguments does
> not delegate to doesNotUnderstand: aMessage if message not found, but
> instead throws:
>
>
>   InterpreterError 2013: <aNARenderContextDecorator> cannot perform the
>   selector <#'actionUrl'> with the arguments in <anArray( )>. Perform
>   may have been attempted with wrong number of args.
>
> I could not directly find another method to call on Object so that the
> second decoration works ...
>
> Thanks for any help,
>
> Kind Regards,
>
> Bart
>
>
> On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Bart,
>
>     To start with I've submitted Issue 157
>     (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.
>
>     The right answer is for us to fix the bug by adding a Message or
>     FailedMessage class and implement the necessary messages - a quick
>     look makes me think that lookupClass wouldn't be included for example.
>
>     Until then I think the best workaround would be to implement
>     #sendTo: in Array as an extension method for GemStone.
>
>     In 2.4.4.1, it looks like a FailedMessage instance is available that
>     encapsulates the selector and args (but does not implement
>     #sendTo:), so #sendTo: would need to be implemented there as well.
>
>     Once the fix for Issue 157 is released, you won't need your patch
>     anymore.
>
>     Dale
>
>
>
>     Bart Gauquie wrote:
>
>         Dear List,
>
>         In Pharo a doesNotUnderstand: aMessage method receives a Message
>         object instance; which contains a selector, a args array and a
>         lookupClass field.
>
>         In Gemstone a doesNotUnderstand: aMessageDescriptor receives an
>         Array: anArray( #'testme:', anArray( 'sdflsdjkf'))
>
>         If in my implementation of doesNotUnderstand I do something like:
>         doesNotUnderstand: aMessage
>            ^aMessage sendTo: decorated.
>
>         It works fine in Pharo, but fails in Gemstone because the
>         message sendTo: is not known in the Gemstone system.
>
>         Is there a way I can implement this so it works in both systems
>         (without testing whether incoming aMessage(Descriptor)  is an
>         array or a message type?)
>
>         Thanks for your help!
>
>         Kind Regards,
>
>         Bart
>
>         --
>         imagination is more important than knowledge - Albert Einstein
>         Logic will get you from A to B. Imagination will take you
>         everywhere - Albert Einstein
>         Learn from yesterday, live for today, hope for tomorrow. The
>         important thing is not to stop questioning. - Albert Einstein
>         The true sign of intelligence is not knowledge but imagination.
>         - Albert Einstein
>         However beautiful the strategy, you should occasionally look at
>         the results. - Sir Winston Churchill
>         It's not enough that we do our best; sometimes we have to do
>         what's required. - Sir Winston Churchill
>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill

Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Hold the phone on this one ...

I tested this fix this morning at work, but since then my workstation
crashed (before I could record the test code). I am home right now
working on this bug and I'm not getting the same results that I recall
from this morning ... the suggested patch isn't working.

Suffice to say that I _am_ looking into it ... let me know if the
suggested patch works for you ... I won't be able to figure out all of
the angles until I get back into work tomorrow ...

Dale

Dale Henrichs wrote:

> Bart,
>
> Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of
> the gaps...
>
> If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so
> you could modify ExceptionA class>>gsNumber:arguments:, replacing the
> line marked 'change -->' with the line marked "    to -->" :
>
> gsNumber: errNum arguments: args
>
> | errorClass |
> (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass :=
> CompilerError ].
> (errNum >= 2001 and: [errNum <= 2999])
>        ifTrue: [
> "change -->"  errNum == 2010 ifTrue: [
> "    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [
>
> And that should do the trick. I've added Issue 159
> (http://code.google.com/p/glassdb/issues/detail?id=159) to track the
> official fix.
>
> Thanks,
>
> Dale
>
> Bart Gauquie wrote:
>> Dale,
>>
>> I've implemented a fix like this:
>>
>> Array>>sendTo: receiver
>>     ^ receiver perform: (self at: 1) withArguments: (self at: 2)
>>
>> This works ... mostly ...
>>
>> It fails if the receiver is a decorator itself implementing
>>
>> doesNotUnderstand: aMessage
>>     ^aMessage sendTo: decorated.
>>
>> for most of its methods.
>>
>> Then this fails because apparently Object>>perform: withArguments does
>> not delegate to doesNotUnderstand: aMessage if message not found, but
>> instead throws:
>>
>>
>>   InterpreterError 2013: <aNARenderContextDecorator> cannot perform the
>>   selector <#'actionUrl'> with the arguments in <anArray( )>. Perform
>>   may have been attempted with wrong number of args.
>>
>> I could not directly find another method to call on Object so that the
>> second decoration works ...
>>
>> Thanks for any help,
>>
>> Kind Regards,
>>
>> Bart
>>
>>
>> On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]
>> <mailto:[hidden email]>> wrote:
>>
>>     Bart,
>>
>>     To start with I've submitted Issue 157
>>     (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.
>>
>>     The right answer is for us to fix the bug by adding a Message or
>>     FailedMessage class and implement the necessary messages - a quick
>>     look makes me think that lookupClass wouldn't be included for example.
>>
>>     Until then I think the best workaround would be to implement
>>     #sendTo: in Array as an extension method for GemStone.
>>
>>     In 2.4.4.1, it looks like a FailedMessage instance is available that
>>     encapsulates the selector and args (but does not implement
>>     #sendTo:), so #sendTo: would need to be implemented there as well.
>>
>>     Once the fix for Issue 157 is released, you won't need your patch
>>     anymore.
>>
>>     Dale
>>
>>
>>
>>     Bart Gauquie wrote:
>>
>>         Dear List,
>>
>>         In Pharo a doesNotUnderstand: aMessage method receives a Message
>>         object instance; which contains a selector, a args array and a
>>         lookupClass field.
>>
>>         In Gemstone a doesNotUnderstand: aMessageDescriptor receives an
>>         Array: anArray( #'testme:', anArray( 'sdflsdjkf'))
>>
>>         If in my implementation of doesNotUnderstand I do something like:
>>         doesNotUnderstand: aMessage
>>            ^aMessage sendTo: decorated.
>>
>>         It works fine in Pharo, but fails in Gemstone because the
>>         message sendTo: is not known in the Gemstone system.
>>
>>         Is there a way I can implement this so it works in both systems
>>         (without testing whether incoming aMessage(Descriptor)  is an
>>         array or a message type?)
>>
>>         Thanks for your help!
>>
>>         Kind Regards,
>>
>>         Bart
>>
>>         --
>>         imagination is more important than knowledge - Albert Einstein
>>         Logic will get you from A to B. Imagination will take you
>>         everywhere - Albert Einstein
>>         Learn from yesterday, live for today, hope for tomorrow. The
>>         important thing is not to stop questioning. - Albert Einstein
>>         The true sign of intelligence is not knowledge but imagination.
>>         - Albert Einstein
>>         However beautiful the strategy, you should occasionally look at
>>         the results. - Sir Winston Churchill
>>         It's not enough that we do our best; sometimes we have to do
>>         what's required. - Sir Winston Churchill
>>
>>
>>
>>
>> --
>> imagination is more important than knowledge - Albert Einstein
>> Logic will get you from A to B. Imagination will take you everywhere -
>> Albert Einstein
>> Learn from yesterday, live for today, hope for tomorrow. The important
>> thing is not to stop questioning. - Albert Einstein
>> The true sign of intelligence is not knowledge but imagination. - Albert
>> Einstein
>> However beautiful the strategy, you should occasionally look at the
>> results. - Sir Winston Churchill
>> It's not enough that we do our best; sometimes we have to do what's
>> required. - Sir Winston Churchill
>
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
In reply to this post by Dale Henrichs
Bart,

Try loading GemStone-Exceptions-DaleHenrichs.37 from
http://seaside.gemstone.com/ss/monticello. A test is included and I've
tested this on both GemStone 2.3.x and Gemstone 2.4.4.1...I cleaned my
glasses and ran the tests again, too...twice:)

I am whipping up a 1.0-beta.8.3 that will have this fix plus a couple of
other bug fixes (going after low hanging fruit). I aim to ship
1.0-beta.8.3 pretty soon ...

Dale

Dale Henrichs wrote:

> Bart,
>
> Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of
> the gaps...
>
> If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so
> you could modify ExceptionA class>>gsNumber:arguments:, replacing the
> line marked 'change -->' with the line marked "    to -->" :
>
> gsNumber: errNum arguments: args
>
> | errorClass |
> (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass :=
> CompilerError ].
> (errNum >= 2001 and: [errNum <= 2999])
>        ifTrue: [
> "change -->"  errNum == 2010 ifTrue: [
> "    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [
>
> And that should do the trick. I've added Issue 159
> (http://code.google.com/p/glassdb/issues/detail?id=159) to track the
> official fix.
>
> Thanks,
>
> Dale
>
> Bart Gauquie wrote:
>> Dale,
>>
>> I've implemented a fix like this:
>>
>> Array>>sendTo: receiver
>>     ^ receiver perform: (self at: 1) withArguments: (self at: 2)
>>
>> This works ... mostly ...
>>
>> It fails if the receiver is a decorator itself implementing
>>
>> doesNotUnderstand: aMessage
>>     ^aMessage sendTo: decorated.
>>
>> for most of its methods.
>>
>> Then this fails because apparently Object>>perform: withArguments does
>> not delegate to doesNotUnderstand: aMessage if message not found, but
>> instead throws:
>>
>>
>>   InterpreterError 2013: <aNARenderContextDecorator> cannot perform the
>>   selector <#'actionUrl'> with the arguments in <anArray( )>. Perform
>>   may have been attempted with wrong number of args.
>>
>> I could not directly find another method to call on Object so that the
>> second decoration works ...
>>
>> Thanks for any help,
>>
>> Kind Regards,
>>
>> Bart
>>
>>
>> On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email]
>> <mailto:[hidden email]>> wrote:
>>
>>     Bart,
>>
>>     To start with I've submitted Issue 157
>>     (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.
>>
>>     The right answer is for us to fix the bug by adding a Message or
>>     FailedMessage class and implement the necessary messages - a quick
>>     look makes me think that lookupClass wouldn't be included for example.
>>
>>     Until then I think the best workaround would be to implement
>>     #sendTo: in Array as an extension method for GemStone.
>>
>>     In 2.4.4.1, it looks like a FailedMessage instance is available that
>>     encapsulates the selector and args (but does not implement
>>     #sendTo:), so #sendTo: would need to be implemented there as well.
>>
>>     Once the fix for Issue 157 is released, you won't need your patch
>>     anymore.
>>
>>     Dale
>>
>>
>>
>>     Bart Gauquie wrote:
>>
>>         Dear List,
>>
>>         In Pharo a doesNotUnderstand: aMessage method receives a Message
>>         object instance; which contains a selector, a args array and a
>>         lookupClass field.
>>
>>         In Gemstone a doesNotUnderstand: aMessageDescriptor receives an
>>         Array: anArray( #'testme:', anArray( 'sdflsdjkf'))
>>
>>         If in my implementation of doesNotUnderstand I do something like:
>>         doesNotUnderstand: aMessage
>>            ^aMessage sendTo: decorated.
>>
>>         It works fine in Pharo, but fails in Gemstone because the
>>         message sendTo: is not known in the Gemstone system.
>>
>>         Is there a way I can implement this so it works in both systems
>>         (without testing whether incoming aMessage(Descriptor)  is an
>>         array or a message type?)
>>
>>         Thanks for your help!
>>
>>         Kind Regards,
>>
>>         Bart
>>
>>         --
>>         imagination is more important than knowledge - Albert Einstein
>>         Logic will get you from A to B. Imagination will take you
>>         everywhere - Albert Einstein
>>         Learn from yesterday, live for today, hope for tomorrow. The
>>         important thing is not to stop questioning. - Albert Einstein
>>         The true sign of intelligence is not knowledge but imagination.
>>         - Albert Einstein
>>         However beautiful the strategy, you should occasionally look at
>>         the results. - Sir Winston Churchill
>>         It's not enough that we do our best; sometimes we have to do
>>         what's required. - Sir Winston Churchill
>>
>>
>>
>>
>> --
>> imagination is more important than knowledge - Albert Einstein
>> Logic will get you from A to B. Imagination will take you everywhere -
>> Albert Einstein
>> Learn from yesterday, live for today, hope for tomorrow. The important
>> thing is not to stop questioning. - Albert Einstein
>> The true sign of intelligence is not knowledge but imagination. - Albert
>> Einstein
>> However beautiful the strategy, you should occasionally look at the
>> results. - Sir Winston Churchill
>> It's not enough that we do our best; sometimes we have to do what's
>> required. - Sir Winston Churchill
>
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dale,

I've tested the previous fix you've suggested last night and it did not work as you mentioned. 

I will test the new fix today.

Kind Regards,

Bart

On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email]> wrote:
Bart,

Try loading GemStone-Exceptions-DaleHenrichs.37 from http://seaside.gemstone.com/ss/monticello. A test is included and I've tested this on both GemStone 2.3.x and Gemstone 2.4.4.1...I cleaned my glasses and ran the tests again, too...twice:)

I am whipping up a 1.0-beta.8.3 that will have this fix plus a couple of other bug fixes (going after low hanging fruit). I aim to ship 1.0-beta.8.3 pretty soon ...

Dale


Dale Henrichs wrote:
Bart,

Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of the gaps...

If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so you could modify ExceptionA class>>gsNumber:arguments:, replacing the line marked 'change -->' with the line marked "    to -->" :

gsNumber: errNum arguments: args

       | errorClass |
       (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass := CompilerError             ].
       (errNum >= 2001 and: [errNum <= 2999])
      ifTrue: [
"change -->"  errNum == 2010 ifTrue: [
"    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [

And that should do the trick. I've added Issue 159 (http://code.google.com/p/glassdb/issues/detail?id=159) to track the official fix.

Thanks,

Dale

Bart Gauquie wrote:
Dale,

I've implemented a fix like this:

Array>>sendTo: receiver
   ^ receiver perform: (self at: 1) withArguments: (self at: 2)

This works ... mostly ...

It fails if the receiver is a decorator itself implementing

doesNotUnderstand: aMessage
   ^aMessage sendTo: decorated.

for most of its methods.

Then this fails because apparently Object>>perform: withArguments does not delegate to doesNotUnderstand: aMessage if message not found, but instead throws:


 InterpreterError 2013: <aNARenderContextDecorator> cannot perform the
 selector <#'actionUrl'> with the arguments in <anArray( )>. Perform
 may have been attempted with wrong number of args.

I could not directly find another method to call on Object so that the second decoration works ...

Thanks for any help,

Kind Regards,

Bart


On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email] <mailto:[hidden email]>> wrote:

   Bart,

   To start with I've submitted Issue 157
   (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.

   The right answer is for us to fix the bug by adding a Message or
   FailedMessage class and implement the necessary messages - a quick
   look makes me think that lookupClass wouldn't be included for example.

   Until then I think the best workaround would be to implement
   #sendTo: in Array as an extension method for GemStone.

   In 2.4.4.1, it looks like a FailedMessage instance is available that
   encapsulates the selector and args (but does not implement
   #sendTo:), so #sendTo: would need to be implemented there as well.

   Once the fix for Issue 157 is released, you won't need your patch
   anymore.

   Dale



   Bart Gauquie wrote:

       Dear List,

       In Pharo a doesNotUnderstand: aMessage method receives a Message
       object instance; which contains a selector, a args array and a
       lookupClass field.

       In Gemstone a doesNotUnderstand: aMessageDescriptor receives an
       Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

       If in my implementation of doesNotUnderstand I do something like:
       doesNotUnderstand: aMessage
          ^aMessage sendTo: decorated.

       It works fine in Pharo, but fails in Gemstone because the
       message sendTo: is not known in the Gemstone system.

       Is there a way I can implement this so it works in both systems
       (without testing whether incoming aMessage(Descriptor)  is an
       array or a message type?)

       Thanks for your help!

       Kind Regards,

       Bart

       --         imagination is more important than knowledge - Albert Einstein
       Logic will get you from A to B. Imagination will take you
       everywhere - Albert Einstein
       Learn from yesterday, live for today, hope for tomorrow. The
       important thing is not to stop questioning. - Albert Einstein
       The true sign of intelligence is not knowledge but imagination.
       - Albert Einstein
       However beautiful the strategy, you should occasionally look at
       the results. - Sir Winston Churchill
       It's not enough that we do our best; sometimes we have to do
       what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dale,

I've tried loading the new package.
I'm now gettin' following error:

<snippet>
MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.

Error during rendering, a continuation containing error stack has been saved

To bring up a debugger in your development image, press the Debug button in the GemStone/S Transcript window.

For the moment, resuming from a remote debug session is not supported.
</snippet>

Maybe the case I'm having is not the one you've fixed, so I've provided a example which fails on Gemstone, but works on Pharo.

under: http://www.squeaksource.com/MyExperiments load MyExperiments-BartGauquie.4

(and apply the fix I referred to earlier in this thread)
   Array>>sendTo: receiver
        ^ receiver perform: (self at: 1) withArguments: (self at: 2)

open a workspace and a transcript.
evaluate: 
MyExperimentSubject shout.

and the transcript should show (for Pharo):
undecorated
Shout !!

single decorated
I'm decorating !
Shout !!

dual decorated
I'm decorating !
I'm decorating !
Shout !!

however for Gemstone:
undecorated
Shout !!

single decorated
I'm decorating !
Shout !!

dual decorated
I'm decorating !
and then:
MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.
error pops up I'm also getting' in my other code.

Hope this helps you further with the error I'm getting'.

Thanks for your help!

Kind Regards,

Bart


On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie <[hidden email]> wrote:
Dale,

I've tested the previous fix you've suggested last night and it did not work as you mentioned. 

I will test the new fix today.

Kind Regards,

Bart


On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email]> wrote:
Bart,

Try loading GemStone-Exceptions-DaleHenrichs.37 from http://seaside.gemstone.com/ss/monticello. A test is included and I've tested this on both GemStone 2.3.x and Gemstone 2.4.4.1...I cleaned my glasses and ran the tests again, too...twice:)

I am whipping up a 1.0-beta.8.3 that will have this fix plus a couple of other bug fixes (going after low hanging fruit). I aim to ship 1.0-beta.8.3 pretty soon ...

Dale


Dale Henrichs wrote:
Bart,

Ah, yes ... GemStone came late to ANSI exceptions so you've hit one of the gaps...

If I'm not mistaken 2013 is the moral equivalent of MNU for #perform, so you could modify ExceptionA class>>gsNumber:arguments:, replacing the line marked 'change -->' with the line marked "    to -->" :

gsNumber: errNum arguments: args

       | errorClass |
       (errNum >= 1001 and: [errNum <= 1999]) ifTrue: [errorClass := CompilerError             ].
       (errNum >= 2001 and: [errNum <= 2999])
      ifTrue: [
"change -->"  errNum == 2010 ifTrue: [
"    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [

And that should do the trick. I've added Issue 159 (http://code.google.com/p/glassdb/issues/detail?id=159) to track the official fix.

Thanks,

Dale

Bart Gauquie wrote:
Dale,

I've implemented a fix like this:

Array>>sendTo: receiver
   ^ receiver perform: (self at: 1) withArguments: (self at: 2)

This works ... mostly ...

It fails if the receiver is a decorator itself implementing

doesNotUnderstand: aMessage
   ^aMessage sendTo: decorated.

for most of its methods.

Then this fails because apparently Object>>perform: withArguments does not delegate to doesNotUnderstand: aMessage if message not found, but instead throws:


 InterpreterError 2013: <aNARenderContextDecorator> cannot perform the
 selector <#'actionUrl'> with the arguments in <anArray( )>. Perform
 may have been attempted with wrong number of args.

I could not directly find another method to call on Object so that the second decoration works ...

Thanks for any help,

Kind Regards,

Bart


On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs <[hidden email] <mailto:[hidden email]>> wrote:

   Bart,

   To start with I've submitted Issue 157
   (http://code.google.com/p/glassdb/issues/detail?id=157) to track this.

   The right answer is for us to fix the bug by adding a Message or
   FailedMessage class and implement the necessary messages - a quick
   look makes me think that lookupClass wouldn't be included for example.

   Until then I think the best workaround would be to implement
   #sendTo: in Array as an extension method for GemStone.

   In 2.4.4.1, it looks like a FailedMessage instance is available that
   encapsulates the selector and args (but does not implement
   #sendTo:), so #sendTo: would need to be implemented there as well.

   Once the fix for Issue 157 is released, you won't need your patch
   anymore.

   Dale



   Bart Gauquie wrote:

       Dear List,

       In Pharo a doesNotUnderstand: aMessage method receives a Message
       object instance; which contains a selector, a args array and a
       lookupClass field.

       In Gemstone a doesNotUnderstand: aMessageDescriptor receives an
       Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

       If in my implementation of doesNotUnderstand I do something like:
       doesNotUnderstand: aMessage
          ^aMessage sendTo: decorated.

       It works fine in Pharo, but fails in Gemstone because the
       message sendTo: is not known in the Gemstone system.

       Is there a way I can implement this so it works in both systems
       (without testing whether incoming aMessage(Descriptor)  is an
       array or a message type?)

       Thanks for your help!

       Kind Regards,

       Bart

       --         imagination is more important than knowledge - Albert Einstein
       Logic will get you from A to B. Imagination will take you
       everywhere - Albert Einstein
       Learn from yesterday, live for today, hope for tomorrow. The
       important thing is not to stop questioning. - Albert Einstein
       The true sign of intelligence is not knowledge but imagination.
       - Albert Einstein
       However beautiful the strategy, you should occasionally look at
       the results. - Sir Winston Churchill
       It's not enough that we do our best; sometimes we have to do
       what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Bart,

I didn't test your exact stack configuration. I ran a simple test case
(see GsExceptionTestCase>>testIssue159):

   [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ].

Presumably this test passes in your installation?

Thanks for the sample code, I'll see what I can figure out today.

I appreciate your patience,

Dale

Bart Gauquie wrote:

> Dale,
>
> I've tried loading the new package.
> I'm now gettin' following error:
>
> <snippet>
> MessageNotUnderstood 2010: No method was found for the selector
> <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.
>
> Error during rendering, a continuation containing error stack has been saved
>
> To bring up a debugger in your development image, press the Debug button
> in the GemStone/S Transcript window.
>
> For the moment, resuming from a remote debug session is not supported.
> </snippet>
>
> Maybe the case I'm having is not the one you've fixed, so I've provided
> a example which fails on Gemstone, but works on Pharo.
>
> under: http://www.squeaksource.com/MyExperiments load
> MyExperiments-BartGauquie.4
>
> (and apply the fix I referred to earlier in this thread)
>    Array>>sendTo: receiver
>         ^ receiver perform: (self at: 1) withArguments: (self at: 2)
>
> open a workspace and a transcript.
> evaluate:
> MyExperimentSubject shout.
>
> and the transcript should show (for Pharo):
> undecorated
> Shout !!
>
> single decorated
> I'm decorating !
> Shout !!
>
> dual decorated
> I'm decorating !
> I'm decorating !
> Shout !!
>
> however for Gemstone:
> undecorated
> Shout !!
>
> single decorated
> I'm decorating !
> Shout !!
>
> dual decorated
> I'm decorating !
> and then:
> MessageNotUnderstood 2010: No method was found for the selector
> <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.
> error pops up I'm also getting' in my other code.
>
> Hope this helps you further with the error I'm getting'.
>
> Thanks for your help!
>
> Kind Regards,
>
> Bart
>
>
> On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Dale,
>
>     I've tested the previous fix you've suggested last night and it did
>     not work as you mentioned.
>
>     I will test the new fix today.
>
>     Kind Regards,
>
>     Bart
>
>
>     On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email]
>     <mailto:[hidden email]>> wrote:
>
>         Bart,
>
>         Try loading GemStone-Exceptions-DaleHenrichs.37 from
>         http://seaside.gemstone.com/ss/monticello. A test is included
>         and I've tested this on both GemStone 2.3.x and Gemstone
>         2.4.4.1...I cleaned my glasses and ran the tests again,
>         too...twice:)
>
>         I am whipping up a 1.0-beta.8.3 that will have this fix plus a
>         couple of other bug fixes (going after low hanging fruit). I aim
>         to ship 1.0-beta.8.3 pretty soon ...
>
>         Dale
>
>
>         Dale Henrichs wrote:
>
>             Bart,
>
>             Ah, yes ... GemStone came late to ANSI exceptions so you've
>             hit one of the gaps...
>
>             If I'm not mistaken 2013 is the moral equivalent of MNU for
>             #perform, so you could modify ExceptionA
>             class>>gsNumber:arguments:, replacing the line marked
>             'change -->' with the line marked "    to -->" :
>
>             gsNumber: errNum arguments: args
>
>                    | errorClass |
>                    (errNum >= 1001 and: [errNum <= 1999]) ifTrue:
>             [errorClass := CompilerError             ].
>                    (errNum >= 2001 and: [errNum <= 2999])
>                   ifTrue: [
>             "change -->"  errNum == 2010 ifTrue: [
>             "    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [
>
>             And that should do the trick. I've added Issue 159
>             (http://code.google.com/p/glassdb/issues/detail?id=159) to
>             track the official fix.
>
>             Thanks,
>
>             Dale
>
>             Bart Gauquie wrote:
>
>                 Dale,
>
>                 I've implemented a fix like this:
>
>                 Array>>sendTo: receiver
>                    ^ receiver perform: (self at: 1) withArguments: (self
>                 at: 2)
>
>                 This works ... mostly ...
>
>                 It fails if the receiver is a decorator itself implementing
>
>                 doesNotUnderstand: aMessage
>                    ^aMessage sendTo: decorated.
>
>                 for most of its methods.
>
>                 Then this fails because apparently Object>>perform:
>                 withArguments does not delegate to doesNotUnderstand:
>                 aMessage if message not found, but instead throws:
>
>
>                  InterpreterError 2013: <aNARenderContextDecorator>
>                 cannot perform the
>                  selector <#'actionUrl'> with the arguments in <anArray(
>                 )>. Perform
>                  may have been attempted with wrong number of args.
>
>                 I could not directly find another method to call on
>                 Object so that the second decoration works ...
>
>                 Thanks for any help,
>
>                 Kind Regards,
>
>                 Bart
>
>
>                 On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
>                 <[hidden email] <mailto:[hidden email]>
>                 <mailto:[hidden email]
>                 <mailto:[hidden email]>>> wrote:
>
>                    Bart,
>
>                    To start with I've submitted Issue 157
>                  
>                  (http://code.google.com/p/glassdb/issues/detail?id=157)
>                 to track this.
>
>                    The right answer is for us to fix the bug by adding a
>                 Message or
>                    FailedMessage class and implement the necessary
>                 messages - a quick
>                    look makes me think that lookupClass wouldn't be
>                 included for example.
>
>                    Until then I think the best workaround would be to
>                 implement
>                    #sendTo: in Array as an extension method for GemStone.
>
>                    In 2.4.4.1, it looks like a FailedMessage instance is
>                 available that
>                    encapsulates the selector and args (but does not
>                 implement
>                    #sendTo:), so #sendTo: would need to be implemented
>                 there as well.
>
>                    Once the fix for Issue 157 is released, you won't
>                 need your patch
>                    anymore.
>
>                    Dale
>
>
>
>                    Bart Gauquie wrote:
>
>                        Dear List,
>
>                        In Pharo a doesNotUnderstand: aMessage method
>                 receives a Message
>                        object instance; which contains a selector, a
>                 args array and a
>                        lookupClass field.
>
>                        In Gemstone a doesNotUnderstand:
>                 aMessageDescriptor receives an
>                        Array: anArray( #'testme:', anArray( 'sdflsdjkf'))
>
>                        If in my implementation of doesNotUnderstand I do
>                 something like:
>                        doesNotUnderstand: aMessage
>                           ^aMessage sendTo: decorated.
>
>                        It works fine in Pharo, but fails in Gemstone
>                 because the
>                        message sendTo: is not known in the Gemstone system.
>
>                        Is there a way I can implement this so it works
>                 in both systems
>                        (without testing whether incoming
>                 aMessage(Descriptor)  is an
>                        array or a message type?)
>
>                        Thanks for your help!
>
>                        Kind Regards,
>
>                        Bart
>
>                        --         imagination is more important than
>                 knowledge - Albert Einstein
>                        Logic will get you from A to B. Imagination will
>                 take you
>                        everywhere - Albert Einstein
>                        Learn from yesterday, live for today, hope for
>                 tomorrow. The
>                        important thing is not to stop questioning. -
>                 Albert Einstein
>                        The true sign of intelligence is not knowledge
>                 but imagination.
>                        - Albert Einstein
>                        However beautiful the strategy, you should
>                 occasionally look at
>                        the results. - Sir Winston Churchill
>                        It's not enough that we do our best; sometimes we
>                 have to do
>                        what's required. - Sir Winston Churchill
>
>
>
>
>                 --
>                 imagination is more important than knowledge - Albert
>                 Einstein
>                 Logic will get you from A to B. Imagination will take
>                 you everywhere - Albert Einstein
>                 Learn from yesterday, live for today, hope for tomorrow.
>                 The important thing is not to stop questioning. - Albert
>                 Einstein
>                 The true sign of intelligence is not knowledge but
>                 imagination. - Albert Einstein
>                 However beautiful the strategy, you should occasionally
>                 look at the results. - Sir Winston Churchill
>                 It's not enough that we do our best; sometimes we have
>                 to do what's required. - Sir Winston Churchill
>
>
>
>
>
>     --
>     imagination is more important than knowledge - Albert Einstein
>     Logic will get you from A to B. Imagination will take you everywhere
>     - Albert Einstein
>     Learn from yesterday, live for today, hope for tomorrow. The
>     important thing is not to stop questioning. - Albert Einstein
>     The true sign of intelligence is not knowledge but imagination. -
>     Albert Einstein
>     However beautiful the strategy, you should occasionally look at the
>     results. - Sir Winston Churchill
>     It's not enough that we do our best; sometimes we have to do what's
>     required. - Sir Winston Churchill
>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill

Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dale,

GsExceptionTestCase runs fine on my installation.

Kind Regards,

Bart

On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs <[hidden email]> wrote:
Bart,

I didn't test your exact stack configuration. I ran a simple test case (see GsExceptionTestCase>>testIssue159):

 [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ].

Presumably this test passes in your installation?

Thanks for the sample code, I'll see what I can figure out today.

I appreciate your patience,

Dale

Bart Gauquie wrote:
Dale,

I've tried loading the new package.
I'm now gettin' following error:

<snippet>
MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.

Error during rendering, a continuation containing error stack has been saved

To bring up a debugger in your development image, press the Debug button in the GemStone/S Transcript window.

For the moment, resuming from a remote debug session is not supported.
</snippet>

Maybe the case I'm having is not the one you've fixed, so I've provided a example which fails on Gemstone, but works on Pharo.

under: http://www.squeaksource.com/MyExperiments load MyExperiments-BartGauquie.4

(and apply the fix I referred to earlier in this thread)
  Array>>sendTo: receiver
       ^ receiver perform: (self at: 1) withArguments: (self at: 2)

open a workspace and a transcript.
evaluate: MyExperimentSubject shout.

and the transcript should show (for Pharo):
undecorated
Shout !!

single decorated
I'm decorating !
Shout !!

dual decorated
I'm decorating !
I'm decorating !
Shout !!

however for Gemstone:
undecorated
Shout !!

single decorated
I'm decorating !
Shout !!

dual decorated
I'm decorating !
and then:
MessageNotUnderstood 2010: No method was found for the selector <#'fooBar'> when sent to <nil> with arguments contained in <anArray( )>.
error pops up I'm also getting' in my other code.

Hope this helps you further with the error I'm getting'.

Thanks for your help!

Kind Regards,

Bart


On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie <[hidden email] <mailto:[hidden email]>> wrote:

   Dale,

   I've tested the previous fix you've suggested last night and it did
   not work as you mentioned.
   I will test the new fix today.

   Kind Regards,

   Bart


   On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs <[hidden email]
   <mailto:[hidden email]>> wrote:

       Bart,

       Try loading GemStone-Exceptions-DaleHenrichs.37 from
       http://seaside.gemstone.com/ss/monticello. A test is included
       and I've tested this on both GemStone 2.3.x and Gemstone
       2.4.4.1...I cleaned my glasses and ran the tests again,
       too...twice:)

       I am whipping up a 1.0-beta.8.3 that will have this fix plus a
       couple of other bug fixes (going after low hanging fruit). I aim
       to ship 1.0-beta.8.3 pretty soon ...

       Dale


       Dale Henrichs wrote:

           Bart,

           Ah, yes ... GemStone came late to ANSI exceptions so you've
           hit one of the gaps...

           If I'm not mistaken 2013 is the moral equivalent of MNU for
           #perform, so you could modify ExceptionA
           class>>gsNumber:arguments:, replacing the line marked
           'change -->' with the line marked "    to -->" :

           gsNumber: errNum arguments: args

                  | errorClass |
                  (errNum >= 1001 and: [errNum <= 1999]) ifTrue:
           [errorClass := CompilerError             ].
                  (errNum >= 2001 and: [errNum <= 2999])
                 ifTrue: [
           "change -->"  errNum == 2010 ifTrue: [
           "    to -->"  (errNum == 2010 or: [errNum == 2013 ]) ifTrue: [

           And that should do the trick. I've added Issue 159
           (http://code.google.com/p/glassdb/issues/detail?id=159) to
           track the official fix.

           Thanks,

           Dale

           Bart Gauquie wrote:

               Dale,

               I've implemented a fix like this:

               Array>>sendTo: receiver
                  ^ receiver perform: (self at: 1) withArguments: (self
               at: 2)

               This works ... mostly ...

               It fails if the receiver is a decorator itself implementing

               doesNotUnderstand: aMessage
                  ^aMessage sendTo: decorated.

               for most of its methods.

               Then this fails because apparently Object>>perform:
               withArguments does not delegate to doesNotUnderstand:
               aMessage if message not found, but instead throws:


                InterpreterError 2013: <aNARenderContextDecorator>
               cannot perform the
                selector <#'actionUrl'> with the arguments in <anArray(
               )>. Perform
                may have been attempted with wrong number of args.

               I could not directly find another method to call on
               Object so that the second decoration works ...

               Thanks for any help,

               Kind Regards,

               Bart


               On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
               <[hidden email] <mailto:[hidden email]>
               <mailto:[hidden email]

               <mailto:[hidden email]>>> wrote:

                  Bart,

                  To start with I've submitted Issue 157
                                 (http://code.google.com/p/glassdb/issues/detail?id=157)
               to track this.

                  The right answer is for us to fix the bug by adding a
               Message or
                  FailedMessage class and implement the necessary
               messages - a quick
                  look makes me think that lookupClass wouldn't be
               included for example.

                  Until then I think the best workaround would be to
               implement
                  #sendTo: in Array as an extension method for GemStone.

                  In 2.4.4.1, it looks like a FailedMessage instance is
               available that
                  encapsulates the selector and args (but does not
               implement
                  #sendTo:), so #sendTo: would need to be implemented
               there as well.

                  Once the fix for Issue 157 is released, you won't
               need your patch
                  anymore.

                  Dale



                  Bart Gauquie wrote:

                      Dear List,

                      In Pharo a doesNotUnderstand: aMessage method
               receives a Message
                      object instance; which contains a selector, a
               args array and a
                      lookupClass field.

                      In Gemstone a doesNotUnderstand:
               aMessageDescriptor receives an
                      Array: anArray( #'testme:', anArray( 'sdflsdjkf'))

                      If in my implementation of doesNotUnderstand I do
               something like:
                      doesNotUnderstand: aMessage
                         ^aMessage sendTo: decorated.

                      It works fine in Pharo, but fails in Gemstone
               because the
                      message sendTo: is not known in the Gemstone system.

                      Is there a way I can implement this so it works
               in both systems
                      (without testing whether incoming
               aMessage(Descriptor)  is an
                      array or a message type?)

                      Thanks for your help!

                      Kind Regards,

                      Bart

                      --         imagination is more important than
               knowledge - Albert Einstein
                      Logic will get you from A to B. Imagination will
               take you
                      everywhere - Albert Einstein
                      Learn from yesterday, live for today, hope for
               tomorrow. The
                      important thing is not to stop questioning. -
               Albert Einstein
                      The true sign of intelligence is not knowledge
               but imagination.
                      - Albert Einstein
                      However beautiful the strategy, you should
               occasionally look at
                      the results. - Sir Winston Churchill
                      It's not enough that we do our best; sometimes we
               have to do
                      what's required. - Sir Winston Churchill




               --                 imagination is more important than knowledge - Albert
               Einstein
               Logic will get you from A to B. Imagination will take
               you everywhere - Albert Einstein
               Learn from yesterday, live for today, hope for tomorrow.
               The important thing is not to stop questioning. - Albert
               Einstein
               The true sign of intelligence is not knowledge but
               imagination. - Albert Einstein
               However beautiful the strategy, you should occasionally
               look at the results. - Sir Winston Churchill
               It's not enough that we do our best; sometimes we have
               to do what's required. - Sir Winston Churchill





   --     imagination is more important than knowledge - Albert Einstein
   Logic will get you from A to B. Imagination will take you everywhere
   - Albert Einstein
   Learn from yesterday, live for today, hope for tomorrow. The
   important thing is not to stop questioning. - Albert Einstein
   The true sign of intelligence is not knowledge but imagination. -
   Albert Einstein
   However beautiful the strategy, you should occasionally look at the
   results. - Sir Winston Churchill
   It's not enough that we do our best; sometimes we have to do what's
   required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Bart,

I'm tracking the #fooBar issue with Issue 161 and I've committed a fix
(along with more test cases:) that appears to fix the problem. Could you
give a try loading GemStone-Exceptions-DaleHenrichs.38 and let me know
if this finally takes care of your issues?

BTW, this fix is only tested on 2.4.4.1 (which I assume you are using).
I expect that the solution for 2.3.x will have to be different (based on
preliminary tests).

Dale

Bart Gauquie wrote:

> Dale,
>
> GsExceptionTestCase runs fine on my installation.
>
> Kind Regards,
>
> Bart
>
> On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Bart,
>
>     I didn't test your exact stack configuration. I ran a simple test
>     case (see GsExceptionTestCase>>testIssue159):
>
>      [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ].
>
>     Presumably this test passes in your installation?
>
>     Thanks for the sample code, I'll see what I can figure out today.
>
>     I appreciate your patience,
>
>     Dale
>
>     Bart Gauquie wrote:
>
>         Dale,
>
>         I've tried loading the new package.
>         I'm now gettin' following error:
>
>         <snippet>
>         MessageNotUnderstood 2010: No method was found for the selector
>         <#'fooBar'> when sent to <nil> with arguments contained in
>         <anArray( )>.
>
>         Error during rendering, a continuation containing error stack
>         has been saved
>
>         To bring up a debugger in your development image, press the
>         Debug button in the GemStone/S Transcript window.
>
>         For the moment, resuming from a remote debug session is not
>         supported.
>         </snippet>
>
>         Maybe the case I'm having is not the one you've fixed, so I've
>         provided a example which fails on Gemstone, but works on Pharo.
>
>         under: http://www.squeaksource.com/MyExperiments load
>         MyExperiments-BartGauquie.4
>
>         (and apply the fix I referred to earlier in this thread)
>           Array>>sendTo: receiver
>                ^ receiver perform: (self at: 1) withArguments: (self at: 2)
>
>         open a workspace and a transcript.
>         evaluate: MyExperimentSubject shout.
>
>         and the transcript should show (for Pharo):
>         undecorated
>         Shout !!
>
>         single decorated
>         I'm decorating !
>         Shout !!
>
>         dual decorated
>         I'm decorating !
>         I'm decorating !
>         Shout !!
>
>         however for Gemstone:
>         undecorated
>         Shout !!
>
>         single decorated
>         I'm decorating !
>         Shout !!
>
>         dual decorated
>         I'm decorating !
>         and then:
>         MessageNotUnderstood 2010: No method was found for the selector
>         <#'fooBar'> when sent to <nil> with arguments contained in
>         <anArray( )>.
>         error pops up I'm also getting' in my other code.
>
>         Hope this helps you further with the error I'm getting'.
>
>         Thanks for your help!
>
>         Kind Regards,
>
>         Bart
>
>
>         On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie
>         <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>>
>         wrote:
>
>            Dale,
>
>            I've tested the previous fix you've suggested last night and
>         it did
>            not work as you mentioned.
>            I will test the new fix today.
>
>            Kind Regards,
>
>            Bart
>
>
>            On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs
>         <[hidden email] <mailto:[hidden email]>
>            <mailto:[hidden email] <mailto:[hidden email]>>> wrote:
>
>                Bart,
>
>                Try loading GemStone-Exceptions-DaleHenrichs.37 from
>                http://seaside.gemstone.com/ss/monticello. A test is included
>                and I've tested this on both GemStone 2.3.x and Gemstone
>                2.4.4.1...I cleaned my glasses and ran the tests again,
>                too...twice:)
>
>                I am whipping up a 1.0-beta.8.3 that will have this fix
>         plus a
>                couple of other bug fixes (going after low hanging
>         fruit). I aim
>                to ship 1.0-beta.8.3 pretty soon ...
>
>                Dale
>
>
>                Dale Henrichs wrote:
>
>                    Bart,
>
>                    Ah, yes ... GemStone came late to ANSI exceptions so
>         you've
>                    hit one of the gaps...
>
>                    If I'm not mistaken 2013 is the moral equivalent of
>         MNU for
>                    #perform, so you could modify ExceptionA
>                    class>>gsNumber:arguments:, replacing the line marked
>                    'change -->' with the line marked "    to -->" :
>
>                    gsNumber: errNum arguments: args
>
>                           | errorClass |
>                           (errNum >= 1001 and: [errNum <= 1999]) ifTrue:
>                    [errorClass := CompilerError             ].
>                           (errNum >= 2001 and: [errNum <= 2999])
>                          ifTrue: [
>                    "change -->"  errNum == 2010 ifTrue: [
>                    "    to -->"  (errNum == 2010 or: [errNum == 2013 ])
>         ifTrue: [
>
>                    And that should do the trick. I've added Issue 159
>                  
>          (http://code.google.com/p/glassdb/issues/detail?id=159) to
>                    track the official fix.
>
>                    Thanks,
>
>                    Dale
>
>                    Bart Gauquie wrote:
>
>                        Dale,
>
>                        I've implemented a fix like this:
>
>                        Array>>sendTo: receiver
>                           ^ receiver perform: (self at: 1)
>         withArguments: (self
>                        at: 2)
>
>                        This works ... mostly ...
>
>                        It fails if the receiver is a decorator itself
>         implementing
>
>                        doesNotUnderstand: aMessage
>                           ^aMessage sendTo: decorated.
>
>                        for most of its methods.
>
>                        Then this fails because apparently Object>>perform:
>                        withArguments does not delegate to doesNotUnderstand:
>                        aMessage if message not found, but instead throws:
>
>
>                         InterpreterError 2013: <aNARenderContextDecorator>
>                        cannot perform the
>                         selector <#'actionUrl'> with the arguments in
>         <anArray(
>                        )>. Perform
>                         may have been attempted with wrong number of args.
>
>                        I could not directly find another method to call on
>                        Object so that the second decoration works ...
>
>                        Thanks for any help,
>
>                        Kind Regards,
>
>                        Bart
>
>
>                        On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
>                        <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>
>                        <mailto:[hidden email]
>         <mailto:[hidden email]>
>
>                        <mailto:[hidden email]
>         <mailto:[hidden email]>>>> wrote:
>
>                           Bart,
>
>                           To start with I've submitted Issue 157
>                                        
>          (http://code.google.com/p/glassdb/issues/detail?id=157)
>                        to track this.
>
>                           The right answer is for us to fix the bug by
>         adding a
>                        Message or
>                           FailedMessage class and implement the necessary
>                        messages - a quick
>                           look makes me think that lookupClass wouldn't be
>                        included for example.
>
>                           Until then I think the best workaround would be to
>                        implement
>                           #sendTo: in Array as an extension method for
>         GemStone.
>
>                           In 2.4.4.1, it looks like a FailedMessage
>         instance is
>                        available that
>                           encapsulates the selector and args (but does not
>                        implement
>                           #sendTo:), so #sendTo: would need to be
>         implemented
>                        there as well.
>
>                           Once the fix for Issue 157 is released, you won't
>                        need your patch
>                           anymore.
>
>                           Dale
>
>
>
>                           Bart Gauquie wrote:
>
>                               Dear List,
>
>                               In Pharo a doesNotUnderstand: aMessage method
>                        receives a Message
>                               object instance; which contains a selector, a
>                        args array and a
>                               lookupClass field.
>
>                               In Gemstone a doesNotUnderstand:
>                        aMessageDescriptor receives an
>                               Array: anArray( #'testme:', anArray(
>         'sdflsdjkf'))
>
>                               If in my implementation of
>         doesNotUnderstand I do
>                        something like:
>                               doesNotUnderstand: aMessage
>                                  ^aMessage sendTo: decorated.
>
>                               It works fine in Pharo, but fails in Gemstone
>                        because the
>                               message sendTo: is not known in the
>         Gemstone system.
>
>                               Is there a way I can implement this so it
>         works
>                        in both systems
>                               (without testing whether incoming
>                        aMessage(Descriptor)  is an
>                               array or a message type?)
>
>                               Thanks for your help!
>
>                               Kind Regards,
>
>                               Bart
>
>                               --         imagination is more important than
>                        knowledge - Albert Einstein
>                               Logic will get you from A to B.
>         Imagination will
>                        take you
>                               everywhere - Albert Einstein
>                               Learn from yesterday, live for today, hope for
>                        tomorrow. The
>                               important thing is not to stop questioning. -
>                        Albert Einstein
>                               The true sign of intelligence is not knowledge
>                        but imagination.
>                               - Albert Einstein
>                               However beautiful the strategy, you should
>                        occasionally look at
>                               the results. - Sir Winston Churchill
>                               It's not enough that we do our best;
>         sometimes we
>                        have to do
>                               what's required. - Sir Winston Churchill
>
>
>
>
>                        --                 imagination is more important
>         than knowledge - Albert
>                        Einstein
>                        Logic will get you from A to B. Imagination will take
>                        you everywhere - Albert Einstein
>                        Learn from yesterday, live for today, hope for
>         tomorrow.
>                        The important thing is not to stop questioning. -
>         Albert
>                        Einstein
>                        The true sign of intelligence is not knowledge but
>                        imagination. - Albert Einstein
>                        However beautiful the strategy, you should
>         occasionally
>                        look at the results. - Sir Winston Churchill
>                        It's not enough that we do our best; sometimes we
>         have
>                        to do what's required. - Sir Winston Churchill
>
>
>
>
>
>            --     imagination is more important than knowledge - Albert
>         Einstein
>            Logic will get you from A to B. Imagination will take you
>         everywhere
>            - Albert Einstein
>            Learn from yesterday, live for today, hope for tomorrow. The
>            important thing is not to stop questioning. - Albert Einstein
>            The true sign of intelligence is not knowledge but imagination. -
>            Albert Einstein
>            However beautiful the strategy, you should occasionally look
>         at the
>            results. - Sir Winston Churchill
>            It's not enough that we do our best; sometimes we have to do
>         what's
>            required. - Sir Winston Churchill
>
>
>
>
>         --
>         imagination is more important than knowledge - Albert Einstein
>         Logic will get you from A to B. Imagination will take you
>         everywhere - Albert Einstein
>         Learn from yesterday, live for today, hope for tomorrow. The
>         important thing is not to stop questioning. - Albert Einstein
>         The true sign of intelligence is not knowledge but imagination.
>         - Albert Einstein
>         However beautiful the strategy, you should occasionally look at
>         the results. - Sir Winston Churchill
>         It's not enough that we do our best; sometimes we have to do
>         what's required. - Sir Winston Churchill
>
>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill

Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Dale Henrichs wrote:

> Bart,
>
> I'm tracking the #fooBar issue with Issue 161 and I've committed a fix
> (along with more test cases:) that appears to fix the problem. Could you
> give a try loading GemStone-Exceptions-DaleHenrichs.38 and let me know
> if this finally takes care of your issues?
>
> BTW, this fix is only tested on 2.4.4.1 (which I assume you are using).
> I expect that the solution for 2.3.x will have to be different (based on
> preliminary tests).
>
> Dale

It looks like GemStone-Exceptions-DaleHenrichs.38 works on 2.3.x as well
... at least the tests pass there ... at least it looks to me like the
tests pass there:)...

Dale
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
In reply to this post by Dale Henrichs
Dale,

I'm using 2.4.4.1.
I tested the package and I regret to tell you, but it still fails on my installation.
All tests in GsExceptionTestCase run.

However if I execute my demo I'm getting an exception that shout method is not found on the nested decorator. Do you have the same error? In Pharo this method not found exception automatically delegates to the doesnotunderstand method and the second decorator continues. While in Gemstone it does not ?

What output of evaluating
MyExperimentSubject shout.
are you getting?

I will send you a private email with a stacktrace screenshot.

Kind Regards,

Bart


On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs <[hidden email]> wrote:
Bart,

I'm tracking the #fooBar issue with Issue 161 and I've committed a fix (along with more test cases:) that appears to fix the problem. Could you give a try loading GemStone-Exceptions-DaleHenrichs.38 and let me know if this finally takes care of your issues?

BTW, this fix is only tested on 2.4.4.1 (which I assume you are using). I expect that the solution for 2.3.x will have to be different (based on preliminary tests).

Dale

Bart Gauquie wrote:
Dale,

GsExceptionTestCase runs fine on my installation.

Kind Regards,

Bart

On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs <[hidden email] <mailto:[hidden email]>> wrote:

   Bart,

   I didn't test your exact stack configuration. I ran a simple test
   case (see GsExceptionTestCase>>testIssue159):

    [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil halt ].

   Presumably this test passes in your installation?

   Thanks for the sample code, I'll see what I can figure out today.

   I appreciate your patience,

   Dale

   Bart Gauquie wrote:

       Dale,

       I've tried loading the new package.
       I'm now gettin' following error:

       <snippet>
       MessageNotUnderstood 2010: No method was found for the selector
       <#'fooBar'> when sent to <nil> with arguments contained in
       <anArray( )>.

       Error during rendering, a continuation containing error stack
       has been saved

       To bring up a debugger in your development image, press the
       Debug button in the GemStone/S Transcript window.

       For the moment, resuming from a remote debug session is not
       supported.
       </snippet>

       Maybe the case I'm having is not the one you've fixed, so I've
       provided a example which fails on Gemstone, but works on Pharo.

       under: http://www.squeaksource.com/MyExperiments load
       MyExperiments-BartGauquie.4

       (and apply the fix I referred to earlier in this thread)
         Array>>sendTo: receiver
              ^ receiver perform: (self at: 1) withArguments: (self at: 2)

       open a workspace and a transcript.
       evaluate: MyExperimentSubject shout.

       and the transcript should show (for Pharo):
       undecorated
       Shout !!

       single decorated
       I'm decorating !
       Shout !!

       dual decorated
       I'm decorating !
       I'm decorating !
       Shout !!

       however for Gemstone:
       undecorated
       Shout !!

       single decorated
       I'm decorating !
       Shout !!

       dual decorated
       I'm decorating !
       and then:
       MessageNotUnderstood 2010: No method was found for the selector
       <#'fooBar'> when sent to <nil> with arguments contained in
       <anArray( )>.
       error pops up I'm also getting' in my other code.

       Hope this helps you further with the error I'm getting'.

       Thanks for your help!

       Kind Regards,

       Bart


       On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie
       <[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>>

       wrote:

          Dale,

          I've tested the previous fix you've suggested last night and
       it did
          not work as you mentioned.
          I will test the new fix today.

          Kind Regards,

          Bart


          On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs
       <[hidden email] <mailto:[hidden email]>
          <mailto:[hidden email] <mailto:[hidden email]>>> wrote:

              Bart,

              Try loading GemStone-Exceptions-DaleHenrichs.37 from
              http://seaside.gemstone.com/ss/monticello. A test is included
              and I've tested this on both GemStone 2.3.x and Gemstone
              2.4.4.1...I cleaned my glasses and ran the tests again,
              too...twice:)

              I am whipping up a 1.0-beta.8.3 that will have this fix
       plus a
              couple of other bug fixes (going after low hanging
       fruit). I aim
              to ship 1.0-beta.8.3 pretty soon ...

              Dale


              Dale Henrichs wrote:

                  Bart,

                  Ah, yes ... GemStone came late to ANSI exceptions so
       you've
                  hit one of the gaps...

                  If I'm not mistaken 2013 is the moral equivalent of
       MNU for
                  #perform, so you could modify ExceptionA
                  class>>gsNumber:arguments:, replacing the line marked
                  'change -->' with the line marked "    to -->" :

                  gsNumber: errNum arguments: args

                         | errorClass |
                         (errNum >= 1001 and: [errNum <= 1999]) ifTrue:
                  [errorClass := CompilerError             ].
                         (errNum >= 2001 and: [errNum <= 2999])
                        ifTrue: [
                  "change -->"  errNum == 2010 ifTrue: [
                  "    to -->"  (errNum == 2010 or: [errNum == 2013 ])
       ifTrue: [

                  And that should do the trick. I've added Issue 159
                         (http://code.google.com/p/glassdb/issues/detail?id=159) to
                  track the official fix.

                  Thanks,

                  Dale

                  Bart Gauquie wrote:

                      Dale,

                      I've implemented a fix like this:

                      Array>>sendTo: receiver
                         ^ receiver perform: (self at: 1)
       withArguments: (self
                      at: 2)

                      This works ... mostly ...

                      It fails if the receiver is a decorator itself
       implementing

                      doesNotUnderstand: aMessage
                         ^aMessage sendTo: decorated.

                      for most of its methods.

                      Then this fails because apparently Object>>perform:
                      withArguments does not delegate to doesNotUnderstand:
                      aMessage if message not found, but instead throws:


                       InterpreterError 2013: <aNARenderContextDecorator>
                      cannot perform the
                       selector <#'actionUrl'> with the arguments in
       <anArray(
                      )>. Perform
                       may have been attempted with wrong number of args.

                      I could not directly find another method to call on
                      Object so that the second decoration works ...

                      Thanks for any help,

                      Kind Regards,

                      Bart


                      On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
                      <[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>
                      <mailto:[hidden email]
       <mailto:[hidden email]>

                      <mailto:[hidden email]
       <mailto:[hidden email]>>>> wrote:

                         Bart,

                         To start with I've submitted Issue 157
                                               (http://code.google.com/p/glassdb/issues/detail?id=157)
                      to track this.

                         The right answer is for us to fix the bug by
       adding a
                      Message or
                         FailedMessage class and implement the necessary
                      messages - a quick
                         look makes me think that lookupClass wouldn't be
                      included for example.

                         Until then I think the best workaround would be to
                      implement
                         #sendTo: in Array as an extension method for
       GemStone.

                         In 2.4.4.1, it looks like a FailedMessage
       instance is
                      available that
                         encapsulates the selector and args (but does not
                      implement
                         #sendTo:), so #sendTo: would need to be
       implemented
                      there as well.

                         Once the fix for Issue 157 is released, you won't
                      need your patch
                         anymore.

                         Dale



                         Bart Gauquie wrote:

                             Dear List,

                             In Pharo a doesNotUnderstand: aMessage method
                      receives a Message
                             object instance; which contains a selector, a
                      args array and a
                             lookupClass field.

                             In Gemstone a doesNotUnderstand:
                      aMessageDescriptor receives an
                             Array: anArray( #'testme:', anArray(
       'sdflsdjkf'))

                             If in my implementation of
       doesNotUnderstand I do
                      something like:
                             doesNotUnderstand: aMessage
                                ^aMessage sendTo: decorated.

                             It works fine in Pharo, but fails in Gemstone
                      because the
                             message sendTo: is not known in the
       Gemstone system.

                             Is there a way I can implement this so it
       works
                      in both systems
                             (without testing whether incoming
                      aMessage(Descriptor)  is an
                             array or a message type?)

                             Thanks for your help!

                             Kind Regards,

                             Bart

                             --         imagination is more important than
                      knowledge - Albert Einstein
                             Logic will get you from A to B.
       Imagination will
                      take you
                             everywhere - Albert Einstein
                             Learn from yesterday, live for today, hope for
                      tomorrow. The
                             important thing is not to stop questioning. -
                      Albert Einstein
                             The true sign of intelligence is not knowledge
                      but imagination.
                             - Albert Einstein
                             However beautiful the strategy, you should
                      occasionally look at
                             the results. - Sir Winston Churchill
                             It's not enough that we do our best;
       sometimes we
                      have to do
                             what's required. - Sir Winston Churchill




                      --                 imagination is more important
       than knowledge - Albert
                      Einstein
                      Logic will get you from A to B. Imagination will take
                      you everywhere - Albert Einstein
                      Learn from yesterday, live for today, hope for
       tomorrow.
                      The important thing is not to stop questioning. -
       Albert
                      Einstein
                      The true sign of intelligence is not knowledge but
                      imagination. - Albert Einstein
                      However beautiful the strategy, you should
       occasionally
                      look at the results. - Sir Winston Churchill
                      It's not enough that we do our best; sometimes we
       have
                      to do what's required. - Sir Winston Churchill





          --     imagination is more important than knowledge - Albert
       Einstein
          Logic will get you from A to B. Imagination will take you
       everywhere
          - Albert Einstein
          Learn from yesterday, live for today, hope for tomorrow. The
          important thing is not to stop questioning. - Albert Einstein
          The true sign of intelligence is not knowledge but imagination. -
          Albert Einstein
          However beautiful the strategy, you should occasionally look
       at the
          results. - Sir Winston Churchill
          It's not enough that we do our best; sometimes we have to do
       what's
          required. - Sir Winston Churchill




       --         imagination is more important than knowledge - Albert Einstein
       Logic will get you from A to B. Imagination will take you
       everywhere - Albert Einstein
       Learn from yesterday, live for today, hope for tomorrow. The
       important thing is not to stop questioning. - Albert Einstein
       The true sign of intelligence is not knowledge but imagination.
       - Albert Einstein
       However beautiful the strategy, you should occasionally look at
       the results. - Sir Winston Churchill
       It's not enough that we do our best; sometimes we have to do
       what's required. - Sir Winston Churchill





--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Bart,

I'm sorry ... I see now that I didn't read your message close enough and
fixed the bug only halfway.

On top of GemStone-Exceptions-DaleHenrichs.39 change
Object>>cantPerform:withArguments: to the following:

cantPerform: aSelectorSymbol withArguments: anArray
        "Fix for Issue 159"

        ^self doesNotUnderstand: { aSelectorSymbol. anArray. }

The exception tests pass and your example doesn't throw an MNU.

Let me know if you have any more trouble.

Dale


Bart Gauquie wrote:

> Dale,
>
> I'm using 2.4.4.1.
> I tested the package and I regret to tell you, but it still fails on my
> installation.
> All tests in GsExceptionTestCase run.
>
> However if I execute my demo I'm getting an exception that shout method
> is not found on the nested decorator. Do you have the same error? In
> Pharo this method not found exception automatically delegates to the
> doesnotunderstand method and the second decorator continues. While in
> Gemstone it does not ?
>
> What output of evaluating
> MyExperimentSubject shout.
> are you getting?
>
> I will send you a private email with a stacktrace screenshot.
>
> Kind Regards,
>
> Bart
>
>
> On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Bart,
>
>     I'm tracking the #fooBar issue with Issue 161 and I've committed a
>     fix (along with more test cases:) that appears to fix the problem.
>     Could you give a try loading GemStone-Exceptions-DaleHenrichs.38 and
>     let me know if this finally takes care of your issues?
>
>     BTW, this fix is only tested on 2.4.4.1 (which I assume you are
>     using). I expect that the solution for 2.3.x will have to be
>     different (based on preliminary tests).
>
>     Dale
>
>     Bart Gauquie wrote:
>
>         Dale,
>
>         GsExceptionTestCase runs fine on my installation.
>
>         Kind Regards,
>
>         Bart
>
>         On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs
>         <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>> wrote:
>
>            Bart,
>
>            I didn't test your exact stack configuration. I ran a simple test
>            case (see GsExceptionTestCase>>testIssue159):
>
>             [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil
>         halt ].
>
>            Presumably this test passes in your installation?
>
>            Thanks for the sample code, I'll see what I can figure out today.
>
>            I appreciate your patience,
>
>            Dale
>
>            Bart Gauquie wrote:
>
>                Dale,
>
>                I've tried loading the new package.
>                I'm now gettin' following error:
>
>                <snippet>
>                MessageNotUnderstood 2010: No method was found for the
>         selector
>                <#'fooBar'> when sent to <nil> with arguments contained in
>                <anArray( )>.
>
>                Error during rendering, a continuation containing error stack
>                has been saved
>
>                To bring up a debugger in your development image, press the
>                Debug button in the GemStone/S Transcript window.
>
>                For the moment, resuming from a remote debug session is not
>                supported.
>                </snippet>
>
>                Maybe the case I'm having is not the one you've fixed, so
>         I've
>                provided a example which fails on Gemstone, but works on
>         Pharo.
>
>                under: http://www.squeaksource.com/MyExperiments load
>                MyExperiments-BartGauquie.4
>
>                (and apply the fix I referred to earlier in this thread)
>                  Array>>sendTo: receiver
>                       ^ receiver perform: (self at: 1) withArguments:
>         (self at: 2)
>
>                open a workspace and a transcript.
>                evaluate: MyExperimentSubject shout.
>
>                and the transcript should show (for Pharo):
>                undecorated
>                Shout !!
>
>                single decorated
>                I'm decorating !
>                Shout !!
>
>                dual decorated
>                I'm decorating !
>                I'm decorating !
>                Shout !!
>
>                however for Gemstone:
>                undecorated
>                Shout !!
>
>                single decorated
>                I'm decorating !
>                Shout !!
>
>                dual decorated
>                I'm decorating !
>                and then:
>                MessageNotUnderstood 2010: No method was found for the
>         selector
>                <#'fooBar'> when sent to <nil> with arguments contained in
>                <anArray( )>.
>                error pops up I'm also getting' in my other code.
>
>                Hope this helps you further with the error I'm getting'.
>
>                Thanks for your help!
>
>                Kind Regards,
>
>                Bart
>
>
>                On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie
>                <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>
>                <mailto:[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>>>
>
>                wrote:
>
>                   Dale,
>
>                   I've tested the previous fix you've suggested last
>         night and
>                it did
>                   not work as you mentioned.
>                   I will test the new fix today.
>
>                   Kind Regards,
>
>                   Bart
>
>
>                   On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs
>                <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>
>                   <mailto:[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>>> wrote:
>
>                       Bart,
>
>                       Try loading GemStone-Exceptions-DaleHenrichs.37 from
>                       http://seaside.gemstone.com/ss/monticello. A test
>         is included
>                       and I've tested this on both GemStone 2.3.x and
>         Gemstone
>                       2.4.4.1...I cleaned my glasses and ran the tests
>         again,
>                       too...twice:)
>
>                       I am whipping up a 1.0-beta.8.3 that will have
>         this fix
>                plus a
>                       couple of other bug fixes (going after low hanging
>                fruit). I aim
>                       to ship 1.0-beta.8.3 pretty soon ...
>
>                       Dale
>
>
>                       Dale Henrichs wrote:
>
>                           Bart,
>
>                           Ah, yes ... GemStone came late to ANSI
>         exceptions so
>                you've
>                           hit one of the gaps...
>
>                           If I'm not mistaken 2013 is the moral
>         equivalent of
>                MNU for
>                           #perform, so you could modify ExceptionA
>                           class>>gsNumber:arguments:, replacing the line
>         marked
>                           'change -->' with the line marked "    to -->" :
>
>                           gsNumber: errNum arguments: args
>
>                                  | errorClass |
>                                  (errNum >= 1001 and: [errNum <= 1999])
>         ifTrue:
>                           [errorClass := CompilerError             ].
>                                  (errNum >= 2001 and: [errNum <= 2999])
>                                 ifTrue: [
>                           "change -->"  errNum == 2010 ifTrue: [
>                           "    to -->"  (errNum == 2010 or: [errNum ==
>         2013 ])
>                ifTrue: [
>
>                           And that should do the trick. I've added Issue 159
>                                
>          (http://code.google.com/p/glassdb/issues/detail?id=159) to
>                           track the official fix.
>
>                           Thanks,
>
>                           Dale
>
>                           Bart Gauquie wrote:
>
>                               Dale,
>
>                               I've implemented a fix like this:
>
>                               Array>>sendTo: receiver
>                                  ^ receiver perform: (self at: 1)
>                withArguments: (self
>                               at: 2)
>
>                               This works ... mostly ...
>
>                               It fails if the receiver is a decorator itself
>                implementing
>
>                               doesNotUnderstand: aMessage
>                                  ^aMessage sendTo: decorated.
>
>                               for most of its methods.
>
>                               Then this fails because apparently
>         Object>>perform:
>                               withArguments does not delegate to
>         doesNotUnderstand:
>                               aMessage if message not found, but instead
>         throws:
>
>
>                                InterpreterError 2013:
>         <aNARenderContextDecorator>
>                               cannot perform the
>                                selector <#'actionUrl'> with the arguments in
>                <anArray(
>                               )>. Perform
>                                may have been attempted with wrong number
>         of args.
>
>                               I could not directly find another method
>         to call on
>                               Object so that the second decoration works ...
>
>                               Thanks for any help,
>
>                               Kind Regards,
>
>                               Bart
>
>
>                               On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
>                               <[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>
>                <mailto:[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>>
>                               <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>
>
>                               <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email]
>         <mailto:[hidden email]>>>>> wrote:
>
>                                  Bart,
>
>                                  To start with I've submitted Issue 157
>                                                      
>          (http://code.google.com/p/glassdb/issues/detail?id=157)
>                               to track this.
>
>                                  The right answer is for us to fix the
>         bug by
>                adding a
>                               Message or
>                                  FailedMessage class and implement the
>         necessary
>                               messages - a quick
>                                  look makes me think that lookupClass
>         wouldn't be
>                               included for example.
>
>                                  Until then I think the best workaround
>         would be to
>                               implement
>                                  #sendTo: in Array as an extension
>         method for
>                GemStone.
>
>                                  In 2.4.4.1, it looks like a FailedMessage
>                instance is
>                               available that
>                                  encapsulates the selector and args (but
>         does not
>                               implement
>                                  #sendTo:), so #sendTo: would need to be
>                implemented
>                               there as well.
>
>                                  Once the fix for Issue 157 is released,
>         you won't
>                               need your patch
>                                  anymore.
>
>                                  Dale
>
>
>
>                                  Bart Gauquie wrote:
>
>                                      Dear List,
>
>                                      In Pharo a doesNotUnderstand:
>         aMessage method
>                               receives a Message
>                                      object instance; which contains a
>         selector, a
>                               args array and a
>                                      lookupClass field.
>
>                                      In Gemstone a doesNotUnderstand:
>                               aMessageDescriptor receives an
>                                      Array: anArray( #'testme:', anArray(
>                'sdflsdjkf'))
>
>                                      If in my implementation of
>                doesNotUnderstand I do
>                               something like:
>                                      doesNotUnderstand: aMessage
>                                         ^aMessage sendTo: decorated.
>
>                                      It works fine in Pharo, but fails
>         in Gemstone
>                               because the
>                                      message sendTo: is not known in the
>                Gemstone system.
>
>                                      Is there a way I can implement this
>         so it
>                works
>                               in both systems
>                                      (without testing whether incoming
>                               aMessage(Descriptor)  is an
>                                      array or a message type?)
>
>                                      Thanks for your help!
>
>                                      Kind Regards,
>
>                                      Bart
>
>                                      --         imagination is more
>         important than
>                               knowledge - Albert Einstein
>                                      Logic will get you from A to B.
>                Imagination will
>                               take you
>                                      everywhere - Albert Einstein
>                                      Learn from yesterday, live for
>         today, hope for
>                               tomorrow. The
>                                      important thing is not to stop
>         questioning. -
>                               Albert Einstein
>                                      The true sign of intelligence is
>         not knowledge
>                               but imagination.
>                                      - Albert Einstein
>                                      However beautiful the strategy, you
>         should
>                               occasionally look at
>                                      the results. - Sir Winston Churchill
>                                      It's not enough that we do our best;
>                sometimes we
>                               have to do
>                                      what's required. - Sir Winston
>         Churchill
>
>
>
>
>                               --                 imagination is more
>         important
>                than knowledge - Albert
>                               Einstein
>                               Logic will get you from A to B.
>         Imagination will take
>                               you everywhere - Albert Einstein
>                               Learn from yesterday, live for today, hope for
>                tomorrow.
>                               The important thing is not to stop
>         questioning. -
>                Albert
>                               Einstein
>                               The true sign of intelligence is not
>         knowledge but
>                               imagination. - Albert Einstein
>                               However beautiful the strategy, you should
>                occasionally
>                               look at the results. - Sir Winston Churchill
>                               It's not enough that we do our best;
>         sometimes we
>                have
>                               to do what's required. - Sir Winston Churchill
>
>
>
>
>
>                   --     imagination is more important than knowledge -
>         Albert
>                Einstein
>                   Logic will get you from A to B. Imagination will take you
>                everywhere
>                   - Albert Einstein
>                   Learn from yesterday, live for today, hope for
>         tomorrow. The
>                   important thing is not to stop questioning. - Albert
>         Einstein
>                   The true sign of intelligence is not knowledge but
>         imagination. -
>                   Albert Einstein
>                   However beautiful the strategy, you should
>         occasionally look
>                at the
>                   results. - Sir Winston Churchill
>                   It's not enough that we do our best; sometimes we have
>         to do
>                what's
>                   required. - Sir Winston Churchill
>
>
>
>
>                --         imagination is more important than knowledge -
>         Albert Einstein
>                Logic will get you from A to B. Imagination will take you
>                everywhere - Albert Einstein
>                Learn from yesterday, live for today, hope for tomorrow. The
>                important thing is not to stop questioning. - Albert Einstein
>                The true sign of intelligence is not knowledge but
>         imagination.
>                - Albert Einstein
>                However beautiful the strategy, you should occasionally
>         look at
>                the results. - Sir Winston Churchill
>                It's not enough that we do our best; sometimes we have to do
>                what's required. - Sir Winston Churchill
>
>
>
>
>
>         --
>         imagination is more important than knowledge - Albert Einstein
>         Logic will get you from A to B. Imagination will take you
>         everywhere - Albert Einstein
>         Learn from yesterday, live for today, hope for tomorrow. The
>         important thing is not to stop questioning. - Albert Einstein
>         The true sign of intelligence is not knowledge but imagination.
>         - Albert Einstein
>         However beautiful the strategy, you should occasionally look at
>         the results. - Sir Winston Churchill
>         It's not enough that we do our best; sometimes we have to do
>         what's required. - Sir Winston Churchill
>
>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill

Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Bart Gauquie
Dale,

Yes! You've fixed my problem. Thank you very much!

Kind Regards,

Bart



On Wed, Aug 18, 2010 at 7:21 PM, Dale Henrichs <[hidden email]> wrote:
Bart,

I'm sorry ... I see now that I didn't read your message close enough and fixed the bug only halfway.

On top of GemStone-Exceptions-DaleHenrichs.39 change Object>>cantPerform:withArguments: to the following:

cantPerform: aSelectorSymbol withArguments: anArray
       "Fix for Issue 159"

       ^self doesNotUnderstand: { aSelectorSymbol. anArray. }

The exception tests pass and your example doesn't throw an MNU.

Let me know if you have any more trouble.

Dale


Bart Gauquie wrote:
Dale,

I'm using 2.4.4.1.
I tested the package and I regret to tell you, but it still fails on my installation.
All tests in GsExceptionTestCase run.

However if I execute my demo I'm getting an exception that shout method is not found on the nested decorator. Do you have the same error? In Pharo this method not found exception automatically delegates to the doesnotunderstand method and the second decorator continues. While in Gemstone it does not ?

What output of evaluating
MyExperimentSubject shout.
are you getting?

I will send you a private email with a stacktrace screenshot.

Kind Regards,

Bart


On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs <[hidden email] <mailto:[hidden email]>> wrote:

   Bart,

   I'm tracking the #fooBar issue with Issue 161 and I've committed a
   fix (along with more test cases:) that appears to fix the problem.
   Could you give a try loading GemStone-Exceptions-DaleHenrichs.38 and
   let me know if this finally takes care of your issues?

   BTW, this fix is only tested on 2.4.4.1 (which I assume you are
   using). I expect that the solution for 2.3.x will have to be
   different (based on preliminary tests).

   Dale

   Bart Gauquie wrote:

       Dale,

       GsExceptionTestCase runs fine on my installation.

       Kind Regards,

       Bart

       On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs
       <[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>> wrote:

          Bart,

          I didn't test your exact stack configuration. I ran a simple test
          case (see GsExceptionTestCase>>testIssue159):

           [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex | nil
       halt ].

          Presumably this test passes in your installation?

          Thanks for the sample code, I'll see what I can figure out today.

          I appreciate your patience,

          Dale

          Bart Gauquie wrote:

              Dale,

              I've tried loading the new package.
              I'm now gettin' following error:

              <snippet>
              MessageNotUnderstood 2010: No method was found for the
       selector
              <#'fooBar'> when sent to <nil> with arguments contained in
              <anArray( )>.

              Error during rendering, a continuation containing error stack
              has been saved

              To bring up a debugger in your development image, press the
              Debug button in the GemStone/S Transcript window.

              For the moment, resuming from a remote debug session is not
              supported.
              </snippet>

              Maybe the case I'm having is not the one you've fixed, so
       I've
              provided a example which fails on Gemstone, but works on
       Pharo.

              under: http://www.squeaksource.com/MyExperiments load
              MyExperiments-BartGauquie.4

              (and apply the fix I referred to earlier in this thread)
                Array>>sendTo: receiver
                     ^ receiver perform: (self at: 1) withArguments:
       (self at: 2)

              open a workspace and a transcript.
              evaluate: MyExperimentSubject shout.

              and the transcript should show (for Pharo):
              undecorated
              Shout !!

              single decorated
              I'm decorating !
              Shout !!

              dual decorated
              I'm decorating !
              I'm decorating !
              Shout !!

              however for Gemstone:
              undecorated
              Shout !!

              single decorated
              I'm decorating !
              Shout !!

              dual decorated
              I'm decorating !
              and then:
              MessageNotUnderstood 2010: No method was found for the
       selector
              <#'fooBar'> when sent to <nil> with arguments contained in
              <anArray( )>.
              error pops up I'm also getting' in my other code.

              Hope this helps you further with the error I'm getting'.

              Thanks for your help!

              Kind Regards,

              Bart


              On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie
              <[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>
              <mailto:[hidden email]
       <mailto:[hidden email]> <mailto:[hidden email]
       <mailto:[hidden email]>>>>

              wrote:

                 Dale,

                 I've tested the previous fix you've suggested last
       night and
              it did
                 not work as you mentioned.
                 I will test the new fix today.

                 Kind Regards,

                 Bart


                 On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs
              <[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>
                 <mailto:[hidden email]
       <mailto:[hidden email]> <mailto:[hidden email]
       <mailto:[hidden email]>>>> wrote:

                     Bart,

                     Try loading GemStone-Exceptions-DaleHenrichs.37 from
                     http://seaside.gemstone.com/ss/monticello. A test
       is included
                     and I've tested this on both GemStone 2.3.x and
       Gemstone
                     2.4.4.1...I cleaned my glasses and ran the tests
       again,
                     too...twice:)

                     I am whipping up a 1.0-beta.8.3 that will have
       this fix
              plus a
                     couple of other bug fixes (going after low hanging
              fruit). I aim
                     to ship 1.0-beta.8.3 pretty soon ...

                     Dale


                     Dale Henrichs wrote:

                         Bart,

                         Ah, yes ... GemStone came late to ANSI
       exceptions so
              you've
                         hit one of the gaps...

                         If I'm not mistaken 2013 is the moral
       equivalent of
              MNU for
                         #perform, so you could modify ExceptionA
                         class>>gsNumber:arguments:, replacing the line
       marked
                         'change -->' with the line marked "    to -->" :

                         gsNumber: errNum arguments: args

                                | errorClass |
                                (errNum >= 1001 and: [errNum <= 1999])
       ifTrue:
                         [errorClass := CompilerError             ].
                                (errNum >= 2001 and: [errNum <= 2999])
                               ifTrue: [
                         "change -->"  errNum == 2010 ifTrue: [
                         "    to -->"  (errNum == 2010 or: [errNum ==
       2013 ])
              ifTrue: [

                         And that should do the trick. I've added Issue 159
                                       (http://code.google.com/p/glassdb/issues/detail?id=159) to
                         track the official fix.

                         Thanks,

                         Dale

                         Bart Gauquie wrote:

                             Dale,

                             I've implemented a fix like this:

                             Array>>sendTo: receiver
                                ^ receiver perform: (self at: 1)
              withArguments: (self
                             at: 2)

                             This works ... mostly ...

                             It fails if the receiver is a decorator itself
              implementing

                             doesNotUnderstand: aMessage
                                ^aMessage sendTo: decorated.

                             for most of its methods.

                             Then this fails because apparently
       Object>>perform:
                             withArguments does not delegate to
       doesNotUnderstand:
                             aMessage if message not found, but instead
       throws:


                              InterpreterError 2013:
       <aNARenderContextDecorator>
                             cannot perform the
                              selector <#'actionUrl'> with the arguments in
              <anArray(
                             )>. Perform
                              may have been attempted with wrong number
       of args.

                             I could not directly find another method
       to call on
                             Object so that the second decoration works ...

                             Thanks for any help,

                             Kind Regards,

                             Bart


                             On Fri, Aug 6, 2010 at 5:53 PM, Dale Henrichs
                             <[hidden email]
       <mailto:[hidden email]> <mailto:[hidden email]
       <mailto:[hidden email]>>
              <mailto:[hidden email] <mailto:[hidden email]>
       <mailto:[hidden email] <mailto:[hidden email]>>>
                             <mailto:[hidden email]
       <mailto:[hidden email]>
              <mailto:[hidden email] <mailto:[hidden email]>>

                             <mailto:[hidden email]
       <mailto:[hidden email]>
              <mailto:[hidden email]
       <mailto:[hidden email]>>>>> wrote:

                                Bart,

                                To start with I've submitted Issue 157
                                                             (http://code.google.com/p/glassdb/issues/detail?id=157)
                             to track this.

                                The right answer is for us to fix the
       bug by
              adding a
                             Message or
                                FailedMessage class and implement the
       necessary
                             messages - a quick
                                look makes me think that lookupClass
       wouldn't be
                             included for example.

                                Until then I think the best workaround
       would be to
                             implement
                                #sendTo: in Array as an extension
       method for
              GemStone.

                                In 2.4.4.1, it looks like a FailedMessage
              instance is
                             available that
                                encapsulates the selector and args (but
       does not
                             implement
                                #sendTo:), so #sendTo: would need to be
              implemented
                             there as well.

                                Once the fix for Issue 157 is released,
       you won't
                             need your patch
                                anymore.

                                Dale



                                Bart Gauquie wrote:

                                    Dear List,

                                    In Pharo a doesNotUnderstand:
       aMessage method
                             receives a Message
                                    object instance; which contains a
       selector, a
                             args array and a
                                    lookupClass field.

                                    In Gemstone a doesNotUnderstand:
                             aMessageDescriptor receives an
                                    Array: anArray( #'testme:', anArray(
              'sdflsdjkf'))

                                    If in my implementation of
              doesNotUnderstand I do
                             something like:
                                    doesNotUnderstand: aMessage
                                       ^aMessage sendTo: decorated.

                                    It works fine in Pharo, but fails
       in Gemstone
                             because the
                                    message sendTo: is not known in the
              Gemstone system.

                                    Is there a way I can implement this
       so it
              works
                             in both systems
                                    (without testing whether incoming
                             aMessage(Descriptor)  is an
                                    array or a message type?)

                                    Thanks for your help!

                                    Kind Regards,

                                    Bart

                                    --         imagination is more
       important than
                             knowledge - Albert Einstein
                                    Logic will get you from A to B.
              Imagination will
                             take you
                                    everywhere - Albert Einstein
                                    Learn from yesterday, live for
       today, hope for
                             tomorrow. The
                                    important thing is not to stop
       questioning. -
                             Albert Einstein
                                    The true sign of intelligence is
       not knowledge
                             but imagination.
                                    - Albert Einstein
                                    However beautiful the strategy, you
       should
                             occasionally look at
                                    the results. - Sir Winston Churchill
                                    It's not enough that we do our best;
              sometimes we
                             have to do
                                    what's required. - Sir Winston
       Churchill




                             --                 imagination is more
       important
              than knowledge - Albert
                             Einstein
                             Logic will get you from A to B.
       Imagination will take
                             you everywhere - Albert Einstein
                             Learn from yesterday, live for today, hope for
              tomorrow.
                             The important thing is not to stop
       questioning. -
              Albert
                             Einstein
                             The true sign of intelligence is not
       knowledge but
                             imagination. - Albert Einstein
                             However beautiful the strategy, you should
              occasionally
                             look at the results. - Sir Winston Churchill
                             It's not enough that we do our best;
       sometimes we
              have
                             to do what's required. - Sir Winston Churchill





                 --     imagination is more important than knowledge -
       Albert
              Einstein
                 Logic will get you from A to B. Imagination will take you
              everywhere
                 - Albert Einstein
                 Learn from yesterday, live for today, hope for
       tomorrow. The
                 important thing is not to stop questioning. - Albert
       Einstein
                 The true sign of intelligence is not knowledge but
       imagination. -
                 Albert Einstein
                 However beautiful the strategy, you should
       occasionally look
              at the
                 results. - Sir Winston Churchill
                 It's not enough that we do our best; sometimes we have
       to do
              what's
                 required. - Sir Winston Churchill




              --         imagination is more important than knowledge -
       Albert Einstein
              Logic will get you from A to B. Imagination will take you
              everywhere - Albert Einstein
              Learn from yesterday, live for today, hope for tomorrow. The
              important thing is not to stop questioning. - Albert Einstein
              The true sign of intelligence is not knowledge but
       imagination.
              - Albert Einstein
              However beautiful the strategy, you should occasionally
       look at
              the results. - Sir Winston Churchill
              It's not enough that we do our best; sometimes we have to do
              what's required. - Sir Winston Churchill





       --         imagination is more important than knowledge - Albert Einstein
       Logic will get you from A to B. Imagination will take you
       everywhere - Albert Einstein
       Learn from yesterday, live for today, hope for tomorrow. The
       important thing is not to stop questioning. - Albert Einstein
       The true sign of intelligence is not knowledge but imagination.
       - Albert Einstein
       However beautiful the strategy, you should occasionally look at
       the results. - Sir Winston Churchill
       It's not enough that we do our best; sometimes we have to do
       what's required. - Sir Winston Churchill





--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill




--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
However beautiful the strategy, you should occasionally look at the results. - Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's required. - Sir Winston Churchill
Reply | Threaded
Open this post in threaded view
|

Re: DoesNotUnderstand: in Pharo vs Gemstone

Dale Henrichs
Hey! third (or was it fourth) times the charm!

I appreciate your patience...

Dale

Bart Gauquie wrote:

> Dale,
>
> Yes! You've fixed my problem. Thank you very much!
>
> Kind Regards,
>
> Bart
>
>
>
> On Wed, Aug 18, 2010 at 7:21 PM, Dale Henrichs <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Bart,
>
>     I'm sorry ... I see now that I didn't read your message close enough
>     and fixed the bug only halfway.
>
>     On top of GemStone-Exceptions-DaleHenrichs.39 change
>     Object>>cantPerform:withArguments: to the following:
>
>     cantPerform: aSelectorSymbol withArguments: anArray
>            "Fix for Issue 159"
>
>            ^self doesNotUnderstand: { aSelectorSymbol. anArray. }
>
>     The exception tests pass and your example doesn't throw an MNU.
>
>     Let me know if you have any more trouble.
>
>     Dale
>
>
>     Bart Gauquie wrote:
>
>         Dale,
>
>         I'm using 2.4.4.1.
>         I tested the package and I regret to tell you, but it still
>         fails on my installation.
>         All tests in GsExceptionTestCase run.
>
>         However if I execute my demo I'm getting an exception that shout
>         method is not found on the nested decorator. Do you have the
>         same error? In Pharo this method not found exception
>         automatically delegates to the doesnotunderstand method and the
>         second decorator continues. While in Gemstone it does not ?
>
>         What output of evaluating
>         MyExperimentSubject shout.
>         are you getting?
>
>         I will send you a private email with a stacktrace screenshot.
>
>         Kind Regards,
>
>         Bart
>
>
>         On Tue, Aug 17, 2010 at 8:22 PM, Dale Henrichs
>         <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>> wrote:
>
>            Bart,
>
>            I'm tracking the #fooBar issue with Issue 161 and I've
>         committed a
>            fix (along with more test cases:) that appears to fix the
>         problem.
>            Could you give a try loading
>         GemStone-Exceptions-DaleHenrichs.38 and
>            let me know if this finally takes care of your issues?
>
>            BTW, this fix is only tested on 2.4.4.1 (which I assume you are
>            using). I expect that the solution for 2.3.x will have to be
>            different (based on preliminary tests).
>
>            Dale
>
>            Bart Gauquie wrote:
>
>                Dale,
>
>                GsExceptionTestCase runs fine on my installation.
>
>                Kind Regards,
>
>                Bart
>
>                On Tue, Aug 17, 2010 at 6:46 PM, Dale Henrichs
>                <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>
>                <mailto:[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>>> wrote:
>
>                   Bart,
>
>                   I didn't test your exact stack configuration. I ran a
>         simple test
>                   case (see GsExceptionTestCase>>testIssue159):
>
>                    [ 1 perform: #foo ] on: MessageNotUnderstood do: [:ex
>         | nil
>                halt ].
>
>                   Presumably this test passes in your installation?
>
>                   Thanks for the sample code, I'll see what I can figure
>         out today.
>
>                   I appreciate your patience,
>
>                   Dale
>
>                   Bart Gauquie wrote:
>
>                       Dale,
>
>                       I've tried loading the new package.
>                       I'm now gettin' following error:
>
>                       <snippet>
>                       MessageNotUnderstood 2010: No method was found for the
>                selector
>                       <#'fooBar'> when sent to <nil> with arguments
>         contained in
>                       <anArray( )>.
>
>                       Error during rendering, a continuation containing
>         error stack
>                       has been saved
>
>                       To bring up a debugger in your development image,
>         press the
>                       Debug button in the GemStone/S Transcript window.
>
>                       For the moment, resuming from a remote debug
>         session is not
>                       supported.
>                       </snippet>
>
>                       Maybe the case I'm having is not the one you've
>         fixed, so
>                I've
>                       provided a example which fails on Gemstone, but
>         works on
>                Pharo.
>
>                       under: http://www.squeaksource.com/MyExperiments load
>                       MyExperiments-BartGauquie.4
>
>                       (and apply the fix I referred to earlier in this
>         thread)
>                         Array>>sendTo: receiver
>                              ^ receiver perform: (self at: 1) withArguments:
>                (self at: 2)
>
>                       open a workspace and a transcript.
>                       evaluate: MyExperimentSubject shout.
>
>                       and the transcript should show (for Pharo):
>                       undecorated
>                       Shout !!
>
>                       single decorated
>                       I'm decorating !
>                       Shout !!
>
>                       dual decorated
>                       I'm decorating !
>                       I'm decorating !
>                       Shout !!
>
>                       however for Gemstone:
>                       undecorated
>                       Shout !!
>
>                       single decorated
>                       I'm decorating !
>                       Shout !!
>
>                       dual decorated
>                       I'm decorating !
>                       and then:
>                       MessageNotUnderstood 2010: No method was found for the
>                selector
>                       <#'fooBar'> when sent to <nil> with arguments
>         contained in
>                       <anArray( )>.
>                       error pops up I'm also getting' in my other code.
>
>                       Hope this helps you further with the error I'm
>         getting'.
>
>                       Thanks for your help!
>
>                       Kind Regards,
>
>                       Bart
>
>
>                       On Tue, Aug 17, 2010 at 8:21 AM, Bart Gauquie
>                       <[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>
>                <mailto:[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>>
>                       <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email]
>         <mailto:[hidden email]>> <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email]
>         <mailto:[hidden email]>>>>>
>
>                       wrote:
>
>                          Dale,
>
>                          I've tested the previous fix you've suggested last
>                night and
>                       it did
>                          not work as you mentioned.
>                          I will test the new fix today.
>
>                          Kind Regards,
>
>                          Bart
>
>
>                          On Tue, Aug 17, 2010 at 2:45 AM, Dale Henrichs
>                       <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>
>                <mailto:[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>>
>                          <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>
>         <mailto:[hidden email] <mailto:[hidden email]>
>                <mailto:[hidden email]
>         <mailto:[hidden email]>>>>> wrote:
>
>                              Bart,
>
>                              Try loading
>         GemStone-Exceptions-DaleHenrichs.37 from
>                              http://seaside.gemstone.com/ss/monticello.
>         A test
>                is included
>                              and I've tested this on both GemStone 2.3.x and
>                Gemstone
>                              2.4.4.1...I cleaned my glasses and ran the
>         tests
>                again,
>                              too...twice:)
>
>                              I am whipping up a 1.0-beta.8.3 that will have
>                this fix
>                       plus a
>                              couple of other bug fixes (going after low
>         hanging
>                       fruit). I aim
>                              to ship 1.0-beta.8.3 pretty soon ...
>
>                              Dale
>
>
>                              Dale Henrichs wrote:
>
>                                  Bart,
>
>                                  Ah, yes ... GemStone came late to ANSI
>                exceptions so
>                       you've
>                                  hit one of the gaps...
>
>                                  If I'm not mistaken 2013 is the moral
>                equivalent of
>                       MNU for
>                                  #perform, so you could modify ExceptionA
>                                  class>>gsNumber:arguments:, replacing
>         the line
>                marked
>                                  'change -->' with the line marked "  
>          to -->" :
>
>                                  gsNumber: errNum arguments: args
>
>                                         | errorClass |
>                                         (errNum >= 1001 and: [errNum <=
>         1999])
>                ifTrue:
>                                  [errorClass := CompilerError             ].
>                                         (errNum >= 2001 and: [errNum <=
>         2999])
>                                        ifTrue: [
>                                  "change -->"  errNum == 2010 ifTrue: [
>                                  "    to -->"  (errNum == 2010 or:
>         [errNum ==
>                2013 ])
>                       ifTrue: [
>
>                                  And that should do the trick. I've
>         added Issue 159
>                                              
>          (http://code.google.com/p/glassdb/issues/detail?id=159) to
>                                  track the official fix.
>
>                                  Thanks,
>
>                                  Dale
>
>                                  Bart Gauquie wrote:
>
>                                      Dale,
>
>                                      I've implemented a fix like this:
>
>                                      Array>>sendTo: receiver
>                                         ^ receiver perform: (self at: 1)
>                       withArguments: (self
>                                      at: 2)
>
>                                      This works ... mostly ...
>
>                                      It fails if the receiver is a
>         decorator itself
>                       implementing
>
>                                      doesNotUnderstand: aMessage
>                                         ^aMessage sendTo: decorated.
>
>                                      for most of its methods.
>
>                                      Then this fails because apparently
>                Object>>perform:
>                                      withArguments does not delegate to
>                doesNotUnderstand:
>                                      aMessage if message not found, but
>         instead
>                throws:
>
>
>                                       InterpreterError 2013:
>                <aNARenderContextDecorator>
>                                      cannot perform the
>                                       selector <#'actionUrl'> with the
>         arguments in
>                       <anArray(
>                                      )>. Perform
>                                       may have been attempted with wrong
>         number
>                of args.
>
>                                      I could not directly find another
>         method
>                to call on
>                                      Object so that the second
>         decoration works ...
>
>                                      Thanks for any help,
>
>                                      Kind Regards,
>
>                                      Bart
>
>
>                                      On Fri, Aug 6, 2010 at 5:53 PM,
>         Dale Henrichs
>                                      <[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>
>         <mailto:[hidden email] <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>>
>                       <mailto:[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>
>                <mailto:[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email] <mailto:[hidden email]>>>>
>                                      <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>
>                       <mailto:[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>>
>
>                                      <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email] <mailto:[hidden email]>>
>                       <mailto:[hidden email]
>         <mailto:[hidden email]>
>                <mailto:[hidden email]
>         <mailto:[hidden email]>>>>>> wrote:
>
>                                         Bart,
>
>                                         To start with I've submitted
>         Issue 157
>                                                                    
>          (http://code.google.com/p/glassdb/issues/detail?id=157)
>                                      to track this.
>
>                                         The right answer is for us to
>         fix the
>                bug by
>                       adding a
>                                      Message or
>                                         FailedMessage class and
>         implement the
>                necessary
>                                      messages - a quick
>                                         look makes me think that lookupClass
>                wouldn't be
>                                      included for example.
>
>                                         Until then I think the best
>         workaround
>                would be to
>                                      implement
>                                         #sendTo: in Array as an extension
>                method for
>                       GemStone.
>
>                                         In 2.4.4.1, it looks like a
>         FailedMessage
>                       instance is
>                                      available that
>                                         encapsulates the selector and
>         args (but
>                does not
>                                      implement
>                                         #sendTo:), so #sendTo: would
>         need to be
>                       implemented
>                                      there as well.
>
>                                         Once the fix for Issue 157 is
>         released,
>                you won't
>                                      need your patch
>                                         anymore.
>
>                                         Dale
>
>
>
>                                         Bart Gauquie wrote:
>
>                                             Dear List,
>
>                                             In Pharo a doesNotUnderstand:
>                aMessage method
>                                      receives a Message
>                                             object instance; which
>         contains a
>                selector, a
>                                      args array and a
>                                             lookupClass field.
>
>                                             In Gemstone a doesNotUnderstand:
>                                      aMessageDescriptor receives an
>                                             Array: anArray( #'testme:',
>         anArray(
>                       'sdflsdjkf'))
>
>                                             If in my implementation of
>                       doesNotUnderstand I do
>                                      something like:
>                                             doesNotUnderstand: aMessage
>                                                ^aMessage sendTo: decorated.
>
>                                             It works fine in Pharo, but
>         fails
>                in Gemstone
>                                      because the
>                                             message sendTo: is not known
>         in the
>                       Gemstone system.
>
>                                             Is there a way I can
>         implement this
>                so it
>                       works
>                                      in both systems
>                                             (without testing whether
>         incoming
>                                      aMessage(Descriptor)  is an
>                                             array or a message type?)
>
>                                             Thanks for your help!
>
>                                             Kind Regards,
>
>                                             Bart
>
>                                             --         imagination is more
>                important than
>                                      knowledge - Albert Einstein
>                                             Logic will get you from A to B.
>                       Imagination will
>                                      take you
>                                             everywhere - Albert Einstein
>                                             Learn from yesterday, live for
>                today, hope for
>                                      tomorrow. The
>                                             important thing is not to stop
>                questioning. -
>                                      Albert Einstein
>                                             The true sign of intelligence is
>                not knowledge
>                                      but imagination.
>                                             - Albert Einstein
>                                             However beautiful the
>         strategy, you
>                should
>                                      occasionally look at
>                                             the results. - Sir Winston
>         Churchill
>                                             It's not enough that we do
>         our best;
>                       sometimes we
>                                      have to do
>                                             what's required. - Sir Winston
>                Churchill
>
>
>
>
>                                      --                 imagination is more
>                important
>                       than knowledge - Albert
>                                      Einstein
>                                      Logic will get you from A to B.
>                Imagination will take
>                                      you everywhere - Albert Einstein
>                                      Learn from yesterday, live for
>         today, hope for
>                       tomorrow.
>                                      The important thing is not to stop
>                questioning. -
>                       Albert
>                                      Einstein
>                                      The true sign of intelligence is not
>                knowledge but
>                                      imagination. - Albert Einstein
>                                      However beautiful the strategy, you
>         should
>                       occasionally
>                                      look at the results. - Sir Winston
>         Churchill
>                                      It's not enough that we do our best;
>                sometimes we
>                       have
>                                      to do what's required. - Sir
>         Winston Churchill
>
>
>
>
>
>                          --     imagination is more important than
>         knowledge -
>                Albert
>                       Einstein
>                          Logic will get you from A to B. Imagination
>         will take you
>                       everywhere
>                          - Albert Einstein
>                          Learn from yesterday, live for today, hope for
>                tomorrow. The
>                          important thing is not to stop questioning. -
>         Albert
>                Einstein
>                          The true sign of intelligence is not knowledge but
>                imagination. -
>                          Albert Einstein
>                          However beautiful the strategy, you should
>                occasionally look
>                       at the
>                          results. - Sir Winston Churchill
>                          It's not enough that we do our best; sometimes
>         we have
>                to do
>                       what's
>                          required. - Sir Winston Churchill
>
>
>
>
>                       --         imagination is more important than
>         knowledge -
>                Albert Einstein
>                       Logic will get you from A to B. Imagination will
>         take you
>                       everywhere - Albert Einstein
>                       Learn from yesterday, live for today, hope for
>         tomorrow. The
>                       important thing is not to stop questioning. -
>         Albert Einstein
>                       The true sign of intelligence is not knowledge but
>                imagination.
>                       - Albert Einstein
>                       However beautiful the strategy, you should
>         occasionally
>                look at
>                       the results. - Sir Winston Churchill
>                       It's not enough that we do our best; sometimes we
>         have to do
>                       what's required. - Sir Winston Churchill
>
>
>
>
>
>                --         imagination is more important than knowledge -
>         Albert Einstein
>                Logic will get you from A to B. Imagination will take you
>                everywhere - Albert Einstein
>                Learn from yesterday, live for today, hope for tomorrow. The
>                important thing is not to stop questioning. - Albert Einstein
>                The true sign of intelligence is not knowledge but
>         imagination.
>                - Albert Einstein
>                However beautiful the strategy, you should occasionally
>         look at
>                the results. - Sir Winston Churchill
>                It's not enough that we do our best; sometimes we have to do
>                what's required. - Sir Winston Churchill
>
>
>
>
>
>         --
>         imagination is more important than knowledge - Albert Einstein
>         Logic will get you from A to B. Imagination will take you
>         everywhere - Albert Einstein
>         Learn from yesterday, live for today, hope for tomorrow. The
>         important thing is not to stop questioning. - Albert Einstein
>         The true sign of intelligence is not knowledge but imagination.
>         - Albert Einstein
>         However beautiful the strategy, you should occasionally look at
>         the results. - Sir Winston Churchill
>         It's not enough that we do our best; sometimes we have to do
>         what's required. - Sir Winston Churchill
>
>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill