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
This commit is contained in:
committed by
Michael G. Schwern
parent
e58a27e2ad
commit
c3e3d1908e
+41
-17
@@ -10,7 +10,7 @@ use Carp;
|
||||
use Scalar::Util qw(blessed);
|
||||
use SOAP::WSDL::Client;
|
||||
use SOAP::WSDL::Expat::WSDLParser;
|
||||
use Class::Std::Fast;
|
||||
use Class::Std::Fast constructor => 'none';
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||
use LWP::UserAgent;
|
||||
|
||||
@@ -18,7 +18,6 @@ use version; our $VERSION= qv('2.00.03');
|
||||
|
||||
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
||||
my %wsdl_of :ATTR(:name<wsdl>);
|
||||
my %proxy_of :ATTR(:name<proxy>);
|
||||
my %autotype_of :ATTR(:name<autotype>);
|
||||
my %outputxml_of :ATTR(:name<outputxml> :default<0>);
|
||||
my %outputtree_of :ATTR(:name<outputtree>);
|
||||
@@ -42,7 +41,6 @@ my %LOOKUP = (
|
||||
no_dispatch => \%no_dispatch_of,
|
||||
class_resolver => \%class_resolver_of,
|
||||
wsdl => \%wsdl_of,
|
||||
proxy => \%proxy_of,
|
||||
autotype => \%autotype_of,
|
||||
outputxml => \%outputxml_of,
|
||||
outputtree => \%outputtree_of,
|
||||
@@ -94,12 +92,30 @@ for my $method (keys %LOOKUP ) {
|
||||
}
|
||||
|
||||
my $ident = ident $self;
|
||||
$self->wsdlinit() if ($wsdl_of{ $ident });
|
||||
$client_of{ $ident } = SOAP::WSDL::Client->new();
|
||||
$self->wsdlinit() if ($wsdl_of{ $ident });
|
||||
return $self;
|
||||
}
|
||||
}
|
||||
|
||||
sub set_proxy {
|
||||
my $self = shift;
|
||||
return $self->get_client()->set_proxy(@_);
|
||||
}
|
||||
|
||||
sub get_proxy {
|
||||
my $self = shift;
|
||||
return $self->get_client()->get_proxy();
|
||||
}
|
||||
|
||||
sub proxy {
|
||||
my $self = shift;
|
||||
if (@_) {
|
||||
return $self->set_proxy(@_);
|
||||
}
|
||||
return $self->get_proxy();
|
||||
}
|
||||
|
||||
sub wsdlinit {
|
||||
my ($self, %opt) = @_;
|
||||
my $ident = ident $self;
|
||||
@@ -132,6 +148,15 @@ sub wsdlinit {
|
||||
|
||||
$servicename_of{ $ident } = $opt{servicename} if $opt{servicename};
|
||||
$portname_of{ $ident } = $opt{portname} if $opt{portname};
|
||||
|
||||
$self->_wsdl_init_methods();
|
||||
|
||||
# pass-through keep_alive if we need it...
|
||||
$self->get_client()->set_proxy(
|
||||
$port_of{ $ident }->first_address()->get_location(),
|
||||
$keep_alive_of{ $ident } ? (keep_alive => 1) : (),
|
||||
);
|
||||
|
||||
return $self;
|
||||
} ## end sub wsdlinit
|
||||
|
||||
@@ -151,6 +176,7 @@ sub _wsdl_get_port :PRIVATE {
|
||||
? $service_of{ $ident }->get_port( $ns, $portname_of{ $ident } )
|
||||
: $port_of{ $ident } = $service_of{ $ident }->get_port()->[ 0 ];
|
||||
}
|
||||
|
||||
sub _wsdl_get_binding :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -160,6 +186,7 @@ sub _wsdl_get_binding :PRIVATE {
|
||||
or croak "no binding found for ", $port->get_binding();
|
||||
return $binding_of{ $ident };
|
||||
}
|
||||
|
||||
sub _wsdl_get_portType :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -169,6 +196,7 @@ sub _wsdl_get_portType :PRIVATE {
|
||||
or croak "cannot find portType for " . $binding->get_type();
|
||||
return $porttype_of{ $ident };
|
||||
}
|
||||
|
||||
sub _wsdl_init_methods :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -259,12 +287,6 @@ sub call {
|
||||
|
||||
my $client = $client_of{ $ident };
|
||||
|
||||
# pass-through keep_alive if we need it...
|
||||
$client->set_proxy( $proxy_of{ $ident }
|
||||
|| $port_of{ $ident }->first_address()->get_location(),
|
||||
$keep_alive_of{ $ident } ? (keep_alive => 1) : (),
|
||||
);
|
||||
|
||||
$client->set_no_dispatch( $no_dispatch_of{ $ident } );
|
||||
$client->set_outputxml( $outputxml_of{ $ident } ? 1 : 0 );
|
||||
|
||||
@@ -772,8 +794,6 @@ Peter Orvos, Mark Overmeer, Jon Robens, Isidro Vila Verde and Glenn Wood
|
||||
(in alphabetical order) spotted bugs and/or suggested improvements in
|
||||
the 1.2x releases.
|
||||
|
||||
Noah Robin contirbuted lots of documentation fixes, and the mod_perl server.
|
||||
|
||||
JT Justman and Noah Robin provided early feedback and bug reports for
|
||||
the 2.xx pre-releases.
|
||||
|
||||
@@ -786,13 +806,17 @@ Matt S. Trout encouraged me "to get a non-dev-release out."
|
||||
|
||||
CPAN Testers provided most valuable (automated) feedback. Thanks a lot.
|
||||
|
||||
Numerous people sent me their real-world WSDL files for testing. Thank you.
|
||||
Numerous people sent me their real-world WSDL files and error reports for
|
||||
testing. Thank you.
|
||||
|
||||
Noah Robin contributed lots of documentation fixes, and the mod_perl server,
|
||||
and eventually joined SOAP::WSDL's developement. Thanks.
|
||||
|
||||
Mark Overmeer wrote XML::Compile::SOAP - competition is good for business.
|
||||
|
||||
Paul Kulchenko and Byrne Reese wrote and maintained SOAP::Lite and
|
||||
thus provided a base (and counterpart) for SOAP::WSDL.
|
||||
|
||||
Mark Overmeer wrote XML::Compile::SOAP - competition is good for business.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
@@ -806,9 +830,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 694 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: WSDL.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: WSDL.pm 694 2008-05-25 21:06:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
||||
|
||||
=cut
|
||||
|
||||
+25
-12
@@ -5,11 +5,12 @@ use Class::Std::Fast::Storable;
|
||||
use List::Util qw(first);
|
||||
use Carp qw(croak carp confess);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %id_of :ATTR(:name<id> :default<()>);
|
||||
my %lang_of :ATTR(:name<lang> :default<()>);
|
||||
my %name_of :ATTR(:name<name> :default<()>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
||||
my %documentation_of :ATTR(:name<documentation> :default<()>);
|
||||
my %annotation_of :ATTR(:name<annotation> :default<()>);
|
||||
my %targetNamespace_of :ATTR(:name<targetNamespace> :default<()>);
|
||||
@@ -24,7 +25,6 @@ sub namespaces {
|
||||
|
||||
sub START {
|
||||
my ($self, $ident, $arg_ref) = @_;
|
||||
#$xmlns_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' };
|
||||
$xmlns_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace';
|
||||
$namespaces_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' };
|
||||
$namespaces_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace';
|
||||
@@ -38,10 +38,11 @@ sub DEMOLISH {
|
||||
return;
|
||||
}
|
||||
|
||||
sub STORABLE_freeze_pre :CUMULATIVE {};
|
||||
sub STORABLE_freeze_post :CUMULATIVE {};
|
||||
sub STORABLE_thaw_pre :CUMULATIVE {};
|
||||
sub STORABLE_thaw_post :CUMULATIVE { return $_[0] };
|
||||
#
|
||||
#sub STORABLE_freeze_pre :CUMULATIVE {};
|
||||
#sub STORABLE_freeze_post :CUMULATIVE {};
|
||||
#sub STORABLE_thaw_pre :CUMULATIVE {};
|
||||
#sub STORABLE_thaw_post :CUMULATIVE { return $_[0] };
|
||||
|
||||
sub _accept {
|
||||
my $self = shift;
|
||||
@@ -109,15 +110,24 @@ sub AUTOMETHOD {
|
||||
|
||||
sub init {
|
||||
my ($self, @args) = @_;
|
||||
foreach my $value (@args)
|
||||
{
|
||||
foreach my $value (@args) {
|
||||
croak @args if (not defined ($value->{ Name }));
|
||||
|
||||
if ($value->{ Name } =~m{^xmlns\:}xms) {
|
||||
# add namespaces
|
||||
$xmlns_of{ ident $self }->{ $value->{ LocalName } } = $value->{ Value };
|
||||
next;
|
||||
}
|
||||
|
||||
# check for namespae-qualified attributes.
|
||||
# neither XML Schema, nor WSDL1.1, nor the SOAP binding allow
|
||||
# namespace-qualified attribute names
|
||||
my ($ns, $localname) = split /\|/, $value->{ Name };
|
||||
if ($ns) {
|
||||
warn "found unrecognised attribute \{$ns}$localname (ignored)";
|
||||
next;
|
||||
}
|
||||
|
||||
my $name = $value->{ LocalName };
|
||||
my $method = "set_$name";
|
||||
$self->$method( $value->{ Value } );
|
||||
@@ -128,12 +138,15 @@ sub init {
|
||||
sub expand {
|
||||
my ($self, $qname) = @_;
|
||||
my $ns_of = $self->namespaces();
|
||||
my $parent;
|
||||
if (not $qname=~m{:}xm) {
|
||||
if (defined $ns_of->{ '#default' }) {
|
||||
return $self->get_targetNamespace(), $qname;
|
||||
# return $ns_of->{ '#default' }, $qname;
|
||||
# TODO check. Returning the targetNamespace for the default ns
|
||||
# is probably wrong
|
||||
#return $self->get_targetNamespace(), $qname;
|
||||
return $ns_of->{ '#default' }, $qname;
|
||||
}
|
||||
if (my $parent = $self->get_parent()) {
|
||||
if ($parent = $self->get_parent()) {
|
||||
return $parent->expand($qname);
|
||||
}
|
||||
die "un-prefixed element name <$qname> found, but no default namespace set\n"
|
||||
@@ -142,7 +155,7 @@ sub expand {
|
||||
my ($prefix, $localname) = split /:/x, $qname;
|
||||
|
||||
return ($ns_of->{ $prefix }, $localname) if ($ns_of->{ $prefix });
|
||||
if (my $parent = $self->get_parent()) {
|
||||
if ($parent = $self->get_parent()) {
|
||||
return $parent->expand($qname);
|
||||
}
|
||||
croak "unbound prefix $prefix found for $prefix:$localname. Bound prefixes are "
|
||||
|
||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
||||
use List::Util qw(first);
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||
my %type_of :ATTR(:name<type> :default<()>);
|
||||
|
||||
@@ -65,6 +65,13 @@ SOAP::WSDL::Client::Base - Factory class for WSDL-based SOAP access
|
||||
Factory class for creating interface classes. Should probably be renamed to
|
||||
SOAP::WSDL::Factory::Interface...
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 call
|
||||
|
||||
Abstraction layer method between the generated interfaces and
|
||||
L<SOAP::WSDL::Client|SOAP::WSDL::Client>.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2007 Martin Kutter.
|
||||
@@ -78,9 +85,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 689 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Base.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Base.pm 689 2008-05-23 22:11:46Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -72,7 +72,7 @@ Returns the service matching the namespace/localname pair passed as arguments.
|
||||
Accessors/Mutators for accessing / setting the E<gt>bindingE<lt> child
|
||||
element(s).
|
||||
|
||||
=head2 find_service
|
||||
=head2 find_binding
|
||||
|
||||
Returns the binding matching the namespace/localname pair passed as arguments.
|
||||
|
||||
@@ -94,7 +94,7 @@ Returns the portType matching the namespace/localname pair passed as arguments.
|
||||
Accessors/Mutators for accessing / setting the E<gt>messageE<lt> child
|
||||
element(s).
|
||||
|
||||
=head2 find_service
|
||||
=head2 find_message
|
||||
|
||||
Returns the message matching the namespace/localname pair passed as arguments.
|
||||
|
||||
@@ -118,9 +118,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 689 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Definitions.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Definitions.pm 689 2008-05-23 22:11:46Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -139,9 +139,20 @@ a parse error appears
|
||||
|
||||
=back
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 deserialize
|
||||
|
||||
Deserializes the message.
|
||||
|
||||
=head2 generate_fault
|
||||
|
||||
Generates a L<SOAP::WSDL::SOAP::Typelib::Fault11|SOAP::WSDL::SOAP::Typelib::Fault11>
|
||||
object and returns it.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2007 Martin Kutter.
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself.
|
||||
@@ -152,9 +163,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 689 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Hash.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Hash.pm 689 2008-05-23 22:11:46Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
||||
|
||||
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
sub new {
|
||||
my ($class, $arg_ref) = @_;
|
||||
|
||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
||||
use SOAP::WSDL::Expat::MessageParser;
|
||||
use base qw(SOAP::WSDL::Expat::MessageParser);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
sub parse_start {
|
||||
my $self = shift;
|
||||
@@ -69,9 +69,9 @@ the same terms as perl itself
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 701 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: MessageStreamParser.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: MessageStreamParser.pm 701 2008-06-05 19:19:16Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -140,7 +140,7 @@ sub _initialize {
|
||||
# TODO skip non-XML Schema namespace tags
|
||||
$parser->setHandlers(
|
||||
Start => sub {
|
||||
my ($parser, $localname, %attrs) = @_;
|
||||
my ($parser, $localname, @attrs) = @_;
|
||||
$characters = q{};
|
||||
|
||||
my $action = SOAP::WSDL::TypeLookup->lookup(
|
||||
@@ -154,10 +154,11 @@ sub _initialize {
|
||||
eval "require $action->{ class }";
|
||||
croak $@ if ($@);
|
||||
|
||||
my $obj = $action->{ class }->new({ parent => $current,
|
||||
# xmlns => { '#default' => $parser->namespace($localname) }
|
||||
my $obj = $action->{ class }->new({
|
||||
parent => $current,
|
||||
namespace => $parser->namespace($localname),
|
||||
})
|
||||
->init( _fixup_attrs( $parser, %attrs ) );
|
||||
->init( _fixup_attrs( $parser, @attrs ) );
|
||||
|
||||
if ($current) {
|
||||
# inherit namespace, but don't override
|
||||
@@ -180,7 +181,7 @@ sub _initialize {
|
||||
$current = $obj;
|
||||
}
|
||||
elsif ($action->{ type } eq 'PARENT') {
|
||||
$current->init( _fixup_attrs($parser, %attrs) );
|
||||
$current->init( _fixup_attrs($parser, @attrs) );
|
||||
}
|
||||
elsif ($action->{ type } eq 'METHOD') {
|
||||
my $method = $action->{ method };
|
||||
@@ -196,12 +197,12 @@ sub _initialize {
|
||||
? ref $action->{ value }
|
||||
? @{ $action->{ value } }
|
||||
: ($action->{ value })
|
||||
: _fixup_attrs($parser, %attrs)
|
||||
: _fixup_attrs($parser, @attrs)
|
||||
);
|
||||
}
|
||||
elsif ($action->{type} eq 'HANDLER') {
|
||||
my $method = $self->can($action->{method});
|
||||
$method->($self, $current, %attrs);
|
||||
$method->($self, $current, @attrs);
|
||||
}
|
||||
else {
|
||||
# TODO replace by hash lookup of known namespaces.
|
||||
@@ -249,30 +250,41 @@ sub _initialize {
|
||||
|
||||
# make attrs SAX style
|
||||
sub _fixup_attrs {
|
||||
my ($parser, %attrs_of) = @_;
|
||||
my ($parser, @attrs) = @_;
|
||||
|
||||
my @attrs_from = map {
|
||||
$_ =
|
||||
{
|
||||
Name => $_,
|
||||
Value => $attrs_of{ $_ },
|
||||
LocalName => $_
|
||||
}
|
||||
} keys %attrs_of;
|
||||
my @attr_key_from = ();
|
||||
my @attr_value_from = ();
|
||||
|
||||
while (@attrs) {
|
||||
push @attr_key_from, shift @attrs;
|
||||
push @attr_value_from, shift @attrs;
|
||||
}
|
||||
|
||||
my @attrs_from;
|
||||
|
||||
# add xmlns: attrs. expat eats them.
|
||||
#
|
||||
# add namespaces before attributes: Attributes may be namespace-qualified
|
||||
#
|
||||
push @attrs_from, map {
|
||||
# ignore xmlns=FOO namespaces - must be XML schema
|
||||
# # Other nodes should be ignored somewhere else
|
||||
# ($_ eq '#default')
|
||||
# ? ()
|
||||
# :
|
||||
{
|
||||
Name => "xmlns:$_",
|
||||
Value => $parser->expand_ns_prefix( $_ ),
|
||||
LocalName => $_
|
||||
}
|
||||
} $parser->new_ns_prefixes();
|
||||
|
||||
push @attrs_from, map {
|
||||
$_ =
|
||||
{
|
||||
Name => defined $parser->namespace($_)
|
||||
? $parser->namespace($_) . '|' . $_
|
||||
: '|' . $_,
|
||||
Value => shift @attr_value_from, # $attrs_of{ $_ },
|
||||
LocalName => $_
|
||||
}
|
||||
} @attr_key_from;
|
||||
|
||||
return @attrs_from;
|
||||
}
|
||||
|
||||
@@ -310,10 +322,10 @@ the same terms as perl itself
|
||||
|
||||
=head1 Repository information
|
||||
|
||||
$Id: WSDLParser.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: WSDLParser.pm 688 2008-05-23 21:01:54Z kutterma $
|
||||
|
||||
$LastChangedDate: 2008-05-18 22:17:56 +0200 (So, 18 Mai 2008) $
|
||||
$LastChangedRevision: 677 $
|
||||
$LastChangedDate: 2008-05-23 23:01:54 +0200 (Fr, 23 Mai 2008) $
|
||||
$LastChangedRevision: 688 $
|
||||
$LastChangedBy: kutterma $
|
||||
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||
|
||||
@@ -39,7 +39,7 @@ sub get_transport {
|
||||
|
||||
if (defined $registered_transport_of{ $scheme }) {
|
||||
no strict qw(refs);
|
||||
defined %{ "$registered_transport_of{ $scheme }::" } or
|
||||
$registered_transport_of{ $scheme }->can('new') or
|
||||
eval "require $registered_transport_of{ $scheme }"
|
||||
or die "Cannot load transport class $registered_transport_of{ $scheme } : $@";
|
||||
|
||||
@@ -60,11 +60,11 @@ sub get_transport {
|
||||
no strict qw(refs);
|
||||
# behaves interestingly different under different versions of perl
|
||||
# maybe true even if it's not available
|
||||
defined %{ "$SOAP_LITE_TRANSPORT_OF{ $scheme }::" }
|
||||
my $protocol_class = $SOAP_LITE_TRANSPORT_OF{ $scheme } . '::Client';
|
||||
$protocol_class->can('new')
|
||||
or eval "require $SOAP_LITE_TRANSPORT_OF{ $scheme }"
|
||||
or last SOAP_Lite;
|
||||
|
||||
my $protocol_class = $SOAP_LITE_TRANSPORT_OF{ $scheme } . '::Client';
|
||||
# may fail if it's not available
|
||||
my $transport = eval { $protocol_class->new( %attrs ) }
|
||||
or last SOAP_Lite;
|
||||
@@ -74,7 +74,7 @@ sub get_transport {
|
||||
|
||||
if (exists $SOAP_WSDL_TRANSPORT_OF{ $scheme }) {
|
||||
no strict qw(refs);
|
||||
defined %{ "$SOAP_WSDL_TRANSPORT_OF{ $scheme }::"}
|
||||
$SOAP_WSDL_TRANSPORT_OF{ $scheme }->can('new')
|
||||
or eval "require $SOAP_WSDL_TRANSPORT_OF{ $scheme }"
|
||||
or die "Cannot load transport class $SOAP_WSDL_TRANSPORT_OF{ $scheme } : $@";
|
||||
return $SOAP_WSDL_TRANSPORT_OF{ $scheme }->new( %attrs );
|
||||
@@ -243,9 +243,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 679 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Transport.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Transport.pm 679 2008-05-18 21:18:03Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -128,7 +128,7 @@ You cannot suffix your types by some rule yet...
|
||||
|
||||
Copyright 2008 Martin Kutter.
|
||||
|
||||
This library is free software. You may distribute/modify it under
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
||||
use Carp;
|
||||
use SOAP::WSDL::Generator::PrefixResolver;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %tt_of :ATTR(:get<tt>);
|
||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Carp qw(confess);
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||
|
||||
@@ -30,14 +30,17 @@ __PACKAGE__->_factory(
|
||||
{
|
||||
[% FOREACH element = complexType.get_element;
|
||||
IF (ref = element.get_ref);
|
||||
element = definitions.first_types.find_element(element.expand( element.get_ref ));
|
||||
END;
|
||||
IF (type = element.get_type);
|
||||
ref_element = definitions.first_types.find_element(element.expand( ref ));
|
||||
-%]
|
||||
'[% XSD.perl_var_name(XSD.element_name(ref_element)) %]' => '[% XSD.create_xsd_name(ref_element) %]',
|
||||
|
||||
[% ELSIF (type = element.get_type);
|
||||
element_type = definitions.first_types.find_type(complexType.expand( type ));
|
||||
IF (! element_type);
|
||||
type_name = complexType.expand( type );
|
||||
THROW NOT_FOUND, "${ type_name.0 } ${ type_name.1 } not found";
|
||||
END; -%]
|
||||
END;
|
||||
-%]
|
||||
'[% XSD.perl_var_name(XSD.element_name(element)) %]' => '[% XSD.create_xsd_name(element_type) %]',
|
||||
[% ELSE;
|
||||
IF (element.first_simpleType);
|
||||
|
||||
@@ -4,11 +4,11 @@ use base qw(
|
||||
[%
|
||||
base_type = definitions.get_types.0.find_type(simpleType.expand(base));
|
||||
IF ! base_type;
|
||||
THROW NOT_FOUND "No base type in " _ simpleType.get_parent.get_name;
|
||||
THROW NOT_FOUND "base type $base not found." _ simpleType.get_parent.get_name;
|
||||
END;
|
||||
XSD.create_xsd_name(base_type) %]);
|
||||
[% ELSIF (type = simpleType.first_simpleType() );
|
||||
INCLUDE simpleType/atomicType.tt(type = type);
|
||||
ELSE;
|
||||
THROW "neither base nor atomic type - don't know what to do" %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
@@ -3,7 +3,7 @@ use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %part_of :ATTR(:name<part> :default<[]>);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %location :ATTR(:name<location> :default<()>);
|
||||
1;
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||
|
||||
@@ -3,6 +3,6 @@ use strict;
|
||||
use warnings;
|
||||
use base qw(SOAP::WSDL::Header);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
1;
|
||||
+33
-1
@@ -6,7 +6,7 @@ use Scalar::Util qw(blessed);
|
||||
use SOAP::WSDL::Factory::Deserializer;
|
||||
use SOAP::WSDL::Factory::Serializer;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
||||
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
||||
@@ -199,6 +199,38 @@ SOAP::Server's deserializer create one for you:
|
||||
You may use any other object as exception, provided it has a
|
||||
serialize() method which returns the object's XML representation.
|
||||
|
||||
=head2 Subclassing
|
||||
|
||||
To write a transport-specific SOAP Server, you should subclass
|
||||
SOAP::WSDL::Server.
|
||||
|
||||
See the C<SOAP::WSDL::Server::*> modules for examples.
|
||||
|
||||
A SOAP Server must call the following method to actually handle the request:
|
||||
|
||||
=head3 handle
|
||||
|
||||
Handles the SOAP request.
|
||||
|
||||
Returns the response message as XML.
|
||||
|
||||
Expects a C<HTTP::Request> object as only parameter.
|
||||
|
||||
You may use any other object as parameter, as long as it implements the
|
||||
following methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * header
|
||||
|
||||
Called as header('SOAPAction'). Must return the corresponding HTTP header.
|
||||
|
||||
=item * content
|
||||
|
||||
Returns the request message
|
||||
|
||||
=back
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
|
||||
@@ -266,8 +266,8 @@ Thanks!
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
This library is free software. You may distribute/modify it under
|
||||
the same terms as perl itself.
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %port_of :ATTR(:name<port> :default<[]>);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'basic';
|
||||
use SOAP::WSDL::Factory::Transport;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
# register on loading
|
||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use SOAP::WSDL::Factory::Transport;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
||||
|
||||
@@ -5,7 +5,7 @@ use SOAP::WSDL::XSD::Schema::Builtin;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %schema_of :ATTR(:name<schema> :default<[]>);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<enumeration value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
# id provided by Base
|
||||
# name provided by Base
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<enumeration value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<pattern value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use SOAP::WSDL::XSD::Schema;
|
||||
use SOAP::WSDL::XSD::Builtin;
|
||||
use base qw(SOAP::WSDL::XSD::Schema);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
# all builtin types - add validation (e.g. content restrictions) later...
|
||||
my %BUILTINS = (
|
||||
@@ -98,9 +98,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 701 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Builtin.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Builtin.pm 701 2008-06-05 19:19:16Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Schema/Builtin.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %length_of :ATTR(:name<length> :default<[]>);
|
||||
my %minLength_of :ATTR(:name<minLength> :default<[]>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<totalDigits value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::Element);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
sub start_tag {
|
||||
# my ($self, $opt, $value) = @_;
|
||||
|
||||
@@ -3,7 +3,7 @@ use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::anyType;
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||
|
||||
@@ -3,7 +3,7 @@ use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none', cache => 1;
|
||||
|
||||
use version; our $VERSION= qv('2.00.03');
|
||||
use version; our $VERSION= qv('2.00.04');
|
||||
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType);
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use Date::Format;
|
||||
use Class::Std::Fast::Storable constructor => 'none', cache => 1;
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType);
|
||||
|
||||
use version; our $VERSION=qv('2.00.03');
|
||||
use version; our $VERSION=qv('2.00.04');
|
||||
|
||||
sub set_value {
|
||||
# use set_value from base class if we have a XML-Time format
|
||||
|
||||
@@ -3,7 +3,7 @@ package SOAP::WSDL::XSD::Typelib::Element;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use strict;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
my %NAME;
|
||||
my %NILLABLE;
|
||||
@@ -176,9 +176,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 701 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Element.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: Element.pm 701 2008-06-05 19:19:16Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/Element.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.04');
|
||||
|
||||
#<pattern value="">
|
||||
|
||||
|
||||
Reference in New Issue
Block a user