From: Scott W. <sc...@pe...> - 2006-08-28 15:37:50
|
Please review the following patch for Lite.pm in generate_stub(): <snip> --- SOAP-Lite-0.69/lib/SOAP/Lite.pm 2006-08-16 08:49:34.000000000 -0600 +++ SOAP-Lite-0.69-patched3/lib/SOAP/Lite.pm 2006-08-28 09:19:27.000000000 -0600 @@ -3040,7 +3040,7 @@ my $method = 'as_'.$typename; # TODO - if can('as_'.$typename) {...} my $result = $self->serializer->$method($param, $template->name, $template->type, $template->attr); - push(@parameters, $template->value($result->[2])); + push(@parameters, $template->value($result ? $result->[2] : $param)); } else { push(@parameters, $param); } </snip> This fixes the case where the $result is undef because of an @{$export_var} lookup failure in serializer's AUTOLOAD method (see "this is a total hack...it is still a hack" notes in AUTOLOAD). It may be that my "fix" is really just a workaround for behavior that should be better addressed in serializer's AUTOLOAD, but I couldn't grok how $export_var is supposed to get the WSDL-defined methods in it for lookup in the first place. In any case, this patch doesn't break any tests (at least the unskipped ones on my system) and allows Google's new AdSense API to work--namely the createAdSenseAccount function, which uses a "literal array" (at least how encode_object() classifies it) creates a parameter list like this: <foo>value1</foo> <foo>value2</foo> instead of an empty scalar: <foo type="sometype"/> because the $result is 'undef' without the patch. I'd appreciate any feedback on it. Scott -- Scott Wiersdorf <sc...@pe...> |