Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3de318be40 | ||
|
|
c2ac24dd0f | ||
|
|
c3e3d1908e |
2
Build.PL
2
Build.PL
@@ -5,7 +5,7 @@ $build = Module::Build->new(
|
||||
create_makefile_pl => 'small',
|
||||
dist_abstract => 'SOAP with WSDL support',
|
||||
dist_name => 'SOAP-WSDL',
|
||||
dist_version => '2.00.03',
|
||||
dist_version => '2.00.06',
|
||||
module_name => 'SOAP::WSDL',
|
||||
license => 'artistic',
|
||||
requires => {
|
||||
|
||||
73
Changes
73
Changes
@@ -1,4 +1,4 @@
|
||||
Release notes for SOAP::WSDL 2.00.03
|
||||
Release notes for SOAP::WSDL 2.00.06
|
||||
-------
|
||||
|
||||
I'm proud to present a new release of SOAP::WSDL.
|
||||
@@ -27,7 +27,7 @@ Features:
|
||||
* SOAP::Lite like look and feel
|
||||
o Where possible, SOAP::WSDL mimics SOAP::Lite's API to allow easy migration
|
||||
* XML schema based class library for creating data objects
|
||||
* High-performance XML parser
|
||||
* High-performance SOAP Message parser
|
||||
* Plugin support. SOAP::WSDL can be extended through plugins in various aspects.
|
||||
The following plugins are supported:
|
||||
o Transport plugins via SOAP::WSDL::Factory::Transport
|
||||
@@ -36,6 +36,74 @@ Features:
|
||||
|
||||
The following changes have been made:
|
||||
|
||||
2.00.06 - Dec 03 2008
|
||||
|
||||
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/).
|
||||
|
||||
* #40658 wsdl2perl - prefix option
|
||||
The prefix option is now changed to behave more practical
|
||||
* #40802 wsdl2perl problems with special url
|
||||
The "fixed" attribute caused an error.
|
||||
* #40650 Deserialization on inherited types
|
||||
The inherited complexType variety (sequence/all/choice...) did not get
|
||||
propagated to derived complexTypes. Thus, derived complexTypes which did
|
||||
not add elements lost all inherited elements.
|
||||
* #40108 Test failure on Cygwin
|
||||
Fixes a test failure on Cygwin due to a malformed file:// URL
|
||||
* #40021 charset: utf-8
|
||||
Removed duplicate charset in HTTP requests issued by
|
||||
SOAP::WSDL::Transport::HTTP. Replaced the utf8 by utf-8 in HTTP requests
|
||||
* #39715 Error with complexType extension base without child elements
|
||||
A rather subtle error caused by a wrong init value (undef) for the list
|
||||
of child elements in a complexType sequence.
|
||||
* [ 2005693 ] <maxLength fixed ="true"> causes error
|
||||
* [ 2023797 ] type extensions not handled correctly
|
||||
ComplexType objects now test their elements with ->isa, not with ref
|
||||
* [ 2021755 ] Generating nested complexType extensions throws errors
|
||||
|
||||
2.00.05 - Jul 13 2008
|
||||
|
||||
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/).
|
||||
|
||||
* [ 2014482 ] Big-O memory hole when parsing WSDL
|
||||
SOAP::WSDL still leaks memory when using SOAP::Lite's transport backend
|
||||
This is to be fixed in 0.710.08 in SOAP::Lite
|
||||
* #36865 wsdl2perl.pl fails on Expat error
|
||||
Resolved by dropping a note for Solaris in README
|
||||
* [ 2005693 ] <maxLength fixed ="true"> causes error
|
||||
The >fixed< attribute is now recognized (but has no effect yet)
|
||||
|
||||
The following uncategorized improvements have been made:
|
||||
|
||||
* added missing Class::Std::Storable::Fast import flags to
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::IDREFS
|
||||
* some code cleanup
|
||||
|
||||
2.00.04
|
||||
|
||||
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/).
|
||||
|
||||
* [ 1972059 ] Can't set timeout via SOAP::WSDL
|
||||
* [ 1961409 ] Error with unqualified references in imported schema
|
||||
* #35873: SOAP::WSDL -- Can't locate object method "set_Action" via package "SOAP::WSDL::OpMessage"
|
||||
* [ 1969427 ] Mod_Perl.t broken when mod_perl is unavailable
|
||||
* #35610 Test fails when Test::Without::Module is installed
|
||||
|
||||
The following uncategorized improvements have been made:
|
||||
|
||||
* Changed the environment variable for author tests to "RELEASE_TESTING",
|
||||
as defined by the Oslo QA Hackathon 2008
|
||||
(see http://perl-qa.hexten.net/wiki/index.php/Oslo_QA_Hackathon_2008_:Achievements)
|
||||
* Enhanced documentation
|
||||
* Fixed a wrong error message
|
||||
* Cleaned up test suite (removed duplicate tests)
|
||||
|
||||
2.00.03 - May 18 2008
|
||||
|
||||
The following bugs have been fixed (the numbers in square brackets are the
|
||||
@@ -56,6 +124,7 @@ 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/).
|
||||
|
||||
* [ 1963613 ] ComplexTypes die on ->can('FOOBAR');
|
||||
* [ 1943667 ] Error parsing complexType/extension
|
||||
* [ 1960650 ] multi-level inheritance of complexTypes fails
|
||||
* [ 1960319 ] ComplexType as_hash_ref returns objects on maximum depth
|
||||
|
||||
15
MANIFEST
15
MANIFEST
@@ -273,14 +273,13 @@ README
|
||||
t/002_parse_wsdl.t
|
||||
t/003_wsdl_based_serializer.t
|
||||
t/006_client.t
|
||||
t/007_envelope.t
|
||||
t/008_client_wsdl_complexType.t
|
||||
t/009_data_classes.t
|
||||
t/011_simpleType.t
|
||||
t/012_element.t
|
||||
t/013_complexType.t
|
||||
t/016_client_object.t
|
||||
t/020_storable.t
|
||||
t/094_cpan_meta.t
|
||||
t/095_copying.t
|
||||
t/096_characters.t
|
||||
t/097_kwalitee.t
|
||||
@@ -332,7 +331,6 @@ t/acceptance/wsdl/WSDLParser/imported.xsd
|
||||
t/acceptance/wsdl/WSDLParser/xsd_import_no_location.wsdl
|
||||
t/acceptance/wsdl/WSDLParser_import_loop.wsdl
|
||||
t/contributed.wsdl
|
||||
t/Expat/03_wsdl.t
|
||||
t/lib/Mod_Perl2Test.pm
|
||||
t/lib/MyComplexType.pm
|
||||
t/lib/MyElement.pm
|
||||
@@ -362,6 +360,7 @@ t/SOAP/WSDL/05_simpleType-union.t
|
||||
t/SOAP/WSDL/06_keep_alive.t
|
||||
t/SOAP/WSDL/11_helloworld.NET.t
|
||||
t/SOAP/WSDL/12_binding.t
|
||||
t/SOAP/WSDL/Base.t
|
||||
t/SOAP/WSDL/Client.t
|
||||
t/SOAP/WSDL/Client/Base.t
|
||||
t/SOAP/WSDL/Definitions.t
|
||||
@@ -375,6 +374,7 @@ t/SOAP/WSDL/Factory/Deserializer.t
|
||||
t/SOAP/WSDL/Factory/Serializer.t
|
||||
t/SOAP/WSDL/Factory/Transport.t
|
||||
t/SOAP/WSDL/Generator/Template.t
|
||||
t/SOAP/WSDL/Generator/Template/XSD/Import.t
|
||||
t/SOAP/WSDL/Generator/Visitor.t
|
||||
t/SOAP/WSDL/Generator/Visitor/Typemap.t
|
||||
t/SOAP/WSDL/Generator/XSD.t
|
||||
@@ -403,7 +403,6 @@ t/SOAP/WSDL/XSD/Enumeration.t
|
||||
t/SOAP/WSDL/XSD/Schema.t
|
||||
t/SOAP/WSDL/XSD/SimpleType.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Attribute.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/01_constructors.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/anyType.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.t
|
||||
@@ -414,8 +413,14 @@ t/SOAP/WSDL/XSD/Typelib/Builtin/date.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/decimal.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/double.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/duration.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/float.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/gDay.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/gYear.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/ID.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.t
|
||||
@@ -435,6 +440,7 @@ t/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/QName.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/short.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/string.t
|
||||
t/SOAP/WSDL/XSD/Typelib/Builtin/time.t
|
||||
@@ -452,4 +458,5 @@ t/SOAP/WSDL_NO_MESSAGE.wsdl
|
||||
t/SOAP/WSDL_NO_PORTTYPE.wsdl
|
||||
t/test.wsdl
|
||||
TEST_COVERAGE
|
||||
test_html.pl
|
||||
TODO
|
||||
|
||||
164
META.yml
164
META.yml
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: SOAP-WSDL
|
||||
version: 2.00.03
|
||||
version: 2.00.06
|
||||
author:
|
||||
- 'Martin Kutter <martin.kutter@fen-net.de>'
|
||||
abstract: SOAP with WSDL support
|
||||
@@ -41,220 +41,220 @@ build_requires:
|
||||
provides:
|
||||
SOAP::WSDL:
|
||||
file: lib/SOAP/WSDL.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.06
|
||||
SOAP::WSDL::Base:
|
||||
file: lib/SOAP/WSDL/Base.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Binding:
|
||||
file: lib/SOAP/WSDL/Binding.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Client:
|
||||
file: lib/SOAP/WSDL/Client.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Client::Base:
|
||||
file: lib/SOAP/WSDL/Client/Base.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Definitions:
|
||||
file: lib/SOAP/WSDL/Definitions.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Deserializer::Hash:
|
||||
file: lib/SOAP/WSDL/Deserializer/Hash.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Deserializer::SOM:
|
||||
file: lib/SOAP/WSDL/Deserializer/SOM.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Deserializer::XSD:
|
||||
file: lib/SOAP/WSDL/Deserializer/XSD.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Expat::Base:
|
||||
file: lib/SOAP/WSDL/Expat/Base.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Expat::Message2Hash:
|
||||
file: lib/SOAP/WSDL/Expat/Message2Hash.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Expat::MessageParser:
|
||||
file: lib/SOAP/WSDL/Expat/MessageParser.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Expat::MessageStreamParser:
|
||||
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Expat::WSDLParser:
|
||||
file: lib/SOAP/WSDL/Expat/WSDLParser.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Factory::Deserializer:
|
||||
file: lib/SOAP/WSDL/Factory/Deserializer.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Factory::Generator:
|
||||
file: lib/SOAP/WSDL/Factory/Generator.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Factory::Serializer:
|
||||
file: lib/SOAP/WSDL/Factory/Serializer.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Factory::Transport:
|
||||
file: lib/SOAP/WSDL/Factory/Transport.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Iterator::WSDL11:
|
||||
file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::PrefixResolver:
|
||||
file: lib/SOAP/WSDL/Generator/PrefixResolver.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Template:
|
||||
file: lib/SOAP/WSDL/Generator/Template.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Template::Plugin::XSD:
|
||||
file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Template::XSD:
|
||||
file: lib/SOAP/WSDL/Generator/Template/XSD.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Visitor:
|
||||
file: lib/SOAP/WSDL/Generator/Visitor.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Visitor::Typelib:
|
||||
file: lib/SOAP/WSDL/Generator/Visitor/Typelib.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Generator::Visitor::Typemap:
|
||||
file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Message:
|
||||
file: lib/SOAP/WSDL/Message.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::OpMessage:
|
||||
file: lib/SOAP/WSDL/OpMessage.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Operation:
|
||||
file: lib/SOAP/WSDL/Operation.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Part:
|
||||
file: lib/SOAP/WSDL/Part.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Port:
|
||||
file: lib/SOAP/WSDL/Port.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::PortType:
|
||||
file: lib/SOAP/WSDL/PortType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::Address:
|
||||
file: lib/SOAP/WSDL/SOAP/Address.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::Body:
|
||||
file: lib/SOAP/WSDL/SOAP/Body.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::Header:
|
||||
file: lib/SOAP/WSDL/SOAP/Header.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::HeaderFault:
|
||||
file: lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::Operation:
|
||||
file: lib/SOAP/WSDL/SOAP/Operation.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::SOAP::Typelib::Fault11:
|
||||
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Serializer::XSD:
|
||||
file: lib/SOAP/WSDL/Serializer/XSD.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Server:
|
||||
file: lib/SOAP/WSDL/Server.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Server::CGI:
|
||||
file: lib/SOAP/WSDL/Server/CGI.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.06
|
||||
SOAP::WSDL::Server::Mod_Perl2:
|
||||
file: lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Service:
|
||||
file: lib/SOAP/WSDL/Service.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Transport::HTTP:
|
||||
file: lib/SOAP/WSDL/Transport/HTTP.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Transport::Loopback:
|
||||
file: lib/SOAP/WSDL/Transport/Loopback.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Transport::Test:
|
||||
file: lib/SOAP/WSDL/Transport/Test.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::TypeLookup:
|
||||
file: lib/SOAP/WSDL/TypeLookup.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::Types:
|
||||
file: lib/SOAP/WSDL/Types.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Annotation:
|
||||
file: lib/SOAP/WSDL/XSD/Annotation.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Attribute:
|
||||
file: lib/SOAP/WSDL/XSD/Attribute.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::AttributeGroup:
|
||||
file: lib/SOAP/WSDL/XSD/AttributeGroup.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Builtin:
|
||||
file: lib/SOAP/WSDL/XSD/Builtin.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::ComplexType:
|
||||
file: lib/SOAP/WSDL/XSD/ComplexType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.06
|
||||
SOAP::WSDL::XSD::Element:
|
||||
file: lib/SOAP/WSDL/XSD/Element.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Enumeration:
|
||||
file: lib/SOAP/WSDL/XSD/Enumeration.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::FractionDigits:
|
||||
file: lib/SOAP/WSDL/XSD/FractionDigits.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Group:
|
||||
file: lib/SOAP/WSDL/XSD/Group.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Length:
|
||||
file: lib/SOAP/WSDL/XSD/Length.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MaxExclusive:
|
||||
file: lib/SOAP/WSDL/XSD/MaxExclusive.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MaxInclusive:
|
||||
file: lib/SOAP/WSDL/XSD/MaxInclusive.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MaxLength:
|
||||
file: lib/SOAP/WSDL/XSD/MaxLength.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MinExclusive:
|
||||
file: lib/SOAP/WSDL/XSD/MinExclusive.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MinInclusive:
|
||||
file: lib/SOAP/WSDL/XSD/MinInclusive.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::MinLength:
|
||||
file: lib/SOAP/WSDL/XSD/MinLength.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Pattern:
|
||||
file: lib/SOAP/WSDL/XSD/Pattern.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Schema:
|
||||
file: lib/SOAP/WSDL/XSD/Schema.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Schema::Builtin:
|
||||
file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::SimpleType:
|
||||
file: lib/SOAP/WSDL/XSD/SimpleType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::TotalDigits:
|
||||
file: lib/SOAP/WSDL/XSD/TotalDigits.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Attribute:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::AttributeSet:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Builtin:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::ENTITY:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::ID:
|
||||
@@ -279,14 +279,14 @@ provides:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::anyType:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::anyURI:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::base64Binary:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::boolean:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::byte:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::date:
|
||||
@@ -339,7 +339,7 @@ provides:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::time:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::token:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte:
|
||||
@@ -352,20 +352,20 @@ provides:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
|
||||
version: 2.1.0
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::Element:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/Element.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::SimpleType:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::Typelib::SimpleType::restriction:
|
||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||
version: 2.00.03
|
||||
version: 2.00.05
|
||||
SOAP::WSDL::XSD::WhiteSpace:
|
||||
file: lib/SOAP/WSDL/XSD/WhiteSpace.pm
|
||||
version: 2.00.03
|
||||
generated_by: Module::Build version 0.2808
|
||||
version: 2.00.05
|
||||
generated_by: Module::Build version 0.3
|
||||
meta-spec:
|
||||
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
||||
version: 1.2
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# Note: this file was auto-generated by Module::Build::Compat version 0.03
|
||||
# Note: this file was auto-generated by Module::Build::Compat version 0.30
|
||||
require 5.8.0;
|
||||
use Module::Build::Compat 0.02;
|
||||
|
||||
Module::Build::Compat->run_build_pl(args => \@ARGV);
|
||||
|
||||
11
README
11
README
@@ -41,4 +41,13 @@ If you don't have Module::Build installed, you may also use
|
||||
make install
|
||||
|
||||
Note that Module::Build is the recommended installer - make will not run
|
||||
all tests provided with SOAP-WSDL.
|
||||
all tests provided with SOAP-WSDL.
|
||||
|
||||
SOLARIS INSTALLATION NOTES
|
||||
--------------------------
|
||||
According to a CPAN RT report http://rt.cpan.org/Ticket/Display.html?id=36865
|
||||
it may be necessary to check (and possibly update) the expat libraries
|
||||
required by XML::Parser.
|
||||
|
||||
SOAP::WSDL's metadata includes XML::Parser, but it seems that the expat
|
||||
libraries XML::Parser depends on may slip through missing or outdated.
|
||||
@@ -6,12 +6,18 @@
|
||||
# Note that this shell script requires Devel::CoverX::Covered - if you
|
||||
# don't have it, comment out the line noted below
|
||||
#
|
||||
cd t/
|
||||
cover -delete
|
||||
find . -type f -name '*.t' | xargs -n 1 /usr/bin/perl -MDevel::Cover=-silent,1,-summary,0 -I../lib > /dev/null
|
||||
|
||||
perl -Ilib -It/lib -MTAP::Harness -MFile::Find::Rule -e '
|
||||
local $ENV{TEST_VERBOSE} = 1;
|
||||
TAP::Harness->new({
|
||||
merge => 1,
|
||||
lib => [ q{t/lib}, q{lib} ],
|
||||
switches => [ q{-MDevel::Cover=-ignore,.,-select,^lib/.+,-coverage,statement,-coverage,subroutine,-coverage,condition,-coverage,branch} ],
|
||||
})->runtests( sort { $a cmp $b } File::Find::Rule->file()->name( q{*.t} )->in( q{t/} ) );
|
||||
'
|
||||
|
||||
# Devel::CoverX::Covered
|
||||
covered runs
|
||||
# covered runs
|
||||
|
||||
cover -ignore_re \.t$ -ignore_re ^lib -coverage="statement" -coverage=condition -coverage=subroutine -coverage="branch"
|
||||
cover -coverage="statement" -coverage=condition -coverage=subroutine -coverage="branch"
|
||||
|
||||
|
||||
@@ -82,17 +82,17 @@ my $person = {
|
||||
my $compile = XML::Compile::WSDL11->new('../example/wsdl/Person.wsdl',
|
||||
sloppy_integers => 1,
|
||||
check_values => 0,
|
||||
check_values => 0,
|
||||
validation => 0,
|
||||
ignore_facets => 1,
|
||||
);
|
||||
|
||||
#
|
||||
# Call all variants once to allow their first-time tasks to be done
|
||||
#
|
||||
|
||||
my $call = $compile->compileClient('ListPerson');
|
||||
$call->({ in => undef});
|
||||
|
||||
# Initialize SOAP::Lite
|
||||
my $deserializer = SOAP::Deserializer->new();
|
||||
|
||||
# Initialize SOAP::WSDL interface
|
||||
my $soap = MyInterfaces::TestService::TestPort->new();
|
||||
# Load all classes - XML::Compile has created everything before, too
|
||||
@@ -102,6 +102,15 @@ my $lite = SOAP::Lite->new()->default_ns('http://www.example.org/benchmark/')
|
||||
->proxy('http://localhost:81/soap-wsdl-test/person.pl');
|
||||
$lite->on_action( sub { 'http://www.example.org/benchmark/ListPerson' } );
|
||||
|
||||
$lite->ListPerson();
|
||||
|
||||
my $lite_xml = SOAP::Lite->new()->default_ns('http://www.example.org/benchmark/')
|
||||
->proxy('http://localhost:81/soap-wsdl-test/person.pl');
|
||||
$lite_xml->on_action( sub { 'http://www.example.org/benchmark/ListPerson' } );
|
||||
$lite_xml->outputxml(1);
|
||||
|
||||
$lite_xml->ListPerson();
|
||||
|
||||
# # register for SOAP 1.1
|
||||
SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
|
||||
my $wsdl_xs = MyInterfaces::TestService::TestPort->new();
|
||||
@@ -114,24 +123,34 @@ SOAP::Lite - $SOAP::Lite::VERSION
|
||||
SOAP::WSDL - $SOAP::WSDL::Client::VERSION
|
||||
SOAP::WSDL_XS - $SOAP::WSDL::Deserializer::XSD_XS::VERSION;
|
||||
XML::Compile::SOAP - $XML::Compile::SOAP::VERSION
|
||||
XML::Simple - $XML::Simple::VERSION
|
||||
|
||||
XML::Simple uses XML::Parser as backend and SOAP::Lite with
|
||||
outputxml(1) set as SOAP client.
|
||||
XML::Parser - $XML::Parser::VERSION
|
||||
|
||||
XML::Simple is not benchmarked in run 3ff, as it is expected
|
||||
do deliver the same result.
|
||||
|
||||
Benchmark $n: Store result in private variable and destroy it
|
||||
";
|
||||
$n++;
|
||||
cmpthese $count, {
|
||||
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({}) },
|
||||
'XML::Compile' => sub { my $result = $call->() },
|
||||
'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({}) },
|
||||
'SOAP::Lite' => sub { my $som = $lite->call('ListPerson') },
|
||||
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({}) },
|
||||
'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({}) },
|
||||
'XML::Compile' => sub { my $result = $call->() },
|
||||
'XML::Simple' => sub { my $result = XMLin( $lite_xml->call('ListPerson')) },
|
||||
};
|
||||
|
||||
print "\nBenchmark $n: Push result on list\n";
|
||||
$n++;
|
||||
cmpthese $count, {
|
||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||
'XML::Compile' => sub { push @data, $call->() },
|
||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||
'SOAP::Lite' => sub { push @data, $lite->call('ListPerson') },
|
||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||
'XML::Compile' => sub { push @data, $call->() },
|
||||
'XML::Simple' => sub { push @data, XMLin( $lite_xml->call('ListPerson')) },
|
||||
};
|
||||
|
||||
@data = ();
|
||||
|
||||
@@ -5,7 +5,7 @@ use lib '../../SOAP-WSDL_XS/blib/arch';
|
||||
use strict;
|
||||
use Benchmark;
|
||||
use Storable;
|
||||
#use SOAP::WSDL::Deserializer::XSD_XS;
|
||||
use SOAP::WSDL::Deserializer::XSD_XS;
|
||||
use SOAP::WSDL::Factory::Deserializer;
|
||||
# # register for SOAP 1.1
|
||||
SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
|
||||
@@ -16,10 +16,10 @@ my @data = ();
|
||||
my $soap = MyInterfaces::TestService::TestPort->new();
|
||||
|
||||
# Load all classes - XML::Compile has created everything before, too
|
||||
#timethis 100, sub { $soap->ListPerson({}) };
|
||||
#timethis 50, sub { push @data, $soap->ListPerson({}) };
|
||||
#@data = ();
|
||||
# timethis 50, sub { push @data, $soap->ListPerson({}) };
|
||||
timethis 150, sub { $soap->ListPerson({}) };
|
||||
timethis 300, sub { push @data, $soap->ListPerson({}) };
|
||||
@data = ();
|
||||
timethis 300, sub { push @data, $soap->ListPerson({}) };
|
||||
|
||||
# for (1..50) { push @data, $soap->ListPerson({}) };
|
||||
#print $soap->ListPerson({});
|
||||
|
||||
@@ -10,13 +10,13 @@ use Term::ReadKey;
|
||||
|
||||
my %opt = (
|
||||
url => '',
|
||||
prefix => undef,
|
||||
attribute_prefix => 'MyAttributes',
|
||||
type_prefix => 'MyTypes',
|
||||
element_prefix => 'MyElements',
|
||||
typemap_prefix => 'MyTypemaps',
|
||||
interface_prefix => 'MyInterfaces',
|
||||
server_prefix => 'MyServer',
|
||||
prefix => 'My',
|
||||
attribute_prefix => undef,
|
||||
type_prefix => undef,
|
||||
element_prefix => undef,
|
||||
typemap_prefix => undef,
|
||||
interface_prefix => undef,
|
||||
server_prefix => undef,
|
||||
base_path => 'lib/',
|
||||
proxy => undef,
|
||||
generator => 'XSD',
|
||||
@@ -91,6 +91,20 @@ my $parser = SOAP::WSDL::Expat::WSDLParser->new({
|
||||
user_agent => $lwp,
|
||||
});
|
||||
|
||||
# resolve the default prefix options
|
||||
map {
|
||||
my $opt_key = $_;
|
||||
if ( $opt_key =~ / (\w+) _prefix $/xms # relevant option
|
||||
&& !$opt{ $opt_key } # that hasn't already been explicitly set
|
||||
)
|
||||
{
|
||||
my $prefix_type = $1;
|
||||
$opt{ $opt_key } = $opt{prefix} . # My
|
||||
ucfirst( $prefix_type ) . # Typemap
|
||||
( $prefix_type eq 'server' ? '' : 's' ); # s
|
||||
}
|
||||
} keys %opt;
|
||||
|
||||
my $definitions = $parser->parse_uri( $url );
|
||||
|
||||
my %typemap = ();
|
||||
@@ -150,7 +164,9 @@ wsdl2perl.pl - create perl bindings for SOAP webservices.
|
||||
|
||||
NAME SHORT DESCRITPION
|
||||
----------------------------------------------------------------------------
|
||||
prefix p Prefix for both type and element classes.
|
||||
prefix p Prefix for all generated classes. If you set "-p=Foo",
|
||||
you will get "FooAttributes", "FooTypes",
|
||||
"FooElements" and so on.
|
||||
attribute_prefix a Prefix for XML attribute classes.
|
||||
Default: MyAttributes
|
||||
type_prefix t Prefix for type classes.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::CountCookies;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -17,13 +18,30 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
# There's no variety - empty complexType
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
__PACKAGE__->_factory();
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -36,6 +54,21 @@ MyElements::CountCookies
|
||||
Perl data type class for the XML Schema defined element
|
||||
CountCookies from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::CountCookiesResponse;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -16,6 +17,14 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
@@ -26,14 +35,18 @@ Class::Std::initialize();
|
||||
my %CountCookiesResult_of :ATTR(:get<CountCookiesResult>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw(
|
||||
CountCookiesResult
|
||||
[ qw( CountCookiesResult
|
||||
|
||||
) ],
|
||||
{
|
||||
CountCookiesResult => \%CountCookiesResult_of,
|
||||
'CountCookiesResult' => \%CountCookiesResult_of,
|
||||
},
|
||||
{
|
||||
CountCookiesResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
'CountCookiesResult' => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
},
|
||||
{
|
||||
|
||||
'CountCookiesResult' => 'CountCookiesResult',
|
||||
}
|
||||
);
|
||||
|
||||
@@ -44,11 +57,12 @@ __PACKAGE__->_factory(
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -61,6 +75,30 @@ MyElements::CountCookiesResponse
|
||||
Perl data type class for the XML Schema defined element
|
||||
CountCookiesResponse from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * CountCookiesResult
|
||||
|
||||
$element->set_CountCookiesResult($data);
|
||||
$element->get_CountCookiesResult();
|
||||
|
||||
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::GetFortuneCookie;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -17,13 +18,30 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
# There's no variety - empty complexType
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
__PACKAGE__->_factory();
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -36,6 +54,21 @@ MyElements::GetFortuneCookie
|
||||
Perl data type class for the XML Schema defined element
|
||||
GetFortuneCookie from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::GetFortuneCookieResponse;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -16,6 +17,14 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
@@ -26,14 +35,18 @@ Class::Std::initialize();
|
||||
my %GetFortuneCookieResult_of :ATTR(:get<GetFortuneCookieResult>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw(
|
||||
GetFortuneCookieResult
|
||||
[ qw( GetFortuneCookieResult
|
||||
|
||||
) ],
|
||||
{
|
||||
GetFortuneCookieResult => \%GetFortuneCookieResult_of,
|
||||
'GetFortuneCookieResult' => \%GetFortuneCookieResult_of,
|
||||
},
|
||||
{
|
||||
GetFortuneCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||
'GetFortuneCookieResult' => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||
},
|
||||
{
|
||||
|
||||
'GetFortuneCookieResult' => 'GetFortuneCookieResult',
|
||||
}
|
||||
);
|
||||
|
||||
@@ -44,11 +57,12 @@ __PACKAGE__->_factory(
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -61,6 +75,30 @@ MyElements::GetFortuneCookieResponse
|
||||
Perl data type class for the XML Schema defined element
|
||||
GetFortuneCookieResponse from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * GetFortuneCookieResult
|
||||
|
||||
$element->set_GetFortuneCookieResult($data);
|
||||
$element->get_GetFortuneCookieResult();
|
||||
|
||||
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::GetSpecificCookie;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -16,6 +17,14 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
@@ -26,14 +35,18 @@ Class::Std::initialize();
|
||||
my %index_of :ATTR(:get<index>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw(
|
||||
index
|
||||
[ qw( index
|
||||
|
||||
) ],
|
||||
{
|
||||
index => \%index_of,
|
||||
'index' => \%index_of,
|
||||
},
|
||||
{
|
||||
index => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
'index' => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
},
|
||||
{
|
||||
|
||||
'index' => 'index',
|
||||
}
|
||||
);
|
||||
|
||||
@@ -44,11 +57,12 @@ __PACKAGE__->_factory(
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -61,6 +75,30 @@ MyElements::GetSpecificCookie
|
||||
Perl data type class for the XML Schema defined element
|
||||
GetSpecificCookie from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * index
|
||||
|
||||
$element->set_index($data);
|
||||
$element->get_index();
|
||||
|
||||
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::GetSpecificCookieResponse;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -16,6 +17,14 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
@@ -26,14 +35,18 @@ Class::Std::initialize();
|
||||
my %GetSpecificCookieResult_of :ATTR(:get<GetSpecificCookieResult>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw(
|
||||
GetSpecificCookieResult
|
||||
[ qw( GetSpecificCookieResult
|
||||
|
||||
) ],
|
||||
{
|
||||
GetSpecificCookieResult => \%GetSpecificCookieResult_of,
|
||||
'GetSpecificCookieResult' => \%GetSpecificCookieResult_of,
|
||||
},
|
||||
{
|
||||
GetSpecificCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||
'GetSpecificCookieResult' => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||
},
|
||||
{
|
||||
|
||||
'GetSpecificCookieResult' => 'GetSpecificCookieResult',
|
||||
}
|
||||
);
|
||||
|
||||
@@ -44,11 +57,12 @@ __PACKAGE__->_factory(
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -61,6 +75,30 @@ MyElements::GetSpecificCookieResponse
|
||||
Perl data type class for the XML Schema defined element
|
||||
GetSpecificCookieResponse from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * GetSpecificCookieResult
|
||||
|
||||
$element->set_GetSpecificCookieResult($data);
|
||||
$element->get_GetSpecificCookieResult();
|
||||
|
||||
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::int;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -14,14 +15,12 @@ __PACKAGE__->__set_ref();
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::int
|
||||
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} # end of BLOCK
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -34,6 +33,12 @@ MyElements::int
|
||||
Perl data type class for the XML Schema defined element
|
||||
int from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::readNodeCount;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -17,13 +18,30 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
# There's no variety - empty complexType
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
__PACKAGE__->_factory();
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -36,6 +54,21 @@ MyElements::readNodeCount
|
||||
Perl data type class for the XML Schema defined element
|
||||
readNodeCount from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyElements::readNodeCountResponse;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -16,6 +17,14 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
@@ -26,14 +35,18 @@ Class::Std::initialize();
|
||||
my %readNodeCountResult_of :ATTR(:get<readNodeCountResult>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw(
|
||||
readNodeCountResult
|
||||
[ qw( readNodeCountResult
|
||||
|
||||
) ],
|
||||
{
|
||||
readNodeCountResult => \%readNodeCountResult_of,
|
||||
'readNodeCountResult' => \%readNodeCountResult_of,
|
||||
},
|
||||
{
|
||||
readNodeCountResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
'readNodeCountResult' => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
|
||||
},
|
||||
{
|
||||
|
||||
'readNodeCountResult' => 'readNodeCountResult',
|
||||
}
|
||||
);
|
||||
|
||||
@@ -44,11 +57,12 @@ __PACKAGE__->_factory(
|
||||
|
||||
|
||||
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -61,6 +75,30 @@ MyElements::readNodeCountResponse
|
||||
Perl data type class for the XML Schema defined element
|
||||
readNodeCountResponse from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * readNodeCountResult
|
||||
|
||||
$element->set_readNodeCountResult($data);
|
||||
$element->get_readNodeCountResult();
|
||||
|
||||
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 new
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
|
||||
package MyElements::string;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
{ # BLOCK to scope variables
|
||||
|
||||
sub get_xmlns { 'http://www.webserviceX.NET' }
|
||||
sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
|
||||
|
||||
__PACKAGE__->__set_name('string');
|
||||
__PACKAGE__->__set_nillable(true);
|
||||
__PACKAGE__->__set_nillable(1);
|
||||
__PACKAGE__->__set_minOccurs();
|
||||
__PACKAGE__->__set_maxOccurs();
|
||||
__PACKAGE__->__set_ref();
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string
|
||||
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} # end of BLOCK
|
||||
1;
|
||||
|
||||
# __END__
|
||||
|
||||
=pod
|
||||
|
||||
@@ -32,7 +31,13 @@ MyElements::string
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Perl data type class for the XML Schema defined element
|
||||
string from the namespace http://www.webserviceX.NET.
|
||||
string from the namespace http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ sub START {
|
||||
$_[0]->set_proxy('http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx') if not $_[2]->{proxy};
|
||||
$_[0]->set_class_resolver('MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie')
|
||||
if not $_[2]->{class_resolver};
|
||||
|
||||
$_[0]->set_prefix($_[2]->{use_prefix}) if exists $_[2]->{use_prefix};
|
||||
}
|
||||
|
||||
sub readNodeCount {
|
||||
@@ -24,10 +26,11 @@ sub readNodeCount {
|
||||
style => 'document',
|
||||
body => {
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => '',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::readNodeCount )],
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::readNodeCount )],
|
||||
},
|
||||
header => {
|
||||
|
||||
@@ -38,6 +41,7 @@ sub readNodeCount {
|
||||
}, $body, $header);
|
||||
}
|
||||
|
||||
|
||||
sub GetFortuneCookie {
|
||||
my ($self, $body, $header) = @_;
|
||||
die "GetFortuneCookie must be called as object method (\$self is <$self>)" if not blessed($self);
|
||||
@@ -47,10 +51,11 @@ sub GetFortuneCookie {
|
||||
style => 'document',
|
||||
body => {
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => '',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::GetFortuneCookie )],
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::GetFortuneCookie )],
|
||||
},
|
||||
header => {
|
||||
|
||||
@@ -61,6 +66,7 @@ sub GetFortuneCookie {
|
||||
}, $body, $header);
|
||||
}
|
||||
|
||||
|
||||
sub CountCookies {
|
||||
my ($self, $body, $header) = @_;
|
||||
die "CountCookies must be called as object method (\$self is <$self>)" if not blessed($self);
|
||||
@@ -70,10 +76,11 @@ sub CountCookies {
|
||||
style => 'document',
|
||||
body => {
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => '',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::CountCookies )],
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::CountCookies )],
|
||||
},
|
||||
header => {
|
||||
|
||||
@@ -84,6 +91,7 @@ sub CountCookies {
|
||||
}, $body, $header);
|
||||
}
|
||||
|
||||
|
||||
sub GetSpecificCookie {
|
||||
my ($self, $body, $header) = @_;
|
||||
die "GetSpecificCookie must be called as object method (\$self is <$self>)" if not blessed($self);
|
||||
@@ -93,10 +101,11 @@ sub GetSpecificCookie {
|
||||
style => 'document',
|
||||
body => {
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => '',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::GetSpecificCookie )],
|
||||
|
||||
'use' => 'literal',
|
||||
namespace => 'http://schemas.xmlsoap.org/wsdl/soap/',
|
||||
encodingStyle => '',
|
||||
parts => [qw( MyElements::GetSpecificCookie )],
|
||||
},
|
||||
header => {
|
||||
|
||||
@@ -109,6 +118,7 @@ sub GetSpecificCookie {
|
||||
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -119,21 +129,20 @@ __END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
||||
MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie::FullerData_x0020_Fortune_x0020_CookieSoap - SOAP Interface for the FullerData_x0020_Fortune_x0020_Cookie Web Service
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie::FullerData_x0020_Fortune_x0020_CookieSoap;
|
||||
my $interface = MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie::FullerData_x0020_Fortune_x0020_CookieSoap->new();
|
||||
|
||||
|
||||
my $response;
|
||||
$response = $interface->readNodeCount();
|
||||
$response = $interface->GetFortuneCookie();
|
||||
$response = $interface->CountCookies();
|
||||
$response = $interface->GetSpecificCookie();
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -168,42 +177,58 @@ of the corresponding class can be passed instead of the marked hash ref.
|
||||
You may pass any combination of objects, hash and list refs to these
|
||||
methods, as long as you meet the structure.
|
||||
|
||||
List items (i.e. multiple occurences) are not displayed in the synopsis.
|
||||
You may generally pass a list ref of hash refs (or objects) instead of a hash
|
||||
ref - this may result in invalid XML if used improperly, though. Note that
|
||||
SOAP::WSDL always expects list references at maximum depth position.
|
||||
|
||||
XML attributes are not displayed in this synopsis and cannot be set using
|
||||
hash refs. See the respective class' documentation for additional information.
|
||||
|
||||
|
||||
|
||||
=head3 readNodeCount
|
||||
|
||||
Display the number of nodes specified in fortune XML document
|
||||
|
||||
$interface->readNodeCount(,,
|
||||
Returns a L<MyElements::readNodeCountResponse|MyElements::readNodeCountResponse> object.
|
||||
|
||||
$response = $interface->readNodeCount(,,
|
||||
);
|
||||
|
||||
|
||||
=head3 GetFortuneCookie
|
||||
|
||||
Get a random fortune cookie from the XML document
|
||||
|
||||
$interface->GetFortuneCookie(,,
|
||||
Returns a L<MyElements::GetFortuneCookieResponse|MyElements::GetFortuneCookieResponse> object.
|
||||
|
||||
$response = $interface->GetFortuneCookie(,,
|
||||
);
|
||||
|
||||
|
||||
=head3 CountCookies
|
||||
|
||||
Count the actual number of nodes in the XML document of fortunes
|
||||
|
||||
$interface->CountCookies(,,
|
||||
Returns a L<MyElements::CountCookiesResponse|MyElements::CountCookiesResponse> object.
|
||||
|
||||
$response = $interface->CountCookies(,,
|
||||
);
|
||||
|
||||
|
||||
=head3 GetSpecificCookie
|
||||
|
||||
Get a specific cookie by the XML node number
|
||||
|
||||
$interface->GetSpecificCookie( {
|
||||
Returns a L<MyElements::GetSpecificCookieResponse|MyElements::GetSpecificCookieResponse> object.
|
||||
|
||||
$response = $interface->GetSpecificCookie( {
|
||||
index => $some_value, # int
|
||||
},,
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Generated by SOAP::WSDL on Sun Dec 16 19:58:30 2007
|
||||
Generated by SOAP::WSDL on Wed Dec 3 22:05:20 2008
|
||||
|
||||
=pod
|
||||
=cut
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie;
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -38,11 +39,13 @@ sub get_typemap {
|
||||
|
||||
__END__
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie; - typemap for ::FullerData_x0020_Fortune_x0020_Cookie;
|
||||
MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie - typemap for FullerData_x0020_Fortune_x0020_Cookie
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
@@ -10,15 +10,14 @@ use Carp;
|
||||
use Scalar::Util qw(blessed);
|
||||
use SOAP::WSDL::Client;
|
||||
use SOAP::WSDL::Expat::WSDLParser;
|
||||
use Class::Std::Fast;
|
||||
use Class::Std::Fast constructor => 'none';
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||
use LWP::UserAgent;
|
||||
|
||||
use version; our $VERSION= qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.06');
|
||||
|
||||
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
||||
my %wsdl_of :ATTR(:name<wsdl>);
|
||||
my %proxy_of :ATTR(:name<proxy>);
|
||||
my %autotype_of :ATTR(:name<autotype>);
|
||||
my %outputxml_of :ATTR(:name<outputxml> :default<0>);
|
||||
my %outputtree_of :ATTR(:name<outputtree>);
|
||||
@@ -42,7 +41,6 @@ my %LOOKUP = (
|
||||
no_dispatch => \%no_dispatch_of,
|
||||
class_resolver => \%class_resolver_of,
|
||||
wsdl => \%wsdl_of,
|
||||
proxy => \%proxy_of,
|
||||
autotype => \%autotype_of,
|
||||
outputxml => \%outputxml_of,
|
||||
outputtree => \%outputtree_of,
|
||||
@@ -94,12 +92,30 @@ for my $method (keys %LOOKUP ) {
|
||||
}
|
||||
|
||||
my $ident = ident $self;
|
||||
$self->wsdlinit() if ($wsdl_of{ $ident });
|
||||
$client_of{ $ident } = SOAP::WSDL::Client->new();
|
||||
$self->wsdlinit() if ($wsdl_of{ $ident });
|
||||
return $self;
|
||||
}
|
||||
}
|
||||
|
||||
sub set_proxy {
|
||||
my $self = shift;
|
||||
return $self->get_client()->set_proxy(@_);
|
||||
}
|
||||
|
||||
sub get_proxy {
|
||||
my $self = shift;
|
||||
return $self->get_client()->get_proxy();
|
||||
}
|
||||
|
||||
sub proxy {
|
||||
my $self = shift;
|
||||
if (@_) {
|
||||
return $self->set_proxy(@_);
|
||||
}
|
||||
return $self->get_proxy();
|
||||
}
|
||||
|
||||
sub wsdlinit {
|
||||
my ($self, %opt) = @_;
|
||||
my $ident = ident $self;
|
||||
@@ -132,6 +148,15 @@ sub wsdlinit {
|
||||
|
||||
$servicename_of{ $ident } = $opt{servicename} if $opt{servicename};
|
||||
$portname_of{ $ident } = $opt{portname} if $opt{portname};
|
||||
|
||||
$self->_wsdl_init_methods();
|
||||
|
||||
# pass-through keep_alive if we need it...
|
||||
$self->get_client()->set_proxy(
|
||||
$port_of{ $ident }->first_address()->get_location(),
|
||||
$keep_alive_of{ $ident } ? (keep_alive => 1) : (),
|
||||
);
|
||||
|
||||
return $self;
|
||||
} ## end sub wsdlinit
|
||||
|
||||
@@ -151,6 +176,7 @@ sub _wsdl_get_port :PRIVATE {
|
||||
? $service_of{ $ident }->get_port( $ns, $portname_of{ $ident } )
|
||||
: $port_of{ $ident } = $service_of{ $ident }->get_port()->[ 0 ];
|
||||
}
|
||||
|
||||
sub _wsdl_get_binding :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -160,6 +186,7 @@ sub _wsdl_get_binding :PRIVATE {
|
||||
or croak "no binding found for ", $port->get_binding();
|
||||
return $binding_of{ $ident };
|
||||
}
|
||||
|
||||
sub _wsdl_get_portType :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -169,6 +196,7 @@ sub _wsdl_get_portType :PRIVATE {
|
||||
or croak "cannot find portType for " . $binding->get_type();
|
||||
return $porttype_of{ $ident };
|
||||
}
|
||||
|
||||
sub _wsdl_init_methods :PRIVATE {
|
||||
my $self = shift;
|
||||
my $ident = ident $self;
|
||||
@@ -242,7 +270,7 @@ sub _wsdl_init_methods :PRIVATE {
|
||||
|
||||
# on_action is a no-op and just here for compatibility reasons.
|
||||
# It returns the first parameter to allow method chaining.
|
||||
sub on_action { return shift };
|
||||
sub on_action { return shift }
|
||||
|
||||
sub call {
|
||||
my ($self, $method, @data_from) = @_;
|
||||
@@ -259,12 +287,6 @@ sub call {
|
||||
|
||||
my $client = $client_of{ $ident };
|
||||
|
||||
# pass-through keep_alive if we need it...
|
||||
$client->set_proxy( $proxy_of{ $ident }
|
||||
|| $port_of{ $ident }->first_address()->get_location(),
|
||||
$keep_alive_of{ $ident } ? (keep_alive => 1) : (),
|
||||
);
|
||||
|
||||
$client->set_no_dispatch( $no_dispatch_of{ $ident } );
|
||||
$client->set_outputxml( $outputxml_of{ $ident } ? 1 : 0 );
|
||||
|
||||
@@ -277,7 +299,7 @@ sub call {
|
||||
&& ( ! $no_dispatch_of{ $ident } ) ) {
|
||||
require SOAP::WSDL::Deserializer::SOM;
|
||||
$client->set_deserializer( SOAP::WSDL::Deserializer::SOM->new() );
|
||||
};
|
||||
}
|
||||
|
||||
my $method_info = $method_info_of{ $ident }->{ $method };
|
||||
|
||||
@@ -772,8 +794,6 @@ Peter Orvos, Mark Overmeer, Jon Robens, Isidro Vila Verde and Glenn Wood
|
||||
(in alphabetical order) spotted bugs and/or suggested improvements in
|
||||
the 1.2x releases.
|
||||
|
||||
Noah Robin contirbuted lots of documentation fixes, and the mod_perl server.
|
||||
|
||||
JT Justman and Noah Robin provided early feedback and bug reports for
|
||||
the 2.xx pre-releases.
|
||||
|
||||
@@ -786,13 +806,17 @@ Matt S. Trout encouraged me "to get a non-dev-release out."
|
||||
|
||||
CPAN Testers provided most valuable (automated) feedback. Thanks a lot.
|
||||
|
||||
Numerous people sent me their real-world WSDL files for testing. Thank you.
|
||||
Numerous people sent me their real-world WSDL files and error reports for
|
||||
testing. Thank you.
|
||||
|
||||
Noah Robin contributed lots of documentation fixes, and the mod_perl server,
|
||||
and eventually joined SOAP::WSDL's developement. Thanks.
|
||||
|
||||
Mark Overmeer wrote XML::Compile::SOAP - competition is good for business.
|
||||
|
||||
Paul Kulchenko and Byrne Reese wrote and maintained SOAP::Lite and
|
||||
thus provided a base (and counterpart) for SOAP::WSDL.
|
||||
|
||||
Mark Overmeer wrote XML::Compile::SOAP - competition is good for business.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
@@ -806,9 +830,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 755 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: WSDL.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
||||
$Id: WSDL.pm 755 2008-12-03 21:36:54Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
package SOAP::WSDL::Base;
|
||||
use strict;
|
||||
use warnings;
|
||||
use strict; use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use List::Util qw(first);
|
||||
use List::Util;
|
||||
use Scalar::Util;
|
||||
use Carp qw(croak carp confess);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %id_of :ATTR(:name<id> :default<()>);
|
||||
my %lang_of :ATTR(:name<lang> :default<()>);
|
||||
my %name_of :ATTR(:name<name> :default<()>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
||||
my %documentation_of :ATTR(:name<documentation> :default<()>);
|
||||
my %annotation_of :ATTR(:name<annotation> :default<()>);
|
||||
my %targetNamespace_of :ATTR(:name<targetNamespace> :default<()>);
|
||||
my %xmlns_of :ATTR(:name<xmlns> :default<{}>);
|
||||
my %parent_of :ATTR(:name<parent> :default<()>);
|
||||
my %parent_of :ATTR(:get<parent> :default<()>);
|
||||
|
||||
my %namespaces_of :ATTR(:default<{}>);
|
||||
|
||||
@@ -22,34 +23,42 @@ sub namespaces {
|
||||
return shift->get_xmlns();
|
||||
}
|
||||
|
||||
sub BUILD {
|
||||
my ($self, $ident, $arg_ref) = @_;
|
||||
if (defined $arg_ref->{ parent }) {
|
||||
$parent_of{ $ident } = delete $arg_ref->{ parent },
|
||||
Scalar::Util::weaken($parent_of{ $ident });
|
||||
}
|
||||
}
|
||||
|
||||
sub START {
|
||||
my ($self, $ident, $arg_ref) = @_;
|
||||
#$xmlns_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' };
|
||||
$xmlns_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace';
|
||||
$namespaces_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' };
|
||||
$namespaces_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace';
|
||||
|
||||
}
|
||||
|
||||
sub DEMOLISH {
|
||||
my $self = shift;
|
||||
# delete upward references
|
||||
delete $parent_of{ ${ $self } };
|
||||
return;
|
||||
#
|
||||
# set_parent is hand-implemented to break up (weaken) the circular reference
|
||||
# between an object and it's parent
|
||||
#
|
||||
sub set_parent {
|
||||
$parent_of{ ${ $_[0]} } = $_[1];
|
||||
Scalar::Util::weaken($parent_of{ ${ $_[0]} });
|
||||
}
|
||||
|
||||
sub STORABLE_freeze_pre :CUMULATIVE {};
|
||||
sub STORABLE_freeze_post :CUMULATIVE {};
|
||||
sub STORABLE_thaw_pre :CUMULATIVE {};
|
||||
sub STORABLE_thaw_post :CUMULATIVE { return $_[0] };
|
||||
|
||||
# _accept is here to be called by visitor.
|
||||
# The visitor pattern is a level of indirection - here the visitor calls
|
||||
# $object->_accept($visitor) on each object, which in turn calls
|
||||
# $visitor->visit_$class( $object ) where $class is the object's class.
|
||||
#
|
||||
sub _accept {
|
||||
my $self = shift;
|
||||
my $class = ref $self;
|
||||
$class =~ s{ \A SOAP::WSDL:: }{}xms;
|
||||
$class =~ s{ (:? :: ) }{_}gxms;
|
||||
my $method = "visit_$class";
|
||||
no strict qw(refs); ## no critic ProhibitNoStrict
|
||||
no strict qw(refs);
|
||||
return shift->$method( $self );
|
||||
}
|
||||
|
||||
@@ -64,13 +73,12 @@ sub AUTOMETHOD {
|
||||
if ($subname =~s{^push_}{}xms) {
|
||||
my $getter = "get_$subname";
|
||||
my $setter = "set_$subname";
|
||||
## Checking here is paranoid - will fail fatally if
|
||||
## there is no setter...
|
||||
## And we would have to check getters, too.
|
||||
## Maybe do it the Conway way via the Symbol table...
|
||||
## ... can is way slow...
|
||||
# Checking here is paranoid - will fail fatally if there is no setter.
|
||||
# And we would have to check getters, too.
|
||||
# Maybe do it the Conway way via the Symbol table...
|
||||
# ... can is way slow...
|
||||
return sub {
|
||||
no strict qw(refs); ## no critic ProhibitNoStrict
|
||||
no strict qw(refs);
|
||||
my $old_value = $self->$getter();
|
||||
# Listify if not a list ref
|
||||
$old_value = $old_value ? [ $old_value ] : [] if not ref $old_value;
|
||||
@@ -84,7 +92,7 @@ sub AUTOMETHOD {
|
||||
elsif ($subname =~s {^find_}{get_}xms) {
|
||||
@values = @{ $values[0] } if ref $values[0] eq 'ARRAY';
|
||||
return sub {
|
||||
return first {
|
||||
return List::Util::first {
|
||||
$_->get_targetNamespace() eq $values[0] &&
|
||||
$_->get_name() eq $values[1]
|
||||
}
|
||||
@@ -100,24 +108,29 @@ sub AUTOMETHOD {
|
||||
};
|
||||
}
|
||||
|
||||
# return if called from can();
|
||||
my @caller = caller(2);
|
||||
return if ($caller[3] eq 'Class::Std::Fast::__ANON__');
|
||||
# confess "$subname not found in class " . ref $self;
|
||||
return;
|
||||
}
|
||||
|
||||
sub init {
|
||||
my ($self, @args) = @_;
|
||||
foreach my $value (@args)
|
||||
{
|
||||
foreach my $value (@args) {
|
||||
croak @args if (not defined ($value->{ Name }));
|
||||
|
||||
if ($value->{ Name } =~m{^xmlns\:}xms) {
|
||||
# add namespaces
|
||||
$xmlns_of{ ident $self }->{ $value->{ LocalName } } = $value->{ Value };
|
||||
next;
|
||||
}
|
||||
|
||||
# check for namespae-qualified attributes.
|
||||
# neither XML Schema, nor WSDL1.1, nor the SOAP binding allow
|
||||
# namespace-qualified attribute names
|
||||
my ($ns, $localname) = split /\|/, $value->{ Name };
|
||||
if ($ns) {
|
||||
warn "found unrecognised attribute \{$ns}$localname (ignored)";
|
||||
next;
|
||||
}
|
||||
|
||||
my $name = $value->{ LocalName };
|
||||
my $method = "set_$name";
|
||||
$self->$method( $value->{ Value } );
|
||||
@@ -128,12 +141,15 @@ sub init {
|
||||
sub expand {
|
||||
my ($self, $qname) = @_;
|
||||
my $ns_of = $self->namespaces();
|
||||
my $parent;
|
||||
if (not $qname=~m{:}xm) {
|
||||
if (defined $ns_of->{ '#default' }) {
|
||||
return $self->get_targetNamespace(), $qname;
|
||||
# return $ns_of->{ '#default' }, $qname;
|
||||
# TODO check. Returning the targetNamespace for the default ns
|
||||
# is probably wrong
|
||||
#return $self->get_targetNamespace(), $qname;
|
||||
return $ns_of->{ '#default' }, $qname;
|
||||
}
|
||||
if (my $parent = $self->get_parent()) {
|
||||
if ($parent = $self->get_parent()) {
|
||||
return $parent->expand($qname);
|
||||
}
|
||||
die "un-prefixed element name <$qname> found, but no default namespace set\n"
|
||||
@@ -142,7 +158,7 @@ sub expand {
|
||||
my ($prefix, $localname) = split /:/x, $qname;
|
||||
|
||||
return ($ns_of->{ $prefix }, $localname) if ($ns_of->{ $prefix });
|
||||
if (my $parent = $self->get_parent()) {
|
||||
if ($parent = $self->get_parent()) {
|
||||
return $parent->expand($qname);
|
||||
}
|
||||
croak "unbound prefix $prefix found for $prefix:$localname. Bound prefixes are "
|
||||
|
||||
@@ -2,10 +2,10 @@ package SOAP::WSDL::Binding;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use List::Util qw(first);
|
||||
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %operation_of :ATTR(:name<operation> :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::Expat::MessageParser;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||
my %no_dispatch_of :ATTR(:name<no_dispatch> :default<()>);
|
||||
@@ -20,10 +20,10 @@ my %outputxml_of :ATTR(:name<outputxml> :default<()>);
|
||||
my %transport_of :ATTR(:name<transport> :default<()>);
|
||||
my %endpoint_of :ATTR(:name<endpoint> :default<()>);
|
||||
|
||||
my %soap_version_of :ATTR(:get<soap_version> :init_attr<soap_version> :default<'1.1'>);
|
||||
my %soap_version_of :ATTR(:get<soap_version> :init_attr<soap_version> :default<1.1>);
|
||||
|
||||
my %on_action_of :ATTR(:name<on_action> :default<()>);
|
||||
my %content_type_of :ATTR(:name<content_type> :default<text/xml; charset=utf8>); #/#trick editors
|
||||
my %content_type_of :ATTR(:name<content_type> :default<text/xml; charset=utf-8>); #/#trick editors
|
||||
my %serializer_of :ATTR(:name<serializer> :default<()>);
|
||||
my %deserializer_of :ATTR(:name<deserializer> :default<()>);
|
||||
|
||||
@@ -395,10 +395,10 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 744 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Client.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
||||
$Id: Client.pm 744 2008-10-15 16:58:45Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base 'SOAP::WSDL::Client';
|
||||
use Scalar::Util qw(blessed);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
sub call {
|
||||
my ($self, $method, $body, $header) = @_;
|
||||
@@ -22,7 +22,7 @@ sub call {
|
||||
# parameters given
|
||||
my @part_from = ();
|
||||
foreach my $class (@{ $method->{ body }->{ parts } }) {
|
||||
eval "require $class" || die $@;
|
||||
eval "require $class" || die $@; ## no critic (ProhibitStringyEval)
|
||||
push @part_from, $class->new(shift(@body_from) || {});
|
||||
}
|
||||
|
||||
@@ -33,10 +33,10 @@ sub call {
|
||||
# if we have a header
|
||||
if (%{ $method->{ header } }) {
|
||||
|
||||
# trat non object special - as above, but only for one
|
||||
# treat non object special - as above, but only for one
|
||||
if (not blessed $header) {
|
||||
my $class = $method->{ header }->{ parts }->[0];
|
||||
eval "require $class" || die $@;
|
||||
eval "require $class" || die $@; ## no critic (ProhibitStringyEval)
|
||||
$header = $class->new($header);
|
||||
}
|
||||
}
|
||||
@@ -65,6 +65,13 @@ SOAP::WSDL::Client::Base - Factory class for WSDL-based SOAP access
|
||||
Factory class for creating interface classes. Should probably be renamed to
|
||||
SOAP::WSDL::Factory::Interface...
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 call
|
||||
|
||||
Abstraction layer method between the generated interfaces and
|
||||
L<SOAP::WSDL::Client|SOAP::WSDL::Client>.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2007 Martin Kutter.
|
||||
@@ -78,9 +85,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Base.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
||||
$Id: Base.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -1,26 +1,22 @@
|
||||
package SOAP::WSDL::Definitions;
|
||||
use utf8;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Carp;
|
||||
use File::Basename;
|
||||
use File::Path;
|
||||
use List::Util qw(first);
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %types_of :ATTR(:name<types> :default<[]>);
|
||||
my %message_of :ATTR(:name<message> :default<[]>);
|
||||
my %portType_of :ATTR(:name<portType> :default<[]>);
|
||||
my %binding_of :ATTR(:name<binding> :default<[]>);
|
||||
my %service_of :ATTR(:name<service> :default<[]>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
||||
|
||||
# must be attr for Class::Std::Fast::Storable
|
||||
my %attributes_of :ATTR();
|
||||
%attributes_of = (
|
||||
#my %attributes_of :ATTR();
|
||||
my %attributes_of = (
|
||||
binding => \%binding_of,
|
||||
message => \%message_of,
|
||||
portType => \%portType_of,
|
||||
@@ -44,6 +40,7 @@ BLOCK: {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
@@ -72,7 +69,7 @@ Returns the service matching the namespace/localname pair passed as arguments.
|
||||
Accessors/Mutators for accessing / setting the E<gt>bindingE<lt> child
|
||||
element(s).
|
||||
|
||||
=head2 find_service
|
||||
=head2 find_binding
|
||||
|
||||
Returns the binding matching the namespace/localname pair passed as arguments.
|
||||
|
||||
@@ -94,7 +91,7 @@ Returns the portType matching the namespace/localname pair passed as arguments.
|
||||
Accessors/Mutators for accessing / setting the E<gt>messageE<lt> child
|
||||
element(s).
|
||||
|
||||
=head2 find_service
|
||||
=head2 find_message
|
||||
|
||||
Returns the message matching the namespace/localname pair passed as arguments.
|
||||
|
||||
@@ -118,10 +115,10 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Definitions.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
||||
$Id: Definitions.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ use SOAP::WSDL::Expat::Message2Hash;
|
||||
use SOAP::WSDL::Factory::Deserializer;
|
||||
SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
sub BUILD {
|
||||
my ($self, $ident, $args_of_ref) = @_;
|
||||
@@ -139,9 +139,20 @@ a parse error appears
|
||||
|
||||
=back
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 deserialize
|
||||
|
||||
Deserializes the message.
|
||||
|
||||
=head2 generate_fault
|
||||
|
||||
Generates a L<SOAP::WSDL::SOAP::Typelib::Fault11|SOAP::WSDL::SOAP::Typelib::Fault11>
|
||||
object and returns it.
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2007 Martin Kutter.
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself.
|
||||
@@ -152,9 +163,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Hash.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
||||
$Id: Hash.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Deserializer::SOM;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
our @ISA;
|
||||
|
||||
eval {
|
||||
@@ -13,6 +13,18 @@ or die "Cannot load SOAP::Lite.
|
||||
Cannot deserialize to SOM object without SOAP::Lite.
|
||||
Please install SOAP::Lite.";
|
||||
|
||||
sub deserialize {
|
||||
my $self = shift;
|
||||
my $result = eval { $self->SUPER::deserialize(@_) };
|
||||
if ($@) {
|
||||
return SOAP::Fault->new(
|
||||
faultactor => 'soap:Server',
|
||||
faultstring => $@,
|
||||
);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
sub generate_fault {
|
||||
my ($self, $args_from_ref) = @_;
|
||||
# code, message, detail, actor
|
||||
@@ -66,6 +78,17 @@ This may be XML including mixed content, attachements and other XML data not
|
||||
SOAP::WSDL::Deserializer::SOM is a subclass of L<SOAP::Deserializer|SOAP::Deserializer>
|
||||
from the L<SOAP::Lite|SOAP::Lite> package.
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 deserialize
|
||||
|
||||
Deserializes a XML sting into a SOAP::SOM object. Returns a SOAP::Fault object
|
||||
on deserialization errors.
|
||||
|
||||
=head2 generate_fault
|
||||
|
||||
Dies with a SOAP::Fault object.
|
||||
|
||||
=head1 USAGE
|
||||
|
||||
SOAP::WSDL::Deserializer will not autoregister itself - to use it for a particular
|
||||
@@ -85,8 +108,8 @@ SOAP version just use the following lines:
|
||||
|
||||
=item * No on_fault handler
|
||||
|
||||
You cannot specify what to do when an error occurs - SOAP::WSDL will die
|
||||
with a SOAP::Fault object on transport errors.
|
||||
You cannot specify what to do when an error occurs - SOAP::WSDL will return
|
||||
a SOAP::Fault object on transport errors.
|
||||
|
||||
=back
|
||||
|
||||
@@ -99,6 +122,9 @@ with a SOAP::Fault object on transport errors.
|
||||
SOAP::WSDL::Deserializer::SOM will die with a SOAP::Fault object on calls
|
||||
to generate_fault.
|
||||
|
||||
This also means that a SOAP::Fault may be thrown as exception when using
|
||||
|
||||
|
||||
=back
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
@@ -114,9 +140,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: SOM.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
||||
$Id: SOM.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
||||
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
||||
use SOAP::WSDL::Expat::MessageParser;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||
|
||||
@@ -99,9 +99,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: XSD.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
||||
$Id: XSD.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
||||
|
||||
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
sub new {
|
||||
my ($class, $arg_ref) = @_;
|
||||
@@ -35,17 +35,23 @@ sub get_uri { return $_[0]->{ uri }; }
|
||||
sub set_user_agent { $_[0]->{ user_agent } = $_[1]; }
|
||||
sub get_user_agent { return $_[0]->{ user_agent }; }
|
||||
|
||||
# Mark a URI as "already parsed"
|
||||
sub set_parsed {
|
||||
my ($self, $uri) = @_;
|
||||
$self->{ parsed }->{ $uri } = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
# returns true if a specific URI has already been parsed
|
||||
sub is_parsed {
|
||||
my ($self, $uri) = @_;
|
||||
return exists $self->{ parsed }->{ $uri };
|
||||
}
|
||||
|
||||
|
||||
# parse a URI. This is the preferred parsing method for WSDL files, as it's
|
||||
# the only one allowing automatic import resolution
|
||||
sub parse_uri {
|
||||
my $self = shift;
|
||||
my $uri = shift;
|
||||
@@ -74,6 +80,7 @@ sub parse {
|
||||
$_[0]->{ parser }->release();
|
||||
};
|
||||
$_[0]->{ parser }->xpcroak( $@ ) if $@;
|
||||
delete $_[0]->{ parser };
|
||||
return $_[0]->{ data };
|
||||
}
|
||||
|
||||
@@ -83,6 +90,7 @@ sub parsefile {
|
||||
$_[0]->{ parser }->release();
|
||||
};
|
||||
$_[0]->{ parser }->xpcroak( $@ ) if $@;
|
||||
delete $_[0]->{ parser };
|
||||
return $_[0]->{ data };
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use strict;
|
||||
use warnings;
|
||||
use base qw(SOAP::WSDL::Expat::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
sub _initialize {
|
||||
my ($self, $parser) = @_;
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
#!/usr/bin/perl
|
||||
package SOAP::WSDL::Expat::MessageParser;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Carp qw(croak confess);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use strict; use warnings;
|
||||
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin;
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||
|
||||
use base qw(SOAP::WSDL::Expat::Base);
|
||||
|
||||
require Class::Std::Fast;
|
||||
BEGIN { require Class::Std::Fast };
|
||||
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# GLOBALS
|
||||
my $OBJECT_CACHE_REF = Class::Std::Fast::OBJECT_CACHE_REF();
|
||||
|
||||
# keep track of classes loaded
|
||||
my %LOADED_OF = ();
|
||||
|
||||
sub new {
|
||||
@@ -46,7 +47,10 @@ sub class_resolver {
|
||||
sub load_classes {
|
||||
my $self = shift;
|
||||
|
||||
for (values %{ $self->{ class_resolver }->get_typemap }) {
|
||||
return if $LOADED_OF{ $self->{ class_resolver } };
|
||||
|
||||
# requires sorting to make sub-packages load after their parent
|
||||
for (sort values %{ $self->{ class_resolver }->get_typemap }) {
|
||||
no strict qw(refs);
|
||||
my $class = $_;
|
||||
|
||||
@@ -54,9 +58,10 @@ sub load_classes {
|
||||
next if $class eq '__SKIP__';
|
||||
next if defined *{ "$class\::" }; # check if namespace exists
|
||||
|
||||
# Require takes a bareword or a file name - we have to take
|
||||
# the filname road here...
|
||||
$class =~s{ :: }{/}xmsg;
|
||||
$class .= '.pm';
|
||||
require $class;
|
||||
require "$class.pm"; ## no critic (RequireBarewordIncludes)
|
||||
}
|
||||
$LOADED_OF{ $self->{ class_resolver } } = 1;
|
||||
}
|
||||
@@ -106,16 +111,12 @@ sub _initialize {
|
||||
: ();
|
||||
|
||||
# use "globals" for speed
|
||||
my ($_prefix, $_method,
|
||||
$_class, $_leaf) = ();
|
||||
my ($_prefix, $_method, $_class, $_leaf) = ();
|
||||
|
||||
my $char_handler = sub {
|
||||
return if (!$_leaf); # we only want characters in leaf nodes
|
||||
|
||||
$characters .= $_[1];
|
||||
# if $_[1] =~m{ [^\s] }xms;
|
||||
|
||||
return;
|
||||
return if (!$_leaf); # we only want characters in leaf nodes
|
||||
$characters .= $_[1]; # add to characters
|
||||
return; # return void
|
||||
};
|
||||
|
||||
no strict qw(refs);
|
||||
@@ -194,6 +195,9 @@ sub _initialize {
|
||||
}
|
||||
}
|
||||
$depth++;
|
||||
|
||||
# TODO: Skip content of anyType / any stuff
|
||||
|
||||
return;
|
||||
},
|
||||
|
||||
@@ -319,11 +323,11 @@ the same terms as perl itself
|
||||
|
||||
=head1 Repository information
|
||||
|
||||
$Id: MessageParser.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: MessageParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
|
||||
$LastChangedDate: 2008-05-18 22:17:56 +0200 (So, 18 Mai 2008) $
|
||||
$LastChangedRevision: 677 $
|
||||
$LastChangedDate: 2008-07-13 21:28:50 +0200 (So, 13 Jul 2008) $
|
||||
$LastChangedRevision: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
|
||||
$HeadURL: http://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 base qw(SOAP::WSDL::Expat::MessageParser);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
sub parse_start {
|
||||
my $self = shift;
|
||||
@@ -69,9 +69,9 @@ the same terms as perl itself
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: MessageStreamParser.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
||||
$Id: MessageStreamParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -5,7 +5,17 @@ use Carp;
|
||||
use SOAP::WSDL::TypeLookup;
|
||||
use base qw(SOAP::WSDL::Expat::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#
|
||||
# Import child elements of a WSDL / XML Schema tree into the current tree
|
||||
#
|
||||
# Set the targetNamespace of the imported nodes to $import_namespace
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# $self->_import_children($name, $imported, $imported, $import_namespace)
|
||||
#
|
||||
|
||||
sub _import_children {
|
||||
my ($self, $name, $imported, $importer, $import_namespace) = @_;
|
||||
@@ -140,7 +150,9 @@ sub _initialize {
|
||||
# TODO skip non-XML Schema namespace tags
|
||||
$parser->setHandlers(
|
||||
Start => sub {
|
||||
my ($parser, $localname, %attrs) = @_;
|
||||
# handle attrs as list - expat uses dual-vars for looking
|
||||
# up namespace information, and hash keys don't allow dual vars...
|
||||
my ($parser, $localname, @attrs) = @_;
|
||||
$characters = q{};
|
||||
|
||||
my $action = SOAP::WSDL::TypeLookup->lookup(
|
||||
@@ -154,10 +166,11 @@ sub _initialize {
|
||||
eval "require $action->{ class }";
|
||||
croak $@ if ($@);
|
||||
|
||||
my $obj = $action->{ class }->new({ parent => $current,
|
||||
# xmlns => { '#default' => $parser->namespace($localname) }
|
||||
my $obj = $action->{ class }->new({
|
||||
parent => $current,
|
||||
namespace => $parser->namespace($localname),
|
||||
})
|
||||
->init( _fixup_attrs( $parser, %attrs ) );
|
||||
->init( _fixup_attrs( $parser, @attrs ) );
|
||||
|
||||
if ($current) {
|
||||
# inherit namespace, but don't override
|
||||
@@ -173,14 +186,12 @@ sub _initialize {
|
||||
# remember element for stepping back
|
||||
push @{ $list }, $current;
|
||||
}
|
||||
else {
|
||||
$self->{ data } = $obj;
|
||||
}
|
||||
|
||||
# set new element (step down)
|
||||
$current = $obj;
|
||||
}
|
||||
elsif ($action->{ type } eq 'PARENT') {
|
||||
$current->init( _fixup_attrs($parser, %attrs) );
|
||||
$current->init( _fixup_attrs($parser, @attrs) );
|
||||
}
|
||||
elsif ($action->{ type } eq 'METHOD') {
|
||||
my $method = $action->{ method };
|
||||
@@ -196,12 +207,12 @@ sub _initialize {
|
||||
? ref $action->{ value }
|
||||
? @{ $action->{ value } }
|
||||
: ($action->{ value })
|
||||
: _fixup_attrs($parser, %attrs)
|
||||
: _fixup_attrs($parser, @attrs)
|
||||
);
|
||||
}
|
||||
elsif ($action->{type} eq 'HANDLER') {
|
||||
my $method = $self->can($action->{method});
|
||||
$method->($self, $current, %attrs);
|
||||
$method->($self, $current, @attrs);
|
||||
}
|
||||
else {
|
||||
# TODO replace by hash lookup of known namespaces.
|
||||
@@ -227,6 +238,11 @@ sub _initialize {
|
||||
$localname
|
||||
) || {};
|
||||
|
||||
if (! defined $list->[-1]) {
|
||||
$self->{ data } = $current;
|
||||
return;
|
||||
}
|
||||
|
||||
return if not ($action->{ type });
|
||||
if ( $action->{ type } eq 'CLASS' ) {
|
||||
$current = pop @{ $list };
|
||||
@@ -249,30 +265,40 @@ sub _initialize {
|
||||
|
||||
# make attrs SAX style
|
||||
sub _fixup_attrs {
|
||||
my ($parser, %attrs_of) = @_;
|
||||
my ($parser, @attrs) = @_;
|
||||
|
||||
my @attrs_from = map {
|
||||
$_ =
|
||||
{
|
||||
Name => $_,
|
||||
Value => $attrs_of{ $_ },
|
||||
LocalName => $_
|
||||
}
|
||||
} keys %attrs_of;
|
||||
my @attr_key_from = ();
|
||||
my @attr_value_from = ();
|
||||
|
||||
while (@attrs) {
|
||||
push @attr_key_from, shift @attrs;
|
||||
push @attr_value_from, shift @attrs;
|
||||
}
|
||||
|
||||
my @attrs_from;
|
||||
|
||||
# add xmlns: attrs. expat eats them.
|
||||
#
|
||||
# add namespaces before attributes: Attributes may be namespace-qualified
|
||||
#
|
||||
push @attrs_from, map {
|
||||
# ignore xmlns=FOO namespaces - must be XML schema
|
||||
# # Other nodes should be ignored somewhere else
|
||||
# ($_ eq '#default')
|
||||
# ? ()
|
||||
# :
|
||||
{
|
||||
Name => "xmlns:$_",
|
||||
Value => $parser->expand_ns_prefix( $_ ),
|
||||
LocalName => $_
|
||||
}
|
||||
} $parser->new_ns_prefixes();
|
||||
|
||||
push @attrs_from, map {
|
||||
{
|
||||
Name => defined $parser->namespace($_)
|
||||
? $parser->namespace($_) . '|' . $_
|
||||
: '|' . $_,
|
||||
Value => shift @attr_value_from, # $attrs_of{ $_ },
|
||||
LocalName => $_
|
||||
}
|
||||
} @attr_key_from;
|
||||
|
||||
return @attrs_from;
|
||||
}
|
||||
|
||||
@@ -310,11 +336,11 @@ the same terms as perl itself
|
||||
|
||||
=head1 Repository information
|
||||
|
||||
$Id: WSDLParser.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$Id: WSDLParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
|
||||
$LastChangedDate: 2008-05-18 22:17:56 +0200 (So, 18 Mai 2008) $
|
||||
$LastChangedRevision: 677 $
|
||||
$LastChangedDate: 2008-07-13 21:28:50 +0200 (So, 13 Jul 2008) $
|
||||
$LastChangedRevision: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
|
||||
$HeadURL: http://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 warnings;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %DESERIALIZER = (
|
||||
'1.1' => 'SOAP::WSDL::Deserializer::XSD',
|
||||
|
||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Generator;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %GENERATOR = (
|
||||
'XSD' => 'SOAP::WSDL::Generator::Template::XSD',
|
||||
|
||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Serializer;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %SERIALIZER = (
|
||||
'1.1' => 'SOAP::WSDL::Serializer::XSD',
|
||||
@@ -138,9 +138,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Serializer.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
||||
$Id: Serializer.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package SOAP::WSDL::Factory::Transport;
|
||||
use strict;
|
||||
use warnings;
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %registered_transport_of = ();
|
||||
|
||||
@@ -39,7 +39,7 @@ sub get_transport {
|
||||
|
||||
if (defined $registered_transport_of{ $scheme }) {
|
||||
no strict qw(refs);
|
||||
defined %{ "$registered_transport_of{ $scheme }::" } or
|
||||
$registered_transport_of{ $scheme }->can('new') or
|
||||
eval "require $registered_transport_of{ $scheme }"
|
||||
or die "Cannot load transport class $registered_transport_of{ $scheme } : $@";
|
||||
|
||||
@@ -60,11 +60,11 @@ sub get_transport {
|
||||
no strict qw(refs);
|
||||
# behaves interestingly different under different versions of perl
|
||||
# maybe true even if it's not available
|
||||
defined %{ "$SOAP_LITE_TRANSPORT_OF{ $scheme }::" }
|
||||
my $protocol_class = $SOAP_LITE_TRANSPORT_OF{ $scheme } . '::Client';
|
||||
$protocol_class->can('new')
|
||||
or eval "require $SOAP_LITE_TRANSPORT_OF{ $scheme }"
|
||||
or last SOAP_Lite;
|
||||
|
||||
my $protocol_class = $SOAP_LITE_TRANSPORT_OF{ $scheme } . '::Client';
|
||||
# may fail if it's not available
|
||||
my $transport = eval { $protocol_class->new( %attrs ) }
|
||||
or last SOAP_Lite;
|
||||
@@ -74,7 +74,7 @@ sub get_transport {
|
||||
|
||||
if (exists $SOAP_WSDL_TRANSPORT_OF{ $scheme }) {
|
||||
no strict qw(refs);
|
||||
defined %{ "$SOAP_WSDL_TRANSPORT_OF{ $scheme }::"}
|
||||
$SOAP_WSDL_TRANSPORT_OF{ $scheme }->can('new')
|
||||
or eval "require $SOAP_WSDL_TRANSPORT_OF{ $scheme }"
|
||||
or die "Cannot load transport class $SOAP_WSDL_TRANSPORT_OF{ $scheme } : $@";
|
||||
return $SOAP_WSDL_TRANSPORT_OF{ $scheme }->new( %attrs );
|
||||
@@ -243,9 +243,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Transport.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
||||
$Id: Transport.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
||||
|
||||
=cut
|
||||
|
||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Generator::Iterator::WSDL11;
|
||||
use strict; use warnings;
|
||||
use Class::Std::Fast;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %definitions_of :ATTR(:name<definitions> :default<[]>);
|
||||
my %nodes_of :ATTR(:name<nodes> :default<[]>);
|
||||
@@ -74,7 +74,8 @@ my %METHOD_OF = (
|
||||
? do {
|
||||
die "unsupported global type <"
|
||||
. $node->get_type . "> found in part ". $node->get_name();
|
||||
$types->find_type( $node->expand($node->get_type) )
|
||||
## use this once we can auto-generate an element for RPC bindings
|
||||
# $types->find_type( $node->expand($node->get_type) )
|
||||
}
|
||||
: (),
|
||||
$node->get_element()
|
||||
|
||||
@@ -3,7 +3,7 @@ use strict; use warnings;
|
||||
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||
@@ -128,7 +128,7 @@ You cannot suffix your types by some rule yet...
|
||||
|
||||
Copyright 2008 Martin Kutter.
|
||||
|
||||
This library is free software. You may distribute/modify it under
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package SOAP::WSDL::Generator::Template;
|
||||
use strict;
|
||||
use strict; use warnings;
|
||||
use Template;
|
||||
use Class::Std::Fast::Storable;
|
||||
use Carp;
|
||||
use SOAP::WSDL::Generator::PrefixResolver;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %tt_of :ATTR(:get<tt>);
|
||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||
@@ -39,7 +39,8 @@ sub _process :PROTECTED {
|
||||
INCLUDE_PATH => $INCLUDE_PATH_of{ $ident },
|
||||
OUTPUT_PATH => $OUTPUT_PATH_of{ $ident },
|
||||
PLUGIN_BASE => 'SOAP::WSDL::Generator::Template::Plugin',
|
||||
);
|
||||
)
|
||||
or die Template->error();
|
||||
|
||||
$tt->process( $template,
|
||||
{
|
||||
@@ -68,4 +69,4 @@ sub _process :PROTECTED {
|
||||
or croak $INCLUDE_PATH_of{ $ident }, '\\', $template, ' ', $tt->error();
|
||||
}
|
||||
|
||||
1;
|
||||
1;
|
||||
|
||||
@@ -3,8 +3,8 @@ use strict;
|
||||
use warnings;
|
||||
use Carp qw(confess);
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use Scalar::Util qw(blessed);
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||
@@ -155,6 +155,8 @@ sub element_name {
|
||||
my $self = shift;
|
||||
my $element = shift;
|
||||
|
||||
confess "no element object" unless blessed $element;
|
||||
|
||||
my $name = $element->get_name();
|
||||
if (! $name) {
|
||||
while (my $ref = $element->get_ref()) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package SOAP::WSDL::Generator::Template::XSD;
|
||||
use strict;
|
||||
use strict; use warnings;
|
||||
use Template;
|
||||
use Class::Std::Fast::Storable;
|
||||
use File::Basename;
|
||||
use File::Spec;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
use SOAP::WSDL::Generator::Visitor::Typemap;
|
||||
use SOAP::WSDL::Generator::Visitor::Typelib;
|
||||
@@ -205,6 +205,7 @@ sub visit_XSD_Element {
|
||||
my $output = defined $output_of{ ident $self }
|
||||
? $output_of{ ident $self }
|
||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($element) );
|
||||
warn "Creating element class $output \n";
|
||||
$self->_process('element.tt', { element => $element } , $output);
|
||||
}
|
||||
|
||||
@@ -213,6 +214,7 @@ sub visit_XSD_SimpleType {
|
||||
my $output = defined $output_of{ ident $self }
|
||||
? $output_of{ ident $self }
|
||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
||||
warn "Creating simpleType class $output \n";
|
||||
$self->_process('simpleType.tt', { simpleType => $type } , $output);
|
||||
}
|
||||
|
||||
@@ -221,6 +223,7 @@ sub visit_XSD_ComplexType {
|
||||
my $output = defined $output_of{ ident $self }
|
||||
? $output_of{ ident $self }
|
||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
||||
warn "Creating complexType class $output \n";
|
||||
$self->_process('complexType.tt', { complexType => $type } , $output);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,16 @@
|
||||
|
||||
[% type = definitions.find_portType( binding.expand( binding.get_type ) );
|
||||
port_op = type.find_operation( definitions.get_targetNamespace, operation.get_name );
|
||||
port_op.get_documentation %]
|
||||
port_op.get_documentation();
|
||||
|
||||
$interface->[% operation.get_name %]([% INCLUDE Interface/POD/Message.tt %] );
|
||||
# for now we only document the first response part - document/literal
|
||||
# doesn't allow more.
|
||||
response_name = port_op.first_output.get_message();
|
||||
response_part = definitions.find_message( port_op.first_output.expand( response_name ) ).get_part();
|
||||
response_body_element = definitions.first_types.find_element( response_part.0.expand( response_part.0.get_element ) );
|
||||
response_body_class = XSD.create_xsd_name(response_body_element);
|
||||
%]
|
||||
|
||||
Returns a L<[% response_body_class %]|[% response_body_class %]> object.
|
||||
|
||||
$response = $interface->[% operation.get_name %]([% INCLUDE Interface/POD/Message.tt %] );
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
[% IF (complexType.get_variety == 'restriction');
|
||||
[% IF (complexType.get_derivation == 'restriction');
|
||||
INCLUDE complexType/POD/restriction.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_variety == 'extension');
|
||||
ELSIF (complexType.get_derivation == 'extension');
|
||||
#THROW NOT_IMPLEMENTED, "${ complexType.get_name } - complexType complexContent extension not implemented yet";
|
||||
%]
|
||||
# No documentation generated for complexContent / extension yet
|
||||
[%
|
||||
ELSE;
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety }";
|
||||
THROW UNKNOWN, "unknown derivation ${ complexType.get_derivation }";
|
||||
END;
|
||||
|
||||
%]
|
||||
@@ -30,14 +30,17 @@ __PACKAGE__->_factory(
|
||||
{
|
||||
[% FOREACH element = complexType.get_element;
|
||||
IF (ref = element.get_ref);
|
||||
element = definitions.first_types.find_element(element.expand( element.get_ref ));
|
||||
END;
|
||||
IF (type = element.get_type);
|
||||
ref_element = definitions.first_types.find_element(element.expand( ref ));
|
||||
-%]
|
||||
'[% XSD.perl_var_name(XSD.element_name(ref_element)) %]' => '[% XSD.create_xsd_name(ref_element) %]',
|
||||
|
||||
[% ELSIF (type = element.get_type);
|
||||
element_type = definitions.first_types.find_type(complexType.expand( type ));
|
||||
IF (! element_type);
|
||||
type_name = complexType.expand( type );
|
||||
THROW NOT_FOUND, "${ type_name.0 } ${ type_name.1 } not found";
|
||||
END; -%]
|
||||
END;
|
||||
-%]
|
||||
'[% XSD.perl_var_name(XSD.element_name(element)) %]' => '[% XSD.create_xsd_name(element_type) %]',
|
||||
[% ELSE;
|
||||
IF (element.first_simpleType);
|
||||
|
||||
@@ -7,6 +7,10 @@ ELSIF (complexType.get_variety == 'sequence');
|
||||
ELSIF (complexType.get_variety == 'all');
|
||||
INCLUDE complexType/extension.tt(complexType = complexType);
|
||||
ELSE;
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety }";
|
||||
IF (complexType.get_variety);
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety }";
|
||||
ELSE -%]
|
||||
# empty variety
|
||||
[% END;
|
||||
END;
|
||||
%]
|
||||
@@ -22,7 +22,7 @@ element_list = [];
|
||||
|
||||
# copy complexType ref
|
||||
base_type = complexType;
|
||||
base_name=base_type.expand( base_type.get_base );
|
||||
base_name = base_type.expand( base_type.get_base );
|
||||
base_type = definitions.first_types.find_type( base_name );
|
||||
|
||||
# add a use base for first to setup inheritance
|
||||
@@ -31,13 +31,17 @@ use base qw([% XSD.create_xsd_name( base_type ) %]);
|
||||
[%
|
||||
# loop forever
|
||||
WHILE (1);
|
||||
IF (complexType.get_variety == 'extension');
|
||||
# wrap statement in IF to avoid printing
|
||||
IF (complexType.set_variety( base_type.get_variety )); END;
|
||||
END;
|
||||
# make a copy. We don't want to modify the original list here...
|
||||
FOREACH element = base_type.get_element.reverse;
|
||||
element_list.unshift(element);
|
||||
END;
|
||||
|
||||
# get next base type
|
||||
IF (base_name=base_type.expand( base_type.get_base ));
|
||||
# get next base type if there is one...
|
||||
IF (base_type.get_base);
|
||||
base_name=base_type.expand( base_type.get_base );
|
||||
# set new base_type
|
||||
base_type = definitions.first_types.find_type( base_name );
|
||||
ELSE;
|
||||
@@ -59,8 +63,11 @@ END;
|
||||
|
||||
# set derived element list
|
||||
# wrap in IF; END; to prevent it getting printed
|
||||
IF (complexType.set_element( element_list )); END;
|
||||
IF ( complexType.set_element( element_list ) ); END;
|
||||
|
||||
-%]
|
||||
# Variety: [% complexType.get_variety %]
|
||||
[%
|
||||
INCLUDE complexType/variety.tt(complexType = complexType);
|
||||
|
||||
# restore original element list
|
||||
|
||||
@@ -76,6 +76,38 @@ Perl data type class for the XML Schema defined element
|
||||
|
||||
[% INCLUDE POD/annotation.tt(node = element) %]
|
||||
|
||||
[% IF (complexType = element.first_complexType);
|
||||
IF (complexType.get_element); %]
|
||||
|
||||
[% head1 %] PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
[% FOREACH child_element = complexType.get_element -%]
|
||||
=item * [% XSD.perl_var_name(XSD.element_name(child_element)) %]
|
||||
|
||||
$element->set_[% XSD.perl_var_name(XSD.element_name(child_element)) %]($data);
|
||||
$element->get_[% XSD.perl_var_name(XSD.element_name(child_element)) %]();
|
||||
|
||||
[% IF (XSD.perl_var_name(XSD.element_name(child_element)) == child_element.get_name); %]
|
||||
[% ELSE %]
|
||||
Note: The name of this property has been altered, because it didn't match
|
||||
perl's notion of variable/subroutine names. The altered name is used in
|
||||
perl code only, XML output uses the original name:
|
||||
|
||||
[% child_element.get_name %]
|
||||
|
||||
[% END %]
|
||||
|
||||
=back
|
||||
[% END;
|
||||
END;
|
||||
END; -%]
|
||||
|
||||
|
||||
[% head1 %] METHODS
|
||||
|
||||
[% head2 %] new
|
||||
|
||||
@@ -4,11 +4,11 @@ use base qw(
|
||||
[%
|
||||
base_type = definitions.get_types.0.find_type(simpleType.expand(base));
|
||||
IF ! base_type;
|
||||
THROW NOT_FOUND "No base type in " _ simpleType.get_parent.get_name;
|
||||
THROW NOT_FOUND "base type $base not found." _ simpleType.get_parent.get_name;
|
||||
END;
|
||||
XSD.create_xsd_name(base_type) %]);
|
||||
[% ELSIF (type = simpleType.first_simpleType() );
|
||||
INCLUDE simpleType/atomicType.tt(type = type);
|
||||
ELSE;
|
||||
THROW "neither base nor atomic type - don't know what to do" %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
@@ -3,7 +3,7 @@ use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
||||
|
||||
@@ -5,7 +5,7 @@ use base qw(SOAP::WSDL::Generator::Visitor
|
||||
SOAP::WSDL::Generator::Template
|
||||
);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
||||
|
||||
use base qw(SOAP::WSDL::Generator::Visitor);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %path_of :ATTR(:name<path> :default<[]>);
|
||||
my %typemap_of :ATTR(:name<typemap> :default<()>);
|
||||
|
||||
@@ -32,6 +32,15 @@ this backend:
|
||||
|
||||
=head3 Accessing HTTP(S) webservices protected by NTLM authentication
|
||||
|
||||
You need the L<NTLM|NTLM> distribution installed to access webservices protected
|
||||
by NTLM authentication. More specifically, you need the Authen::NTLM module
|
||||
from this distribution. Note that this is different from the Authen::NTML
|
||||
distribution by Yee Man Chan also available from CPAN.
|
||||
|
||||
Your user credentials usually need to include the windows domain like this:
|
||||
|
||||
testdomain\testuser
|
||||
|
||||
Besides passing user credentials as when accessing a web service protected
|
||||
by basic or digest authentication, you also need to enforce connection
|
||||
keep_alive on the transport backens.
|
||||
@@ -130,4 +139,4 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
$Id: $
|
||||
$HeadURL: $
|
||||
|
||||
=cut
|
||||
=cut
|
||||
|
||||
@@ -93,7 +93,7 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
$Rev: 391 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Glossary.pod 391 2007-11-17 21:56:13Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Glossary.pod $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Glossary.pod $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -241,7 +241,7 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
$Rev: 391 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Parser.pod 391 2007-11-17 21:56:13Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Parser.pod $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Parser.pod $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -1255,7 +1255,7 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
$Rev: 562 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: WS_I.pod 562 2008-02-22 20:32:17Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/WS_I.pod $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/WS_I.pod $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -90,10 +90,8 @@ can just say
|
||||
|
||||
Of course this will only work if MyTypes::NewType has a superset of the old
|
||||
object class' elements.
|
||||
.
|
||||
|
||||
Future versions will restrict the data returned to the child element's data -
|
||||
you should not expect XML attributes to be returned through hash refs.
|
||||
Note that XML attribute data is not included in the hash ref output yet.
|
||||
|
||||
=head1 HOW IT WORKS
|
||||
|
||||
@@ -405,7 +403,7 @@ supported (yet).
|
||||
|
||||
=item * import
|
||||
|
||||
The import includion element requires the schemaLocation attribute for
|
||||
The import inclusion element requires the schemaLocation attribute for
|
||||
resolving the XML schema to import. Support for the import element is
|
||||
implemented in L<SOAP::WSDL::Expat::WSDLParser|SOAP::WSDL::Expat::WSDLParser>,
|
||||
so alternative parsers may or may not support the import element.
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %part_of :ATTR(:name<part> :default<[]>);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %body_of :ATTR(:name<body> :default<[]>);
|
||||
my %header_of :ATTR(:name<header> :default<[]>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||
my %input_of :ATTR(:name<input> :default<[]>);
|
||||
|
||||
@@ -6,7 +6,7 @@ use Class::Std::Fast::Storable;
|
||||
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %element_of :ATTR(:name<element> :default<()>);
|
||||
my %type_of :ATTR(:name<type> :default<()>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %binding_of :ATTR(:name<binding> :default<()>);
|
||||
my %address_of :ATTR(:name<address> :default<()>);
|
||||
|
||||
@@ -2,33 +2,26 @@ package SOAP::WSDL::PortType;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use List::Util;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||
|
||||
my %attributes_of :ATTR();
|
||||
#
|
||||
#=head2 find_operation
|
||||
#
|
||||
#$port_type->find_operation($namespace, $name)
|
||||
#
|
||||
#Returns the PortType's operation object matching the given namespace and
|
||||
#name
|
||||
#
|
||||
|
||||
%attributes_of = (
|
||||
operation => \%operation_of,
|
||||
);
|
||||
|
||||
# Function factory - we could be writing this method for all %attribute
|
||||
# keys, too, but that's just C&P (eehm, Copy & Paste...)
|
||||
foreach my $method(keys %attributes_of ) {
|
||||
no strict qw(refs); ## no critic ProhibitNoStrict
|
||||
|
||||
# ... btw, we mean this method here...
|
||||
*{ "find_$method" } = sub {
|
||||
my ($self, @args) = @_;
|
||||
my @found_at = grep {
|
||||
$_->get_targetNamespace() eq $args[0] &&
|
||||
$_->get_name() eq $args[1]
|
||||
}
|
||||
@{ $attributes_of{ $method }->{ ident $self } };
|
||||
return $found_at[0];
|
||||
};
|
||||
}
|
||||
sub find_operation {
|
||||
return List::Util::first {
|
||||
( $_->get_targetNamespace() eq $_[1] ) && ( $_->get_name() eq $_[2] )
|
||||
} @{ $operation_of{ ${ $_[0] } } };
|
||||
};
|
||||
|
||||
1;
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %location :ATTR(:name<location> :default<()>);
|
||||
1;
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
use Class::Std::Fast::Storable;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||
|
||||
@@ -3,6 +3,6 @@ use strict;
|
||||
use warnings;
|
||||
use base qw(SOAP::WSDL::Header);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
1;
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %style_of :ATTR(:name<style> :default<()>);
|
||||
my %soapAction_of :ATTR(:name<soapAction> :default<()>);
|
||||
|
||||
@@ -3,7 +3,7 @@ use strict;
|
||||
use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
||||
use SOAP::WSDL::XSD::Typelib::Element;
|
||||
@@ -37,7 +37,7 @@ __PACKAGE__->_factory(
|
||||
sub get_xmlns { return 'http://schemas.xmlsoap.org/soap/envelope/' };
|
||||
|
||||
__PACKAGE__->__set_name('Fault');
|
||||
__PACKAGE__->__set_nillable();
|
||||
__PACKAGE__->__set_nillable(0);
|
||||
__PACKAGE__->__set_minOccurs();
|
||||
__PACKAGE__->__set_maxOccurs();
|
||||
__PACKAGE__->__set_ref('');
|
||||
@@ -101,10 +101,10 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 728 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: Fault11.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
||||
$Id: Fault11.pm 728 2008-07-13 19:28:50Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use Scalar::Util qw(blessed);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
use SOAP::WSDL::Factory::Serializer;
|
||||
|
||||
@@ -50,7 +50,7 @@ sub serialize {
|
||||
}
|
||||
|
||||
sub serialize_header {
|
||||
my ($self, $name, $data, $opt) = @_;
|
||||
my ($self, $method, $data, $opt) = @_;
|
||||
|
||||
# header is optional. Leave out if there's no header data
|
||||
return q{} if not $data;
|
||||
@@ -62,8 +62,11 @@ sub serialize_header {
|
||||
}
|
||||
|
||||
sub serialize_body {
|
||||
my ($self, $name, $data, $opt) = @_;
|
||||
$data->__set_name("$opt->{prefix}:$name") if $opt->{prefix};
|
||||
my ($self, $method, $data, $opt) = @_;
|
||||
|
||||
# TODO This one wipes out the old class' XML name globally
|
||||
# Fix in some more appropriate place...
|
||||
$data->__set_name("$opt->{prefix}:" . $data->__get_name() ) if $opt->{prefix};
|
||||
|
||||
# Body is NOT optional. Serialize to empty body
|
||||
# if we have no data.
|
||||
@@ -129,10 +132,10 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 735 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: XSD.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
||||
$Id: XSD.pm 735 2008-08-14 07:36:54Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use Scalar::Util qw(blessed);
|
||||
use SOAP::WSDL::Factory::Deserializer;
|
||||
use SOAP::WSDL::Factory::Serializer;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
||||
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
||||
@@ -199,6 +199,38 @@ SOAP::Server's deserializer create one for you:
|
||||
You may use any other object as exception, provided it has a
|
||||
serialize() method which returns the object's XML representation.
|
||||
|
||||
=head2 Subclassing
|
||||
|
||||
To write a transport-specific SOAP Server, you should subclass
|
||||
SOAP::WSDL::Server.
|
||||
|
||||
See the C<SOAP::WSDL::Server::*> modules for examples.
|
||||
|
||||
A SOAP Server must call the following method to actually handle the request:
|
||||
|
||||
=head3 handle
|
||||
|
||||
Handles the SOAP request.
|
||||
|
||||
Returns the response message as XML.
|
||||
|
||||
Expects a C<HTTP::Request> object as only parameter.
|
||||
|
||||
You may use any other object as parameter, as long as it implements the
|
||||
following methods:
|
||||
|
||||
=over
|
||||
|
||||
=item * header
|
||||
|
||||
Called as header('SOAPAction'). Must return the corresponding HTTP header.
|
||||
|
||||
=item * content
|
||||
|
||||
Returns the request message
|
||||
|
||||
=back
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2004-2008 Martin Kutter.
|
||||
|
||||
@@ -2,6 +2,8 @@ package SOAP::WSDL::Server::CGI;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Encode;
|
||||
|
||||
use HTTP::Request;
|
||||
use HTTP::Response;
|
||||
use HTTP::Status;
|
||||
@@ -12,7 +14,7 @@ use Class::Std::Fast::Storable;
|
||||
|
||||
use base qw(SOAP::WSDL::Server);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.06');
|
||||
|
||||
# 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...
|
||||
@@ -80,7 +82,7 @@ sub handle {
|
||||
else {
|
||||
$response = HTTP::Response->new(200);
|
||||
$response->header('Content-type' => 'text/xml; charset="utf-8"');
|
||||
$response->content( $response_message );
|
||||
$response->content( encode('utf8', $response_message ) );
|
||||
{
|
||||
use bytes;
|
||||
$response->header('Content-length', length $response_message);
|
||||
|
||||
@@ -16,7 +16,7 @@ use Apache2::Const -compile => qw(
|
||||
HTTP_LENGTH_REQUIRED
|
||||
);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %LOADED_OF = ();
|
||||
|
||||
@@ -266,8 +266,8 @@ Thanks!
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
This library is free software. You may distribute/modify it under
|
||||
the same terms as perl itself.
|
||||
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||
the same terms as perl itself
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %port_of :ATTR(:name<port> :default<[]>);
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package SOAP::WSDL::Transport::HTTP;
|
||||
use strict;
|
||||
use strict; use warnings;
|
||||
use base qw(LWP::UserAgent);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# create methods normally inherited from SOAP::Client
|
||||
SUBFACTORY: {
|
||||
@@ -23,9 +23,10 @@ sub send_receive {
|
||||
|
||||
$encoding = defined($encoding)
|
||||
? lc($encoding)
|
||||
: 'utf8';
|
||||
: 'utf-8';
|
||||
|
||||
$content_type = 'text/xml' if not defined($content_type);
|
||||
$content_type = "text/xml; charset=$encoding"
|
||||
if not defined($content_type);
|
||||
# what's this all about?
|
||||
# unfortunately combination of LWP and Perl 5.6.1 and later has bug
|
||||
# in sending multibyte characters. LWP uses length() to calculate
|
||||
@@ -48,7 +49,7 @@ sub send_receive {
|
||||
|
||||
my $request = HTTP::Request->new( 'POST',
|
||||
$endpoint,
|
||||
[ 'Content-Type', "$content_type; charset=$encoding",
|
||||
[ 'Content-Type', "$content_type",
|
||||
'Content-Length', $bytelength,
|
||||
'SOAPAction', $soap_action,
|
||||
],
|
||||
@@ -90,10 +91,10 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||
|
||||
=head1 REPOSITORY INFORMATION
|
||||
|
||||
$Rev: 677 $
|
||||
$Rev: 744 $
|
||||
$LastChangedBy: kutterma $
|
||||
$Id: HTTP.pm 677 2008-05-18 20:17:56Z kutterma $
|
||||
$HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
||||
$Id: HTTP.pm 744 2008-10-15 16:58:45Z kutterma $
|
||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'basic';
|
||||
use SOAP::WSDL::Factory::Transport;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# register on loading
|
||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use SOAP::WSDL::Factory::Transport;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
||||
|
||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::TypeLookup;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %TYPE_FROM = (
|
||||
# wsdl:
|
||||
|
||||
@@ -5,7 +5,7 @@ use SOAP::WSDL::XSD::Schema::Builtin;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
my %schema_of :ATTR(:name<schema> :default<[]>);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<enumeration value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<attribute
|
||||
# default = string
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<attributeGroup
|
||||
# id = ID
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# only used in SOAP::WSDL - will be obsolete once SOAP::WSDL uses the
|
||||
# generative approach, too
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package SOAP::WSDL::XSD::ComplexType;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Carp;
|
||||
use Class::Std::Fast::Storable;
|
||||
use Scalar::Util qw(blessed);
|
||||
use base qw/SOAP::WSDL::Base/;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.06');
|
||||
|
||||
# id provided by Base
|
||||
# name provided by Base
|
||||
@@ -26,12 +25,13 @@ my %maxInclusive :ATTR(:name<maxInclusive> :default<[]>);
|
||||
|
||||
|
||||
my %attribute_of :ATTR(:name<attribute> :default<()>);
|
||||
my %element_of :ATTR(:name<element> :default<()>);
|
||||
my %element_of :ATTR(:name<element> :default<[]>);
|
||||
my %group_of :ATTR(:name<group> :default<()>);
|
||||
my %variety_of :ATTR(:name<variety> :default<()>);
|
||||
my %base_of :ATTR(:name<base> :default<()>);
|
||||
my %itemType_of :ATTR(:name<itemType> :default<()>);
|
||||
my %abstract_of :ATTR(:name<abstract> :default<()>);
|
||||
my %final_of :ATTR(:name<final> :default<()>);
|
||||
my %mixed_of :ATTR(:name<mixed> :default<()>); # default is false
|
||||
|
||||
my %derivation_of :ATTR(:name<derivation> :default<()>);
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# id provided by Base
|
||||
# name provided by Base
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<enumeration value="">
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
#<pattern value="">
|
||||
|
||||
# id provided by Base
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<xs:group name="myModelGroup">
|
||||
# <xs:sequence>
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<maxLength value="">
|
||||
|
||||
@@ -14,5 +14,6 @@ use version; our $VERSION = qv('2.00.03');
|
||||
|
||||
# may be defined as atomic simpleType
|
||||
my %value_of :ATTR(:name<value> :default<()>);
|
||||
my %fixed_of :ATTR(:name<fixed> :default<()>);
|
||||
|
||||
1;
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<minExclusive value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable constructor => 'none';
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
#<pattern value="">
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use warnings;
|
||||
use Class::Std::Fast::Storable;
|
||||
use base qw(SOAP::WSDL::Base);
|
||||
|
||||
use version; our $VERSION = qv('2.00.03');
|
||||
use version; our $VERSION = qv('2.00.05');
|
||||
|
||||
# child elements
|
||||
my %attributeGroup_of :ATTR(:name<attributeGroup> :default<[]>);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user