import SOAP-WSDL 2.00_01 from CPAN

git-cpan-module:   SOAP-WSDL
git-cpan-version:  2.00_01
git-cpan-authorid: MKUTTER
git-cpan-file:     authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_01.tar.gz
This commit is contained in:
Martin Kutter
2009-12-12 19:47:41 -08:00
committed by Michael G. Schwern
parent bfbf5e27e0
commit 6fe52c4370
108 changed files with 11670 additions and 2369 deletions
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/perl
package MyComplexType;
use strict;
use Class::Std::Storable;
use lib '../../lib';
use SOAP::WSDL::XSD::Typelib::ComplexType;
use base ('SOAP::WSDL::XSD::Typelib::ComplexType');
my %MyTestName_of; # no :ATTR - _factory takes care of
__PACKAGE__->_factory(
[ qw(MyTestName) ], # order
{ MyTestName => \%MyTestName_of }, # attribute lookup map
{ MyTestName => 'MyElement' } # class name lookup map
);
sub get_xmlns { 'urn:Test' };
1;
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/perl
package MyElement;
use strict;
use Class::Std::Storable;
use SOAP::WSDL::XSD::Typelib::Element;
use SOAP::WSDL::XSD::Typelib::Builtin;
use base (
'SOAP::WSDL::XSD::Typelib::Element',
'SOAP::WSDL::XSD::Typelib::Builtin::string',
);
sub START {
my ($self, $ident, $args_of) =@_;
$self->__set_name('MyElementName');
}
sub get_xmlns { 'urn:Test' };
package MyTestElement;
use strict;
use Class::Std::Storable;
use SOAP::WSDL::XSD::Typelib::Element;
use SOAP::WSDL::XSD::Typelib::Builtin;
use base (
'SOAP::WSDL::XSD::Typelib::Element',
'SOAP::WSDL::XSD::Typelib::Builtin::string',
);
sub START {
my ($self, $ident, $args_of) =@_;
$self->__set_name('MyTestElement');
}
sub get_xmlns { 'urn:Test' };
package MyTestElement2;
use strict;
use Class::Std::Storable;
use SOAP::WSDL::XSD::Typelib::Element;
use SOAP::WSDL::XSD::Typelib::Builtin;
use base (
'SOAP::WSDL::XSD::Typelib::Element',
'SOAP::WSDL::XSD::Typelib::Builtin::string',
);
sub START {
my ($self, $ident, $args_of) =@_;
$self->__set_name('MyTestElement2');
}
sub get_xmlns { 'urn:Test' };
;
package MyAtomicComplexTypeElement;
use strict;
use Class::Std::Storable;
use SOAP::WSDL::XSD::Typelib::Element;
use SOAP::WSDL::XSD::Typelib::ComplexType;
use SOAP::WSDL::XSD::Typelib::Builtin;
use base (
'SOAP::WSDL::XSD::Typelib::Element',
'SOAP::WSDL::XSD::Typelib::ComplexType',
);
my %test_of :ATTR(:get<test>);
my %test2_of :ATTR(:get<test2>);
sub get_xmlns { 'urn:Test' };
__PACKAGE__->_factory(
[ qw(test test2) ],
{
test => \%test_of,
test2 => \%test2_of,
},
{
test => 'MyTestElement',
test2 => 'MyTestElement2',
},
);
__PACKAGE__->__set_name('MyAtomicComplexTypeElement');
1;
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/perl
package MySimpleType;
use Class::Std::Storable;
use SOAP::WSDL::XSD::Typelib::Builtin;
use SOAP::WSDL::XSD::Typelib::SimpleType;
# restriction base implemented via inheritance
# derive by restriction
# restriction base
use base qw(
SOAP::WSDL::XSD::Typelib::SimpleType::restriction
SOAP::WSDL::XSD::Typelib::Builtin::string
);
# example simpleType derived by list.
# XSD would be:
# <simpleType name="MySimpleListType">
# <list itemTipe="xsd:string">
# </simpleType>
package MySimpleListType;
use Class::Std::Storable;
# restriction base implemented via inheritance
use SOAP::WSDL::XSD::Typelib::Builtin;
# derive by list
# list itemType
use base qw(
SOAP::WSDL::XSD::Typelib::SimpleType
SOAP::WSDL::XSD::Typelib::Builtin::list
SOAP::WSDL::XSD::Typelib::Builtin::string
);
package MyAtomicSimpleType;
use Class::Std::Storable;
# restriction base implemented via inheritance
use SOAP::WSDL::XSD::Typelib::Builtin;
# derive by restriction
# restriction with atomic simpleType
use base qw(
SOAP::WSDL::XSD::Typelib::SimpleType::restriction
MySimpleType
);
package MyAtomicSimpleListType;
use Class::Std::Storable;
# restriction base implemented via inheritance
use SOAP::WSDL::XSD::Typelib::Builtin;
# derive by restriction
# restriction with atomic simpleType
use base qw(
SOAP::WSDL::XSD::Typelib::SimpleType::restriction
MySimpleListType
);
1;
+64
View File
@@ -0,0 +1,64 @@
package Test::SOAPMessage;
use strict;
use SOAP::Lite;
use Test::Differences;
use Tie::IxHash;
use base qw/Exporter/;
our @EXPORT = qw/soap_eq_or_diff/;
sub soap_eq_or_diff
{
my $got = shift;
my $expected = shift;
my $message = shift;
my $soapGot = SOAP::Deserializer->deserialize( $got );
my $soapExpected = SOAP::Deserializer->deserialize( $expected );
return eq_or_diff(
unlather( $soapGot ),
unlather( $soapExpected ),
$message
);
}
sub unlather
{
my $som = shift;
my $path = shift || '/Envelope/Body/[1]';
my $data = shift;
unless ( $data )
{
my %hashData = ();
tie (%hashData, q/Tie::IxHash/);
$data = \%hashData;
}
my $value;
my $tag;
my $i = 1;
while( $som->match("$path/[$i]") )
{
$tag = $som->dataof->name();
$data ||= {};
$value = unlather($som,$path.'/'. '[' . $i . ']' ) || $som->valueof("$path/[$i]");
if ($data->{ $tag })
{
$data->{ $tag } = [ $data->{ $tag } ] unless ( ref ( $data->{ $tag } ) eq 'ARRAY' );
push @{ $data->{ $tag } }, $value;
}
else
{
$data->{ $tag } = $value;
}
$i++;
}
$data ||= $som->valueof($path);
return $data;
}
1;
+28
View File
@@ -0,0 +1,28 @@
package Typelib::Base;
use Class::Std::Storable;
sub mk_add_mutators {
my $class = shift;
my $attributes = shift;
for my $method ( keys %{$ attributes }) {
*{ "$class\::add_$method" } = sub {
my ($self, $value) = @_;
my $ident = ident $self;
# we're the first value
return $attributes->{ $method }->{ $ident } = $value
if not defined $attributes->{ $method }->{ $ident };
# we're the second value
return $attributes->{ $method }->{ $ident } = [
$attributes->{ $method }->{ $ident }, $value ]
if not ref $attributes->{ $method }->{ $ident } eq 'ARRAY';
# we're third or later
push @{ $attributes->{ $method }->{ $ident } }, $value;
return $attributes->{ $method }->{ $ident };
}
}
}
1;
+18
View File
@@ -0,0 +1,18 @@
package Typelib::TEnqueueMessage;
use strict;
use base qw(Typelib::Base);
use Class::Std::Storable;
my %MMessage_of :ATTR(:name<MMessage> :default<()>);
my %attributes_of :ATTR();
%attributes_of = (
MMessage => \%MMessage_of,
);
# make a add_BLA method for every attribute
__PACKAGE__->mk_add_mutators( \%attributes_of );
1;
+27
View File
@@ -0,0 +1,27 @@
package Typelib::TMessage;
use strict;
use base qw(Typelib::Base);
use Class::Std::Storable;
my %MRecipientURI_of :ATTR(:name<MRecipientURI> :default<()>);
my %MMessageContent_of :ATTR(:name<MMessageContent> :default<()>);
my %MSenderAddress_of :ATTR(:name<MSenderAddress> :default<()>);
my %MSubject_of :ATTR(:name<MSubject> :default<()>);
my %MDeliveryReportRecipientURI_of :ATTR(:name<MDeliveryReportRecipientURI> :default<()>);
my %MKeepalive_of :ATTR(:name<MKeepalive> :default<()>);
my %attributes_of :ATTR();
%attributes_of = (
MRecipientURI => \%MRecipientURI_of,
MMessageContent => \%MMessageContent_of,
MSenderAddress => \%MSenderAddress_of,
MSubject => \%MSubject_of,
MDeliveryReportRecipientURI => \%MDeliveryReportRecipientURI_of,
MKeepalive => \%MKeepalive_of,
);
# make a add_BLA method for every attribute
__PACKAGE__->mk_add_mutators( \%attributes_of );
1;