From 5c42b1d8f6409c2dea3493ce9de8496e2b09e227 Mon Sep 17 00:00:00 2001 From: Martin Kutter Date: Wed, 4 Jul 2007 06:13:16 -0800 Subject: [PATCH] import SOAP-WSDL 2.00_04 from CPAN git-cpan-module: SOAP-WSDL git-cpan-version: 2.00_04 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_04.tar.gz --- Build.PL | 2 +- META.yml | 4 +- lib/SOAP/WSDL.pm | 2 +- lib/SOAP/WSDL/Client.pm | 1 + .../WSDL/XSD/Typelib/Builtin/anySimpleType.pm | 2 + lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm | 4 ++ lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm | 2 + lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm | 1 + lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm | 1 + lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm | 2 + lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm | 2 + lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm | 50 +++++++++++-------- 12 files changed, 48 insertions(+), 25 deletions(-) diff --git a/Build.PL b/Build.PL index b60301e..17a61ea 100644 --- a/Build.PL +++ b/Build.PL @@ -2,7 +2,7 @@ use Module::Build; Module::Build->new( dist_abstract => 'SOAP with WSDL support', dist_name => 'SOAP-WSDL', - dist_version => '2.00_03', + dist_version => '2.00_04', module_name => 'SOAP::WSDL', license => 'artistic', requires => { diff --git a/META.yml b/META.yml index f12a03b..6148c82 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- name: SOAP-WSDL -version: 2.00_03 +version: 2.00_04 author: abstract: SOAP with WSDL support license: artistic @@ -19,7 +19,7 @@ meta-spec: provides: SOAP::WSDL: file: lib/SOAP/WSDL.pm - version: 2.00_03 + version: 2.00_04 SOAP::WSDL::Base: file: lib/SOAP/WSDL/Base.pm SOAP::WSDL::Binding: diff --git a/lib/SOAP/WSDL.pm b/lib/SOAP/WSDL.pm index 9b0dc00..195184e 100644 --- a/lib/SOAP/WSDL.pm +++ b/lib/SOAP/WSDL.pm @@ -8,7 +8,7 @@ use SOAP::WSDL::SAX::WSDLHandler; use base qw(SOAP::Lite); use Data::Dumper; -our $VERSION='2.00_03'; +our $VERSION='2.00_04'; BEGIN { eval { diff --git a/lib/SOAP/WSDL/Client.pm b/lib/SOAP/WSDL/Client.pm index b20a03b..abe960f 100644 --- a/lib/SOAP/WSDL/Client.pm +++ b/lib/SOAP/WSDL/Client.pm @@ -6,6 +6,7 @@ use SOAP::WSDL::Envelope; use SOAP::Lite; use Class::Std::Storable; use SOAP::WSDL::SAX::MessageHandler; +use SOAP::WSDL::SOAP::Typelib::Fault11; # Package globals for speed... my $PARSER; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm index 287cb80..2002fb5 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm @@ -25,6 +25,8 @@ sub serialize { sub as_bool :BOOLIFY { return $value_of { ident $_[0] }; } + +Class::Std::initialize(); # make :BOOLIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm index abb15d3..ae20483 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm @@ -3,6 +3,8 @@ use strict; use warnings; use Class::Std::Storable; +my %xmlns_of :ATTR(:name :default<()>); + # use $_[1] for performance sub start_tag { my $opt = $_[1] ||= {}; @@ -20,6 +22,8 @@ sub end_tag { sub serialize_qualified :STRINGIFY { return $_[0]->serialize( { qualified => 1 } ); } + +Class::Std::initialize(); # make :STRINGIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm index ae84165..7796764 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm @@ -33,6 +33,8 @@ sub set_value { : 0; } +Class::Std::initialize(); # make :BOOLIFY overloading serializable + 1; __END__ diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm index 0e0bc01..0728b2c 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm @@ -18,6 +18,7 @@ sub as_num :NUMERIFY :BOOLIFY { return $_[0]->get_value(); } +Class::Std::initialize(); # make :NUMERIFY :BOOLIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm index 68cd0cc..b4fb667 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm @@ -8,6 +8,7 @@ sub as_num :NUMERIFY { return $_[0]->get_value(); } +Class::Std::initialize(); # make :NUMERIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm index b2e4b7f..70b56c2 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm @@ -16,6 +16,8 @@ my %minExclusive_of :ATTR(:name :default<()>); sub as_num :NUMERIFY { return $_[0]->get_value(); } + +Class::Std::initialize(); # make :NUMERIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm index 191c1a9..9f5438d 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm @@ -7,6 +7,8 @@ use base qw(SOAP::WSDL::XSD::Typelib::Builtin::decimal); sub as_num :NUMERIFY { return $_[0]->get_value(); } + +Class::Std::initialize(); # make :NUMERIFY overloading serializable 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm b/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm index ee1370b..bfb7597 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm @@ -84,12 +84,14 @@ sub START { # iterate over keys of arguments # and call set appropriate field in clase - map { ($ATTRIBUTES_OF{ $class }->{ $_ }) ? - do { + map { ($ATTRIBUTES_OF{ $class }->{ $_ }) + ? do { my $method = "set_$_"; $self->$method( $args_of->{ $_ } ); } - : croak "unknown field $_" + : $_ eq 'xmlns' + ? do {} + : croak "unknown field $_ in $class"; } keys %$args_of; }; @@ -114,24 +116,30 @@ sub _serialize { # get_elements is inlined for performance. return join q{} , map { my $element = $ATTRIBUTES_OF{ $class }->{ $_ }->{ $ident }; - $element = [ $element ] - if not ref $element eq 'ARRAY'; - my $name = $_; - - map { - # serialize element elements with their own serializer - # but name them like they're named here. - if ( $_->isa( 'SOAP::WSDL::XSD::Typelib::Element' ) ) { - $_->serialize( { name => $_ } ); - } - # serialize complextype elments (of other types) with their - # serializer, but add element tags around. - else { - join q{}, $_->start_tag({ name => $name }) - , $_->serialize() - , $_->end_tag({ name => $name }); - } - } @{ $element } + + if (defined $element) { + $element = [ $element ] + if not ref $element eq 'ARRAY'; + my $name = $_; + + map { + # serialize element elements with their own serializer + # but name them like they're named here. + if ( $_->isa( 'SOAP::WSDL::XSD::Typelib::Element' ) ) { + $_->serialize( { name => $_ } ); + } + # serialize complextype elments (of other types) with their + # serializer, but add element tags around. + else { + join q{}, $_->start_tag({ name => $name }) + , $_->serialize() + , $_->end_tag({ name => $name }); + } + } @{ $element } + } + else { + q{}; + } } (@{ $ELEMENTS_FROM{ $class } }); }