import SOAP-WSDL 2.00.10 from CPAN
git-cpan-module: SOAP-WSDL git-cpan-version: 2.00.10 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz
This commit is contained in:
committed by
Michael G. Schwern
parent
3b30e8d0e2
commit
9023aa06a4
2
Build.PL
2
Build.PL
@@ -5,7 +5,7 @@ $build = Module::Build->new(
|
|||||||
create_makefile_pl => 'small',
|
create_makefile_pl => 'small',
|
||||||
dist_abstract => 'SOAP with WSDL support',
|
dist_abstract => 'SOAP with WSDL support',
|
||||||
dist_name => 'SOAP-WSDL',
|
dist_name => 'SOAP-WSDL',
|
||||||
dist_version => '2.00.09',
|
dist_version => '2.00.10',
|
||||||
module_name => 'SOAP::WSDL',
|
module_name => 'SOAP::WSDL',
|
||||||
license => 'artistic',
|
license => 'artistic',
|
||||||
requires => {
|
requires => {
|
||||||
|
|||||||
31
Changes
31
Changes
@@ -1,4 +1,4 @@
|
|||||||
Release notes for SOAP::WSDL 2.00.07
|
Release notes for SOAP::WSDL 2.00.10
|
||||||
-------
|
-------
|
||||||
|
|
||||||
I'm proud to present a new release of SOAP::WSDL.
|
I'm proud to present a new release of SOAP::WSDL.
|
||||||
@@ -37,6 +37,35 @@ Features:
|
|||||||
|
|
||||||
The following changes have been made:
|
The following changes have been made:
|
||||||
|
|
||||||
|
2.00.10 - May 15 2009
|
||||||
|
|
||||||
|
The following bugs have been fixed (the numbers in square brackets are the
|
||||||
|
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
|
||||||
|
The numbers with # are CPAN RT IDs (http://rt.cpan.org/).
|
||||||
|
|
||||||
|
* #44546: XML Schema types with names cuase errors when including anonymous types
|
||||||
|
SOAP::WSDL now handles element names with "." correctly
|
||||||
|
|
||||||
|
* #45037 ComplexTypes' elements in different namespaces not serialized
|
||||||
|
correctly
|
||||||
|
SOAP::WSDL now serializes elements in different namespaces correctly
|
||||||
|
|
||||||
|
* #43769 Fault11 serialization issue when passed Element for detail
|
||||||
|
The detail fault element is now automatically wrapped into an appropriate
|
||||||
|
detail object and serialized correctly.
|
||||||
|
Note that passing a list as details content is not supported yet.
|
||||||
|
|
||||||
|
* #43674 Fault not caught/propagated in SOAP::WSDL::Client::call
|
||||||
|
Deserializer faults in SOAP::WSDL::Client now propagate correctly to the
|
||||||
|
caller.
|
||||||
|
|
||||||
|
The following uncategorized improvements have been made:
|
||||||
|
|
||||||
|
* improved Java example: Commented test class
|
||||||
|
|
||||||
|
* improved documentation: Added Cookbook entry for HTTP Negotiate Authentication
|
||||||
|
(Kerberos).
|
||||||
|
|
||||||
2.00.09 - Feb 22 2009
|
2.00.09 - Feb 22 2009
|
||||||
|
|
||||||
The following bugs have been fixed (the numbers in square brackets are the
|
The following bugs have been fixed (the numbers in square brackets are the
|
||||||
|
|||||||
1
MANIFEST
1
MANIFEST
@@ -197,6 +197,7 @@ lib/SOAP/WSDL/SOAP/Body.pm
|
|||||||
lib/SOAP/WSDL/SOAP/Header.pm
|
lib/SOAP/WSDL/SOAP/Header.pm
|
||||||
lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
||||||
lib/SOAP/WSDL/SOAP/Operation.pm
|
lib/SOAP/WSDL/SOAP/Operation.pm
|
||||||
|
lib/SOAP/WSDL/SOAP/Typelib/Fault.pm
|
||||||
lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
||||||
lib/SOAP/WSDL/Transport/HTTP.pm
|
lib/SOAP/WSDL/Transport/HTTP.pm
|
||||||
lib/SOAP/WSDL/Transport/Loopback.pm
|
lib/SOAP/WSDL/Transport/Loopback.pm
|
||||||
|
|||||||
171
META.yml
171
META.yml
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
name: SOAP-WSDL
|
name: SOAP-WSDL
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
author:
|
author:
|
||||||
- 'Martin Kutter <martin.kutter@fen-net.de>'
|
- 'Martin Kutter <martin.kutter@fen-net.de>'
|
||||||
abstract: SOAP with WSDL support
|
abstract: SOAP with WSDL support
|
||||||
license: artistic
|
license: artistic
|
||||||
resources:
|
resources:
|
||||||
license: ~
|
license: http://opensource.org/licenses/artistic-license.php
|
||||||
requires:
|
requires:
|
||||||
Class::Std::Fast: 0.0.5
|
Class::Std::Fast: 0.0.5
|
||||||
Data::Dumper: 0
|
Data::Dumper: 0
|
||||||
@@ -41,220 +41,225 @@ build_requires:
|
|||||||
provides:
|
provides:
|
||||||
SOAP::WSDL:
|
SOAP::WSDL:
|
||||||
file: lib/SOAP/WSDL.pm
|
file: lib/SOAP/WSDL.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Base:
|
SOAP::WSDL::Base:
|
||||||
file: lib/SOAP/WSDL/Base.pm
|
file: lib/SOAP/WSDL/Base.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Binding:
|
SOAP::WSDL::Binding:
|
||||||
file: lib/SOAP/WSDL/Binding.pm
|
file: lib/SOAP/WSDL/Binding.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Client:
|
SOAP::WSDL::Client:
|
||||||
file: lib/SOAP/WSDL/Client.pm
|
file: lib/SOAP/WSDL/Client.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Client::Base:
|
SOAP::WSDL::Client::Base:
|
||||||
file: lib/SOAP/WSDL/Client/Base.pm
|
file: lib/SOAP/WSDL/Client/Base.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Definitions:
|
SOAP::WSDL::Definitions:
|
||||||
file: lib/SOAP/WSDL/Definitions.pm
|
file: lib/SOAP/WSDL/Definitions.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Deserializer::Hash:
|
SOAP::WSDL::Deserializer::Hash:
|
||||||
file: lib/SOAP/WSDL/Deserializer/Hash.pm
|
file: lib/SOAP/WSDL/Deserializer/Hash.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Deserializer::SOM:
|
SOAP::WSDL::Deserializer::SOM:
|
||||||
file: lib/SOAP/WSDL/Deserializer/SOM.pm
|
file: lib/SOAP/WSDL/Deserializer/SOM.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Deserializer::XSD:
|
SOAP::WSDL::Deserializer::XSD:
|
||||||
file: lib/SOAP/WSDL/Deserializer/XSD.pm
|
file: lib/SOAP/WSDL/Deserializer/XSD.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Expat::Base:
|
SOAP::WSDL::Expat::Base:
|
||||||
file: lib/SOAP/WSDL/Expat/Base.pm
|
file: lib/SOAP/WSDL/Expat/Base.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Expat::Message2Hash:
|
SOAP::WSDL::Expat::Message2Hash:
|
||||||
file: lib/SOAP/WSDL/Expat/Message2Hash.pm
|
file: lib/SOAP/WSDL/Expat/Message2Hash.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Expat::MessageParser:
|
SOAP::WSDL::Expat::MessageParser:
|
||||||
file: lib/SOAP/WSDL/Expat/MessageParser.pm
|
file: lib/SOAP/WSDL/Expat/MessageParser.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Expat::MessageStreamParser:
|
SOAP::WSDL::Expat::MessageStreamParser:
|
||||||
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
|
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Expat::WSDLParser:
|
SOAP::WSDL::Expat::WSDLParser:
|
||||||
file: lib/SOAP/WSDL/Expat/WSDLParser.pm
|
file: lib/SOAP/WSDL/Expat/WSDLParser.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Factory::Deserializer:
|
SOAP::WSDL::Factory::Deserializer:
|
||||||
file: lib/SOAP/WSDL/Factory/Deserializer.pm
|
file: lib/SOAP/WSDL/Factory/Deserializer.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Factory::Generator:
|
SOAP::WSDL::Factory::Generator:
|
||||||
file: lib/SOAP/WSDL/Factory/Generator.pm
|
file: lib/SOAP/WSDL/Factory/Generator.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Factory::Serializer:
|
SOAP::WSDL::Factory::Serializer:
|
||||||
file: lib/SOAP/WSDL/Factory/Serializer.pm
|
file: lib/SOAP/WSDL/Factory/Serializer.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Factory::Transport:
|
SOAP::WSDL::Factory::Transport:
|
||||||
file: lib/SOAP/WSDL/Factory/Transport.pm
|
file: lib/SOAP/WSDL/Factory/Transport.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Iterator::WSDL11:
|
SOAP::WSDL::Generator::Iterator::WSDL11:
|
||||||
file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::PrefixResolver:
|
SOAP::WSDL::Generator::PrefixResolver:
|
||||||
file: lib/SOAP/WSDL/Generator/PrefixResolver.pm
|
file: lib/SOAP/WSDL/Generator/PrefixResolver.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Template:
|
SOAP::WSDL::Generator::Template:
|
||||||
file: lib/SOAP/WSDL/Generator/Template.pm
|
file: lib/SOAP/WSDL/Generator/Template.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Template::Plugin::XSD:
|
SOAP::WSDL::Generator::Template::Plugin::XSD:
|
||||||
file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm
|
file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Template::XSD:
|
SOAP::WSDL::Generator::Template::XSD:
|
||||||
file: lib/SOAP/WSDL/Generator/Template/XSD.pm
|
file: lib/SOAP/WSDL/Generator/Template/XSD.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Visitor:
|
SOAP::WSDL::Generator::Visitor:
|
||||||
file: lib/SOAP/WSDL/Generator/Visitor.pm
|
file: lib/SOAP/WSDL/Generator/Visitor.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Generator::Visitor::Typemap:
|
SOAP::WSDL::Generator::Visitor::Typemap:
|
||||||
file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Message:
|
SOAP::WSDL::Message:
|
||||||
file: lib/SOAP/WSDL/Message.pm
|
file: lib/SOAP/WSDL/Message.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::OpMessage:
|
SOAP::WSDL::OpMessage:
|
||||||
file: lib/SOAP/WSDL/OpMessage.pm
|
file: lib/SOAP/WSDL/OpMessage.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Operation:
|
SOAP::WSDL::Operation:
|
||||||
file: lib/SOAP/WSDL/Operation.pm
|
file: lib/SOAP/WSDL/Operation.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Part:
|
SOAP::WSDL::Part:
|
||||||
file: lib/SOAP/WSDL/Part.pm
|
file: lib/SOAP/WSDL/Part.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Port:
|
SOAP::WSDL::Port:
|
||||||
file: lib/SOAP/WSDL/Port.pm
|
file: lib/SOAP/WSDL/Port.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::PortType:
|
SOAP::WSDL::PortType:
|
||||||
file: lib/SOAP/WSDL/PortType.pm
|
file: lib/SOAP/WSDL/PortType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::Address:
|
SOAP::WSDL::SOAP::Address:
|
||||||
file: lib/SOAP/WSDL/SOAP/Address.pm
|
file: lib/SOAP/WSDL/SOAP/Address.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::Body:
|
SOAP::WSDL::SOAP::Body:
|
||||||
file: lib/SOAP/WSDL/SOAP/Body.pm
|
file: lib/SOAP/WSDL/SOAP/Body.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::Header:
|
SOAP::WSDL::SOAP::Header:
|
||||||
file: lib/SOAP/WSDL/SOAP/Header.pm
|
file: lib/SOAP/WSDL/SOAP/Header.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::HeaderFault:
|
SOAP::WSDL::SOAP::HeaderFault:
|
||||||
file: lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
file: lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::Operation:
|
SOAP::WSDL::SOAP::Operation:
|
||||||
file: lib/SOAP/WSDL/SOAP/Operation.pm
|
file: lib/SOAP/WSDL/SOAP/Operation.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
|
SOAP::WSDL::SOAP::Typelib::Fault:
|
||||||
|
file: lib/SOAP/WSDL/SOAP/Typelib/Fault.pm
|
||||||
|
version: 2.00.10
|
||||||
SOAP::WSDL::SOAP::Typelib::Fault11:
|
SOAP::WSDL::SOAP::Typelib::Fault11:
|
||||||
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
|
SOAP::WSDL::SOAP::Typelib::Fault11Detail:
|
||||||
|
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
||||||
SOAP::WSDL::Serializer::XSD:
|
SOAP::WSDL::Serializer::XSD:
|
||||||
file: lib/SOAP/WSDL/Serializer/XSD.pm
|
file: lib/SOAP/WSDL/Serializer/XSD.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Server:
|
SOAP::WSDL::Server:
|
||||||
file: lib/SOAP/WSDL/Server.pm
|
file: lib/SOAP/WSDL/Server.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Server::CGI:
|
SOAP::WSDL::Server::CGI:
|
||||||
file: lib/SOAP/WSDL/Server/CGI.pm
|
file: lib/SOAP/WSDL/Server/CGI.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Server::Mod_Perl2:
|
SOAP::WSDL::Server::Mod_Perl2:
|
||||||
file: lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
file: lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Server::Simple:
|
SOAP::WSDL::Server::Simple:
|
||||||
file: lib/SOAP/WSDL/Server/Simple.pm
|
file: lib/SOAP/WSDL/Server/Simple.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Service:
|
SOAP::WSDL::Service:
|
||||||
file: lib/SOAP/WSDL/Service.pm
|
file: lib/SOAP/WSDL/Service.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Transport::HTTP:
|
SOAP::WSDL::Transport::HTTP:
|
||||||
file: lib/SOAP/WSDL/Transport/HTTP.pm
|
file: lib/SOAP/WSDL/Transport/HTTP.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Transport::Loopback:
|
SOAP::WSDL::Transport::Loopback:
|
||||||
file: lib/SOAP/WSDL/Transport/Loopback.pm
|
file: lib/SOAP/WSDL/Transport/Loopback.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Transport::Test:
|
SOAP::WSDL::Transport::Test:
|
||||||
file: lib/SOAP/WSDL/Transport/Test.pm
|
file: lib/SOAP/WSDL/Transport/Test.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::TypeLookup:
|
SOAP::WSDL::TypeLookup:
|
||||||
file: lib/SOAP/WSDL/TypeLookup.pm
|
file: lib/SOAP/WSDL/TypeLookup.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::Types:
|
SOAP::WSDL::Types:
|
||||||
file: lib/SOAP/WSDL/Types.pm
|
file: lib/SOAP/WSDL/Types.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Annotation:
|
SOAP::WSDL::XSD::Annotation:
|
||||||
file: lib/SOAP/WSDL/XSD/Annotation.pm
|
file: lib/SOAP/WSDL/XSD/Annotation.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Attribute:
|
SOAP::WSDL::XSD::Attribute:
|
||||||
file: lib/SOAP/WSDL/XSD/Attribute.pm
|
file: lib/SOAP/WSDL/XSD/Attribute.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::AttributeGroup:
|
SOAP::WSDL::XSD::AttributeGroup:
|
||||||
file: lib/SOAP/WSDL/XSD/AttributeGroup.pm
|
file: lib/SOAP/WSDL/XSD/AttributeGroup.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Builtin:
|
SOAP::WSDL::XSD::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Builtin.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::ComplexType:
|
SOAP::WSDL::XSD::ComplexType:
|
||||||
file: lib/SOAP/WSDL/XSD/ComplexType.pm
|
file: lib/SOAP/WSDL/XSD/ComplexType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Element:
|
SOAP::WSDL::XSD::Element:
|
||||||
file: lib/SOAP/WSDL/XSD/Element.pm
|
file: lib/SOAP/WSDL/XSD/Element.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Enumeration:
|
SOAP::WSDL::XSD::Enumeration:
|
||||||
file: lib/SOAP/WSDL/XSD/Enumeration.pm
|
file: lib/SOAP/WSDL/XSD/Enumeration.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::FractionDigits:
|
SOAP::WSDL::XSD::FractionDigits:
|
||||||
file: lib/SOAP/WSDL/XSD/FractionDigits.pm
|
file: lib/SOAP/WSDL/XSD/FractionDigits.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Group:
|
SOAP::WSDL::XSD::Group:
|
||||||
file: lib/SOAP/WSDL/XSD/Group.pm
|
file: lib/SOAP/WSDL/XSD/Group.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Length:
|
SOAP::WSDL::XSD::Length:
|
||||||
file: lib/SOAP/WSDL/XSD/Length.pm
|
file: lib/SOAP/WSDL/XSD/Length.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MaxExclusive:
|
SOAP::WSDL::XSD::MaxExclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxExclusive.pm
|
file: lib/SOAP/WSDL/XSD/MaxExclusive.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MaxInclusive:
|
SOAP::WSDL::XSD::MaxInclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxInclusive.pm
|
file: lib/SOAP/WSDL/XSD/MaxInclusive.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MaxLength:
|
SOAP::WSDL::XSD::MaxLength:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxLength.pm
|
file: lib/SOAP/WSDL/XSD/MaxLength.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MinExclusive:
|
SOAP::WSDL::XSD::MinExclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MinExclusive.pm
|
file: lib/SOAP/WSDL/XSD/MinExclusive.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MinInclusive:
|
SOAP::WSDL::XSD::MinInclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MinInclusive.pm
|
file: lib/SOAP/WSDL/XSD/MinInclusive.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::MinLength:
|
SOAP::WSDL::XSD::MinLength:
|
||||||
file: lib/SOAP/WSDL/XSD/MinLength.pm
|
file: lib/SOAP/WSDL/XSD/MinLength.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Pattern:
|
SOAP::WSDL::XSD::Pattern:
|
||||||
file: lib/SOAP/WSDL/XSD/Pattern.pm
|
file: lib/SOAP/WSDL/XSD/Pattern.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Schema:
|
SOAP::WSDL::XSD::Schema:
|
||||||
file: lib/SOAP/WSDL/XSD/Schema.pm
|
file: lib/SOAP/WSDL/XSD/Schema.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Schema::Builtin:
|
SOAP::WSDL::XSD::Schema::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::SimpleType:
|
SOAP::WSDL::XSD::SimpleType:
|
||||||
file: lib/SOAP/WSDL/XSD/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/SimpleType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::TotalDigits:
|
SOAP::WSDL::XSD::TotalDigits:
|
||||||
file: lib/SOAP/WSDL/XSD/TotalDigits.pm
|
file: lib/SOAP/WSDL/XSD/TotalDigits.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Attribute:
|
SOAP::WSDL::XSD::Typelib::Attribute:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::AttributeSet:
|
SOAP::WSDL::XSD::Typelib::AttributeSet:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin:
|
SOAP::WSDL::XSD::Typelib::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::ENTITY:
|
SOAP::WSDL::XSD::Typelib::Builtin::ENTITY:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::ID:
|
SOAP::WSDL::XSD::Typelib::Builtin::ID:
|
||||||
@@ -279,14 +284,14 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::anyType:
|
SOAP::WSDL::XSD::Typelib::Builtin::anyType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::anyURI:
|
SOAP::WSDL::XSD::Typelib::Builtin::anyURI:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::base64Binary:
|
SOAP::WSDL::XSD::Typelib::Builtin::base64Binary:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::boolean:
|
SOAP::WSDL::XSD::Typelib::Builtin::boolean:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::byte:
|
SOAP::WSDL::XSD::Typelib::Builtin::byte:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::date:
|
SOAP::WSDL::XSD::Typelib::Builtin::date:
|
||||||
@@ -339,7 +344,7 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::time:
|
SOAP::WSDL::XSD::Typelib::Builtin::time:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::token:
|
SOAP::WSDL::XSD::Typelib::Builtin::token:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte:
|
SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte:
|
||||||
@@ -352,20 +357,20 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
|
||||||
SOAP::WSDL::XSD::Typelib::ComplexType:
|
SOAP::WSDL::XSD::Typelib::ComplexType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::Element:
|
SOAP::WSDL::XSD::Typelib::Element:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Element.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Element.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::SimpleType:
|
SOAP::WSDL::XSD::Typelib::SimpleType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::Typelib::SimpleType::restriction:
|
SOAP::WSDL::XSD::Typelib::SimpleType::restriction:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
SOAP::WSDL::XSD::WhiteSpace:
|
SOAP::WSDL::XSD::WhiteSpace:
|
||||||
file: lib/SOAP/WSDL/XSD/WhiteSpace.pm
|
file: lib/SOAP/WSDL/XSD/WhiteSpace.pm
|
||||||
version: 2.00.09
|
version: 2.00.10
|
||||||
generated_by: Module::Build version 0.31012
|
generated_by: Module::Build version 0.280801
|
||||||
meta-spec:
|
meta-spec:
|
||||||
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
||||||
version: 1.2
|
version: 1.2
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Note: this file was auto-generated by Module::Build::Compat version 0.31012
|
# Note: this file was auto-generated by Module::Build::Compat version 0.2808_01
|
||||||
require 5.8.0;
|
require 5.8.0;
|
||||||
use Module::Build::Compat 0.02;
|
use Module::Build::Compat 0.02;
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,25 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
// Spring JUnit Test runner
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
|
||||||
|
// load spring context from here
|
||||||
@ContextConfiguration(locations = { "classpath:test-context.xml"})
|
@ContextConfiguration(locations = { "classpath:test-context.xml"})
|
||||||
|
|
||||||
|
/** Test class for the HelloWorld service
|
||||||
|
*
|
||||||
|
* It's more of a integration test, not a Unit test (though using
|
||||||
|
* JUnit4).
|
||||||
|
*
|
||||||
|
* Fire up the SOAP server in example/server/hello_simple.pl before
|
||||||
|
* running - the test will fail if it can't find the appropriate SOAP server
|
||||||
|
* at http://localhost:8081/
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class HelloWorldTest {
|
public class HelloWorldTest {
|
||||||
|
|
||||||
|
// soapClient bean automatically provided by spring
|
||||||
@Autowired
|
@Autowired
|
||||||
private Service1Soap soapClient;
|
private Service1Soap soapClient;
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use Class::Std::Fast constructor => 'none';
|
|||||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||||
use LWP::UserAgent;
|
use LWP::UserAgent;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
||||||
my %wsdl_of :ATTR(:name<wsdl>);
|
my %wsdl_of :ATTR(:name<wsdl>);
|
||||||
@@ -831,9 +831,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: WSDL.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: WSDL.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use List::Util;
|
|||||||
use Scalar::Util;
|
use Scalar::Util;
|
||||||
use Carp qw(croak carp confess);
|
use Carp qw(croak carp confess);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %id_of :ATTR(:name<id> :default<()>);
|
my %id_of :ATTR(:name<id> :default<()>);
|
||||||
my %lang_of :ATTR(:name<lang> :default<()>);
|
my %lang_of :ATTR(:name<lang> :default<()>);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
my %type_of :ATTR(:name<type> :default<()>);
|
my %type_of :ATTR(:name<type> :default<()>);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ use SOAP::WSDL::Factory::Serializer;
|
|||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||||
my %no_dispatch_of :ATTR(:name<no_dispatch> :default<()>);
|
my %no_dispatch_of :ATTR(:name<no_dispatch> :default<()>);
|
||||||
@@ -171,20 +171,29 @@ sub call {
|
|||||||
# Try deserializing response - there may be some,
|
# Try deserializing response - there may be some,
|
||||||
# even if transport did not succeed (got a 500 response)
|
# even if transport did not succeed (got a 500 response)
|
||||||
if ( $response ) {
|
if ( $response ) {
|
||||||
my ($result_body, $result_header) = eval {
|
# as our faults are false, returning a success marker is the only
|
||||||
$deserializer_of{ $ident }->deserialize( $response );
|
# reliable way of determining whether the deserializer succeeded.
|
||||||
|
# Custom deserializers may return an empty list, or undef,
|
||||||
|
# and $@ is not guaranteed to be undefined.
|
||||||
|
my ($success, $result_body, $result_header) = eval {
|
||||||
|
(1, $deserializer_of{ $ident }->deserialize( $response ));
|
||||||
};
|
};
|
||||||
if (not $@) {
|
if (defined $success) {
|
||||||
return wantarray
|
return wantarray
|
||||||
? ($result_body, $result_header)
|
? ($result_body, $result_header)
|
||||||
: $result_body;
|
: $result_body;
|
||||||
}
|
}
|
||||||
return $deserializer_of{ $ident }->generate_fault({
|
elsif (blessed $@) { #}&& $@->isa('SOAP::WSDL::SOAP::Typelib::Fault11')) {
|
||||||
code => 'soap:Server',
|
return $@;
|
||||||
role => 'urn:localhost',
|
}
|
||||||
message => "Error deserializing message: $@. \n"
|
else {
|
||||||
. "Message was: \n$response"
|
return $deserializer_of{ $ident }->generate_fault({
|
||||||
});
|
code => 'soap:Server',
|
||||||
|
role => 'urn:localhost',
|
||||||
|
message => "Error deserializing message: $@. \n"
|
||||||
|
. "Message was: \n$response"
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
# if we had no success (Transport layer error status code)
|
# if we had no success (Transport layer error status code)
|
||||||
@@ -400,9 +409,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Client.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Client.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base 'SOAP::WSDL::Client';
|
use base 'SOAP::WSDL::Client';
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub call {
|
sub call {
|
||||||
my ($self, $method, $body, $header) = @_;
|
my ($self, $method, $body, $header) = @_;
|
||||||
@@ -85,9 +85,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Base.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Base.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use List::Util qw(first);
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %types_of :ATTR(:name<types> :default<[]>);
|
my %types_of :ATTR(:name<types> :default<[]>);
|
||||||
my %message_of :ATTR(:name<message> :default<[]>);
|
my %message_of :ATTR(:name<message> :default<[]>);
|
||||||
@@ -115,9 +115,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Definitions.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Definitions.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use SOAP::WSDL::Expat::Message2Hash;
|
|||||||
use SOAP::WSDL::Factory::Deserializer;
|
use SOAP::WSDL::Factory::Deserializer;
|
||||||
SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );
|
SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub BUILD {
|
sub BUILD {
|
||||||
my ($self, $ident, $args_of_ref) = @_;
|
my ($self, $ident, $args_of_ref) = @_;
|
||||||
@@ -163,9 +163,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Hash.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Hash.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Deserializer::SOM;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
our @ISA;
|
our @ISA;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
@@ -140,9 +140,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: SOM.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: SOM.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||||
my %strict_of :ATTR(:get<strict> :init_arg<strict> :default<1>);
|
my %strict_of :ATTR(:get<strict> :init_arg<strict> :default<1>);
|
||||||
@@ -126,9 +126,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: XSD.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: XSD.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
|||||||
|
|
||||||
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, $arg_ref) = @_;
|
my ($class, $arg_ref) = @_;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use base qw(SOAP::WSDL::Expat::Base);
|
use base qw(SOAP::WSDL::Expat::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub _initialize {
|
sub _initialize {
|
||||||
my ($self, $parser) = @_;
|
my ($self, $parser) = @_;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use base qw(SOAP::WSDL::Expat::Base);
|
|||||||
|
|
||||||
BEGIN { require Class::Std::Fast };
|
BEGIN { require Class::Std::Fast };
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# GLOBALS
|
# GLOBALS
|
||||||
my $OBJECT_CACHE_REF = Class::Std::Fast::OBJECT_CACHE_REF();
|
my $OBJECT_CACHE_REF = Class::Std::Fast::OBJECT_CACHE_REF();
|
||||||
@@ -330,10 +330,10 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 Repository information
|
=head1 Repository information
|
||||||
|
|
||||||
$Id: MessageParser.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: MessageParser.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
|
|
||||||
$LastChangedDate: 2009-02-23 22:12:24 +0100 (Mo, 23 Feb 2009) $
|
$LastChangedDate: 2009-05-16 00:45:18 +0200 (Sa, 16. Mai 2009) $
|
||||||
$LastChangedRevision: 805 $
|
$LastChangedRevision: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
|||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
use base qw(SOAP::WSDL::Expat::MessageParser);
|
use base qw(SOAP::WSDL::Expat::MessageParser);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub parse_start {
|
sub parse_start {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
@@ -69,9 +69,9 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: MessageStreamParser.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: MessageStreamParser.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Carp;
|
|||||||
use SOAP::WSDL::TypeLookup;
|
use SOAP::WSDL::TypeLookup;
|
||||||
use base qw(SOAP::WSDL::Expat::Base);
|
use base qw(SOAP::WSDL::Expat::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#
|
#
|
||||||
# Import child elements of a WSDL / XML Schema tree into the current tree
|
# Import child elements of a WSDL / XML Schema tree into the current tree
|
||||||
@@ -367,10 +367,10 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 Repository information
|
=head1 Repository information
|
||||||
|
|
||||||
$Id: WSDLParser.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: WSDLParser.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
|
|
||||||
$LastChangedDate: 2009-02-23 22:12:24 +0100 (Mo, 23 Feb 2009) $
|
$LastChangedDate: 2009-05-16 00:45:18 +0200 (Sa, 16. Mai 2009) $
|
||||||
$LastChangedRevision: 805 $
|
$LastChangedRevision: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Deserializer;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %DESERIALIZER = (
|
my %DESERIALIZER = (
|
||||||
'1.1' => 'SOAP::WSDL::Deserializer::XSD',
|
'1.1' => 'SOAP::WSDL::Deserializer::XSD',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Generator;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %GENERATOR = (
|
my %GENERATOR = (
|
||||||
'XSD' => 'SOAP::WSDL::Generator::Template::XSD',
|
'XSD' => 'SOAP::WSDL::Generator::Template::XSD',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Serializer;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %SERIALIZER = (
|
my %SERIALIZER = (
|
||||||
'1.1' => 'SOAP::WSDL::Serializer::XSD',
|
'1.1' => 'SOAP::WSDL::Serializer::XSD',
|
||||||
@@ -138,9 +138,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Serializer.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Serializer.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package SOAP::WSDL::Factory::Transport;
|
package SOAP::WSDL::Factory::Transport;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %registered_transport_of = ();
|
my %registered_transport_of = ();
|
||||||
|
|
||||||
@@ -243,9 +243,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Transport.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Transport.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Generator::Iterator::WSDL11;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use Class::Std::Fast;
|
use Class::Std::Fast;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<[]>);
|
my %definitions_of :ATTR(:name<definitions> :default<[]>);
|
||||||
my %nodes_of :ATTR(:name<nodes> :default<[]>);
|
my %nodes_of :ATTR(:name<nodes> :default<[]>);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict; use warnings;
|
|||||||
|
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package SOAP::WSDL::Generator::Template;
|
package SOAP::WSDL::Generator::Template;
|
||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use Template;
|
use Template 2.18;
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use Carp;
|
use Carp;
|
||||||
use SOAP::WSDL::Generator::PrefixResolver;
|
use SOAP::WSDL::Generator::PrefixResolver;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %tt_of :ATTR(:get<tt>);
|
my %tt_of :ATTR(:get<tt>);
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Carp qw(confess);
|
use Carp qw(confess);
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||||
@@ -129,8 +129,10 @@ sub create_subpackage_name {
|
|||||||
my $type = ref $arg_ref eq 'HASH' ? $arg_ref->{ value } : $arg_ref;
|
my $type = ref $arg_ref eq 'HASH' ? $arg_ref->{ value } : $arg_ref;
|
||||||
|
|
||||||
my @name_from = $type->get_name() || (); ;
|
my @name_from = $type->get_name() || (); ;
|
||||||
my $parent = $type;
|
|
||||||
my $top_node = $parent;
|
# search for top node in tree (the one directly below the Schema)
|
||||||
|
my $parent = $type;
|
||||||
|
my $top_node = $parent;
|
||||||
if (! $parent->get_parent()->isa('SOAP::WSDL::XSD::Schema') ) {
|
if (! $parent->get_parent()->isa('SOAP::WSDL::XSD::Schema') ) {
|
||||||
NAMES: while ($parent = $parent->get_parent()) {
|
NAMES: while ($parent = $parent->get_parent()) {
|
||||||
$top_node = $parent;
|
$top_node = $parent;
|
||||||
@@ -141,9 +143,13 @@ sub create_subpackage_name {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
# create name for top node
|
# create name for top node
|
||||||
die "FOO" if not defined $top_node;
|
die "No top node found" if not defined $top_node;
|
||||||
my $top_node_name = $self->create_xsd_name($top_node);
|
my $top_node_name = $self->create_xsd_name($top_node);
|
||||||
my $package_name = join('::_', $top_node_name , (@name_from) ? join('::', @name_from) : () );
|
my $package_name = join('::_', $top_node_name , (@name_from) ? join('::', @name_from) : () );
|
||||||
|
|
||||||
|
# replace dots by :: in name - subpackage names may include dots, too
|
||||||
|
$package_name =~s{\.}{::}xg;
|
||||||
|
|
||||||
return $package_name;
|
return $package_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use File::Basename;
|
use File::Basename;
|
||||||
use File::Spec;
|
use File::Spec;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
use SOAP::WSDL::Generator::Visitor::Typemap;
|
use SOAP::WSDL::Generator::Visitor::Typemap;
|
||||||
use SOAP::WSDL::Generator::Template::Plugin::XSD;
|
use SOAP::WSDL::Generator::Template::Plugin::XSD;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
[% USE XSD -%]
|
[% USE XSD;
|
||||||
|
USE Dumper -%]
|
||||||
package [% XSD.create_xsd_name(complexType) %];
|
package [% XSD.create_xsd_name(complexType) %];
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@@ -12,6 +13,8 @@ __PACKAGE__->_set_element_form_qualified([%-
|
|||||||
IF complexType.schema.get_elementFormDefault == 'qualified'
|
IF complexType.schema.get_elementFormDefault == 'qualified'
|
||||||
-%]1[% ELSE %]0[% END %]);
|
-%]1[% ELSE %]0[% END %]);
|
||||||
|
|
||||||
|
sub get_xmlns { '[% complexType.get_targetNamespace %]' };
|
||||||
|
|
||||||
[% INCLUDE complexType/contentModel.tt %]
|
[% INCLUDE complexType/contentModel.tt %]
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||||
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Generator::Visitor);
|
use base qw(SOAP::WSDL::Generator::Visitor);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %path_of :ATTR(:name<path> :default<[]>);
|
my %path_of :ATTR(:name<path> :default<[]>);
|
||||||
my %typemap_of :ATTR(:name<typemap> :default<()>);
|
my %typemap_of :ATTR(:name<typemap> :default<()>);
|
||||||
|
|||||||
@@ -32,15 +32,28 @@ this backend:
|
|||||||
|
|
||||||
=head3 Accessing HTTP(S) webservices protected by NTLM authentication
|
=head3 Accessing HTTP(S) webservices protected by NTLM authentication
|
||||||
|
|
||||||
|
If you want to connect to a windows server using some Windows Domain Login, please
|
||||||
|
consider using Kerberos instead of the (older) NTLM mechanism - see below.
|
||||||
|
|
||||||
|
Kerberos and NTLM are (currently) mutually exclusive - when LWP::Authen::Negotiate
|
||||||
|
is installed, it will always be queried (and will always raise an error), even
|
||||||
|
if you don't want to use it. See http://rt.cpan.org/Public/Bug/Display.html?id=32826
|
||||||
|
for details.
|
||||||
|
|
||||||
You need the L<NTLM|NTLM> distribution installed to access webservices protected
|
You need the L<NTLM|NTLM> distribution installed to access webservices protected
|
||||||
by NTLM authentication. More specifically, you need the Authen::NTLM module
|
by NTLM authentication. More specifically, you need the Authen::NTLM module
|
||||||
from this distribution. Note that this is different from the Authen::NTML
|
from this distribution. Note that this is different from the Authen::NTML
|
||||||
distribution by Yee Man Chan also available from CPAN.
|
distribution by Yee Man Chan also available from CPAN.
|
||||||
|
|
||||||
Your user credentials usually need to include the windows domain like this:
|
Your user credentials usually need to include the windows domain or the
|
||||||
|
windows hostname like this:
|
||||||
|
|
||||||
testdomain\testuser
|
testdomain\testuser
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
\\testhost\testuser
|
||||||
|
|
||||||
Besides passing user credentials as when accessing a web service protected
|
Besides passing user credentials as when accessing a web service protected
|
||||||
by basic or digest authentication, you also need to enforce connection
|
by basic or digest authentication, you also need to enforce connection
|
||||||
keep_alive on the transport backens.
|
keep_alive on the transport backens.
|
||||||
@@ -56,6 +69,57 @@ You may, of course, decide to just hack the generated class. Be advised that
|
|||||||
subclassing might be a more appropriate solution - re-generating overwrites
|
subclassing might be a more appropriate solution - re-generating overwrites
|
||||||
changes in interface classes.
|
changes in interface classes.
|
||||||
|
|
||||||
|
=head3 Accessing HTTP(S) webservices protected by NTLMv2
|
||||||
|
|
||||||
|
There are different variants of NTLM, and by default Authen::NTLM uses the v1 variant.
|
||||||
|
|
||||||
|
NTLM is a connection-based handshake authentication protocol, which requires
|
||||||
|
three or more requests on the same connection:
|
||||||
|
|
||||||
|
Request POST
|
||||||
|
Response 401 Unauthorized
|
||||||
|
WWW-Authenticate: NTLM
|
||||||
|
|
||||||
|
Request Authorization: NTLM <base64-encoded type-1-message>
|
||||||
|
Response 401 Unauthorized
|
||||||
|
WWW-Authenticate: NTLM <base64-encoded type-2-message>
|
||||||
|
|
||||||
|
Request Authorization: NTLM <base64-encoded type-3-message>
|
||||||
|
Response 200 Ok
|
||||||
|
|
||||||
|
If you try to access a NTLMv2 protected web service and switch on LWP::Debug by
|
||||||
|
saying
|
||||||
|
|
||||||
|
use LWP::Debug qw(+);
|
||||||
|
|
||||||
|
you should see at least two lines containing something like
|
||||||
|
|
||||||
|
Authorization NTLM TlRMTVNTUAABAAAAB7IAAAAAAAAAAAAAAwADACAAAABmb28=
|
||||||
|
...
|
||||||
|
Authorization NTLM TlRMTVNTUAABAAAAB7IAAAAAAAAAAAAAAw ... much longer ... ADACAAAABmb28=
|
||||||
|
|
||||||
|
If you're talking to a Server using NTLMv2 exclusively, you will only the first line
|
||||||
|
in the debug output, and then an error.
|
||||||
|
|
||||||
|
To explicitely enable NTLMv2, do the following in your client:
|
||||||
|
|
||||||
|
use Authen::NTLM;
|
||||||
|
ntlmv2(1);
|
||||||
|
|
||||||
|
This globally enables the use of NTLMv2. Note that this is a global setting: All
|
||||||
|
clients running in the same perl interpreter will be affected. This can
|
||||||
|
cause unexpected issues when running under mod_perl.
|
||||||
|
|
||||||
|
=head3 Accessing webservices protected by HTTP Kerberos Authentication
|
||||||
|
|
||||||
|
Use the L<LWP::Authen::Negotiate|LWP::Authen::Negotiate> plugin from CPAN. You
|
||||||
|
need to set up GSSAPI to perform the Kerberos authentication, though. How to do
|
||||||
|
this is implementation specific (MIT or Heimdahl). See your Kerberos/GSSAPI
|
||||||
|
documentation for details.
|
||||||
|
|
||||||
|
(Newer) Windows Web Services usually allow to use both the Negotiate (Kerberos)
|
||||||
|
and NTLM authentication scheme.
|
||||||
|
|
||||||
=head3 Accessing HTTPS webservices protected by certificate authentication
|
=head3 Accessing HTTPS webservices protected by certificate authentication
|
||||||
|
|
||||||
You need Crypt::SSLeay installed to access HTTPS webservices.
|
You need Crypt::SSLeay installed to access HTTPS webservices.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %part_of :ATTR(:name<part> :default<[]>);
|
my %part_of :ATTR(:name<part> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %body_of :ATTR(:name<body> :default<[]>);
|
my %body_of :ATTR(:name<body> :default<[]>);
|
||||||
my %header_of :ATTR(:name<header> :default<[]>);
|
my %header_of :ATTR(:name<header> :default<[]>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
my %input_of :ATTR(:name<input> :default<[]>);
|
my %input_of :ATTR(:name<input> :default<[]>);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %element_of :ATTR(:name<element> :default<()>);
|
my %element_of :ATTR(:name<element> :default<()>);
|
||||||
my %type_of :ATTR(:name<type> :default<()>);
|
my %type_of :ATTR(:name<type> :default<()>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %binding_of :ATTR(:name<binding> :default<()>);
|
my %binding_of :ATTR(:name<binding> :default<()>);
|
||||||
my %address_of :ATTR(:name<address> :default<()>);
|
my %address_of :ATTR(:name<address> :default<()>);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use List::Util;
|
use List::Util;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %location :ATTR(:name<location> :default<()>);
|
my %location :ATTR(:name<location> :default<()>);
|
||||||
1;
|
1;
|
||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use base qw(SOAP::WSDL::Header);
|
use base qw(SOAP::WSDL::Header);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %style_of :ATTR(:name<style> :default<()>);
|
my %style_of :ATTR(:name<style> :default<()>);
|
||||||
my %soapAction_of :ATTR(:name<soapAction> :default<()>);
|
my %soapAction_of :ATTR(:name<soapAction> :default<()>);
|
||||||
|
|||||||
8
lib/SOAP/WSDL/SOAP/Typelib/Fault.pm
Normal file
8
lib/SOAP/WSDL/SOAP/Typelib/Fault.pm
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package SOAP::WSDL::SOAP::Typelib::Fault;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
|
||||||
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
|
1;
|
||||||
@@ -1,51 +1,102 @@
|
|||||||
package SOAP::WSDL::SOAP::Typelib::Fault11;
|
package SOAP::WSDL::SOAP::Typelib::Fault11;
|
||||||
use strict;
|
{
|
||||||
use warnings;
|
use strict;
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use warnings;
|
||||||
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
use Scalar::Util qw(blessed);
|
||||||
use SOAP::WSDL::XSD::Typelib::Element;
|
|
||||||
|
|
||||||
use base qw(
|
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
||||||
SOAP::WSDL::XSD::Typelib::Element
|
use SOAP::WSDL::XSD::Typelib::Element;
|
||||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
|
||||||
);
|
|
||||||
|
|
||||||
my %faultcode_of :ATTR(:get<faultcode>);
|
use base qw(
|
||||||
my %faultstring_of :ATTR(:get<faultstring>);
|
SOAP::WSDL::SOAP::Typelib::Fault
|
||||||
my %faultactor_of :ATTR(:get<faultactor>);
|
SOAP::WSDL::XSD::Typelib::Element
|
||||||
my %detail_of :ATTR(:get<detail>);
|
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||||
|
);
|
||||||
|
|
||||||
__PACKAGE__->_factory(
|
my %faultcode_of : ATTR(:get<faultcode>);
|
||||||
[ qw(faultcode faultstring faultactor detail) ],
|
my %faultstring_of : ATTR(:get<faultstring>);
|
||||||
{
|
my %faultactor_of : ATTR(:get<faultactor>);
|
||||||
faultcode => \%faultcode_of,
|
my %detail_of : ATTR(:get<detail>);
|
||||||
faultstring => \%faultstring_of,
|
|
||||||
faultactor => \%faultactor_of,
|
__PACKAGE__->_factory(
|
||||||
detail => \%detail_of,
|
[qw(faultcode faultstring faultactor detail)],
|
||||||
},
|
{
|
||||||
{
|
faultcode => \%faultcode_of,
|
||||||
faultcode => 'SOAP::WSDL::XSD::Typelib::Builtin::QName',
|
faultstring => \%faultstring_of,
|
||||||
faultstring => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
faultactor => \%faultactor_of,
|
||||||
faultactor => 'SOAP::WSDL::XSD::Typelib::Builtin::anyURI',
|
detail => \%detail_of,
|
||||||
detail => 'SOAP::WSDL::XSD::Typelib::Builtin::anyType',
|
},
|
||||||
|
{
|
||||||
|
faultcode => 'SOAP::WSDL::XSD::Typelib::Builtin::QName',
|
||||||
|
faultstring => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||||
|
faultactor => 'SOAP::WSDL::XSD::Typelib::Builtin::anyURI',
|
||||||
|
detail => 'SOAP::WSDL::SOAP::Typelib::Fault11Detail',
|
||||||
|
} );
|
||||||
|
|
||||||
|
sub get_xmlns { return 'http://schemas.xmlsoap.org/soap/envelope/' }
|
||||||
|
|
||||||
|
__PACKAGE__->__set_name('Fault');
|
||||||
|
__PACKAGE__->__set_nillable(0);
|
||||||
|
__PACKAGE__->__set_minOccurs();
|
||||||
|
__PACKAGE__->__set_maxOccurs();
|
||||||
|
__PACKAGE__->__set_ref('');
|
||||||
|
|
||||||
|
# always return false in boolean context - a fault is never true...
|
||||||
|
sub as_bool : BOOLIFY {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
|
||||||
sub get_xmlns { return 'http://schemas.xmlsoap.org/soap/envelope/' };
|
# override set_detail to allow "auto-vivification" of a details object
|
||||||
|
# must be implemented via symbol table operation - _factory adds
|
||||||
|
# methods via symbol table, too.
|
||||||
|
|
||||||
__PACKAGE__->__set_name('Fault');
|
# BLOCK to scope warnings
|
||||||
__PACKAGE__->__set_nillable(0);
|
{
|
||||||
__PACKAGE__->__set_minOccurs();
|
no warnings qw(redefine);
|
||||||
__PACKAGE__->__set_maxOccurs();
|
my $set_detail_sub = \&set_detail;
|
||||||
__PACKAGE__->__set_ref('');
|
*set_detail = sub {
|
||||||
|
my ( $self, $detail ) = @_;
|
||||||
|
|
||||||
# always return false in boolean context - a fault is never true...
|
# create SOAP::WSDL::SOAP::Typelib::Fault11Detail wrapper if there
|
||||||
sub as_bool : BOOLIFY { return; }
|
# is none
|
||||||
|
if ( not blessed $detail
|
||||||
|
or
|
||||||
|
not $detail->isa('SOAP::WSDL::SOAP::Typelib::Fault11Detail') )
|
||||||
|
{
|
||||||
|
$detail = SOAP::WSDL::SOAP::Typelib::Fault11Detail->new(
|
||||||
|
{value => $detail} );
|
||||||
|
}
|
||||||
|
|
||||||
|
# call original method
|
||||||
|
$set_detail_sub->( $self, $detail );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
Class::Std::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
package SOAP::WSDL::SOAP::Typelib::Fault11Detail;
|
||||||
|
{
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
use base qw(
|
||||||
|
SOAP::WSDL::XSD::Typelib::Element
|
||||||
|
SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType
|
||||||
|
);
|
||||||
|
|
||||||
|
sub get_xmlns { return 'http://schemas.xmlsoap.org/soap/envelope/' }
|
||||||
|
|
||||||
|
__PACKAGE__->__set_name('Fault');
|
||||||
|
__PACKAGE__->__set_nillable(0);
|
||||||
|
__PACKAGE__->__set_minOccurs();
|
||||||
|
__PACKAGE__->__set_maxOccurs();
|
||||||
|
Class::Std::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
Class::Std::initialize();
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
@@ -88,6 +139,16 @@ Getter/setter for object's faultactor property.
|
|||||||
|
|
||||||
Getter/setter for detail object's detail property.
|
Getter/setter for detail object's detail property.
|
||||||
|
|
||||||
|
The detail element is a SOAP::WSDL::SOAP::Typelib::Fault11Detail object.
|
||||||
|
This class is automatically loaded when using
|
||||||
|
SOAP::WSDL::SOAP::Typelib::Fault11, so you can't B<use> it separately.
|
||||||
|
|
||||||
|
Any string or object not of this class will be automatically wrapped into
|
||||||
|
a detail object.
|
||||||
|
|
||||||
|
Note that passing a list of detail object is currently not supported (though
|
||||||
|
the SOAP1.1 note allows this).
|
||||||
|
|
||||||
=head1 LICENSE AND COPYRIGHT
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
Copyright 2007 Martin Kutter. All rights reserved.
|
Copyright 2007 Martin Kutter. All rights reserved.
|
||||||
@@ -101,9 +162,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Fault11.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Fault11.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
use SOAP::WSDL::Factory::Serializer;
|
use SOAP::WSDL::Factory::Serializer;
|
||||||
|
|
||||||
@@ -132,9 +132,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: XSD.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: XSD.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use Scalar::Util qw(blessed);
|
|||||||
use SOAP::WSDL::Factory::Deserializer;
|
use SOAP::WSDL::Factory::Deserializer;
|
||||||
use SOAP::WSDL::Factory::Serializer;
|
use SOAP::WSDL::Factory::Serializer;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
||||||
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Server);
|
use base qw(SOAP::WSDL::Server);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
||||||
# server directly - we would have to swap out it's base class...
|
# server directly - we would have to swap out it's base class...
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use Apache2::Const -compile => qw(
|
|||||||
HTTP_LENGTH_REQUIRED
|
HTTP_LENGTH_REQUIRED
|
||||||
);
|
);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %LOADED_OF = ();
|
my %LOADED_OF = ();
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Server);
|
use base qw(SOAP::WSDL::Server);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
||||||
# server directly - we would have to swap out it's base class...
|
# server directly - we would have to swap out it's base class...
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %port_of :ATTR(:name<port> :default<[]>);
|
my %port_of :ATTR(:name<port> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Transport::HTTP;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use base qw(LWP::UserAgent);
|
use base qw(LWP::UserAgent);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# create methods normally inherited from SOAP::Client
|
# create methods normally inherited from SOAP::Client
|
||||||
SUBFACTORY: {
|
SUBFACTORY: {
|
||||||
@@ -95,9 +95,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: HTTP.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: HTTP.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'basic';
|
use Class::Std::Fast::Storable constructor => 'basic';
|
||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# register on loading
|
# register on loading
|
||||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||||
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::TypeLookup;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %TYPE_FROM = (
|
my %TYPE_FROM = (
|
||||||
# wsdl:
|
# wsdl:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use SOAP::WSDL::XSD::Schema::Builtin;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %schema_of :ATTR(:name<schema> :default<[]>);
|
my %schema_of :ATTR(:name<schema> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<enumeration value="">
|
#<enumeration value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<attribute
|
#<attribute
|
||||||
# default = string
|
# default = string
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<attributeGroup
|
#<attributeGroup
|
||||||
# id = ID
|
# id = ID
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# only used in SOAP::WSDL - will be obsolete once SOAP::WSDL uses the
|
# only used in SOAP::WSDL - will be obsolete once SOAP::WSDL uses the
|
||||||
# generative approach, too
|
# generative approach, too
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
# name provided by Base
|
# name provided by Base
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
# name provided by Base
|
# name provided by Base
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<enumeration value="">
|
#<enumeration value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
#<pattern value="">
|
#<pattern value="">
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<xs:group name="myModelGroup">
|
#<xs:group name="myModelGroup">
|
||||||
# <xs:sequence>
|
# <xs:sequence>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<maxLength value="">
|
#<maxLength value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<pattern value="">
|
#<pattern value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# child elements
|
# child elements
|
||||||
my %attributeGroup_of :ATTR(:name<attributeGroup> :default<[]>);
|
my %attributeGroup_of :ATTR(:name<attributeGroup> :default<[]>);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use SOAP::WSDL::XSD::Schema;
|
|||||||
use SOAP::WSDL::XSD::Builtin;
|
use SOAP::WSDL::XSD::Builtin;
|
||||||
use base qw(SOAP::WSDL::XSD::Schema);
|
use base qw(SOAP::WSDL::XSD::Schema);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# all builtin types - add validation (e.g. content restrictions) later...
|
# all builtin types - add validation (e.g. content restrictions) later...
|
||||||
my %BUILTINS = (
|
my %BUILTINS = (
|
||||||
@@ -103,9 +103,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Builtin.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Builtin.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Schema/Builtin.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Schema/Builtin.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %length_of :ATTR(:name<length> :default<[]>);
|
my %length_of :ATTR(:name<length> :default<[]>);
|
||||||
my %minLength_of :ATTR(:name<minLength> :default<[]>);
|
my %minLength_of :ATTR(:name<minLength> :default<[]>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<totalDigits value="">
|
#<totalDigits value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::Element);
|
use base qw(SOAP::WSDL::XSD::Typelib::Element);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub start_tag {
|
sub start_tag {
|
||||||
# my ($self, $opt, $value) = @_;
|
# my ($self, $opt, $value) = @_;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub serialize {
|
sub serialize {
|
||||||
# we work on @_ for performance.
|
# we work on @_ for performance.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
use SOAP::WSDL::XSD::Typelib::Builtin::anyType;
|
use SOAP::WSDL::XSD::Typelib::Builtin::anyType;
|
||||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub get_xmlns { 'http://www.w3.org/2001/XMLSchema' };
|
sub get_xmlns { 'http://www.w3.org/2001/XMLSchema' };
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable constructor => 'none', cache => 1;
|
use Class::Std::Fast::Storable constructor => 'none', cache => 1;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType);
|
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 Class::Std::Fast::Storable constructor => 'none', cache => 1;
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType);
|
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
sub set_value {
|
sub set_value {
|
||||||
# use set_value from base class if we have a XML-Time format
|
# use set_value from base class if we have a XML-Time format
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ require Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anyType);
|
use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anyType);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
# remove in 2.1
|
# remove in 2.1
|
||||||
our $AS_HASH_REF_WITHOUT_ATTRIBUTES = 0;
|
our $AS_HASH_REF_WITHOUT_ATTRIBUTES = 0;
|
||||||
@@ -23,7 +23,10 @@ my %NAMES_OF; # XML names of elements in a class
|
|||||||
|
|
||||||
|
|
||||||
# XML Attribute handling
|
# XML Attribute handling
|
||||||
my %xml_attr_of :ATTR();
|
my %xml_attr_of :ATTR();
|
||||||
|
|
||||||
|
# Namespace handling
|
||||||
|
my %xmlns_of :ATTR();
|
||||||
|
|
||||||
# don't you ever dare to use this !
|
# don't you ever dare to use this !
|
||||||
our $___attributes_of_ref = \%ATTRIBUTES_OF;
|
our $___attributes_of_ref = \%ATTRIBUTES_OF;
|
||||||
@@ -319,6 +322,7 @@ sub _factory {
|
|||||||
*{ "$class\::_serialize" } = sub {
|
*{ "$class\::_serialize" } = sub {
|
||||||
my $ident = ${ $_[0] };
|
my $ident = ${ $_[0] };
|
||||||
my $option_ref = $_[1];
|
my $option_ref = $_[1];
|
||||||
|
|
||||||
# return concatenated return value of serialize call of all
|
# return concatenated return value of serialize call of all
|
||||||
# elements retrieved from get_elements expanding list refs.
|
# elements retrieved from get_elements expanding list refs.
|
||||||
return \join q{} , map {
|
return \join q{} , map {
|
||||||
@@ -327,7 +331,7 @@ sub _factory {
|
|||||||
# do we have some content
|
# do we have some content
|
||||||
if (defined $element) {
|
if (defined $element) {
|
||||||
$element = [ $element ] if not ref $element eq 'ARRAY';
|
$element = [ $element ] if not ref $element eq 'ARRAY';
|
||||||
# from 2.00.09 on $NAMES_OF is filled - use || $_; for
|
# from 2.00.10 on $NAMES_OF is filled - use || $_; for
|
||||||
# backward compatibility
|
# backward compatibility
|
||||||
my $name = $NAMES_OF{$class}->{$_} || $_;
|
my $name = $NAMES_OF{$class}->{$_} || $_;
|
||||||
my $target_namespace = $_[0]->get_xmlns();
|
my $target_namespace = $_[0]->get_xmlns();
|
||||||
@@ -345,19 +349,45 @@ sub _factory {
|
|||||||
# serialize complextype elments (of other types) with their
|
# serialize complextype elments (of other types) with their
|
||||||
# serializer, but add element tags around.
|
# serializer, but add element tags around.
|
||||||
else {
|
else {
|
||||||
# TODO: check whether we have to handle
|
# default for undef is true
|
||||||
# types from different namespaces special, too
|
if (! defined $ELEMENT_FORM_QUALIFIED_OF{ $class }
|
||||||
if (!defined $ELEMENT_FORM_QUALIFIED_OF{ $class }
|
|
||||||
or $ELEMENT_FORM_QUALIFIED_OF{ $class }
|
or $ELEMENT_FORM_QUALIFIED_OF{ $class }
|
||||||
) {
|
) {
|
||||||
join q{}, $_->start_tag({ name => $name , %{ $option_ref } })
|
# handle types from different namespaces
|
||||||
, $_->serialize($option_ref)
|
#
|
||||||
, $_->end_tag({ name => $name , %{ $option_ref } });
|
# serialize with last namespace put on stack
|
||||||
|
# if the last namespace is a change from the
|
||||||
|
# before-last
|
||||||
|
#
|
||||||
|
if (
|
||||||
|
exists $option_ref->{ xmlns_stack }
|
||||||
|
&& (scalar @{ $option_ref->{ xmlns_stack } } >= 2)
|
||||||
|
&& ($option_ref->{ xmlns_stack }->[-1] ne $option_ref->{ xmlns_stack }->[-2])) {
|
||||||
|
# warn "New namespace: ", $option_ref->{ xmlns_stack }->[-1];
|
||||||
|
join q{}, $_->start_tag({ name => $name ,
|
||||||
|
xmlns => $option_ref->{ xmlns_stack }->[-1],
|
||||||
|
%{ $option_ref } })
|
||||||
|
, $_->serialize($option_ref)
|
||||||
|
, $_->end_tag({ name => $name , %{ $option_ref } });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
join q{}, $_->start_tag({ name => $name , %{ $option_ref } })
|
||||||
|
, $_->serialize($option_ref)
|
||||||
|
, $_->end_tag({ name => $name , %{ $option_ref } });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# remove xmlns option if there is one
|
# in elementFormDefault="unqualified" mode,
|
||||||
my $set_xmlns = delete $option_ref->{xmlns}
|
# the serialize method has to set
|
||||||
if (exists $option_ref->{xmlns});
|
# xmnlns="" on all elements inside a ComplexType
|
||||||
|
#
|
||||||
|
# Other serializers usually use prefixes
|
||||||
|
# for "unqualified" and just omit all prefixes
|
||||||
|
# for inner elements
|
||||||
|
|
||||||
|
# check whether we "had" a xmlns around
|
||||||
|
my $set_xmlns = delete $option_ref->{xmlns};
|
||||||
|
|
||||||
# serialize start tag with xmlns="" if out parent
|
# serialize start tag with xmlns="" if out parent
|
||||||
# did not do that
|
# did not do that
|
||||||
join q{}, $_->start_tag({
|
join q{}, $_->start_tag({
|
||||||
@@ -400,10 +430,14 @@ sub __get_attr_class {};
|
|||||||
sub __serialize_complex {
|
sub __serialize_complex {
|
||||||
# we work on @_ for performance.
|
# we work on @_ for performance.
|
||||||
$_[1] ||= {}; # $option_ref
|
$_[1] ||= {}; # $option_ref
|
||||||
|
|
||||||
|
push @{ $_[1]->{ xmlns_stack } }, $_[0]->get_xmlns();
|
||||||
|
|
||||||
# get content first (pass by reference to avoid copying)
|
# get content first (pass by reference to avoid copying)
|
||||||
my $content_ref = $_[0]->_serialize($_[1]); # option_ref
|
my $content_ref = $_[0]->_serialize($_[1]); # option_ref
|
||||||
|
|
||||||
|
pop @{ $_[1]->{ xmlns_stack } };
|
||||||
|
|
||||||
# do we have a empty element ?
|
# do we have a empty element ?
|
||||||
return $_[0]->start_tag({ %{ $_[1] }, empty => 1 })
|
return $_[0]->start_tag({ %{ $_[1] }, empty => 1 })
|
||||||
if not length ${ $content_ref };
|
if not length ${ $content_ref };
|
||||||
@@ -411,6 +445,10 @@ sub __serialize_complex {
|
|||||||
return join q{}, $_[0]->start_tag($_[1]), ${ $content_ref }, $_[0]->end_tag();
|
return join q{}, $_[0]->start_tag($_[1]), ${ $content_ref }, $_[0]->end_tag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_xmlns {
|
||||||
|
return q{}
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
@@ -633,9 +671,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: ComplexType.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: ComplexType.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::XSD::Typelib::Element;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
my %NAME;
|
my %NAME;
|
||||||
my %NILLABLE;
|
my %NILLABLE;
|
||||||
@@ -177,9 +177,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Element.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: Element.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/Element.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/Element.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ package SOAP::WSDL::XSD::Typelib::SimpleType;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use SOAP::WSDL::XSD::Typelib::Builtin;
|
use SOAP::WSDL::XSD::Typelib::Builtin;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
package SOAP::WSDL::XSD::Typelib::SimpleType::restriction;
|
package SOAP::WSDL::XSD::Typelib::SimpleType::restriction;
|
||||||
use strict;
|
use strict;
|
||||||
use SOAP::WSDL::XSD::Typelib::Builtin;
|
use SOAP::WSDL::XSD::Typelib::Builtin;
|
||||||
use base qw(SOAP::WSDL::XSD::Typelib::SimpleType);
|
use base qw(SOAP::WSDL::XSD::Typelib::SimpleType);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
@@ -132,9 +132,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 805 $
|
$Rev: 851 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: SimpleType.pm 805 2009-02-23 21:12:24Z kutterma $
|
$Id: SimpleType.pm 851 2009-05-15 22:45:18Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.09');
|
use version; our $VERSION = qv('2.00.10');
|
||||||
|
|
||||||
#<pattern value="">
|
#<pattern value="">
|
||||||
|
|
||||||
|
|||||||
0
t/CodeFirst/ComplexType.pm
Normal file → Executable file
0
t/CodeFirst/ComplexType.pm
Normal file → Executable file
0
t/CodeFirst/element.pm
Normal file → Executable file
0
t/CodeFirst/element.pm
Normal file → Executable file
0
t/CodeFirst/sequence.pm
Normal file → Executable file
0
t/CodeFirst/sequence.pm
Normal file → Executable file
77
t/CodeFirst/test.pl
Normal file → Executable file
77
t/CodeFirst/test.pl
Normal file → Executable file
@@ -5,26 +5,85 @@ use lib '../lib';
|
|||||||
use base q{CodeFirst};
|
use base q{CodeFirst};
|
||||||
|
|
||||||
sub test :WebMethod(
|
sub test :WebMethod(
|
||||||
action => "test",
|
name => "sayHello",
|
||||||
returns => "bar",
|
action => "uri:helloWorld/sayHello",
|
||||||
header => "bam",
|
request_body => "CodeFirst::HelloRequest",
|
||||||
body => "baz"
|
response_body => "CodeFirst::HelloResponse"
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
# return either [ \%body, \%header ]
|
||||||
|
# or \%body
|
||||||
|
# or [ Body->new(), Header->new ]
|
||||||
|
# or even [ Body->new(), [ Header1->new(), Header2->new() ]]
|
||||||
|
# or any combination of that
|
||||||
|
return [{
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
... would translate to
|
||||||
|
|
||||||
|
<element name="test">
|
||||||
|
<complexType>
|
||||||
|
<sequence>
|
||||||
|
<element name="testRequest" type="bam"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
sub test2 :WebMethod(
|
sub test2 :WebMethod(
|
||||||
action => "test2",
|
action => "test2",
|
||||||
returns => "bar",
|
request_header => "bar",
|
||||||
header => "bam",
|
reqest_body => "bam",
|
||||||
body => "baz"
|
response_header => "bam",
|
||||||
|
response_body => "baz"
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
my $test = testCodeFirst->new();
|
my $test = testCodeFirst->new();
|
||||||
# print Dumper $test->_action_map;
|
|
||||||
|
|
||||||
print Dumper $test->get_transport()->get_action_map_ref();
|
# print Dumper $test->_action_map;
|
||||||
|
# print Dumper $test->get_transport()->get_action_map_ref();
|
||||||
|
|
||||||
|
#print $test->get_wsdl("http://localhost/foo")->toString();
|
||||||
|
use CodeFirst::Serializer;
|
||||||
|
use CodeFirst::Deserializer;
|
||||||
|
use CodeFirst::HelloResponse;
|
||||||
|
use CodeFirst::HelloRequest;
|
||||||
|
my $serializer = CodeFirst::Serializer->new();
|
||||||
|
|
||||||
|
#print $serializer->serialize("sayHelloResponse", "uri:MooseX.SOAP.CodeFirst", CodeFirst::HelloResponse->new(
|
||||||
|
# Result => "Test"
|
||||||
|
#))->toString;
|
||||||
|
#
|
||||||
|
my $xml = $serializer->serialize("sayHello", "uri:MooseX.SOAP.testCodeFirst", CodeFirst::HelloRequest->new(
|
||||||
|
Name => 'Flint',
|
||||||
|
GivenName => 'Erol',
|
||||||
|
))->toString;
|
||||||
|
#print "\n\n";
|
||||||
|
print $xml, "\n";
|
||||||
|
|
||||||
|
print $test->get_wsdl()->toString(), "\n";
|
||||||
|
|
||||||
|
my $deserializer = CodeFirst::Deserializer->new();
|
||||||
|
$deserializer->schema( $test->schema );
|
||||||
|
|
||||||
|
print Dumper $deserializer->deserialize($xml, 'CodeFirst::HelloRequest');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@@ -1,66 +1,96 @@
|
|||||||
|
package FaultDeserializer;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 15;
|
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
||||||
|
|
||||||
|
sub new { bless {}, shift }
|
||||||
|
|
||||||
|
sub deserialize {
|
||||||
|
die SOAP::WSDL::SOAP::Typelib::Fault11->new( {} );
|
||||||
|
}
|
||||||
|
|
||||||
|
package main;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Test::More tests => 16;
|
||||||
|
use SOAP::WSDL::Transport::Loopback;
|
||||||
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
use_ok qw(SOAP::WSDL::Client);
|
use_ok qw(SOAP::WSDL::Client);
|
||||||
|
|
||||||
{
|
{
|
||||||
no warnings qw(redefine once);
|
no warnings qw(redefine once);
|
||||||
*SOAP::WSDL::Factory::Transport::get_transport = sub {
|
*SOAP::WSDL::Factory::Transport::get_transport = sub {
|
||||||
my ($self, $url , %args_of) = @_;
|
my ( $self, $url, %args_of ) = @_;
|
||||||
if (%args_of) {
|
if (%args_of) {
|
||||||
is $args_of{foo}, 'bar';
|
is $args_of{foo}, 'bar';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
ok my $client = SOAP::WSDL::Client->new();
|
|
||||||
|
|
||||||
ok $client = SOAP::WSDL::Client->new({
|
sub test_client_basics {
|
||||||
proxy => 'http://localhost',
|
ok my $client = SOAP::WSDL::Client->new();
|
||||||
});
|
ok $client = SOAP::WSDL::Client->new( {proxy => 'http://localhost',} );
|
||||||
|
is $client->get_content_type(), 'text/xml; charset=utf-8';
|
||||||
|
is $client->get_endpoint(), 'http://localhost';
|
||||||
|
$client->set_proxy( 'http://localhost', foo => 'bar', );
|
||||||
|
|
||||||
is $client->get_content_type(), 'text/xml; charset=utf-8';
|
#TODO is this behaviour still required? declare as deprecated and remove...
|
||||||
|
$client->set_proxy( ['http://localhost', foo => 'bar',] );
|
||||||
|
|
||||||
is $client->get_endpoint(), 'http://localhost';
|
is $client->get_proxy(), $client->get_transport(),
|
||||||
|
'get_proxy returns same as get_transport';
|
||||||
|
|
||||||
$client->set_proxy('http://localhost',
|
ok $client->set_soap_version('1.1');
|
||||||
foo => 'bar',
|
is $client->get_soap_version(), '1.1';
|
||||||
);
|
|
||||||
|
|
||||||
#TODO is this behaviour still required? declare as deprecated and remove...
|
$client->set_deserializer_args( {strict => 0} );
|
||||||
$client->set_proxy(
|
is $client->get_deserializer_args()->{strict}, 0;
|
||||||
[ 'http://localhost',
|
}
|
||||||
foo => 'bar',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
|
sub test_call {
|
||||||
|
my $client = SOAP::WSDL::Client->new();
|
||||||
|
$client->no_dispatch(1);
|
||||||
|
$client->set_serializer('main');
|
||||||
|
my $serialize = $client->call(
|
||||||
|
{operation => 'testMethod'},
|
||||||
|
{foo => 'bar'},
|
||||||
|
{bar => 'baz'} );
|
||||||
|
is $serialize->{body}->{foo}, 'bar';
|
||||||
|
is $serialize->{header}->{bar}, 'baz';
|
||||||
|
|
||||||
is $client->get_proxy(), $client->get_transport(), 'get_proxy returns same as get_transport';
|
# Old calling style compatibility test - foo => bar is body...
|
||||||
|
$serialize = $client->call( {operation => 'testMethod'}, foo => 'bar' );
|
||||||
|
is $serialize->{body}->{foo}, 'bar';
|
||||||
|
|
||||||
ok $client->set_soap_version('1.1');
|
# Old calling style compatibility test - foo => bar is body...
|
||||||
is $client->get_soap_version(), '1.1';
|
$serialize = $client->call( 'testMethod', foo => 'bar' );
|
||||||
|
is $serialize->{body}->{foo}, 'bar';
|
||||||
$client->no_dispatch(1);
|
}
|
||||||
$client->set_serializer('main');
|
|
||||||
my $serialize = $client->call({
|
|
||||||
operation => 'testMethod'
|
|
||||||
}, { foo => 'bar'}, { bar => 'baz'});
|
|
||||||
is $serialize->{ body }->{ foo }, 'bar';
|
|
||||||
is $serialize->{ header }->{ bar }, 'baz';
|
|
||||||
|
|
||||||
# Old calling style compatibility test - foo => bar is body...
|
|
||||||
$serialize = $client->call({
|
|
||||||
operation => 'testMethod'
|
|
||||||
}, foo => 'bar');
|
|
||||||
is $serialize->{ body }->{ foo }, 'bar';
|
|
||||||
|
|
||||||
# Old calling style compatibility test - foo => bar is body...
|
|
||||||
$serialize = $client->call('testMethod', foo => 'bar');
|
|
||||||
is $serialize->{ body }->{ foo }, 'bar';
|
|
||||||
|
|
||||||
sub serialize {
|
sub serialize {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return shift;
|
return shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
$client->set_deserializer_args({ strict => 0 });
|
|
||||||
is $client->get_deserializer_args()->{ strict }, 0;
|
sub test_deserializer_fault {
|
||||||
|
|
||||||
|
my $client = SOAP::WSDL::Client->new();
|
||||||
|
$client->set_deserializer( FaultDeserializer->new() );
|
||||||
|
$client->set_transport( SOAP::WSDL::Transport::Loopback->new() );
|
||||||
|
|
||||||
|
my $fault = $client->call(
|
||||||
|
{operation => 'testMethod'},
|
||||||
|
{foo => 'bar'},
|
||||||
|
{bar => 'baz'} );
|
||||||
|
|
||||||
|
ok( (blessed $fault and $fault->isa('SOAP::WSDL::SOAP::Typelib::Fault11')),
|
||||||
|
'Return fault on throwing during deserialization ' . $@);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
test_client_basics();
|
||||||
|
test_call();
|
||||||
|
test_deserializer_fault();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use Test::More tests => 14;
|
use Test::More tests => 15;
|
||||||
use File::Basename qw(dirname);
|
use File::Basename qw(dirname);
|
||||||
use File::Spec;
|
use File::Spec;
|
||||||
use File::Path;
|
use File::Path;
|
||||||
@@ -63,6 +63,8 @@ use_ok qw(MyInterfaces::My::SOAP::testService::testPort);
|
|||||||
use_ok qw(MyServer::My::SOAP::testService::testPort);
|
use_ok qw(MyServer::My::SOAP::testService::testPort);
|
||||||
use_ok qw(MyTypes::testComplexTypeRestriction);
|
use_ok qw(MyTypes::testComplexTypeRestriction);
|
||||||
use_ok qw(MyTypes::testComplexTypeAll);
|
use_ok qw(MyTypes::testComplexTypeAll);
|
||||||
|
# type with dot in name including atomic type
|
||||||
|
use_ok qw(MyTypes::test::ComplexTypeElementAtomicSimpleType);
|
||||||
SKIP: {
|
SKIP: {
|
||||||
eval { require Test::Pod::Content; }
|
eval { require Test::Pod::Content; }
|
||||||
or skip 'Cannot test pod content without Test::Pod::Content', 6;
|
or skip 'Cannot test pod content without Test::Pod::Content', 6;
|
||||||
|
|||||||
@@ -73,16 +73,18 @@ __PACKAGE__->_factory(
|
|||||||
);
|
);
|
||||||
|
|
||||||
package MyElementSimpleContent;
|
package MyElementSimpleContent;
|
||||||
use base qw(
|
{
|
||||||
SOAP::WSDL::XSD::Typelib::Element
|
use base qw(
|
||||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
SOAP::WSDL::XSD::Typelib::Element
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::string
|
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||||
);
|
SOAP::WSDL::XSD::Typelib::Builtin::string
|
||||||
|
);
|
||||||
|
|
||||||
__PACKAGE__->__set_name( 'MyElementSimpleContent' );
|
__PACKAGE__->__set_name( 'MyElementSimpleContent' );
|
||||||
|
|
||||||
sub __get_attr_class { 'MyElement::_ATTR' };
|
|
||||||
|
|
||||||
|
sub __get_attr_class { 'MyElement::_ATTR' };
|
||||||
|
sub get_xmlns { 'http://www.w3.org/2001/XMLSchema' }
|
||||||
|
}
|
||||||
package main;
|
package main;
|
||||||
use Test::More tests => 127;
|
use Test::More tests => 127;
|
||||||
use Storable;
|
use Storable;
|
||||||
@@ -392,4 +394,4 @@ ok ! exists $obj->as_hash_ref(1)->{ xmlattr };
|
|||||||
local $SOAP::WSDL::XSD::Typelib::ComplexType::AS_HASH_REF_WITHOUT_ATTRIBUTES = 1;
|
local $SOAP::WSDL::XSD::Typelib::ComplexType::AS_HASH_REF_WITHOUT_ATTRIBUTES = 1;
|
||||||
ok ! exists $obj->as_hash_ref()->{ xmlattr };
|
ok ! exists $obj->as_hash_ref()->{ xmlattr };
|
||||||
ok ! exists $obj->as_hash_ref(1)->{ xmlattr };
|
ok ! exists $obj->as_hash_ref(1)->{ xmlattr };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
</xsd:complexContent>
|
</xsd:complexContent>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
|
|
||||||
<xsd:complexType name="testComplexTypeChoice">
|
<xsd:complexType name="test.ComplexTypeChoice">
|
||||||
<xsd:annotation>
|
<xsd:annotation>
|
||||||
<xsd:documentation>ComplexType Test</xsd:documentation>
|
<xsd:documentation>ComplexType Test</xsd:documentation>
|
||||||
</xsd:annotation>
|
</xsd:annotation>
|
||||||
@@ -179,14 +179,14 @@
|
|||||||
|
|
||||||
<xsd:element name="Header" type="tns:testComplexTypeSequence" />
|
<xsd:element name="Header" type="tns:testComplexTypeSequence" />
|
||||||
<xsd:element name="testHeader" type="tns:testComplexTypeSequence" />
|
<xsd:element name="testHeader" type="tns:testComplexTypeSequence" />
|
||||||
<xsd:element name="testChoice" type="tns:testComplexTypeChoice" />
|
<xsd:element name="test.Choice" type="tns:test.ComplexTypeChoice" />
|
||||||
|
|
||||||
|
|
||||||
<xsd:complexType name="testComplexTypeElementAtomicSimpleType">
|
<xsd:complexType name="test.ComplexTypeElementAtomicSimpleType">
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="testString" type="xsd:string"
|
<xsd:element name="testString" type="xsd:string"
|
||||||
minOccurs="0" />
|
minOccurs="0" />
|
||||||
<xsd:element name="testAtomicSimpleTypeElement"
|
<xsd:element name="test.AtomicSimpleTypeElement"
|
||||||
minOccurs="0">
|
minOccurs="0">
|
||||||
<xsd:simpleType>
|
<xsd:simpleType>
|
||||||
<xsd:restriction base="xsd:decimal">
|
<xsd:restriction base="xsd:decimal">
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
</types>
|
</types>
|
||||||
<message name="testChoice">
|
<message name="testChoice">
|
||||||
<part name="parameters" element="tns:testChoice" />
|
<part name="parameters" element="tns:test.Choice" />
|
||||||
</message>
|
</message>
|
||||||
<message name="testRequest">
|
<message name="testRequest">
|
||||||
<part name="testAll" element="tns:testElementString" />
|
<part name="testAll" element="tns:testElementString" />
|
||||||
@@ -219,7 +219,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message name="testMultiPartWarning">
|
<message name="testMultiPartWarning">
|
||||||
<part name="testAll" element="tns:testElementString" />
|
<part name="testAll" element="tns:testElementString" />
|
||||||
<part name="parameters" element="tns:testChoice" />
|
<part name="parameters" element="tns:test.Choice" />
|
||||||
</message>
|
</message>
|
||||||
<message name="testHeaderRequest">
|
<message name="testHeaderRequest">
|
||||||
<part name="testBody" element="tns:testHeader" />
|
<part name="testBody" element="tns:testHeader" />
|
||||||
|
|||||||
270
t/lib/CodeFirst.pm
Normal file → Executable file
270
t/lib/CodeFirst.pm
Normal file → Executable file
@@ -1,63 +1,251 @@
|
|||||||
package CodeFirst;
|
package CodeFirst;
|
||||||
use strict;
|
use Moose;
|
||||||
use warnings;
|
|
||||||
use Carp;
|
use Carp;
|
||||||
use Class::Std::Fast::Storable;
|
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
|
use XML::LibXML;
|
||||||
|
|
||||||
|
use parent qw(Attribute::Handlers);
|
||||||
|
|
||||||
our $VERSION = 0.1;
|
our $VERSION = 0.1;
|
||||||
|
|
||||||
$Carp::Internal{attributes}++;
|
|
||||||
|
|
||||||
my %ACTION_MAP_OF;
|
my %ACTION_MAP_OF;
|
||||||
|
my %ACTION_DATA_OF;
|
||||||
|
my %SCHEMA_DATA_OF;
|
||||||
|
|
||||||
my %transport_class_of :ATTR(:name<transport_class> :default<SOAP::WSDL::Server::CGI>);
|
has 'schema' => is => 'rw';
|
||||||
my %transport_of : ATTR(:name<transport> :default<()>);
|
|
||||||
my %dispatch_to : ATTR(:name<dispatch_to> :default<()>);
|
|
||||||
|
|
||||||
sub START {
|
has 'typeMap' => is => 'rw',
|
||||||
my ( $self, $ident, $arg_ref ) = @_;
|
isa => 'CodeFirst::Types',
|
||||||
my $class = ref $self;
|
default => sub { CodeFirst::Types->new() };
|
||||||
eval "require $transport_class_of{ $ident }"
|
|
||||||
or die "Cannot load transport class $transport_class_of{ $ident }: $@";
|
|
||||||
$transport_of{$ident} = $transport_class_of{$ident}->new( {
|
|
||||||
action_map_ref => $ACTION_MAP_OF{$class},
|
|
||||||
dispatch_to => $self
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
sub handle {
|
sub WebMethod : ATTR {
|
||||||
$transport_of{${$_[0]}}->handle( @_[1 .. $#_] );
|
my (
|
||||||
}
|
$class, $symbol, $referent, $attr,
|
||||||
|
$data, $phase, $filename, $linenum
|
||||||
|
) = @_;
|
||||||
|
|
||||||
sub _action_map {
|
my %parameter_of;
|
||||||
my $class = ref $_[0];
|
eval { %parameter_of = @{$data} };
|
||||||
return $ACTION_MAP_OF{$class};
|
|
||||||
}
|
|
||||||
|
|
||||||
no warnings qw(redefine);
|
|
||||||
|
|
||||||
sub MODIFY_CODE_ATTRIBUTES {
|
|
||||||
my ( $class, $code, @attribute_from ) = @_;
|
|
||||||
|
|
||||||
my ($content) = grep { $_ =~ m{^WebMethod}xms } @attribute_from
|
|
||||||
or return @attribute_from;
|
|
||||||
|
|
||||||
$content =~ s{^WebMethod}{}xms;
|
|
||||||
my %parameter_of = eval $content;
|
|
||||||
if ($@) {
|
if ($@) {
|
||||||
die "Cannot parse :WebMethod arguments: $@ at " . Carp::shortmess;
|
die "Cannot parse :WebMethod arguments: $@ at " . Carp::shortmess;
|
||||||
}
|
}
|
||||||
|
|
||||||
$ACTION_MAP_OF{$class}->{$parameter_of{action}} = $code;
|
$ACTION_MAP_OF{$class}->{$parameter_of{action}} = $symbol;
|
||||||
|
|
||||||
# print Dumper \%ACTION_MAP_OF;
|
$ACTION_DATA_OF{$class}->{$parameter_of{action}} = {
|
||||||
|
name => $parameter_of{name},
|
||||||
|
request => {
|
||||||
|
body => $parameter_of{request_body},
|
||||||
|
header => $parameter_of{request_header},
|
||||||
|
},
|
||||||
|
response => {
|
||||||
|
body => $parameter_of{response_body},
|
||||||
|
header => $parameter_of{response_header},
|
||||||
|
}};
|
||||||
|
|
||||||
return Class::Std::Fast::MODIFY_CODE_ATTRIBUTES( $class, $code,
|
$SCHEMA_DATA_OF{$class}->{$parameter_of{request_header}} = undef
|
||||||
@attribute_from );
|
if ( $parameter_of{request_header} );
|
||||||
|
$SCHEMA_DATA_OF{$class}->{$parameter_of{request_body}} = undef
|
||||||
|
if ( $parameter_of{request_body} );
|
||||||
|
$SCHEMA_DATA_OF{$class}->{$parameter_of{response_header}} = undef
|
||||||
|
if ( $parameter_of{response_header} );
|
||||||
|
$SCHEMA_DATA_OF{$class}->{$parameter_of{response_body}} = undef
|
||||||
|
if ( $parameter_of{response_body} );
|
||||||
|
|
||||||
|
#use Data::Dumper;
|
||||||
|
#print Dumper \%ACTION_DATA_OF;
|
||||||
|
|
||||||
|
#return Class::Std::Fast::MODIFY_CODE_ATTRIBUTES( $class, $code,
|
||||||
|
# @attribute_from );
|
||||||
|
return; # @attribute_from;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_wsdl {
|
||||||
|
my $self = shift;
|
||||||
|
my $class = ref $self;
|
||||||
|
my $address = shift;
|
||||||
|
|
||||||
|
my $className = $class;
|
||||||
|
$className =~ s{::}{.}xg;
|
||||||
|
my XML::LibXML::Document $doc = XML::LibXML::Document->new();
|
||||||
|
my $root = XML::LibXML::Element->new("definitions");
|
||||||
|
$root->setNamespace( 'http://schemas.xmlsoap.org/wsdl/', undef, 1 );
|
||||||
|
$root->setNamespace( 'http://www.w3.org/2001/XMLSchema', 'xs', 0 );
|
||||||
|
$root->setNamespace( 'http://schemas.xmlsoap.org/wsdl/soap/', 'soap', 0 );
|
||||||
|
$root->setNamespace( 'uri:MooseX.SOAP.' . $className, 'tns', 0 );
|
||||||
|
$root->setAttribute( 'targetNamespace', 'uri:MooseX.SOAP.' . $className );
|
||||||
|
|
||||||
|
$doc->setDocumentElement($root);
|
||||||
|
|
||||||
|
my $type = XML::LibXML::Element->new('types');
|
||||||
|
$root->appendChild($type);
|
||||||
|
|
||||||
|
my $schema = $self->create_schema($className);
|
||||||
|
$type->appendChild($schema);
|
||||||
|
|
||||||
|
my $portType = XML::LibXML::Element->new('portType');
|
||||||
|
$portType->setAttribute( 'name', $className . 'SOAP11' );
|
||||||
|
|
||||||
|
my $binding = XML::LibXML::Element->new('binding');
|
||||||
|
$binding->setAttribute( 'name', $className . 'SOAP11Binding' );
|
||||||
|
$binding->setAttribute( 'type', 'tns:' . $className . 'SOAP11' );
|
||||||
|
|
||||||
|
# <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
||||||
|
# style="document" />
|
||||||
|
my $soapBinding = XML::LibXML::Element->new('binding');
|
||||||
|
$soapBinding->setNamespace( 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||||
|
'soap', 1 );
|
||||||
|
$soapBinding->setAttribute( 'transport',
|
||||||
|
'http://schemas.xmlsoap.org/soap/http' );
|
||||||
|
$soapBinding->setAttribute( 'style', 'document' );
|
||||||
|
$binding->appendChild($soapBinding);
|
||||||
|
|
||||||
|
for my $method ( keys %{$ACTION_DATA_OF{$class}} ) {
|
||||||
|
|
||||||
|
my $methodName = $ACTION_DATA_OF{$class}->{$method}->{name};
|
||||||
|
|
||||||
|
my $inElement = XML::LibXML::Element->new('element');
|
||||||
|
$inElement->setAttribute( 'name', $methodName );
|
||||||
|
$schema->appendChild($inElement);
|
||||||
|
|
||||||
|
my $outElement = XML::LibXML::Element->new('element');
|
||||||
|
$outElement->setAttribute( 'name', $methodName . 'Response' );
|
||||||
|
$schema->appendChild($outElement);
|
||||||
|
|
||||||
|
my $inMessage = XML::LibXML::Element->new('message');
|
||||||
|
$inMessage->setAttribute( 'name', $methodName . 'SoapIn' );
|
||||||
|
$root->appendChild($inMessage);
|
||||||
|
|
||||||
|
my $inMessageBodyPart = XML::LibXML::Element->new('part');
|
||||||
|
$inMessageBodyPart->setAttribute( 'name', 'input' );
|
||||||
|
$inMessageBodyPart->setAttribute( 'element', 'tns:' . $methodName );
|
||||||
|
$inMessage->appendChild($inMessageBodyPart);
|
||||||
|
|
||||||
|
my $outMessage = XML::LibXML::Element->new('message');
|
||||||
|
$outMessage->setAttribute( 'name', $methodName . 'SoapOut' );
|
||||||
|
$root->appendChild($outMessage);
|
||||||
|
|
||||||
|
my $outMessageBodyPart = XML::LibXML::Element->new('part');
|
||||||
|
$outMessageBodyPart->setAttribute( 'name', 'output' );
|
||||||
|
$outMessageBodyPart->setAttribute( 'element',
|
||||||
|
'tns:' . $methodName . 'Response' );
|
||||||
|
$outMessage->appendChild($outMessageBodyPart);
|
||||||
|
|
||||||
|
my $portOperation = XML::LibXML::Element->new('operation');
|
||||||
|
$portOperation->setAttribute( 'name', $methodName );
|
||||||
|
$portType->appendChild($portOperation);
|
||||||
|
|
||||||
|
my $inputMessage = XML::LibXML::Element->new('input');
|
||||||
|
$inputMessage->setAttribute( 'message',
|
||||||
|
'tns:' . $methodName . 'SoapIn' );
|
||||||
|
$portOperation->appendChild($inputMessage);
|
||||||
|
|
||||||
|
my $outputMessage = XML::LibXML::Element->new('output');
|
||||||
|
$outputMessage->setAttribute( 'message',
|
||||||
|
'tns:' . $methodName . 'SoapOut' );
|
||||||
|
$portOperation->appendChild($outputMessage);
|
||||||
|
|
||||||
|
my $bindingOperation = XML::LibXML::Element->new('operation');
|
||||||
|
$bindingOperation->setAttribute( 'name', $methodName );
|
||||||
|
$binding->appendChild($bindingOperation);
|
||||||
|
|
||||||
|
my $soapOperation = XML::LibXML::Element->new('operation');
|
||||||
|
$soapOperation->setNamespace( 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||||
|
'soap', 1 );
|
||||||
|
$soapOperation->setAttribute( 'soapAction', $method );
|
||||||
|
$soapOperation->setAttribute( 'style', 'document' );
|
||||||
|
|
||||||
|
$bindingOperation->appendChild($soapOperation);
|
||||||
|
|
||||||
|
my $bindingInput = XML::LibXML::Element->new('input');
|
||||||
|
$bindingOperation->appendChild($bindingInput);
|
||||||
|
my $soapInputBody = XML::LibXML::Element->new('body');
|
||||||
|
$soapInputBody->setNamespace( 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||||
|
'soap', 1 );
|
||||||
|
$soapInputBody->setAttribute( 'use', 'literal' );
|
||||||
|
$bindingInput->appendChild($soapInputBody);
|
||||||
|
|
||||||
|
my $bindingOutput = XML::LibXML::Element->new('output');
|
||||||
|
$bindingOperation->appendChild($bindingOutput);
|
||||||
|
|
||||||
|
my $soapOutputBody = XML::LibXML::Element->new('body');
|
||||||
|
$soapOutputBody->setNamespace(
|
||||||
|
'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||||
|
'soap', 1 );
|
||||||
|
$soapOutputBody->setAttribute( 'use', 'literal' );
|
||||||
|
$bindingOutput->appendChild($soapOutputBody);
|
||||||
|
|
||||||
|
}
|
||||||
|
$root->appendChild($portType);
|
||||||
|
$root->appendChild($binding);
|
||||||
|
|
||||||
|
my $service = XML::LibXML::Element->new('service');
|
||||||
|
$service->setAttribute( 'name', $className );
|
||||||
|
$root->appendChild($service);
|
||||||
|
|
||||||
|
my $port = XML::LibXML::Element->new('port');
|
||||||
|
$port->setAttribute( 'name', $className . 'PortSOAP' );
|
||||||
|
$port->setAttribute( 'binding', 'tns:' . $className . 'SOAP11Binding' );
|
||||||
|
|
||||||
|
my $soapAddress = XML::LibXML::Element->new('address');
|
||||||
|
$soapAddress->setNamespace( 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||||
|
'soap', 1 );
|
||||||
|
$soapAddress->setAttribute( 'location', $address );
|
||||||
|
|
||||||
|
$port->appendChild($soapAddress);
|
||||||
|
|
||||||
|
$service->appendChild($port);
|
||||||
|
|
||||||
|
$self->schema($schema);
|
||||||
|
|
||||||
|
return $doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub create_schema {
|
||||||
|
my ( $self, $className ) = @_;
|
||||||
|
|
||||||
|
my $class = ref $self;
|
||||||
|
|
||||||
|
my $schema = XML::LibXML::Element->new('schema');
|
||||||
|
$schema->setAttribute( 'targetNamespace',
|
||||||
|
'uri:MooseX.SOAP.' . $className );
|
||||||
|
$schema->setNamespace( 'http://www.w3.org/2001/XMLSchema', undef, 1 );
|
||||||
|
$schema->setNamespace( 'http://www.w3.org/2001/XMLSchema', 'xs', 0 );
|
||||||
|
$schema->setNamespace( 'uri:MooseX.SOAP.' . $className, 'tns', 0 );
|
||||||
|
|
||||||
|
for my $type ( keys %{$SCHEMA_DATA_OF{$class}} ) {
|
||||||
|
eval "require $type";
|
||||||
|
$schema->appendChild( $self->create_xsd_type($type) );
|
||||||
|
}
|
||||||
|
return $schema;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub create_xsd_type {
|
||||||
|
my $self = shift;
|
||||||
|
my $type = shift;
|
||||||
|
|
||||||
|
my $name = $type;
|
||||||
|
$name =~ s{::}{\.}xg;
|
||||||
|
|
||||||
|
my $node = XML::LibXML::Element->new('complexType');
|
||||||
|
$node->setNamespace( 'http://www.w3.org/2001/XMLSchema', undef, 1 );
|
||||||
|
$node->setAttribute( 'name', $name );
|
||||||
|
|
||||||
|
my $sequence = XML::LibXML::Element->new('sequence');
|
||||||
|
$node->appendChild($sequence);
|
||||||
|
|
||||||
|
my $typeMap = $self->typeMap->types();
|
||||||
|
|
||||||
|
for my $attribute ( reverse $type->meta()->get_all_attributes() ) {
|
||||||
|
my $attributeNode = XML::LibXML::Element->new('element');
|
||||||
|
$attributeNode->setAttribute( 'name', $attribute->name );
|
||||||
|
$attributeNode->setAttribute( 'type',
|
||||||
|
$typeMap->{$attribute->type_constraint} );
|
||||||
|
$sequence->appendChild($attributeNode);
|
||||||
|
}
|
||||||
|
return $node;
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
1;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user