Skip Menu |

This queue is for tickets about the SOAP-Lite CPAN distribution.

Report information
The Basics
Id: 6416
Status: resolved
Priority: 0/
Queue: SOAP-Lite

People
Owner: Nobody in particular
Requestors: rrwo [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.60
Fixed in: (no value)

Attachments


Subject: UNIVERSAL::can method is broken for SOAP objects
See the attached code. Suppose one has an object, not implemented in SOAP. The can() method works as expected: if ($obj->can($methodname)) { ... } If one makes that a SOAP object, the can() method no longer works.
Download soap-can.cgi
application/octet-stream 1k

Message body not shown because it is not plain text.

From: Byrne Reese
[guest - Tue May 25 12:59:02 2004]: Show quoted text
> See the attached code. > > Suppose one has an object, not implemented in SOAP. > The can() method works as expected: > > if ($obj->can($methodname)) { ... } > > If one makes that a SOAP object, the can() method no > longer works. >
This may be related to version of Perl you are running. From SOAP::Lite man page: +autodispatch doesn't work in Perl 5.8 There is a bug in Perl 5.8's UNIVERSAL::AUTOLOAD functionality that prevents the +autodispatch functionality from working properly. The workaround is to use dispatch_from instead. Where you might normally do something like this: use Some::Module; use SOAP::Lite +autodispatch => uri => 'urn:Foo' proxy => 'http://...'; You would do something like this: use SOAP::Lite dispatch_from(Some::Module) => uri => 'urn:Foo' proxy => 'http://...';
The attached test code definitely works with 0.70_02 under perl 5.8.8. I added a test for this to track if it occurs again. Regards, Martin