import SOAP-WSDL 2.00.07 from CPAN
git-cpan-module: SOAP-WSDL git-cpan-version: 2.00.07 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00.07.tar.gz
This commit is contained in:
committed by
Michael G. Schwern
parent
3de318be40
commit
bfc3247583
2
Build.PL
2
Build.PL
@@ -5,7 +5,7 @@ $build = Module::Build->new(
|
|||||||
create_makefile_pl => 'small',
|
create_makefile_pl => 'small',
|
||||||
dist_abstract => 'SOAP with WSDL support',
|
dist_abstract => 'SOAP with WSDL support',
|
||||||
dist_name => 'SOAP-WSDL',
|
dist_name => 'SOAP-WSDL',
|
||||||
dist_version => '2.00.06',
|
dist_version => '2.00.07',
|
||||||
module_name => 'SOAP::WSDL',
|
module_name => 'SOAP::WSDL',
|
||||||
license => 'artistic',
|
license => 'artistic',
|
||||||
requires => {
|
requires => {
|
||||||
|
|||||||
70
Changes
70
Changes
@@ -1,4 +1,4 @@
|
|||||||
Release notes for SOAP::WSDL 2.00.06
|
Release notes for SOAP::WSDL 2.00.07
|
||||||
-------
|
-------
|
||||||
|
|
||||||
I'm proud to present a new release of SOAP::WSDL.
|
I'm proud to present a new release of SOAP::WSDL.
|
||||||
@@ -20,6 +20,7 @@ Features:
|
|||||||
* Efficient documentation
|
* Efficient documentation
|
||||||
o SOAP::WSDL::Manual guides you at getting your work done, not at
|
o SOAP::WSDL::Manual guides you at getting your work done, not at
|
||||||
the module's internals
|
the module's internals
|
||||||
|
* Examples in Perl and Java
|
||||||
* Thorough test suite
|
* Thorough test suite
|
||||||
o SOAP::WSDL is heavily regression tested, with a test coverage of
|
o SOAP::WSDL is heavily regression tested, with a test coverage of
|
||||||
over 95% (excluding documentation - you wouldn't want to read
|
over 95% (excluding documentation - you wouldn't want to read
|
||||||
@@ -36,6 +37,73 @@ Features:
|
|||||||
|
|
||||||
The following changes have been made:
|
The following changes have been made:
|
||||||
|
|
||||||
|
2.00.07 - Feb 21 2009
|
||||||
|
|
||||||
|
The following features were added (the numbers in square brackets are the
|
||||||
|
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):
|
||||||
|
|
||||||
|
* [ 2621474 ] Add Non-Perl examples / test client / Servers
|
||||||
|
The distribution now includes a Java / Apache CXF example.
|
||||||
|
|
||||||
|
* [ 2585274 ] Create a HTTP::Server::Simple based SOAP Server
|
||||||
|
SOAP::WSDL now ships with a server class to use with HTTP::Server::Simple
|
||||||
|
for testing purposes. See SOAP::WSDL::Server::Simple for details.
|
||||||
|
|
||||||
|
* [ 1911232 ] Allow skipping unknown XML elements
|
||||||
|
See SOAP::WSDL::Manual::Cookbook on how to use this feature
|
||||||
|
|
||||||
|
* [ 2505421 ] include XML attributes in as_hash_ref
|
||||||
|
ComplexTypes now include XML attributes in as_hash_ref's result under the
|
||||||
|
special key "xmlattr".
|
||||||
|
As a side effect, as_hash ref now works for ComplexType objects with a
|
||||||
|
simpleContent content model, too (though the results may be misleading:
|
||||||
|
Their value is included under the hash key "value", the only other
|
||||||
|
possible hash key is "xmlattr").
|
||||||
|
|
||||||
|
* [ 1960062 ] Use POSIX::strftime for date conversion
|
||||||
|
Not really a feature, but a little speedup. The Feature request is
|
||||||
|
obsoleted by resorting to good old sprintf for date formatting.
|
||||||
|
Speeds up set_value in date and dateTime Objects by around 30% for non-
|
||||||
|
XML-formatted strings.
|
||||||
|
As a side effect, dateTime now does not allow setting 0 as date.
|
||||||
|
|
||||||
|
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/).
|
||||||
|
|
||||||
|
* [ 2621471 ] SOAP::WSDL::Server sends fault with invalid namespace prefix
|
||||||
|
Faults now use the correct prefix.
|
||||||
|
|
||||||
|
* [ 2560208 ] elementFormDefault always "qualified"
|
||||||
|
SOAP::WSDL now respects the elementFormDefault attribute in embedded
|
||||||
|
XML Schemas.
|
||||||
|
|
||||||
|
* #42049: [PATCH] SOAP::WSDL uses default User-Agent
|
||||||
|
SOAP::WSDL now announces itself as "SOAP::WSDL $VERSION" instead of
|
||||||
|
"libwww/perl $VERSION" in HTTP requests. Note however, that this only
|
||||||
|
applies for wsdl2perl, SOAP::WSDL and SOAP::WSDL::Transport::HTTP.
|
||||||
|
SOAP::Transport HTTP (from the SOAP-Lite distribution) is not affected.
|
||||||
|
|
||||||
|
* [ 2533903 ] Imported schema overwrites existing XML namespace/prefix map
|
||||||
|
Importing a schema which defined the same XML namespace prefix as the
|
||||||
|
importing schema, but with a different URI resulted in having the URI
|
||||||
|
of the associated with the prefix from the imported schema set in the
|
||||||
|
importing schema.
|
||||||
|
|
||||||
|
* #42388 [PATCH] Disabling 'die' in Typemaps
|
||||||
|
Duplicate of [1911232] Allow skipping unknown XML elements - see added
|
||||||
|
features.
|
||||||
|
|
||||||
|
* #42179 Problem deserializing SOAP messages that contain only a simpleType
|
||||||
|
Now the top-level element may consist of a simpleType only, too.
|
||||||
|
|
||||||
|
The following uncategorized improvements have been made:
|
||||||
|
|
||||||
|
* Fixed a =back error in element POD generation
|
||||||
|
* Improved test suite
|
||||||
|
* Improved documentation
|
||||||
|
* Improved TEST_COVERAGE to report coverage correctly
|
||||||
|
|
||||||
2.00.06 - Dec 03 2008
|
2.00.06 - Dec 03 2008
|
||||||
|
|
||||||
The following bugs have been fixed (the numbers in square brackets are the
|
The following bugs have been fixed (the numbers in square brackets are the
|
||||||
|
|||||||
94
MANIFEST
94
MANIFEST
@@ -20,6 +20,16 @@ example/genericbarcode.pl
|
|||||||
example/hello.pl
|
example/hello.pl
|
||||||
example/hello_compile.pl
|
example/hello_compile.pl
|
||||||
example/hello_lite.pl
|
example/hello_lite.pl
|
||||||
|
example/java/cxf/.classpath
|
||||||
|
example/java/cxf/.settings/org.eclipse.jdt.core.prefs
|
||||||
|
example/java/cxf/.settings/org.maven.ide.eclipse.prefs
|
||||||
|
example/java/cxf/11_helloworld.wsdl
|
||||||
|
example/java/cxf/jax-binding.xml
|
||||||
|
example/java/cxf/pom.xml
|
||||||
|
example/java/cxf/README
|
||||||
|
example/java/cxf/src/main/resources/cxf.xml
|
||||||
|
example/java/cxf/src/test/java/helloworld/HelloWorldTest.java
|
||||||
|
example/java/cxf/src/test/resources/test-context.xml
|
||||||
example/lib/MyElements/CountCookies.pm
|
example/lib/MyElements/CountCookies.pm
|
||||||
example/lib/MyElements/CountCookiesResponse.pm
|
example/lib/MyElements/CountCookiesResponse.pm
|
||||||
example/lib/MyElements/GenerateBarCode.pm
|
example/lib/MyElements/GenerateBarCode.pm
|
||||||
@@ -69,6 +79,7 @@ example/lib/MyTypes/test2.pm
|
|||||||
example/lib/MyTypes/testExtended.pm
|
example/lib/MyTypes/testExtended.pm
|
||||||
example/person.pl
|
example/person.pl
|
||||||
example/person_compile.pl
|
example/person_compile.pl
|
||||||
|
example/server/hello_simple.pl
|
||||||
example/visitor/visitor.pl
|
example/visitor/visitor.pl
|
||||||
example/weather.pl
|
example/weather.pl
|
||||||
example/weather_wsdl.pl
|
example/weather_wsdl.pl
|
||||||
@@ -77,6 +88,7 @@ example/wsdl/FortuneCookie.xml
|
|||||||
example/wsdl/genericbarcode.xml
|
example/wsdl/genericbarcode.xml
|
||||||
example/wsdl/globalweather.xml
|
example/wsdl/globalweather.xml
|
||||||
example/wsdl/Person.wsdl
|
example/wsdl/Person.wsdl
|
||||||
|
example/wsdl/person.xml
|
||||||
HACKING
|
HACKING
|
||||||
lib/SOAP/WSDL.pm
|
lib/SOAP/WSDL.pm
|
||||||
lib/SOAP/WSDL/Base.pm
|
lib/SOAP/WSDL/Base.pm
|
||||||
@@ -157,9 +169,9 @@ lib/SOAP/WSDL/Generator/Template/XSD/simpleType/restriction.tt
|
|||||||
lib/SOAP/WSDL/Generator/Template/XSD/simpleType/union.tt
|
lib/SOAP/WSDL/Generator/Template/XSD/simpleType/union.tt
|
||||||
lib/SOAP/WSDL/Generator/Template/XSD/Typemap.tt
|
lib/SOAP/WSDL/Generator/Template/XSD/Typemap.tt
|
||||||
lib/SOAP/WSDL/Generator/Visitor.pm
|
lib/SOAP/WSDL/Generator/Visitor.pm
|
||||||
lib/SOAP/WSDL/Generator/Visitor/Typelib.pm
|
|
||||||
lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
||||||
lib/SOAP/WSDL/Manual.pod
|
lib/SOAP/WSDL/Manual.pod
|
||||||
|
lib/SOAP/WSDL/Manual/CodeFirst.pod
|
||||||
lib/SOAP/WSDL/Manual/Cookbook.pod
|
lib/SOAP/WSDL/Manual/Cookbook.pod
|
||||||
lib/SOAP/WSDL/Manual/Deserializer.pod
|
lib/SOAP/WSDL/Manual/Deserializer.pod
|
||||||
lib/SOAP/WSDL/Manual/FAQ.pod
|
lib/SOAP/WSDL/Manual/FAQ.pod
|
||||||
@@ -178,6 +190,7 @@ lib/SOAP/WSDL/Serializer/XSD.pm
|
|||||||
lib/SOAP/WSDL/Server.pm
|
lib/SOAP/WSDL/Server.pm
|
||||||
lib/SOAP/WSDL/Server/CGI.pm
|
lib/SOAP/WSDL/Server/CGI.pm
|
||||||
lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
||||||
|
lib/SOAP/WSDL/Server/Simple.pm
|
||||||
lib/SOAP/WSDL/Service.pm
|
lib/SOAP/WSDL/Service.pm
|
||||||
lib/SOAP/WSDL/SOAP/Address.pm
|
lib/SOAP/WSDL/SOAP/Address.pm
|
||||||
lib/SOAP/WSDL/SOAP/Body.pm
|
lib/SOAP/WSDL/SOAP/Body.pm
|
||||||
@@ -321,6 +334,77 @@ t/acceptance/wsdl/import.xsd
|
|||||||
t/acceptance/wsdl/import_loop.xsd
|
t/acceptance/wsdl/import_loop.xsd
|
||||||
t/acceptance/wsdl/message_gateway.wsdl
|
t/acceptance/wsdl/message_gateway.wsdl
|
||||||
t/acceptance/wsdl/nested_complextype.wsdl
|
t/acceptance/wsdl/nested_complextype.wsdl
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddAttachment.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddAttachmentResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddCalendarEntry.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddCalendarEntryResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddTask.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddTaskResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddUsersToGroup.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/AddUsersToGroupResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ClearGroup.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ClearGroupResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/CountItems.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/CountItemsResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/CreateGroup.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/CreateGroupResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/DeleteGroup.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/DeleteGroupResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/DeleteItem.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/DeleteItemResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetAttachment.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetAttachmentResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetItems.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetItemsResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetItemVersions.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/GetItemVersionsResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ModifyCalendarEntry.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ModifyCalendarEntryResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ModifyTask.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/ModifyTaskResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/RemoveUsersFromGroup.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyElements/RemoveUsersFromGroupResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyInterfaces/RunningServiceClass/RunningServiceClassSoap.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypemaps/RunningServiceClass.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ADDITIONAL_ROLES.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/AddressesSalutations.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfAttachment.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfField.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfNUser.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfPermission.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfSerializedItem.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfString.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfString1.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ArrayOfString2.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Attachment.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/AttachmentItemData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/AttachmentOperation.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/CalendarCreateData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/CalendarModifyData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/CommonItemData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/CountListOfSerializedItem.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Field.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Folders.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/GetFileResponse.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/HashMapOfStringNiceListOfAddressesSalutations.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/HstringAddressesSalutations.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ItemCreateData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ItemData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/ItemUpdateData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/KVstringNiceListOfAddressesSalutations.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/NUser.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Permission.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/PermissionItemData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Principal.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/PrincipalType.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/Recipients.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/SerializedItem.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/TaskModifyData.pm
|
||||||
|
t/acceptance/wsdl/private/lib/MyTypes/UserType.pm
|
||||||
|
t/acceptance/wsdl/private/PartnerManagement_header_def.wsdl
|
||||||
|
t/acceptance/wsdl/private/PartnerManagement_lenght_.wsdl
|
||||||
|
t/acceptance/wsdl/private/RunningService.wsdl
|
||||||
|
t/acceptance/wsdl/private/RunningService.WSDL
|
||||||
t/acceptance/wsdl/WSDLParser-import.wsdl
|
t/acceptance/wsdl/WSDLParser-import.wsdl
|
||||||
t/acceptance/wsdl/WSDLParser-imported.wsdl
|
t/acceptance/wsdl/WSDLParser-imported.wsdl
|
||||||
t/acceptance/wsdl/WSDLParser.wsdl
|
t/acceptance/wsdl/WSDLParser.wsdl
|
||||||
@@ -330,10 +414,16 @@ t/acceptance/wsdl/WSDLParser/import_xsd_cascade.wsdl
|
|||||||
t/acceptance/wsdl/WSDLParser/imported.xsd
|
t/acceptance/wsdl/WSDLParser/imported.xsd
|
||||||
t/acceptance/wsdl/WSDLParser/xsd_import_no_location.wsdl
|
t/acceptance/wsdl/WSDLParser/xsd_import_no_location.wsdl
|
||||||
t/acceptance/wsdl/WSDLParser_import_loop.wsdl
|
t/acceptance/wsdl/WSDLParser_import_loop.wsdl
|
||||||
|
t/CodeFirst/ComplexType.pm
|
||||||
|
t/CodeFirst/element.pm
|
||||||
|
t/CodeFirst/sequence.pm
|
||||||
|
t/CodeFirst/test.pl
|
||||||
t/contributed.wsdl
|
t/contributed.wsdl
|
||||||
|
t/lib/CodeFirst.pm
|
||||||
t/lib/Mod_Perl2Test.pm
|
t/lib/Mod_Perl2Test.pm
|
||||||
t/lib/MyComplexType.pm
|
t/lib/MyComplexType.pm
|
||||||
t/lib/MyElement.pm
|
t/lib/MyElement.pm
|
||||||
|
t/lib/MySimpleElement.pm
|
||||||
t/lib/MySimpleType.pm
|
t/lib/MySimpleType.pm
|
||||||
t/lib/Test/SOAP/WSDL/Expat/WSDLParser.pm
|
t/lib/Test/SOAP/WSDL/Expat/WSDLParser.pm
|
||||||
t/lib/Test/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
t/lib/Test/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
||||||
@@ -375,6 +465,7 @@ t/SOAP/WSDL/Factory/Serializer.t
|
|||||||
t/SOAP/WSDL/Factory/Transport.t
|
t/SOAP/WSDL/Factory/Transport.t
|
||||||
t/SOAP/WSDL/Generator/Template.t
|
t/SOAP/WSDL/Generator/Template.t
|
||||||
t/SOAP/WSDL/Generator/Template/XSD/Import.t
|
t/SOAP/WSDL/Generator/Template/XSD/Import.t
|
||||||
|
t/SOAP/WSDL/Generator/Template/XSD/Unqualified.t
|
||||||
t/SOAP/WSDL/Generator/Visitor.t
|
t/SOAP/WSDL/Generator/Visitor.t
|
||||||
t/SOAP/WSDL/Generator/Visitor/Typemap.t
|
t/SOAP/WSDL/Generator/Visitor/Typemap.t
|
||||||
t/SOAP/WSDL/Generator/XSD.t
|
t/SOAP/WSDL/Generator/XSD.t
|
||||||
@@ -388,6 +479,7 @@ t/SOAP/WSDL/Serializer/XSD.t
|
|||||||
t/SOAP/WSDL/Server.t
|
t/SOAP/WSDL/Server.t
|
||||||
t/SOAP/WSDL/Server/CGI.t
|
t/SOAP/WSDL/Server/CGI.t
|
||||||
t/SOAP/WSDL/Server/Mod_Perl2.t
|
t/SOAP/WSDL/Server/Mod_Perl2.t
|
||||||
|
t/SOAP/WSDL/Server/Simple.t
|
||||||
t/SOAP/WSDL/Transport/01_Test.t
|
t/SOAP/WSDL/Transport/01_Test.t
|
||||||
t/SOAP/WSDL/Transport/acceptance/test2.xml
|
t/SOAP/WSDL/Transport/acceptance/test2.xml
|
||||||
t/SOAP/WSDL/Transport/acceptance/test3.xml
|
t/SOAP/WSDL/Transport/acceptance/test3.xml
|
||||||
|
|||||||
168
META.yml
168
META.yml
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: SOAP-WSDL
|
name: SOAP-WSDL
|
||||||
version: 2.00.06
|
version: 2.00.07
|
||||||
author:
|
author:
|
||||||
- 'Martin Kutter <martin.kutter@fen-net.de>'
|
- 'Martin Kutter <martin.kutter@fen-net.de>'
|
||||||
abstract: SOAP with WSDL support
|
abstract: SOAP with WSDL support
|
||||||
@@ -41,220 +41,220 @@ build_requires:
|
|||||||
provides:
|
provides:
|
||||||
SOAP::WSDL:
|
SOAP::WSDL:
|
||||||
file: lib/SOAP/WSDL.pm
|
file: lib/SOAP/WSDL.pm
|
||||||
version: 2.00.06
|
version: 2.00.07
|
||||||
SOAP::WSDL::Base:
|
SOAP::WSDL::Base:
|
||||||
file: lib/SOAP/WSDL/Base.pm
|
file: lib/SOAP/WSDL/Base.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Binding:
|
SOAP::WSDL::Binding:
|
||||||
file: lib/SOAP/WSDL/Binding.pm
|
file: lib/SOAP/WSDL/Binding.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Client:
|
SOAP::WSDL::Client:
|
||||||
file: lib/SOAP/WSDL/Client.pm
|
file: lib/SOAP/WSDL/Client.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Client::Base:
|
SOAP::WSDL::Client::Base:
|
||||||
file: lib/SOAP/WSDL/Client/Base.pm
|
file: lib/SOAP/WSDL/Client/Base.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Definitions:
|
SOAP::WSDL::Definitions:
|
||||||
file: lib/SOAP/WSDL/Definitions.pm
|
file: lib/SOAP/WSDL/Definitions.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Deserializer::Hash:
|
SOAP::WSDL::Deserializer::Hash:
|
||||||
file: lib/SOAP/WSDL/Deserializer/Hash.pm
|
file: lib/SOAP/WSDL/Deserializer/Hash.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Deserializer::SOM:
|
SOAP::WSDL::Deserializer::SOM:
|
||||||
file: lib/SOAP/WSDL/Deserializer/SOM.pm
|
file: lib/SOAP/WSDL/Deserializer/SOM.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Deserializer::XSD:
|
SOAP::WSDL::Deserializer::XSD:
|
||||||
file: lib/SOAP/WSDL/Deserializer/XSD.pm
|
file: lib/SOAP/WSDL/Deserializer/XSD.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Expat::Base:
|
SOAP::WSDL::Expat::Base:
|
||||||
file: lib/SOAP/WSDL/Expat/Base.pm
|
file: lib/SOAP/WSDL/Expat/Base.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Expat::Message2Hash:
|
SOAP::WSDL::Expat::Message2Hash:
|
||||||
file: lib/SOAP/WSDL/Expat/Message2Hash.pm
|
file: lib/SOAP/WSDL/Expat/Message2Hash.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Expat::MessageParser:
|
SOAP::WSDL::Expat::MessageParser:
|
||||||
file: lib/SOAP/WSDL/Expat/MessageParser.pm
|
file: lib/SOAP/WSDL/Expat/MessageParser.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Expat::MessageStreamParser:
|
SOAP::WSDL::Expat::MessageStreamParser:
|
||||||
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
|
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Expat::WSDLParser:
|
SOAP::WSDL::Expat::WSDLParser:
|
||||||
file: lib/SOAP/WSDL/Expat/WSDLParser.pm
|
file: lib/SOAP/WSDL/Expat/WSDLParser.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Factory::Deserializer:
|
SOAP::WSDL::Factory::Deserializer:
|
||||||
file: lib/SOAP/WSDL/Factory/Deserializer.pm
|
file: lib/SOAP/WSDL/Factory/Deserializer.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Factory::Generator:
|
SOAP::WSDL::Factory::Generator:
|
||||||
file: lib/SOAP/WSDL/Factory/Generator.pm
|
file: lib/SOAP/WSDL/Factory/Generator.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Factory::Serializer:
|
SOAP::WSDL::Factory::Serializer:
|
||||||
file: lib/SOAP/WSDL/Factory/Serializer.pm
|
file: lib/SOAP/WSDL/Factory/Serializer.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Factory::Transport:
|
SOAP::WSDL::Factory::Transport:
|
||||||
file: lib/SOAP/WSDL/Factory/Transport.pm
|
file: lib/SOAP/WSDL/Factory/Transport.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Iterator::WSDL11:
|
SOAP::WSDL::Generator::Iterator::WSDL11:
|
||||||
file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::PrefixResolver:
|
SOAP::WSDL::Generator::PrefixResolver:
|
||||||
file: lib/SOAP/WSDL/Generator/PrefixResolver.pm
|
file: lib/SOAP/WSDL/Generator/PrefixResolver.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Template:
|
SOAP::WSDL::Generator::Template:
|
||||||
file: lib/SOAP/WSDL/Generator/Template.pm
|
file: lib/SOAP/WSDL/Generator/Template.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Template::Plugin::XSD:
|
SOAP::WSDL::Generator::Template::Plugin::XSD:
|
||||||
file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm
|
file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Template::XSD:
|
SOAP::WSDL::Generator::Template::XSD:
|
||||||
file: lib/SOAP/WSDL/Generator/Template/XSD.pm
|
file: lib/SOAP/WSDL/Generator/Template/XSD.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Visitor:
|
SOAP::WSDL::Generator::Visitor:
|
||||||
file: lib/SOAP/WSDL/Generator/Visitor.pm
|
file: lib/SOAP/WSDL/Generator/Visitor.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Generator::Visitor::Typelib:
|
|
||||||
file: lib/SOAP/WSDL/Generator/Visitor/Typelib.pm
|
|
||||||
version: 2.00.05
|
|
||||||
SOAP::WSDL::Generator::Visitor::Typemap:
|
SOAP::WSDL::Generator::Visitor::Typemap:
|
||||||
file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Message:
|
SOAP::WSDL::Message:
|
||||||
file: lib/SOAP/WSDL/Message.pm
|
file: lib/SOAP/WSDL/Message.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::OpMessage:
|
SOAP::WSDL::OpMessage:
|
||||||
file: lib/SOAP/WSDL/OpMessage.pm
|
file: lib/SOAP/WSDL/OpMessage.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Operation:
|
SOAP::WSDL::Operation:
|
||||||
file: lib/SOAP/WSDL/Operation.pm
|
file: lib/SOAP/WSDL/Operation.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Part:
|
SOAP::WSDL::Part:
|
||||||
file: lib/SOAP/WSDL/Part.pm
|
file: lib/SOAP/WSDL/Part.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Port:
|
SOAP::WSDL::Port:
|
||||||
file: lib/SOAP/WSDL/Port.pm
|
file: lib/SOAP/WSDL/Port.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::PortType:
|
SOAP::WSDL::PortType:
|
||||||
file: lib/SOAP/WSDL/PortType.pm
|
file: lib/SOAP/WSDL/PortType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::Address:
|
SOAP::WSDL::SOAP::Address:
|
||||||
file: lib/SOAP/WSDL/SOAP/Address.pm
|
file: lib/SOAP/WSDL/SOAP/Address.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::Body:
|
SOAP::WSDL::SOAP::Body:
|
||||||
file: lib/SOAP/WSDL/SOAP/Body.pm
|
file: lib/SOAP/WSDL/SOAP/Body.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::Header:
|
SOAP::WSDL::SOAP::Header:
|
||||||
file: lib/SOAP/WSDL/SOAP/Header.pm
|
file: lib/SOAP/WSDL/SOAP/Header.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::HeaderFault:
|
SOAP::WSDL::SOAP::HeaderFault:
|
||||||
file: lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
file: lib/SOAP/WSDL/SOAP/HeaderFault.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::Operation:
|
SOAP::WSDL::SOAP::Operation:
|
||||||
file: lib/SOAP/WSDL/SOAP/Operation.pm
|
file: lib/SOAP/WSDL/SOAP/Operation.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::SOAP::Typelib::Fault11:
|
SOAP::WSDL::SOAP::Typelib::Fault11:
|
||||||
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Serializer::XSD:
|
SOAP::WSDL::Serializer::XSD:
|
||||||
file: lib/SOAP/WSDL/Serializer/XSD.pm
|
file: lib/SOAP/WSDL/Serializer/XSD.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Server:
|
SOAP::WSDL::Server:
|
||||||
file: lib/SOAP/WSDL/Server.pm
|
file: lib/SOAP/WSDL/Server.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Server::CGI:
|
SOAP::WSDL::Server::CGI:
|
||||||
file: lib/SOAP/WSDL/Server/CGI.pm
|
file: lib/SOAP/WSDL/Server/CGI.pm
|
||||||
version: 2.00.06
|
version: 2.00.07
|
||||||
SOAP::WSDL::Server::Mod_Perl2:
|
SOAP::WSDL::Server::Mod_Perl2:
|
||||||
file: lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
file: lib/SOAP/WSDL/Server/Mod_Perl2.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
|
SOAP::WSDL::Server::Simple:
|
||||||
|
file: lib/SOAP/WSDL/Server/Simple.pm
|
||||||
|
version: 2.00.07
|
||||||
SOAP::WSDL::Service:
|
SOAP::WSDL::Service:
|
||||||
file: lib/SOAP/WSDL/Service.pm
|
file: lib/SOAP/WSDL/Service.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Transport::HTTP:
|
SOAP::WSDL::Transport::HTTP:
|
||||||
file: lib/SOAP/WSDL/Transport/HTTP.pm
|
file: lib/SOAP/WSDL/Transport/HTTP.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Transport::Loopback:
|
SOAP::WSDL::Transport::Loopback:
|
||||||
file: lib/SOAP/WSDL/Transport/Loopback.pm
|
file: lib/SOAP/WSDL/Transport/Loopback.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Transport::Test:
|
SOAP::WSDL::Transport::Test:
|
||||||
file: lib/SOAP/WSDL/Transport/Test.pm
|
file: lib/SOAP/WSDL/Transport/Test.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::TypeLookup:
|
SOAP::WSDL::TypeLookup:
|
||||||
file: lib/SOAP/WSDL/TypeLookup.pm
|
file: lib/SOAP/WSDL/TypeLookup.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::Types:
|
SOAP::WSDL::Types:
|
||||||
file: lib/SOAP/WSDL/Types.pm
|
file: lib/SOAP/WSDL/Types.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Annotation:
|
SOAP::WSDL::XSD::Annotation:
|
||||||
file: lib/SOAP/WSDL/XSD/Annotation.pm
|
file: lib/SOAP/WSDL/XSD/Annotation.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Attribute:
|
SOAP::WSDL::XSD::Attribute:
|
||||||
file: lib/SOAP/WSDL/XSD/Attribute.pm
|
file: lib/SOAP/WSDL/XSD/Attribute.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::AttributeGroup:
|
SOAP::WSDL::XSD::AttributeGroup:
|
||||||
file: lib/SOAP/WSDL/XSD/AttributeGroup.pm
|
file: lib/SOAP/WSDL/XSD/AttributeGroup.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Builtin:
|
SOAP::WSDL::XSD::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Builtin.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::ComplexType:
|
SOAP::WSDL::XSD::ComplexType:
|
||||||
file: lib/SOAP/WSDL/XSD/ComplexType.pm
|
file: lib/SOAP/WSDL/XSD/ComplexType.pm
|
||||||
version: 2.00.06
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Element:
|
SOAP::WSDL::XSD::Element:
|
||||||
file: lib/SOAP/WSDL/XSD/Element.pm
|
file: lib/SOAP/WSDL/XSD/Element.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Enumeration:
|
SOAP::WSDL::XSD::Enumeration:
|
||||||
file: lib/SOAP/WSDL/XSD/Enumeration.pm
|
file: lib/SOAP/WSDL/XSD/Enumeration.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::FractionDigits:
|
SOAP::WSDL::XSD::FractionDigits:
|
||||||
file: lib/SOAP/WSDL/XSD/FractionDigits.pm
|
file: lib/SOAP/WSDL/XSD/FractionDigits.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Group:
|
SOAP::WSDL::XSD::Group:
|
||||||
file: lib/SOAP/WSDL/XSD/Group.pm
|
file: lib/SOAP/WSDL/XSD/Group.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Length:
|
SOAP::WSDL::XSD::Length:
|
||||||
file: lib/SOAP/WSDL/XSD/Length.pm
|
file: lib/SOAP/WSDL/XSD/Length.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MaxExclusive:
|
SOAP::WSDL::XSD::MaxExclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxExclusive.pm
|
file: lib/SOAP/WSDL/XSD/MaxExclusive.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MaxInclusive:
|
SOAP::WSDL::XSD::MaxInclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxInclusive.pm
|
file: lib/SOAP/WSDL/XSD/MaxInclusive.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MaxLength:
|
SOAP::WSDL::XSD::MaxLength:
|
||||||
file: lib/SOAP/WSDL/XSD/MaxLength.pm
|
file: lib/SOAP/WSDL/XSD/MaxLength.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MinExclusive:
|
SOAP::WSDL::XSD::MinExclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MinExclusive.pm
|
file: lib/SOAP/WSDL/XSD/MinExclusive.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MinInclusive:
|
SOAP::WSDL::XSD::MinInclusive:
|
||||||
file: lib/SOAP/WSDL/XSD/MinInclusive.pm
|
file: lib/SOAP/WSDL/XSD/MinInclusive.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::MinLength:
|
SOAP::WSDL::XSD::MinLength:
|
||||||
file: lib/SOAP/WSDL/XSD/MinLength.pm
|
file: lib/SOAP/WSDL/XSD/MinLength.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Pattern:
|
SOAP::WSDL::XSD::Pattern:
|
||||||
file: lib/SOAP/WSDL/XSD/Pattern.pm
|
file: lib/SOAP/WSDL/XSD/Pattern.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Schema:
|
SOAP::WSDL::XSD::Schema:
|
||||||
file: lib/SOAP/WSDL/XSD/Schema.pm
|
file: lib/SOAP/WSDL/XSD/Schema.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Schema::Builtin:
|
SOAP::WSDL::XSD::Schema::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::SimpleType:
|
SOAP::WSDL::XSD::SimpleType:
|
||||||
file: lib/SOAP/WSDL/XSD/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/SimpleType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::TotalDigits:
|
SOAP::WSDL::XSD::TotalDigits:
|
||||||
file: lib/SOAP/WSDL/XSD/TotalDigits.pm
|
file: lib/SOAP/WSDL/XSD/TotalDigits.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Attribute:
|
SOAP::WSDL::XSD::Typelib::Attribute:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::AttributeSet:
|
SOAP::WSDL::XSD::Typelib::AttributeSet:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin:
|
SOAP::WSDL::XSD::Typelib::Builtin:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::ENTITY:
|
SOAP::WSDL::XSD::Typelib::Builtin::ENTITY:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::ID:
|
SOAP::WSDL::XSD::Typelib::Builtin::ID:
|
||||||
@@ -279,14 +279,14 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::anyType:
|
SOAP::WSDL::XSD::Typelib::Builtin::anyType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::anyURI:
|
SOAP::WSDL::XSD::Typelib::Builtin::anyURI:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::base64Binary:
|
SOAP::WSDL::XSD::Typelib::Builtin::base64Binary:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::boolean:
|
SOAP::WSDL::XSD::Typelib::Builtin::boolean:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::byte:
|
SOAP::WSDL::XSD::Typelib::Builtin::byte:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::date:
|
SOAP::WSDL::XSD::Typelib::Builtin::date:
|
||||||
@@ -339,7 +339,7 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::time:
|
SOAP::WSDL::XSD::Typelib::Builtin::time:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::token:
|
SOAP::WSDL::XSD::Typelib::Builtin::token:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
|
||||||
SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte:
|
SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte:
|
||||||
@@ -352,20 +352,20 @@ provides:
|
|||||||
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
|
||||||
SOAP::WSDL::XSD::Typelib::ComplexType:
|
SOAP::WSDL::XSD::Typelib::ComplexType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::Element:
|
SOAP::WSDL::XSD::Typelib::Element:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/Element.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/Element.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::SimpleType:
|
SOAP::WSDL::XSD::Typelib::SimpleType:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::Typelib::SimpleType::restriction:
|
SOAP::WSDL::XSD::Typelib::SimpleType::restriction:
|
||||||
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
SOAP::WSDL::XSD::WhiteSpace:
|
SOAP::WSDL::XSD::WhiteSpace:
|
||||||
file: lib/SOAP/WSDL/XSD/WhiteSpace.pm
|
file: lib/SOAP/WSDL/XSD/WhiteSpace.pm
|
||||||
version: 2.00.05
|
version: 2.00.07
|
||||||
generated_by: Module::Build version 0.3
|
generated_by: Module::Build version 0.280801
|
||||||
meta-spec:
|
meta-spec:
|
||||||
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
||||||
version: 1.2
|
version: 1.2
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Note: this file was auto-generated by Module::Build::Compat version 0.30
|
# Note: this file was auto-generated by Module::Build::Compat version 0.2808_01
|
||||||
require 5.8.0;
|
require 5.8.0;
|
||||||
use Module::Build::Compat 0.02;
|
use Module::Build::Compat 0.02;
|
||||||
|
|
||||||
|
|||||||
@@ -6,18 +6,20 @@
|
|||||||
# Note that this shell script requires Devel::CoverX::Covered - if you
|
# Note that this shell script requires Devel::CoverX::Covered - if you
|
||||||
# don't have it, comment out the line noted below
|
# don't have it, comment out the line noted below
|
||||||
#
|
#
|
||||||
|
perl Build.PL && perl Build && \
|
||||||
perl -Ilib -It/lib -MTAP::Harness -MFile::Find::Rule -e '
|
perl -MTAP::Harness -MFile::Find::Rule -e '
|
||||||
local $ENV{TEST_VERBOSE} = 1;
|
local $ENV{TEST_VERBOSE} = 1;
|
||||||
TAP::Harness->new({
|
TAP::Harness->new({
|
||||||
merge => 1,
|
merge => 1,
|
||||||
lib => [ q{t/lib}, q{lib} ],
|
lib => [ q{t/lib}, q{blib/lib} ],
|
||||||
switches => [ q{-MDevel::Cover=-ignore,.,-select,^lib/.+,-coverage,statement,-coverage,subroutine,-coverage,condition,-coverage,branch} ],
|
switches => [ q{-MDevel::Cover=-ignore,.,-select,^blib/lib/.+,-coverage,statement,-coverage,subroutine,-coverage,condition,-coverage,branch} ],
|
||||||
})->runtests( sort { $a cmp $b } File::Find::Rule->file()->name( q{*.t} )->in( q{t/} ) );
|
})->runtests( sort { $a cmp $b } File::Find::Rule->file()->name( q{*.t} )->in( q{t/} ) );
|
||||||
'
|
'
|
||||||
|
|
||||||
# Devel::CoverX::Covered
|
# Devel::CoverX::Covered
|
||||||
# covered runs
|
# covered runs
|
||||||
|
|
||||||
cover -coverage="statement" -coverage=condition -coverage=subroutine -coverage="branch"
|
cover
|
||||||
|
|
||||||
|
# cover -coverage="statement" -coverage=condition -coverage=subroutine -coverage="branch"
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,20 @@
|
|||||||
use Benchmark qw(cmpthese);
|
use Benchmark qw(cmpthese timethis timethese);
|
||||||
use POSIX ();
|
use POSIX ();
|
||||||
use Date::Format ();
|
use Date::Format ();
|
||||||
|
|
||||||
my @time_from = localtime;
|
my @time_from = localtime;
|
||||||
|
|
||||||
|
#use lib '../../lib';
|
||||||
|
|
||||||
|
use SOAP::WSDL::XSD::Typelib::Builtin::dateTime;
|
||||||
|
|
||||||
|
my $date = SOAP::WSDL::XSD::Typelib::Builtin::dateTime->new();
|
||||||
|
timethese 10000, {
|
||||||
|
'sprintf' => sub { $date->set_value('Dec 24 2004 CET'); }
|
||||||
|
};
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
print "Comparing POSIX::strftime and Date::Format::strftime '%Y-%m-%dT%H:%M:%S%z'\n\n";
|
print "Comparing POSIX::strftime and Date::Format::strftime '%Y-%m-%dT%H:%M:%S%z'\n\n";
|
||||||
print 'POSIX: ', POSIX::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n";
|
print 'POSIX: ', POSIX::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n";
|
||||||
print 'Date::Format: ', Date::Format::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n";
|
print 'Date::Format: ', Date::Format::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n";
|
||||||
|
|||||||
@@ -8,18 +8,19 @@ use lib '/home/martin/workspace/SOAP-WSDL_XS/blib/lib';
|
|||||||
use lib '/home/martin/workspace/SOAP-WSDL_XS/blib/arch';
|
use lib '/home/martin/workspace/SOAP-WSDL_XS/blib/arch';
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
use SOAP::Lite;
|
use SOAP::Lite;
|
||||||
|
use XML::Compile::SOAP11;
|
||||||
use XML::Compile::WSDL11;
|
use XML::Compile::WSDL11;
|
||||||
use XML::Compile::Transport::SOAPHTTP;
|
use XML::Compile::Transport::SOAPHTTP;
|
||||||
use MyInterfaces::HelloWorld::HelloWorldSoap;
|
use MyInterfaces::HelloWorld::HelloWorldSoap;
|
||||||
use SOAP::WSDL::Deserializer::XSD_XS;
|
#use SOAP::WSDL::Deserializer::XSD_XS;
|
||||||
use Benchmark qw(cmpthese timethese);
|
use Benchmark qw(cmpthese timethese);
|
||||||
|
|
||||||
use SOAP::WSDL::Transport::HTTP;
|
use SOAP::WSDL::Transport::HTTP;
|
||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
SOAP::WSDL::Factory::Transport->register('http', 'SOAP::WSDL::Transport::HTTP');
|
SOAP::WSDL::Factory::Transport->register('http', 'SOAP::WSDL::Transport::HTTP');
|
||||||
|
|
||||||
#my $proxy = 'http://localhost:81/soap-wsdl-test/helloworld.pl';
|
my $proxy = 'http://localhost:81/soap-wsdl-test/helloworld.pl';
|
||||||
my $proxy = 'http://localhost:81/soap-wsdl-test/helloworld';
|
#my $proxy = 'http://localhost:81/soap-wsdl-test/helloworld';
|
||||||
|
|
||||||
my $lite = SOAP::Lite->new(
|
my $lite = SOAP::Lite->new(
|
||||||
proxy => $proxy
|
proxy => $proxy
|
||||||
@@ -35,7 +36,7 @@ my $soap = MyInterfaces::HelloWorld::HelloWorldSoap->new({
|
|||||||
my $soap_xs = MyInterfaces::HelloWorld::HelloWorldSoap->new({
|
my $soap_xs = MyInterfaces::HelloWorld::HelloWorldSoap->new({
|
||||||
proxy => $proxy,
|
proxy => $proxy,
|
||||||
});
|
});
|
||||||
$soap_xs->set_deserializer( SOAP::WSDL::Deserializer::XSD_XS->new() );
|
#$soap_xs->set_deserializer( SOAP::WSDL::Deserializer::XSD_XS->new() );
|
||||||
|
|
||||||
my @result = ();;
|
my @result = ();;
|
||||||
|
|
||||||
@@ -81,11 +82,11 @@ sub lite_bench {
|
|||||||
compile_bench();
|
compile_bench();
|
||||||
lite_bench();
|
lite_bench();
|
||||||
wsdl_bench();
|
wsdl_bench();
|
||||||
wsdl_xs_bench();
|
#wsdl_xs_bench();
|
||||||
|
|
||||||
timethese 150, {
|
timethese 150, {
|
||||||
'SOAP::WSDL' => \&wsdl_bench,
|
'SOAP::WSDL' => \&wsdl_bench,
|
||||||
'SOAP::WSDL_XS' => \&wsdl_xs_bench,
|
# 'SOAP::WSDL_XS' => \&wsdl_xs_bench,
|
||||||
'XML::Compile' => \&compile_bench,
|
'XML::Compile' => \&compile_bench,
|
||||||
'SOAP::Lite' => \&lite_bench,
|
'SOAP::Lite' => \&lite_bench,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use strict;
|
|||||||
|
|
||||||
use Benchmark qw(cmpthese);
|
use Benchmark qw(cmpthese);
|
||||||
|
|
||||||
|
use XML::Compile::SOAP11;
|
||||||
use XML::Compile::Transport::SOAPHTTP();
|
use XML::Compile::Transport::SOAPHTTP();
|
||||||
use XML::Compile::Util;
|
use XML::Compile::Util;
|
||||||
use XML::Compile::WSDL11;
|
use XML::Compile::WSDL11;
|
||||||
@@ -16,7 +17,7 @@ use XML::Simple;
|
|||||||
use SOAP::Lite;
|
use SOAP::Lite;
|
||||||
use MyInterfaces::TestService::TestPort;
|
use MyInterfaces::TestService::TestPort;
|
||||||
|
|
||||||
use SOAP::WSDL::Deserializer::XSD_XS;
|
#use SOAP::WSDL::Deserializer::XSD_XS;
|
||||||
use SOAP::WSDL::Factory::Deserializer;
|
use SOAP::WSDL::Factory::Deserializer;
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -112,8 +113,8 @@ $lite_xml->outputxml(1);
|
|||||||
$lite_xml->ListPerson();
|
$lite_xml->ListPerson();
|
||||||
|
|
||||||
# # register for SOAP 1.1
|
# # register for SOAP 1.1
|
||||||
SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
|
#SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
|
||||||
my $wsdl_xs = MyInterfaces::TestService::TestPort->new();
|
#my $wsdl_xs = MyInterfaces::TestService::TestPort->new();
|
||||||
|
|
||||||
my $count = 70;
|
my $count = 70;
|
||||||
my @data = ();
|
my @data = ();
|
||||||
@@ -138,7 +139,7 @@ $n++;
|
|||||||
cmpthese $count, {
|
cmpthese $count, {
|
||||||
'SOAP::Lite' => sub { my $som = $lite->call('ListPerson') },
|
'SOAP::Lite' => sub { my $som = $lite->call('ListPerson') },
|
||||||
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({}) },
|
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({}) },
|
||||||
'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({}) },
|
# 'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({}) },
|
||||||
'XML::Compile' => sub { my $result = $call->() },
|
'XML::Compile' => sub { my $result = $call->() },
|
||||||
'XML::Simple' => sub { my $result = XMLin( $lite_xml->call('ListPerson')) },
|
'XML::Simple' => sub { my $result = XMLin( $lite_xml->call('ListPerson')) },
|
||||||
};
|
};
|
||||||
@@ -148,27 +149,27 @@ $n++;
|
|||||||
cmpthese $count, {
|
cmpthese $count, {
|
||||||
'SOAP::Lite' => sub { push @data, $lite->call('ListPerson') },
|
'SOAP::Lite' => sub { push @data, $lite->call('ListPerson') },
|
||||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
# 'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||||
'XML::Compile' => sub { push @data, $call->() },
|
'XML::Compile' => sub { push @data, $call->() },
|
||||||
'XML::Simple' => sub { push @data, XMLin( $lite_xml->call('ListPerson')) },
|
'XML::Simple' => sub { push @data, XMLin( $lite_xml->call('ListPerson')) },
|
||||||
};
|
};
|
||||||
|
|
||||||
@data = ();
|
@data = ();
|
||||||
print "\nBenchmark $n: Play it again, Sam\n";
|
print "\nBenchmark $n: Play it, please play it again, Sam\n";
|
||||||
$n++;
|
$n++;
|
||||||
cmpthese $count, {
|
cmpthese $count, {
|
||||||
|
|
||||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
# 'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||||
'XML::Compile' => sub { push @data, $call->() },
|
# 'XML::Compile' => sub { push @data, $call->() },
|
||||||
'SOAP::Lite' => sub { push @data, $lite->call('ListPerson') },
|
# 'SOAP::Lite' => sub { push @data, $lite->call('ListPerson') },
|
||||||
};
|
};
|
||||||
|
|
||||||
print "\nBenchmark $n: ca. 1kB request - result destroyed immediately\n";
|
print "\nBenchmark $n: ca. 1kB request - result destroyed immediately\n";
|
||||||
$n++;
|
$n++;
|
||||||
cmpthese $count, {
|
cmpthese $count, {
|
||||||
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({ in => $person }) },
|
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({ in => $person }) },
|
||||||
'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({ in => $person }) },
|
# 'SOAP::WSDL_XS' => sub { my $result = $wsdl_xs->ListPerson({ in => $person }) },
|
||||||
'XML::Compile' => sub { my $result = $call->({ in => $person }) },
|
'XML::Compile' => sub { my $result = $call->({ in => $person }) },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -176,7 +177,7 @@ print "\nBenchmark $n: ca. 1kB request - push result on list\n";
|
|||||||
$n++;
|
$n++;
|
||||||
cmpthese $count, {
|
cmpthese $count, {
|
||||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({ in => $person }) },
|
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({ in => $person }) },
|
||||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({ in => $person }) },
|
# 'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({ in => $person }) },
|
||||||
'XML::Compile' => sub { push @data, $call->({ in => $person }) },
|
'XML::Compile' => sub { push @data, $call->({ in => $person }) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ my $lwp = LWP::UserAgent->new(
|
|||||||
: ()
|
: ()
|
||||||
);
|
);
|
||||||
$lwp->env_proxy(); # get proxy from environment. Works for both http & https.
|
$lwp->env_proxy(); # get proxy from environment. Works for both http & https.
|
||||||
|
$lwp->agent(qq[SOAP::WSDL $SOAP::WSDL::Expat::WSDLParser::VERSION]);
|
||||||
|
|
||||||
my $parser = SOAP::WSDL::Expat::WSDLParser->new({
|
my $parser = SOAP::WSDL::Expat::WSDLParser->new({
|
||||||
user_agent => $lwp,
|
user_agent => $lwp,
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ use lib 'lib'; # just needed because interface lies here
|
|||||||
use MyInterfaces::HelloWorld::HelloWorldSoap;
|
use MyInterfaces::HelloWorld::HelloWorldSoap;
|
||||||
|
|
||||||
# I instantiate a interface class.
|
# I instantiate a interface class.
|
||||||
my $soap = MyInterfaces::HelloWorld::HelloWorldSoap->new();
|
my $soap = MyInterfaces::HelloWorld::HelloWorldSoap->new({
|
||||||
|
# proxy => 'http://localhost:8080/JLearn/WS/sayHello'
|
||||||
|
});
|
||||||
|
|
||||||
# I have to lookup the method and synopsis from the interface's pod
|
# I have to lookup the method and synopsis from the interface's pod
|
||||||
my $result = $soap->sayHello({
|
my $result = $soap->sayHello({
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
use XML::Compile::SOAP11;
|
||||||
use XML::Compile::WSDL11;
|
use XML::Compile::WSDL11;
|
||||||
use XML::Compile::Transport::SOAPHTTP;
|
use XML::Compile::Transport::SOAPHTTP;
|
||||||
|
|
||||||
@@ -10,9 +11,11 @@ my $wsdl = XML::Compile::WSDL11->new('wsdl/11_helloworld.wsdl');
|
|||||||
|
|
||||||
# I compile a interface method for a single SOAP method from the WSDL
|
# I compile a interface method for a single SOAP method from the WSDL
|
||||||
# I have to lookup the method names from the WSDL
|
# I have to lookup the method names from the WSDL
|
||||||
|
# or use the provided script examining the WSDL
|
||||||
my $call = $wsdl->compileClient('sayHello');
|
my $call = $wsdl->compileClient('sayHello');
|
||||||
|
|
||||||
# I have to lookup the parameters from the WSDL - can be quite tricky
|
# I have to lookup the parameters from the WSDL - can be quite tricky
|
||||||
|
# XML::Compile provides a script creating examples, so I can use that, too.
|
||||||
my $result = $call->(
|
my $result = $call->(
|
||||||
name => $ARGV[1] || '"Your name"',
|
name => $ARGV[1] || '"Your name"',
|
||||||
givenName => $ARGV[0] || '"Your given name"',
|
givenName => $ARGV[0] || '"Your given name"',
|
||||||
@@ -22,4 +25,5 @@ my $result = $call->(
|
|||||||
die "Error calling soap method" if not defined $result;
|
die "Error calling soap method" if not defined $result;
|
||||||
|
|
||||||
# I have to lookup the output parameters from the WSDL - or try Data::Dumper
|
# I have to lookup the output parameters from the WSDL - or try Data::Dumper
|
||||||
|
# XML::Compile provides a script creating examples, so I can use that, too.
|
||||||
print $result->{ parameters }->{ sayHelloResult }, "\n";
|
print $result->{ parameters }->{ sayHelloResult }, "\n";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
#use strict;
|
#use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use SOAP::Lite +trace;
|
use SOAP::Lite; # +trace;
|
||||||
|
|
||||||
# I have to lookup the URL from the WSDL
|
# I have to lookup the URL from the WSDL
|
||||||
my $soap = SOAP::Lite->new(
|
my $soap = SOAP::Lite->new(
|
||||||
|
|||||||
10
example/java/cxf/.classpath
Normal file
10
example/java/cxf/.classpath
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src/test/java"/>
|
||||||
|
<classpathentry kind="src" path="src/main/java"/>
|
||||||
|
<classpathentry kind="src" path="src/main/resources"/>
|
||||||
|
<classpathentry kind="src" path="src/test/resources"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-6-openjdk"/>
|
||||||
|
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
5
example/java/cxf/.settings/org.eclipse.jdt.core.prefs
Normal file
5
example/java/cxf/.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#Fri Feb 20 19:27:55 CET 2009
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.5
|
||||||
8
example/java/cxf/.settings/org.maven.ide.eclipse.prefs
Normal file
8
example/java/cxf/.settings/org.maven.ide.eclipse.prefs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#Fri Feb 20 19:27:52 CET 2009
|
||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
fullBuildGoals=process-test-resources
|
||||||
|
includeModules=false
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
resourceFilterGoals=process-resources resources\:testResources
|
||||||
|
version=1
|
||||||
95
example/java/cxf/11_helloworld.wsdl
Normal file
95
example/java/cxf/11_helloworld.wsdl
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
||||||
|
xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="urn:HelloWorld"
|
||||||
|
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
||||||
|
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
|
||||||
|
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
|
||||||
|
targetNamespace="urn:HelloWorld"
|
||||||
|
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||||
|
<types>
|
||||||
|
<s:schema elementFormDefault="qualified"
|
||||||
|
targetNamespace="urn:HelloWorld">
|
||||||
|
<s:element name="sayHello">
|
||||||
|
<s:complexType>
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
|
name="name" type="s:string" />
|
||||||
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
|
name="givenName" type="s:string" nillable="1" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:complexType>
|
||||||
|
</s:element>
|
||||||
|
|
||||||
|
<s:element name="sayHelloResponse">
|
||||||
|
<s:complexType>
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
|
name="sayHelloResult" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:complexType>
|
||||||
|
</s:element>
|
||||||
|
|
||||||
|
<s:complexType name="test2">
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1" name="name"
|
||||||
|
type="s:string" />
|
||||||
|
|
||||||
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
|
name="givenName" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:complexType>
|
||||||
|
|
||||||
|
<s:complexType name="testExtended">
|
||||||
|
<s:extension base="s0:test2">
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
|
name="extend" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:extension>
|
||||||
|
</s:complexType>
|
||||||
|
</s:schema>
|
||||||
|
</types>
|
||||||
|
|
||||||
|
<message name="sayHelloSoapIn">
|
||||||
|
<part name="parameters" element="s0:sayHello" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<message name="sayHelloSoapOut">
|
||||||
|
<part name="parameters" element="s0:sayHelloResponse" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<portType name="Service1Soap">
|
||||||
|
<operation name="sayHello">
|
||||||
|
<input message="s0:sayHelloSoapIn" />
|
||||||
|
|
||||||
|
<output message="s0:sayHelloSoapOut" />
|
||||||
|
</operation>
|
||||||
|
</portType>
|
||||||
|
|
||||||
|
<binding name="Service1Soap" type="s0:Service1Soap">
|
||||||
|
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
||||||
|
style="document" />
|
||||||
|
|
||||||
|
<operation name="sayHello">
|
||||||
|
<soap:operation soapAction="urn:HelloWorld#sayHello"
|
||||||
|
style="document" />
|
||||||
|
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" />
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" />
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
|
||||||
|
<service name="HelloWorld">
|
||||||
|
<port name="HelloWorldSoap" binding="s0:Service1Soap">
|
||||||
|
<soap:address
|
||||||
|
location="http://localhost:81/soap-wsdl-test/helloworld.pl" />
|
||||||
|
</port>
|
||||||
|
</service>
|
||||||
|
</definitions>
|
||||||
|
|
||||||
22
example/java/cxf/README
Normal file
22
example/java/cxf/README
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
README
|
||||||
|
------
|
||||||
|
|
||||||
|
This is an example for creating a Apache CXF based client for a SOAP::WSDL
|
||||||
|
based SOAP server.
|
||||||
|
|
||||||
|
The example contains a pom.xml for building CXF based SOAP Clients from
|
||||||
|
a WSDL, a test Spring context configuration, and a JUnit4 test class for
|
||||||
|
testing the generated client.
|
||||||
|
|
||||||
|
It is intended to run against the HTTP::Server::Simple based SOAP server
|
||||||
|
in example/server/hello_simple.pl
|
||||||
|
|
||||||
|
To run the example, fire up the test server by calling
|
||||||
|
|
||||||
|
perl example/server/hello_simple.pl
|
||||||
|
|
||||||
|
Then open a second terminal and run
|
||||||
|
|
||||||
|
mvn test
|
||||||
|
|
||||||
|
The included JUnit test should pass.
|
||||||
15
example/java/cxf/jax-binding.xml
Normal file
15
example/java/cxf/jax-binding.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<bindings
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns="http://java.sun.com/xml/ns/jaxws"
|
||||||
|
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
|
||||||
|
>
|
||||||
|
<bindings
|
||||||
|
node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='urn:HelloWorld']">
|
||||||
|
<jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<jxb:serializable/>
|
||||||
|
</jxb:globalBindings>
|
||||||
|
</bindings>
|
||||||
|
</bindings>
|
||||||
181
example/java/cxf/pom.xml
Normal file
181
example/java/cxf/pom.xml
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>perl.soap.wsdl</groupId>
|
||||||
|
<artifactId>cxf-test</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<properties>
|
||||||
|
<cxf.version>2.1.4</cxf.version>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<!--
|
||||||
|
Depending on your requirements you may need more or fewer modules
|
||||||
|
from cxf
|
||||||
|
--><!--
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-api</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-beans</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-common-utilities</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-beans</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-frontend-jaxws</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-beans</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-transports-http</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-beans</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>spring-web</artifactId>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.4</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>org.springframework.core</artifactId>
|
||||||
|
<version>2.5.6.A</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>org.springframework.beans</artifactId>
|
||||||
|
<version>2.5.6.A</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>org.springframework.test</artifactId>
|
||||||
|
<version>2.5.6.A</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>org.springframework.context</artifactId>
|
||||||
|
<version>2.5.6.A</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>org.springframework.web</artifactId>
|
||||||
|
<version>2.5.6.A</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-transports-http-jetty</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.5</source>
|
||||||
|
<target>1.5</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.5</source>
|
||||||
|
<target>1.5</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-codegen-plugin</artifactId>
|
||||||
|
<version>2.0.9</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>generate-sources</id>
|
||||||
|
<phase>generate-sources</phase>
|
||||||
|
<configuration>
|
||||||
|
<sourceRoot>${basedir}/src/main/java</sourceRoot>
|
||||||
|
<wsdlOptions>
|
||||||
|
<wsdlOption>
|
||||||
|
<wsdl>${basedir}/11_helloworld.wsdl</wsdl>
|
||||||
|
<extraargs>
|
||||||
|
<extraarg>-b</extraarg>
|
||||||
|
<extraarg>${basedir}/jax-binding.xml</extraarg>
|
||||||
|
</extraargs>
|
||||||
|
</wsdlOption>
|
||||||
|
</wsdlOptions>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>wsdl2java</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
||||||
21
example/java/cxf/src/main/resources/cxf.xml
Normal file
21
example/java/cxf/src/main/resources/cxf.xml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
|
||||||
|
xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
|
||||||
|
http://cxf.apache.org/schemas/configuration/http-conf.xsd
|
||||||
|
http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
<!--
|
||||||
|
This http-conf:conduit is required for SOAP::WSDL based CGI-servers.
|
||||||
|
SOAP::WSDL::Server::CGI does not allow chunked transfer-encoding, which
|
||||||
|
is the default for CXF. the http-conf:conduit below switches it off.
|
||||||
|
|
||||||
|
Adapt the name to your URI(s). Wildcards are allowed.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<http-conf:conduit
|
||||||
|
name="http://localhost:8081.http-conduit">
|
||||||
|
<http-conf:client AllowChunking="false"/>
|
||||||
|
</http-conf:conduit>
|
||||||
|
</beans>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package helloworld;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(locations = { "classpath:test-context.xml"})
|
||||||
|
|
||||||
|
public class HelloWorldTest {
|
||||||
|
@Autowired
|
||||||
|
private Service1Soap soapClient;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClient() {
|
||||||
|
assertNotNull(soapClient);
|
||||||
|
String result = soapClient.sayHello("Kutter", "Martin");
|
||||||
|
assertEquals("Hello Martin Kutter", result);
|
||||||
|
}
|
||||||
|
}
|
||||||
16
example/java/cxf/src/test/resources/test-context.xml
Normal file
16
example/java/cxf/src/test/resources/test-context.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:jaxws="http://cxf.apache.org/jaxws"
|
||||||
|
xsi:schemaLocation="
|
||||||
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||||
|
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
|
||||||
|
|
||||||
|
<bean id="proxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
|
||||||
|
<property name="serviceClass" value="helloworld.Service1Soap"/>
|
||||||
|
<property name="address" value="http://localhost:8081"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="helloWorldClient" class="helloworld.Service1Soap"
|
||||||
|
factory-bean="proxyFactory" factory-method="create"/>
|
||||||
|
|
||||||
|
</beans>
|
||||||
@@ -43,12 +43,6 @@ __PACKAGE__->_factory(
|
|||||||
|
|
||||||
} # end BLOCK
|
} # end BLOCK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} # end of BLOCK
|
} # end of BLOCK
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
use XML::Compile::SOAP11;
|
||||||
use XML::Compile::WSDL11;
|
use XML::Compile::WSDL11;
|
||||||
use XML::Compile::Transport::SOAPHTTP;
|
use XML::Compile::Transport::SOAPHTTP;
|
||||||
|
|
||||||
|
|||||||
29
example/server/hello_simple.pl
Normal file
29
example/server/hello_simple.pl
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
use lib '../../lib';
|
||||||
|
use lib '../lib';
|
||||||
|
use SOAP::WSDL::Server::Simple;
|
||||||
|
|
||||||
|
use base qw(HTTP::Server::Simple::CGI);
|
||||||
|
|
||||||
|
use MyServer::HelloWorld::HelloWorldSoap;
|
||||||
|
|
||||||
|
sub handle_request {
|
||||||
|
my ($self, $cgi) = @_;
|
||||||
|
my $server = MyServer::HelloWorld::HelloWorldSoap->new({
|
||||||
|
dispatch_to => 'main',
|
||||||
|
transport_class => 'SOAP::WSDL::Server::Simple',
|
||||||
|
});
|
||||||
|
$server->handle($cgi);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $httpd = __PACKAGE__->new(8081);
|
||||||
|
$httpd->run();
|
||||||
|
|
||||||
|
sub sayHello {
|
||||||
|
my ($self, $body, $header) = @_;
|
||||||
|
my $name = $body->get_name();
|
||||||
|
my $givenName = $body->get_givenName();
|
||||||
|
|
||||||
|
return MyElements::sayHelloResponse->new({
|
||||||
|
sayHelloResult => "Hello $givenName $name"
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -7,7 +7,8 @@
|
|||||||
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
|
||||||
<wsdl:types>
|
<wsdl:types>
|
||||||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
targetNamespace="http://www.example.org/benchmark/">
|
targetNamespace="http://www.example.org/benchmark/"
|
||||||
|
elementFormDefault="qualified">
|
||||||
|
|
||||||
<xsd:element name="ListPerson">
|
<xsd:element name="ListPerson">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
|
|||||||
440
example/wsdl/person.xml
Normal file
440
example/wsdl/person.xml
Normal file
@@ -0,0 +1,440 @@
|
|||||||
|
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||||
|
<SOAP-ENV:Body>
|
||||||
|
<ListPersonResponse xmlns="http://www.example.org/benchmark/">
|
||||||
|
<out>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
<NewElement>
|
||||||
|
<PersonID>
|
||||||
|
<ID>1</ID>
|
||||||
|
</PersonID>
|
||||||
|
<Salutation>Salutation0</Salutation>
|
||||||
|
<Name>Name0</Name>
|
||||||
|
<GivenName>Martin</GivenName>
|
||||||
|
<DateOfBirth>1970-01-01</DateOfBirth>
|
||||||
|
<HomeAddress>
|
||||||
|
<Street>Street 0</Street>
|
||||||
|
<ZIP>00000</ZIP>
|
||||||
|
<City>City0</City>
|
||||||
|
<Country>Country0</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</HomeAddress>
|
||||||
|
<WorkAddress>
|
||||||
|
<Street>Somestreet 23</Street>
|
||||||
|
<ZIP>12345</ZIP>
|
||||||
|
<City>SomeCity</City>
|
||||||
|
<Country>Germany</Country>
|
||||||
|
<PhoneNumber>++499131123456</PhoneNumber>
|
||||||
|
<MobilePhoneNumber>++49150123456</MobilePhoneNumber>
|
||||||
|
</WorkAddress>
|
||||||
|
<Contracts>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100000</ContractID>
|
||||||
|
<ContractName>SomeContract0</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100001</ContractID>
|
||||||
|
<ContractName>SomeContract1</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100002</ContractID>
|
||||||
|
<ContractName>SomeContract2</ContractName>
|
||||||
|
</Contract>
|
||||||
|
<Contract>
|
||||||
|
<ContractID>100003</ContractID>
|
||||||
|
<ContractName>SomeContract3</ContractName>
|
||||||
|
</Contract>
|
||||||
|
</Contracts>
|
||||||
|
</NewElement>
|
||||||
|
</out>
|
||||||
|
</ListPersonResponse>
|
||||||
|
</SOAP-ENV:Body>
|
||||||
|
</SOAP-ENV:Envelope>
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ use Class::Std::Fast constructor => 'none';
|
|||||||
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
|
||||||
use LWP::UserAgent;
|
use LWP::UserAgent;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.06');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
my %no_dispatch_of :ATTR(:name<no_dispatch>);
|
||||||
my %wsdl_of :ATTR(:name<wsdl>);
|
my %wsdl_of :ATTR(:name<wsdl>);
|
||||||
@@ -125,6 +125,7 @@ sub wsdlinit {
|
|||||||
? (keep_alive => 1)
|
? (keep_alive => 1)
|
||||||
: ()
|
: ()
|
||||||
);
|
);
|
||||||
|
$lwp->agent(qq[SOAP::WSDL $VERSION]);
|
||||||
my $response = $lwp->get( $wsdl_of{ $ident } );
|
my $response = $lwp->get( $wsdl_of{ $ident } );
|
||||||
croak $response->message() if ($response->code != 200);
|
croak $response->message() if ($response->code != 200);
|
||||||
|
|
||||||
@@ -830,9 +831,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 755 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: WSDL.pm 755 2008-12-03 21:36:54Z kutterma $
|
$Id: WSDL.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use List::Util;
|
|||||||
use Scalar::Util;
|
use Scalar::Util;
|
||||||
use Carp qw(croak carp confess);
|
use Carp qw(croak carp confess);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %id_of :ATTR(:name<id> :default<()>);
|
my %id_of :ATTR(:name<id> :default<()>);
|
||||||
my %lang_of :ATTR(:name<lang> :default<()>);
|
my %lang_of :ATTR(:name<lang> :default<()>);
|
||||||
@@ -13,7 +13,7 @@ my %name_of :ATTR(:name<name> :default<()>);
|
|||||||
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
my %namespace_of :ATTR(:name<namespace> :default<()>);
|
||||||
my %documentation_of :ATTR(:name<documentation> :default<()>);
|
my %documentation_of :ATTR(:name<documentation> :default<()>);
|
||||||
my %annotation_of :ATTR(:name<annotation> :default<()>);
|
my %annotation_of :ATTR(:name<annotation> :default<()>);
|
||||||
my %targetNamespace_of :ATTR(:name<targetNamespace> :default<()>);
|
my %targetNamespace_of :ATTR(:name<targetNamespace> :default<"">);
|
||||||
my %xmlns_of :ATTR(:name<xmlns> :default<{}>);
|
my %xmlns_of :ATTR(:name<xmlns> :default<{}>);
|
||||||
my %parent_of :ATTR(:get<parent> :default<()>);
|
my %parent_of :ATTR(:get<parent> :default<()>);
|
||||||
|
|
||||||
@@ -167,6 +167,13 @@ sub expand {
|
|||||||
sub _expand;
|
sub _expand;
|
||||||
*_expand = \&expand;
|
*_expand = \&expand;
|
||||||
|
|
||||||
|
sub schema {
|
||||||
|
my $parent = $_[0]->get_parent();
|
||||||
|
return if ! defined $parent;
|
||||||
|
return $parent if $parent->isa('SOAP::WSDL::XSD::Schema');
|
||||||
|
return $parent->schema();
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
my %type_of :ATTR(:name<type> :default<()>);
|
my %type_of :ATTR(:name<type> :default<()>);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ use SOAP::WSDL::Factory::Serializer;
|
|||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||||
my %no_dispatch_of :ATTR(:name<no_dispatch> :default<()>);
|
my %no_dispatch_of :ATTR(:name<no_dispatch> :default<()>);
|
||||||
@@ -24,8 +24,10 @@ my %soap_version_of :ATTR(:get<soap_version> :init_attr<soap_version> :de
|
|||||||
|
|
||||||
my %on_action_of :ATTR(:name<on_action> :default<()>);
|
my %on_action_of :ATTR(:name<on_action> :default<()>);
|
||||||
my %content_type_of :ATTR(:name<content_type> :default<text/xml; charset=utf-8>); #/#trick editors
|
my %content_type_of :ATTR(:name<content_type> :default<text/xml; charset=utf-8>); #/#trick editors
|
||||||
|
my %encoding_of :ATTR(:name<encoding> :default<utf-8>);
|
||||||
my %serializer_of :ATTR(:name<serializer> :default<()>);
|
my %serializer_of :ATTR(:name<serializer> :default<()>);
|
||||||
my %deserializer_of :ATTR(:name<deserializer> :default<()>);
|
my %deserializer_of :ATTR(:name<deserializer> :default<()>);
|
||||||
|
my %deserializer_args_of :ATTR(:name<deserializer_args> :default<{}>);
|
||||||
|
|
||||||
sub BUILD {
|
sub BUILD {
|
||||||
my ($self, $ident, $attrs_of_ref) = @_;
|
my ($self, $ident, $attrs_of_ref) = @_;
|
||||||
@@ -147,6 +149,7 @@ sub call {
|
|||||||
my $response = $transport->send_receive(
|
my $response = $transport->send_receive(
|
||||||
endpoint => $self->get_endpoint(),
|
endpoint => $self->get_endpoint(),
|
||||||
content_type => $content_type_of{ $ident },
|
content_type => $content_type_of{ $ident },
|
||||||
|
encoding => $encoding_of{ $ident },
|
||||||
envelope => $envelope,
|
envelope => $envelope,
|
||||||
action => $soap_action,
|
action => $soap_action,
|
||||||
# on_receive_chunk => sub {} # optional, may be used for parsing large responses as they arrive.
|
# on_receive_chunk => sub {} # optional, may be used for parsing large responses as they arrive.
|
||||||
@@ -155,8 +158,10 @@ sub call {
|
|||||||
return $response if ($outputxml_of{ $ident } );
|
return $response if ($outputxml_of{ $ident } );
|
||||||
|
|
||||||
# get deserializer
|
# get deserializer
|
||||||
|
use Data::Dumper;
|
||||||
$deserializer_of{ $ident } ||= SOAP::WSDL::Factory::Deserializer->get_deserializer({
|
$deserializer_of{ $ident } ||= SOAP::WSDL::Factory::Deserializer->get_deserializer({
|
||||||
soap_version => $soap_version_of{ $ident },
|
soap_version => $soap_version_of{ $ident },
|
||||||
|
%{ $deserializer_args_of{ $ident } },
|
||||||
});
|
});
|
||||||
|
|
||||||
# set class resolver if serializer supports it
|
# set class resolver if serializer supports it
|
||||||
@@ -395,9 +400,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 744 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Client.pm 744 2008-10-15 16:58:45Z kutterma $
|
$Id: Client.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base 'SOAP::WSDL::Client';
|
use base 'SOAP::WSDL::Client';
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
sub call {
|
sub call {
|
||||||
my ($self, $method, $body, $header) = @_;
|
my ($self, $method, $body, $header) = @_;
|
||||||
@@ -85,9 +85,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Base.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Base.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use List::Util qw(first);
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %types_of :ATTR(:name<types> :default<[]>);
|
my %types_of :ATTR(:name<types> :default<[]>);
|
||||||
my %message_of :ATTR(:name<message> :default<[]>);
|
my %message_of :ATTR(:name<message> :default<[]>);
|
||||||
@@ -115,9 +115,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Definitions.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Definitions.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use SOAP::WSDL::Expat::Message2Hash;
|
|||||||
use SOAP::WSDL::Factory::Deserializer;
|
use SOAP::WSDL::Factory::Deserializer;
|
||||||
SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );
|
SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ );
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
sub BUILD {
|
sub BUILD {
|
||||||
my ($self, $ident, $args_of_ref) = @_;
|
my ($self, $ident, $args_of_ref) = @_;
|
||||||
@@ -163,9 +163,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Hash.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Hash.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Deserializer::SOM;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
our @ISA;
|
our @ISA;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
@@ -140,9 +140,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: SOM.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: SOM.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,25 +5,34 @@ use Class::Std::Fast::Storable;
|
|||||||
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
use SOAP::WSDL::SOAP::Typelib::Fault11;
|
||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
my %class_resolver_of :ATTR(:name<class_resolver> :default<()>);
|
||||||
|
my %strict_of :ATTR(:get<strict> :init_arg<strict> :default<1>);
|
||||||
my %parser_of :ATTR();
|
my %parser_of :ATTR();
|
||||||
|
|
||||||
|
sub set_strict {
|
||||||
|
undef $parser_of{${$_[0]}};
|
||||||
|
$strict_of{${$_[0]}} = $_[1];
|
||||||
|
}
|
||||||
|
|
||||||
sub BUILD {
|
sub BUILD {
|
||||||
my ($self, $ident, $args_of_ref) = @_;
|
my ($self, $ident, $args_of_ref) = @_;
|
||||||
|
|
||||||
# ignore all options except 'class_resolver'
|
# ignore all options except 'class_resolver'
|
||||||
for (keys %{ $args_of_ref }) {
|
for (keys %{ $args_of_ref }) {
|
||||||
delete $args_of_ref->{ $_ } if $_ ne 'class_resolver';
|
next if $_ eq 'strict';
|
||||||
|
next if $_ eq 'class_resolver';
|
||||||
|
delete $args_of_ref->{ $_ };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub deserialize {
|
sub deserialize {
|
||||||
my ($self, $content) = @_;
|
my ($self, $content) = @_;
|
||||||
|
|
||||||
$parser_of{ ${ $self } } = SOAP::WSDL::Expat::MessageParser->new()
|
$parser_of{ ${ $self } } = SOAP::WSDL::Expat::MessageParser->new({
|
||||||
|
strict => $strict_of{ ${ $self } }
|
||||||
|
})
|
||||||
if not $parser_of{ ${ $self } };
|
if not $parser_of{ ${ $self } };
|
||||||
$parser_of{ ${ $self } }->class_resolver( $class_resolver_of{ ${ $self } } );
|
$parser_of{ ${ $self } }->class_resolver( $class_resolver_of{ ${ $self } } );
|
||||||
eval { $parser_of{ ${ $self } }->parse_string( $content ) };
|
eval { $parser_of{ ${ $self } }->parse_string( $content ) };
|
||||||
@@ -75,6 +84,20 @@ SOAP::WSDL.
|
|||||||
If you want to use the XSD serializer from SOAP::WSDL, set the outputtree()
|
If you want to use the XSD serializer from SOAP::WSDL, set the outputtree()
|
||||||
property and provide a class_resolver.
|
property and provide a class_resolver.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * strict
|
||||||
|
|
||||||
|
Enables/disables strict XML processing. Strict processing is enabled by
|
||||||
|
default. To disable strict XML processing pass the following to the
|
||||||
|
constructor or use the C<set_strict> method:
|
||||||
|
|
||||||
|
strict => 0
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
=head1 METHODS
|
=head1 METHODS
|
||||||
|
|
||||||
=head2 deserialize
|
=head2 deserialize
|
||||||
@@ -86,6 +109,10 @@ Deserializes the message.
|
|||||||
Generates a L<SOAP::WSDL::SOAP::Typelib::Fault11|SOAP::WSDL::SOAP::Typelib::Fault11>
|
Generates a L<SOAP::WSDL::SOAP::Typelib::Fault11|SOAP::WSDL::SOAP::Typelib::Fault11>
|
||||||
object and returns it.
|
object and returns it.
|
||||||
|
|
||||||
|
=head2 set_strict
|
||||||
|
|
||||||
|
Enable/disable strict XML parsing. Default is enabled.
|
||||||
|
|
||||||
=head1 LICENSE AND COPYRIGHT
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
Copyright 2004-2007 Martin Kutter.
|
Copyright 2004-2007 Martin Kutter.
|
||||||
@@ -99,9 +126,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: XSD.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: XSD.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
|||||||
|
|
||||||
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
# TODO: convert to Class::Std::Fast based class - hash based classes suck.
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, $arg_ref) = @_;
|
my ($class, $arg_ref) = @_;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use base qw(SOAP::WSDL::Expat::Base);
|
use base qw(SOAP::WSDL::Expat::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
sub _initialize {
|
sub _initialize {
|
||||||
my ($self, $parser) = @_;
|
my ($self, $parser) = @_;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use base qw(SOAP::WSDL::Expat::Base);
|
|||||||
|
|
||||||
BEGIN { require Class::Std::Fast };
|
BEGIN { require Class::Std::Fast };
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# GLOBALS
|
# GLOBALS
|
||||||
my $OBJECT_CACHE_REF = Class::Std::Fast::OBJECT_CACHE_REF();
|
my $OBJECT_CACHE_REF = Class::Std::Fast::OBJECT_CACHE_REF();
|
||||||
@@ -108,7 +108,10 @@ sub _initialize {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
: ();
|
: (
|
||||||
|
0 => sub { $depth++ },
|
||||||
|
1 => sub { $depth++ },
|
||||||
|
);
|
||||||
|
|
||||||
# use "globals" for speed
|
# use "globals" for speed
|
||||||
my ($_prefix, $_method, $_class, $_leaf) = ();
|
my ($_prefix, $_method, $_class, $_leaf) = ();
|
||||||
@@ -137,11 +140,14 @@ sub _initialize {
|
|||||||
return if $skip; # skip inside __SKIP__
|
return if $skip; # skip inside __SKIP__
|
||||||
|
|
||||||
# resolve class of this element
|
# resolve class of this element
|
||||||
$_class = $self->{ class_resolver }->get_class( $path )
|
$_class = $self->{ class_resolver }->get_class( $path );
|
||||||
or die "Cannot resolve class for "
|
|
||||||
. join('/', @{ $path }) . " via " . $self->{ class_resolver };
|
|
||||||
|
|
||||||
if ($_class eq '__SKIP__') {
|
if (! defined($_class) and $self->{ strict }) {
|
||||||
|
die "Cannot resolve class for "
|
||||||
|
. join('/', @{ $path }) . " via " . $self->{ class_resolver };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! defined($_class) or ($_class eq '__SKIP__') ) {
|
||||||
$skip = join('/', @{ $path });
|
$skip = join('/', @{ $path });
|
||||||
$_[0]->setHandlers( Char => undef );
|
$_[0]->setHandlers( Char => undef );
|
||||||
return;
|
return;
|
||||||
@@ -233,6 +239,9 @@ sub _initialize {
|
|||||||
# empty characters
|
# empty characters
|
||||||
$characters = q{};
|
$characters = q{};
|
||||||
|
|
||||||
|
# stop believing we're a leaf node
|
||||||
|
$_leaf = 0;
|
||||||
|
|
||||||
# return if there's only one elment - can't set it in parent ;-)
|
# return if there's only one elment - can't set it in parent ;-)
|
||||||
# but set as root element if we don't have one already.
|
# but set as root element if we don't have one already.
|
||||||
if (not defined $list->[-1]) {
|
if (not defined $list->[-1]) {
|
||||||
@@ -254,8 +263,6 @@ sub _initialize {
|
|||||||
|
|
||||||
$current = pop @$list; # step up in object hierarchy
|
$current = pop @$list; # step up in object hierarchy
|
||||||
|
|
||||||
$_leaf = 0; # stop believing we're a leaf node
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -323,10 +330,10 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 Repository information
|
=head1 Repository information
|
||||||
|
|
||||||
$Id: MessageParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: MessageParser.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
|
|
||||||
$LastChangedDate: 2008-07-13 21:28:50 +0200 (So, 13 Jul 2008) $
|
$LastChangedDate: 2009-02-21 01:04:29 +0100 (Sa, 21 Feb 2009) $
|
||||||
$LastChangedRevision: 728 $
|
$LastChangedRevision: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use XML::Parser::Expat;
|
|||||||
use SOAP::WSDL::Expat::MessageParser;
|
use SOAP::WSDL::Expat::MessageParser;
|
||||||
use base qw(SOAP::WSDL::Expat::MessageParser);
|
use base qw(SOAP::WSDL::Expat::MessageParser);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
sub parse_start {
|
sub parse_start {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
@@ -69,9 +69,9 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: MessageStreamParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: MessageStreamParser.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Carp;
|
|||||||
use SOAP::WSDL::TypeLookup;
|
use SOAP::WSDL::TypeLookup;
|
||||||
use base qw(SOAP::WSDL::Expat::Base);
|
use base qw(SOAP::WSDL::Expat::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#
|
#
|
||||||
# Import child elements of a WSDL / XML Schema tree into the current tree
|
# Import child elements of a WSDL / XML Schema tree into the current tree
|
||||||
@@ -18,33 +18,38 @@ use version; our $VERSION = qv('2.00.05');
|
|||||||
#
|
#
|
||||||
|
|
||||||
sub _import_children {
|
sub _import_children {
|
||||||
my ($self, $name, $imported, $importer, $import_namespace) = @_;
|
my ( $self, $name, $imported, $importer, $import_namespace ) = @_;
|
||||||
|
|
||||||
my $targetNamespace = $importer->get_targetNamespace();
|
my $targetNamespace = $importer->get_targetNamespace();
|
||||||
my $push_method = "push_$name";
|
my $push_method = "push_$name";
|
||||||
my $get_method = "get_$name";
|
my $get_method = "get_$name";
|
||||||
my $default_namespace = $imported->get_xmlns()->{ '#default' };
|
my $default_namespace = $imported->get_xmlns()->{'#default'};
|
||||||
|
|
||||||
no strict qw(refs);
|
no strict qw(refs);
|
||||||
my $value_ref = $imported->$get_method();
|
my $value_ref = $imported->$get_method();
|
||||||
if ($value_ref) {
|
if ($value_ref) {
|
||||||
|
|
||||||
$value_ref = [ $value_ref ] if (not ref $value_ref eq 'ARRAY');
|
$value_ref = [$value_ref] if ( not ref $value_ref eq 'ARRAY' );
|
||||||
|
|
||||||
|
for ( @{$value_ref} ) {
|
||||||
|
|
||||||
for (@{ $value_ref }) {
|
|
||||||
# fixup namespace - new parent may be from different namespace
|
# fixup namespace - new parent may be from different namespace
|
||||||
if (defined ($default_namespace)) {
|
if ( defined($default_namespace) ) {
|
||||||
my $xmlns = $_->get_xmlns();
|
my $xmlns = $_->get_xmlns();
|
||||||
|
|
||||||
# it's a hash ref, so we can just update values
|
# it's a hash ref, so we can just update values
|
||||||
if (! defined $xmlns->{ '#default'}) {
|
if ( !defined $xmlns->{'#default'} ) {
|
||||||
$xmlns->{ '#default' } = $default_namespace;
|
$xmlns->{'#default'} = $default_namespace;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# fixup targetNamespace, but don't override
|
# fixup targetNamespace, but don't override
|
||||||
$_->set_targetNamespace( $import_namespace )
|
$_->set_targetNamespace($import_namespace)
|
||||||
if ( ($import_namespace ne $targetNamespace) && ! $_->get_targetNamespace);
|
if ( ( $import_namespace ne $targetNamespace )
|
||||||
|
&& !$_->get_targetNamespace );
|
||||||
|
|
||||||
# update parent...
|
# update parent...
|
||||||
$_->set_parent( $importer );
|
$_->set_parent($importer);
|
||||||
|
|
||||||
# push elements into importing WSDL
|
# push elements into importing WSDL
|
||||||
$importer->$push_method($_);
|
$importer->$push_method($_);
|
||||||
@@ -55,18 +60,22 @@ sub _import_children {
|
|||||||
sub _import_namespace_definitions {
|
sub _import_namespace_definitions {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $arg_ref = shift;
|
my $arg_ref = shift;
|
||||||
my $importer = $arg_ref->{ importer };
|
my $importer = $arg_ref->{importer};
|
||||||
my $imported = $arg_ref->{ imported };
|
my $imported = $arg_ref->{imported};
|
||||||
|
|
||||||
# import namespace definitions, too
|
# import namespace definitions, too
|
||||||
my $importer_ns_of = $importer->get_xmlns();
|
my $importer_ns_of = $importer->get_xmlns();
|
||||||
my %xmlns_of = %{ $imported->get_xmlns() };
|
my %xmlns_of = %{$imported->get_xmlns()};
|
||||||
|
|
||||||
# it's a hash ref, we can just add to.
|
# it's a hash ref, we can just add to.
|
||||||
# TODO: check whether prefix is already taken.
|
# TODO: check whether URI is the better key.
|
||||||
# TODO: check wheter URI is the better key.
|
while ( my ( $prefix, $url ) = each %xmlns_of ) {
|
||||||
while (my ($prefix, $url) = each %xmlns_of) {
|
if ( exists( $importer_ns_of->{$prefix} ) ) {
|
||||||
$importer_ns_of->{ $prefix } = $url;
|
|
||||||
|
# warn "$prefix already exists";
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$importer_ns_of->{$prefix} = $url;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,30 +84,33 @@ sub xml_schema_import {
|
|||||||
my $schema = shift;
|
my $schema = shift;
|
||||||
my $parser = $self->clone();
|
my $parser = $self->clone();
|
||||||
my %attr_of = @_;
|
my %attr_of = @_;
|
||||||
my $import_namespace = $attr_of{ namespace };
|
my $import_namespace = $attr_of{namespace};
|
||||||
|
|
||||||
if (not $attr_of{schemaLocation}) {
|
if ( not $attr_of{schemaLocation} ) {
|
||||||
warn "cannot import document for namespace >$import_namespace< without location";
|
warn
|
||||||
|
"cannot import document for namespace >$import_namespace< without location";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not $self->get_uri) {
|
if ( not $self->get_uri ) {
|
||||||
die "cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one."
|
die
|
||||||
|
"cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one.";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $uri = URI->new_abs($attr_of{schemaLocation}, $self->get_uri() );
|
my $uri = URI->new_abs( $attr_of{schemaLocation}, $self->get_uri() );
|
||||||
my $imported = $parser->parse_uri($uri);
|
my $imported = $parser->parse_uri($uri);
|
||||||
|
|
||||||
# might already be imported - parse_uri just returns in this case
|
# might already be imported - parse_uri just returns in this case
|
||||||
return if not defined $imported;
|
return if not defined $imported;
|
||||||
|
|
||||||
$self->_import_namespace_definitions({
|
$self->_import_namespace_definitions( {
|
||||||
importer => $schema,
|
importer => $schema,
|
||||||
imported => $imported,
|
imported => $imported,
|
||||||
});
|
} );
|
||||||
|
|
||||||
for my $name ( qw(type element group attribute attributeGroup) ) {
|
for my $name (qw(type element group attribute attributeGroup)) {
|
||||||
$self->_import_children( $name, $imported, $schema, $import_namespace);
|
$self->_import_children( $name, $imported, $schema,
|
||||||
|
$import_namespace );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,122 +119,141 @@ sub wsdl_import {
|
|||||||
my $definitions = shift;
|
my $definitions = shift;
|
||||||
my $parser = $self->clone();
|
my $parser = $self->clone();
|
||||||
my %attr_of = @_;
|
my %attr_of = @_;
|
||||||
my $import_namespace = $attr_of{ namespace };
|
my $import_namespace = $attr_of{namespace};
|
||||||
|
|
||||||
if (not $attr_of{location}) {
|
if ( not $attr_of{location} ) {
|
||||||
warn "cannot import document for namespace >$import_namespace< without location";
|
warn
|
||||||
|
"cannot import document for namespace >$import_namespace< without location";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not $self->get_uri) {
|
if ( not $self->get_uri ) {
|
||||||
die "cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one."
|
die
|
||||||
|
"cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one.";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $uri = URI->new_abs($attr_of{location}, $self->get_uri() );
|
my $uri = URI->new_abs( $attr_of{location}, $self->get_uri() );
|
||||||
|
|
||||||
my $imported = $parser->parse_uri($uri);
|
my $imported = $parser->parse_uri($uri);
|
||||||
|
|
||||||
# might already be imported - parse_uri just returns in this case
|
# might already be imported - parse_uri just returns in this case
|
||||||
return if not defined $imported;
|
return if not defined $imported;
|
||||||
|
|
||||||
$self->_import_namespace_definitions({
|
$self->_import_namespace_definitions( {
|
||||||
importer => $definitions,
|
importer => $definitions,
|
||||||
imported => $imported,
|
imported => $imported,
|
||||||
});
|
} );
|
||||||
|
|
||||||
for my $name ( qw(types message binding portType service) ) {
|
for my $name (qw(types message binding portType service)) {
|
||||||
$self->_import_children( $name, $imported, $definitions, $import_namespace);
|
$self->_import_children( $name, $imported, $definitions,
|
||||||
|
$import_namespace );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _initialize {
|
sub _initialize {
|
||||||
my ($self, $parser) = @_;
|
my ( $self, $parser ) = @_;
|
||||||
|
|
||||||
# init object data
|
# init object data
|
||||||
$self->{ parser } = $parser;
|
$self->{parser} = $parser;
|
||||||
delete $self->{ data };
|
delete $self->{data};
|
||||||
|
|
||||||
# setup local variables for keeping temp data
|
# setup local variables for keeping temp data
|
||||||
my $characters = undef;
|
my $characters = undef;
|
||||||
my $current = undef;
|
my $current = undef;
|
||||||
my $list = []; # node list
|
my $list = []; # node list
|
||||||
|
my $elementFormQualified = 1; # default for WSDLs, schema may override
|
||||||
|
|
||||||
# TODO skip non-XML Schema namespace tags
|
# TODO skip non-XML Schema namespace tags
|
||||||
$parser->setHandlers(
|
$parser->setHandlers(
|
||||||
Start => sub {
|
Start => sub {
|
||||||
|
|
||||||
# handle attrs as list - expat uses dual-vars for looking
|
# handle attrs as list - expat uses dual-vars for looking
|
||||||
# up namespace information, and hash keys don't allow dual vars...
|
# up namespace information, and hash keys don't allow dual vars...
|
||||||
my ($parser, $localname, @attrs) = @_;
|
my ( $parser, $localname, @attrs ) = @_;
|
||||||
$characters = q{};
|
$characters = q{};
|
||||||
|
|
||||||
my $action = SOAP::WSDL::TypeLookup->lookup(
|
my $action =
|
||||||
$parser->namespace($localname),
|
SOAP::WSDL::TypeLookup->lookup( $parser->namespace($localname),
|
||||||
$localname
|
$localname );
|
||||||
);
|
|
||||||
|
|
||||||
return if not $action;
|
return if not $action;
|
||||||
|
|
||||||
if ($action->{ type } eq 'CLASS') {
|
if ( $action->{type} eq 'CLASS' ) {
|
||||||
eval "require $action->{ class }";
|
eval "require $action->{ class }";
|
||||||
croak $@ if ($@);
|
croak $@ if ($@);
|
||||||
|
|
||||||
my $obj = $action->{ class }->new({
|
my $obj = $action->{class}->new( {
|
||||||
parent => $current,
|
parent => $current,
|
||||||
namespace => $parser->namespace($localname),
|
namespace => $parser->namespace($localname),
|
||||||
})
|
defined($current)
|
||||||
->init( _fixup_attrs( $parser, @attrs ) );
|
? ( xmlns => $current->get_xmlns() )
|
||||||
|
: ()} )->init( _fixup_attrs( $parser, @attrs ) );
|
||||||
|
|
||||||
if ($current) {
|
if ($current) {
|
||||||
|
if ( defined $list->[-1]
|
||||||
|
&& $list->[-1]->isa('SOAP::WSDL::XSD::Schema') ) {
|
||||||
|
$elementFormQualified =
|
||||||
|
$list->[-1]->get_elementFormDefault() eq
|
||||||
|
'qualified';
|
||||||
|
}
|
||||||
|
|
||||||
# inherit namespace, but don't override
|
# inherit namespace, but don't override
|
||||||
$obj->set_targetNamespace( $current->get_targetNamespace() )
|
if ($elementFormQualified) {
|
||||||
|
$obj->set_targetNamespace(
|
||||||
|
$current->get_targetNamespace() )
|
||||||
if not $obj->get_targetNamespace();
|
if not $obj->get_targetNamespace();
|
||||||
|
}
|
||||||
|
|
||||||
# push on parent's element/type list
|
# push on parent's element/type list
|
||||||
my $method = "push_$localname";
|
my $method = "push_$localname";
|
||||||
|
|
||||||
no strict qw(refs);
|
no strict qw(refs);
|
||||||
$current->$method( $obj );
|
$current->$method($obj);
|
||||||
|
|
||||||
# remember element for stepping back
|
# remember element for stepping back
|
||||||
push @{ $list }, $current;
|
push @{$list}, $current;
|
||||||
}
|
}
|
||||||
|
|
||||||
# set new element (step down)
|
# set new element (step down)
|
||||||
$current = $obj;
|
$current = $obj;
|
||||||
}
|
}
|
||||||
elsif ($action->{ type } eq 'PARENT') {
|
elsif ( $action->{type} eq 'PARENT' ) {
|
||||||
$current->init( _fixup_attrs($parser, @attrs) );
|
$current->init( _fixup_attrs( $parser, @attrs ) );
|
||||||
}
|
}
|
||||||
elsif ($action->{ type } eq 'METHOD') {
|
elsif ( $action->{type} eq 'METHOD' ) {
|
||||||
my $method = $action->{ method };
|
my $method = $action->{method};
|
||||||
|
|
||||||
no strict qw(refs);
|
no strict qw(refs);
|
||||||
|
|
||||||
# call method with
|
# call method with
|
||||||
# - default value ($action->{ value } if defined,
|
# - default value ($action->{ value } if defined,
|
||||||
# dereferencing lists
|
# dereferencing lists
|
||||||
# - the values of the elements Attributes hash
|
# - the values of the elements Attributes hash
|
||||||
# TODO: add namespaces declared to attributes.
|
# TODO: add namespaces declared to attributes.
|
||||||
# Expat consumes them, so we have to re-add them here.
|
# Expat consumes them, so we have to re-add them here.
|
||||||
$current->$method( defined $action->{ value }
|
$current->$method(
|
||||||
? ref $action->{ value }
|
defined $action->{value}
|
||||||
? @{ $action->{ value } }
|
? ref $action->{value}
|
||||||
: ($action->{ value })
|
? @{$action->{value}}
|
||||||
: _fixup_attrs($parser, @attrs)
|
: ( $action->{value} )
|
||||||
);
|
: _fixup_attrs( $parser, @attrs ) );
|
||||||
}
|
}
|
||||||
elsif ($action->{type} eq 'HANDLER') {
|
elsif ( $action->{type} eq 'HANDLER' ) {
|
||||||
my $method = $self->can($action->{method});
|
my $method = $self->can( $action->{method} );
|
||||||
$method->($self, $current, @attrs);
|
$method->( $self, $current, @attrs );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
# TODO replace by hash lookup of known namespaces.
|
# TODO replace by hash lookup of known namespaces.
|
||||||
my $namespace = $parser->namespace($localname) || q{};
|
my $namespace = $parser->namespace($localname) || q{};
|
||||||
my $part = $namespace eq 'http://schemas.xmlsoap.org/wsdl/'
|
my $part =
|
||||||
|
$namespace eq 'http://schemas.xmlsoap.org/wsdl/'
|
||||||
? 'WSDL 1.1'
|
? 'WSDL 1.1'
|
||||||
: 'XML Schema';
|
: 'XML Schema';
|
||||||
|
|
||||||
warn "$part element <$localname> is not implemented yet"
|
warn "$part element <$localname> is not implemented yet"
|
||||||
if ($localname !~m{ \A (:? annotation | documentation ) \z }xms );
|
if ( $localname !~
|
||||||
|
m{ \A (:? annotation | documentation ) \z }xms );
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -231,41 +262,44 @@ sub _initialize {
|
|||||||
Char => sub { $characters .= $_[1]; return; },
|
Char => sub { $characters .= $_[1]; return; },
|
||||||
|
|
||||||
End => sub {
|
End => sub {
|
||||||
my ($parser, $localname) = @_;
|
my ( $parser, $localname ) = @_;
|
||||||
|
|
||||||
my $action = SOAP::WSDL::TypeLookup->lookup(
|
my $action =
|
||||||
$parser->namespace( $localname ),
|
SOAP::WSDL::TypeLookup->lookup( $parser->namespace($localname),
|
||||||
$localname
|
$localname )
|
||||||
) || {};
|
|| {};
|
||||||
|
|
||||||
if (! defined $list->[-1]) {
|
if ( !defined $list->[-1] ) {
|
||||||
$self->{ data } = $current;
|
$self->{data} = $current;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return if not ($action->{ type });
|
|
||||||
if ( $action->{ type } eq 'CLASS' ) {
|
return if not( $action->{type} );
|
||||||
$current = pop @{ $list };
|
if ( $action->{type} eq 'CLASS' ) {
|
||||||
|
$current = pop @{$list};
|
||||||
|
if ( defined $list->[-1] && $list->[-1]->isa('SOAP::WSDL::XSD::Schema') ) {
|
||||||
|
$elementFormQualified = 1;
|
||||||
}
|
}
|
||||||
elsif ($action->{ type } eq 'CONTENT' ) {
|
}
|
||||||
my $method = $action->{ method };
|
elsif ( $action->{type} eq 'CONTENT' ) {
|
||||||
|
my $method = $action->{method};
|
||||||
|
|
||||||
# normalize whitespace
|
# normalize whitespace
|
||||||
$characters =~s{ ^ \s+ (.+) \s+ $ }{$1}xms;
|
$characters =~ s{ ^ \s+ (.+) \s+ $ }{$1}xms;
|
||||||
$characters =~s{ \s+ }{ }xmsg;
|
$characters =~ s{ \s+ }{ }xmsg;
|
||||||
|
|
||||||
no strict qw(refs);
|
no strict qw(refs);
|
||||||
$current->$method( $characters );
|
$current->$method($characters);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
} );
|
||||||
);
|
|
||||||
return $parser;
|
return $parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
# make attrs SAX style
|
# make attrs SAX style
|
||||||
sub _fixup_attrs {
|
sub _fixup_attrs {
|
||||||
my ($parser, @attrs) = @_;
|
my ( $parser, @attrs ) = @_;
|
||||||
|
|
||||||
my @attr_key_from = ();
|
my @attr_key_from = ();
|
||||||
my @attr_value_from = ();
|
my @attr_value_from = ();
|
||||||
@@ -281,16 +315,14 @@ sub _fixup_attrs {
|
|||||||
#
|
#
|
||||||
# add namespaces before attributes: Attributes may be namespace-qualified
|
# add namespaces before attributes: Attributes may be namespace-qualified
|
||||||
#
|
#
|
||||||
push @attrs_from, map {
|
push @attrs_from, map { {
|
||||||
{
|
|
||||||
Name => "xmlns:$_",
|
Name => "xmlns:$_",
|
||||||
Value => $parser->expand_ns_prefix( $_ ),
|
Value => $parser->expand_ns_prefix($_),
|
||||||
LocalName => $_
|
LocalName => $_
|
||||||
}
|
}
|
||||||
} $parser->new_ns_prefixes();
|
} $parser->new_ns_prefixes();
|
||||||
|
|
||||||
push @attrs_from, map {
|
push @attrs_from, map { {
|
||||||
{
|
|
||||||
Name => defined $parser->namespace($_)
|
Name => defined $parser->namespace($_)
|
||||||
? $parser->namespace($_) . '|' . $_
|
? $parser->namespace($_) . '|' . $_
|
||||||
: '|' . $_,
|
: '|' . $_,
|
||||||
@@ -304,7 +336,6 @@ sub _fixup_attrs {
|
|||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
@@ -336,10 +367,10 @@ the same terms as perl itself
|
|||||||
|
|
||||||
=head1 Repository information
|
=head1 Repository information
|
||||||
|
|
||||||
$Id: WSDLParser.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: WSDLParser.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
|
|
||||||
$LastChangedDate: 2008-07-13 21:28:50 +0200 (So, 13 Jul 2008) $
|
$LastChangedDate: 2009-02-21 01:04:29 +0100 (Sa, 21 Feb 2009) $
|
||||||
$LastChangedRevision: 728 $
|
$LastChangedRevision: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Deserializer;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %DESERIALIZER = (
|
my %DESERIALIZER = (
|
||||||
'1.1' => 'SOAP::WSDL::Deserializer::XSD',
|
'1.1' => 'SOAP::WSDL::Deserializer::XSD',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Generator;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %GENERATOR = (
|
my %GENERATOR = (
|
||||||
'XSD' => 'SOAP::WSDL::Generator::Template::XSD',
|
'XSD' => 'SOAP::WSDL::Generator::Template::XSD',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Serializer;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %SERIALIZER = (
|
my %SERIALIZER = (
|
||||||
'1.1' => 'SOAP::WSDL::Serializer::XSD',
|
'1.1' => 'SOAP::WSDL::Serializer::XSD',
|
||||||
@@ -138,9 +138,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Serializer.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Serializer.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package SOAP::WSDL::Factory::Transport;
|
package SOAP::WSDL::Factory::Transport;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %registered_transport_of = ();
|
my %registered_transport_of = ();
|
||||||
|
|
||||||
@@ -243,9 +243,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Transport.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Transport.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Generator::Iterator::WSDL11;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use Class::Std::Fast;
|
use Class::Std::Fast;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<[]>);
|
my %definitions_of :ATTR(:name<definitions> :default<[]>);
|
||||||
my %nodes_of :ATTR(:name<nodes> :default<[]>);
|
my %nodes_of :ATTR(:name<nodes> :default<[]>);
|
||||||
@@ -73,7 +73,8 @@ my %METHOD_OF = (
|
|||||||
$node->get_type()
|
$node->get_type()
|
||||||
? do {
|
? do {
|
||||||
die "unsupported global type <"
|
die "unsupported global type <"
|
||||||
. $node->get_type . "> found in part ". $node->get_name();
|
. $node->get_type . "> found in part <". $node->get_name() . ">\n"
|
||||||
|
. "Looks like a rpc/literal WSDL, which is not supported by SOAP::WSDL\n";
|
||||||
## use this once we can auto-generate an element for RPC bindings
|
## use this once we can auto-generate an element for RPC bindings
|
||||||
# $types->find_type( $node->expand($node->get_type) )
|
# $types->find_type( $node->expand($node->get_type) )
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict; use warnings;
|
|||||||
|
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use Carp;
|
use Carp;
|
||||||
use SOAP::WSDL::Generator::PrefixResolver;
|
use SOAP::WSDL::Generator::PrefixResolver;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %tt_of :ATTR(:get<tt>);
|
my %tt_of :ATTR(:get<tt>);
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||||
@@ -70,3 +70,39 @@ sub _process :PROTECTED {
|
|||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SOAP::WSDL::Generator::Template - Template-based code generator
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
SOAP::WSDL's template based code generator
|
||||||
|
|
||||||
|
Base class for writing template based generators
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Replace the whitespace by @ for E-Mail Address.
|
||||||
|
|
||||||
|
Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||||
|
|
||||||
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
|
Copyright 2008, 2009 Martin Kutter.
|
||||||
|
|
||||||
|
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||||
|
the same terms as perl itself
|
||||||
|
|
||||||
|
=head1 Repository information
|
||||||
|
|
||||||
|
$Id: WSDLParser.pm 770 2009-01-24 22:55:54Z kutterma $
|
||||||
|
|
||||||
|
$LastChangedDate: 2009-01-24 23:55:54 +0100 (Sa, 24 Jan 2009) $
|
||||||
|
$LastChangedRevision: 770 $
|
||||||
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Carp qw(confess);
|
use Carp qw(confess);
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
my %namespace_prefix_map_of :ATTR(:name<namespace_prefix_map> :default<{}>);
|
||||||
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
my %namespace_map_of :ATTR(:name<namespace_map> :default<{}>);
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ use Class::Std::Fast::Storable;
|
|||||||
use File::Basename;
|
use File::Basename;
|
||||||
use File::Spec;
|
use File::Spec;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
use SOAP::WSDL::Generator::Visitor::Typemap;
|
use SOAP::WSDL::Generator::Visitor::Typemap;
|
||||||
use SOAP::WSDL::Generator::Visitor::Typelib;
|
|
||||||
use SOAP::WSDL::Generator::Template::Plugin::XSD;
|
use SOAP::WSDL::Generator::Template::Plugin::XSD;
|
||||||
use base qw(SOAP::WSDL::Generator::Template);
|
use base qw(SOAP::WSDL::Generator::Template);
|
||||||
|
|
||||||
my %output_of :ATTR(:name<output> :default<()>);
|
my %output_of :ATTR(:name<output> :default<()>);
|
||||||
my %typemap_of :ATTR(:name<typemap> :default<({})>);
|
my %typemap_of :ATTR(:name<typemap> :default<({})>);
|
||||||
|
my %silent_of :ATTR(:name<silent> :default<0>);
|
||||||
|
|
||||||
sub BUILD {
|
sub BUILD {
|
||||||
my ($self, $ident, $arg_ref) = @_;
|
my ($self, $ident, $arg_ref) = @_;
|
||||||
@@ -113,7 +113,8 @@ sub _generate_interface {
|
|||||||
$service,
|
$service,
|
||||||
$port,
|
$port,
|
||||||
));
|
));
|
||||||
print "Creating interface class $output\n";
|
print "Creating interface class $output\n"
|
||||||
|
if not $silent_of{ident $self};
|
||||||
|
|
||||||
$self->_process($template_name,
|
$self->_process($template_name,
|
||||||
{
|
{
|
||||||
@@ -173,7 +174,8 @@ sub generate_typemap {
|
|||||||
my $output = $arg_ref->{ output }
|
my $output = $arg_ref->{ output }
|
||||||
? $arg_ref->{ output }
|
? $arg_ref->{ output }
|
||||||
: $self->_generate_filename( $self->get_name_resolver()->create_typemap_name($service) );
|
: $self->_generate_filename( $self->get_name_resolver()->create_typemap_name($service) );
|
||||||
print "Creating typemap class $output\n";
|
print "Creating typemap class $output\n"
|
||||||
|
if not $silent_of{ident $self};
|
||||||
$self->_process('Typemap.tt',
|
$self->_process('Typemap.tt',
|
||||||
{
|
{
|
||||||
service => $service,
|
service => $service,
|
||||||
@@ -205,7 +207,8 @@ sub visit_XSD_Element {
|
|||||||
my $output = defined $output_of{ ident $self }
|
my $output = defined $output_of{ ident $self }
|
||||||
? $output_of{ ident $self }
|
? $output_of{ ident $self }
|
||||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($element) );
|
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($element) );
|
||||||
warn "Creating element class $output \n";
|
warn "Creating element class $output \n"
|
||||||
|
if not $silent_of{ ident $self};
|
||||||
$self->_process('element.tt', { element => $element } , $output);
|
$self->_process('element.tt', { element => $element } , $output);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +217,8 @@ sub visit_XSD_SimpleType {
|
|||||||
my $output = defined $output_of{ ident $self }
|
my $output = defined $output_of{ ident $self }
|
||||||
? $output_of{ ident $self }
|
? $output_of{ ident $self }
|
||||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
||||||
warn "Creating simpleType class $output \n";
|
warn "Creating simpleType class $output \n"
|
||||||
|
if not $silent_of{ ident $self};
|
||||||
$self->_process('simpleType.tt', { simpleType => $type } , $output);
|
$self->_process('simpleType.tt', { simpleType => $type } , $output);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,8 +227,111 @@ sub visit_XSD_ComplexType {
|
|||||||
my $output = defined $output_of{ ident $self }
|
my $output = defined $output_of{ ident $self }
|
||||||
? $output_of{ ident $self }
|
? $output_of{ ident $self }
|
||||||
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
: $self->_generate_filename( $self->get_name_resolver()->create_xsd_name($type) );
|
||||||
warn "Creating complexType class $output \n";
|
warn "Creating complexType class $output \n"
|
||||||
|
if not $silent_of{ ident $self};
|
||||||
$self->_process('complexType.tt', { complexType => $type } , $output);
|
$self->_process('complexType.tt', { complexType => $type } , $output);
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SOAP::WSDL::Generator::Template::XSD - XSD code generator
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
SOAP::WSDL's XSD code generator
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
See L<wsdl2perl.pl|wsdl2perl.pl> for an example on how to use this class.
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
=head2 new
|
||||||
|
|
||||||
|
Constructor.
|
||||||
|
|
||||||
|
Options (Options can also be set via set_OPTION methods):
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * silent
|
||||||
|
|
||||||
|
Suppress warnings about what's being generated
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 generate
|
||||||
|
|
||||||
|
Shortcut for calling L<generate_typelib> and L<generate_client>
|
||||||
|
|
||||||
|
=head2 generate_client
|
||||||
|
|
||||||
|
Generates a client interface
|
||||||
|
|
||||||
|
=head2 generate_server
|
||||||
|
|
||||||
|
Generates a server class
|
||||||
|
|
||||||
|
=head2 generate_typelib
|
||||||
|
|
||||||
|
Generates type and element classes
|
||||||
|
|
||||||
|
=head2 generate_typemap
|
||||||
|
|
||||||
|
Generate a typemap class required by SOAP::WSDL's MessageParser
|
||||||
|
|
||||||
|
=head2 generate_interface
|
||||||
|
|
||||||
|
(Deprecated) alias for generate_client
|
||||||
|
|
||||||
|
=head2 get_name_resolver
|
||||||
|
|
||||||
|
Returns a name resolver template plugin
|
||||||
|
|
||||||
|
=head2 visit_XSD_Attribute
|
||||||
|
|
||||||
|
Visitor method for SOAP::WSDL::XSD::Attribute. Should be factored out into
|
||||||
|
visitor class.
|
||||||
|
|
||||||
|
=head2 visit_XSD_ComplexType
|
||||||
|
|
||||||
|
Visitor method for SOAP::WSDL::XSD::ComplexType. Should be factored out into
|
||||||
|
visitor class.
|
||||||
|
|
||||||
|
=head2 visit_XSD_Element
|
||||||
|
|
||||||
|
Visitor method for SOAP::WSDL::XSD::Element. Should be factored out into
|
||||||
|
visitor class.
|
||||||
|
|
||||||
|
=head2 visit_XSD_SimpleType
|
||||||
|
|
||||||
|
Visitor method for SOAP::WSDL::XSD::SimpleType. Should be factored out into
|
||||||
|
visitor class.
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Replace the whitespace by @ for E-Mail Address.
|
||||||
|
|
||||||
|
Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||||
|
|
||||||
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
|
Copyright 2008, 2009 Martin Kutter.
|
||||||
|
|
||||||
|
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||||
|
the same terms as perl itself
|
||||||
|
|
||||||
|
=head1 Repository information
|
||||||
|
|
||||||
|
$Id: WSDLParser.pm 770 2009-01-24 22:55:54Z kutterma $
|
||||||
|
|
||||||
|
$LastChangedDate: 2009-01-24 23:55:54 +0100 (Sa, 24 Jan 2009) $
|
||||||
|
$LastChangedRevision: 770 $
|
||||||
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ our [% USE Dumper(varname = 'typemap_'); Dumper.dump( typemap ) %];
|
|||||||
|
|
||||||
sub get_class {
|
sub get_class {
|
||||||
my $name = join '/', @{ $_[1] };
|
my $name = join '/', @{ $_[1] };
|
||||||
exists $typemap_1->{ $name } or die "Cannot resolve $name via " . __PACKAGE__;
|
|
||||||
return $typemap_1->{ $name };
|
return $typemap_1->{ $name };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ use warnings;
|
|||||||
# may be sub-packages...
|
# may be sub-packages...
|
||||||
#-%]
|
#-%]
|
||||||
|
|
||||||
|
__PACKAGE__->_set_element_form_qualified([%-
|
||||||
|
IF complexType.schema.get_elementFormDefault == 'qualified'
|
||||||
|
-%]1[% ELSE %]0[% END %]);
|
||||||
|
|
||||||
[% INCLUDE complexType/contentModel.tt %]
|
[% INCLUDE complexType/contentModel.tt %]
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ perl code only, XML output uses the original name:
|
|||||||
|
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
|
[% END; %]
|
||||||
=back
|
=back
|
||||||
[% END;
|
[% END;
|
||||||
END;
|
|
||||||
END; -%]
|
END; -%]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
my %definitions_of :ATTR(:name<definitions> :default<()>);
|
||||||
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
my %type_prefix_of :ATTR(:name<type_prefix> :default<()>);
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
package SOAP::WSDL::Generator::Visitor::Typelib;
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use base qw(SOAP::WSDL::Generator::Visitor
|
|
||||||
SOAP::WSDL::Generator::Template
|
|
||||||
);
|
|
||||||
|
|
||||||
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 base qw(SOAP::WSDL::Generator::Visitor);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %path_of :ATTR(:name<path> :default<[]>);
|
my %path_of :ATTR(:name<path> :default<[]>);
|
||||||
my %typemap_of :ATTR(:name<typemap> :default<()>);
|
my %typemap_of :ATTR(:name<typemap> :default<()>);
|
||||||
@@ -182,3 +182,39 @@ sub visit_XSD_ComplexType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SOAP::WSDL::Generator::Visitor::Typemap - Visitor class for generating typemaps
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Visitor used by SOAP::WSDL's XSD generator for creating typemaps
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Replace the whitespace by @ for E-Mail Address.
|
||||||
|
|
||||||
|
Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||||
|
|
||||||
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
|
Copyright 2008, 2009 Martin Kutter.
|
||||||
|
|
||||||
|
This file is part of SOAP-WSDL. You may distribute/modify it under
|
||||||
|
the same terms as perl itself
|
||||||
|
|
||||||
|
=head1 Repository information
|
||||||
|
|
||||||
|
$Id: WSDLParser.pm 770 2009-01-24 22:55:54Z kutterma $
|
||||||
|
|
||||||
|
$LastChangedDate: 2009-01-24 23:55:54 +0100 (Sa, 24 Jan 2009) $
|
||||||
|
$LastChangedRevision: 770 $
|
||||||
|
$LastChangedBy: kutterma $
|
||||||
|
|
||||||
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $
|
||||||
|
|
||||||
|
|||||||
91
lib/SOAP/WSDL/Manual/CodeFirst.pod
Normal file
91
lib/SOAP/WSDL/Manual/CodeFirst.pod
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 Writing Code-First Web Services with SOAP::WSDL
|
||||||
|
|
||||||
|
B<Note: This document is just a collection of thought. There's no implementation yet>.
|
||||||
|
|
||||||
|
=head2 How Data Class definitions could look like
|
||||||
|
|
||||||
|
=head3 Moose
|
||||||
|
|
||||||
|
Of course SOAP::WSDL could (and probably should) just use Moose - it provides the full
|
||||||
|
Metaclass Framework needed for generating Schemas from class definitions.
|
||||||
|
|
||||||
|
However, Moose is way too powerful for building (just) simple Data Transfer Objects which
|
||||||
|
can be expressed in XML.
|
||||||
|
|
||||||
|
With Moose, a class could look like this:
|
||||||
|
|
||||||
|
package MyElements::GenerateBarCode;
|
||||||
|
use Moose;
|
||||||
|
|
||||||
|
has 'xmlns' =>
|
||||||
|
is => 'ro',
|
||||||
|
default => 'http://webservicex.net';
|
||||||
|
|
||||||
|
has 'xmlname' =>
|
||||||
|
is => 'ro',
|
||||||
|
default => 'GenerateBarCode';
|
||||||
|
|
||||||
|
has 'BarCodeParam' =>
|
||||||
|
is => 'rw',
|
||||||
|
type => 'MyTypes::BarCodeData';
|
||||||
|
|
||||||
|
has 'BarCodeText' =>
|
||||||
|
is => 'rw',
|
||||||
|
type => 'String';
|
||||||
|
1;
|
||||||
|
|
||||||
|
This is - despite the condensed syntax - a lot of line noise.
|
||||||
|
|
||||||
|
=head3 Native SOAP::WSDL
|
||||||
|
|
||||||
|
SOAP::WSDL::XSD::Typelib::ComplexType (should) provide a simple setup method allowing a even shorter
|
||||||
|
description (and offering the additional performance boost SOAP::WSDL has over Moose):
|
||||||
|
|
||||||
|
package MyElements::GenerateBarCode;
|
||||||
|
use strice; use warnings;
|
||||||
|
use SOAP::WSDL::XSD::Typelib::Element;
|
||||||
|
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
||||||
|
|
||||||
|
_namespace 'http://webservicex.net'; # might be better in the SOAP server interface
|
||||||
|
_name 'GenerateBarCode';
|
||||||
|
_elements
|
||||||
|
BarCodeParam => 'MyTypes::BarCodeData',
|
||||||
|
BarCodeText => 'string';
|
||||||
|
|
||||||
|
This would result in the following XML Schema (inside a schema with the namespace
|
||||||
|
"http://webservicex.net" - the namespaces could even be declared outside the DTO classes.
|
||||||
|
|
||||||
|
<complexType name="GenerateBarCode">
|
||||||
|
<sequence>
|
||||||
|
<element name="BarCodeParam" type="tns:BarCodeData"/>
|
||||||
|
<element name="BarCodeText" type="xsd:string"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
=head2 Interface definitions
|
||||||
|
|
||||||
|
Perl does not have the concept of interfaces. However, Moose provides Roles, which can be used for defining
|
||||||
|
interfaces.
|
||||||
|
|
||||||
|
However, it's not really necessary to define a interface Interface (in the sense of a Jave interface) -
|
||||||
|
a interface class is sufficient.
|
||||||
|
|
||||||
|
Subroutine attributes could be used for providing additional information - attributes in perl are much like
|
||||||
|
annotations in Java
|
||||||
|
|
||||||
|
A interface could look like this:
|
||||||
|
|
||||||
|
package MyServer::BarCode;
|
||||||
|
use strict; use warnings;
|
||||||
|
use SOAP::WSDL::Server::CodeFirst;
|
||||||
|
|
||||||
|
sub generateBarCode :WebMethod(name=<GenerateBarCode>
|
||||||
|
return=<MyElements::GenerateBarcodeResponse>
|
||||||
|
body=<MyElements::GenerateBarcode>) {
|
||||||
|
my ($self, $body, $header) = @_;
|
||||||
|
my $result = MyElements::GenerateBarcodeResponse->new();
|
||||||
|
return $result;
|
||||||
|
};
|
||||||
|
1;
|
||||||
@@ -12,7 +12,7 @@ You need Crypt::SSLeay installed to access HTTPS webservices.
|
|||||||
|
|
||||||
Passing a username and password, or a client certificate and key, to the
|
Passing a username and password, or a client certificate and key, to the
|
||||||
transport layer is highly dependent on the transport backend. The descriptions
|
transport layer is highly dependent on the transport backend. The descriptions
|
||||||
below are for HTTP(S) transport usingLWP::UserAgent
|
below are for HTTP(S) transport using LWP::UserAgent
|
||||||
|
|
||||||
=head3 Accessing HTTP(S) webservices with basic/digest authentication
|
=head3 Accessing HTTP(S) webservices with basic/digest authentication
|
||||||
|
|
||||||
@@ -121,12 +121,82 @@ or nil elements):
|
|||||||
return "<$prefix:$name>";
|
return "<$prefix:$name>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=head1 Skipping unknown XML elements - "lax" XML processing
|
||||||
|
|
||||||
|
SOAP::WSDL's default serializer
|
||||||
|
L<SOAP::WSDL::Deserializer::XSD|SOAP::WSDL::Deserializer::XSD> is a "strict"
|
||||||
|
XML processor in the sense that it throws an exception on encountering unknown
|
||||||
|
XML elements.
|
||||||
|
|
||||||
|
L<SOAP::WSDL::Deserializer::XSD|SOAP::WSDL::Deserializer::XSD> allows
|
||||||
|
switching off the stric XML processing by passing the C<strict =E<gt> 0>
|
||||||
|
option.
|
||||||
|
|
||||||
|
=head2 Disabling strict XML processing in a Client
|
||||||
|
|
||||||
|
Pass the following as C<deserializer_args>:
|
||||||
|
|
||||||
|
{ strict => 0 }
|
||||||
|
|
||||||
|
Example: The generated SOAP client is assumed to be "MyInterface::Test".
|
||||||
|
|
||||||
|
use MyInterface::Test;
|
||||||
|
|
||||||
|
my $soap = MyInterface::Test->new({
|
||||||
|
deserializer_args => { strict => 0 }
|
||||||
|
});
|
||||||
|
|
||||||
|
my $result = $soap->SomeMethod();
|
||||||
|
|
||||||
|
=head2 Disabling strict XML processing in a CGI based server
|
||||||
|
|
||||||
|
You have to set the deserializer in the transport class explicitely to
|
||||||
|
a L<SOAP::WSDL::Deserializer|SOAP::WSDL::Deserializer> object with the
|
||||||
|
C<strict> option set to 0.
|
||||||
|
|
||||||
|
Example: The generated SOAP server is assumed to be "MyServer::Test".
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use MyServer::Test;
|
||||||
|
use SOAP::WSDL::Deserializer::XSD;
|
||||||
|
|
||||||
|
my $soap = MyServer::Test->new({
|
||||||
|
transport_class => 'SOAP::WSDL::Server::CGI',
|
||||||
|
dispatch_to => 'main',
|
||||||
|
});
|
||||||
|
$soap->get_transport()->set_deserializer(
|
||||||
|
SOAP::WSDL::Deserializer::XSD->new({ strict => 0 })
|
||||||
|
);
|
||||||
|
|
||||||
|
$soap->handle();
|
||||||
|
|
||||||
|
=head2 Disabling strict XML processing in a mod_perl based server
|
||||||
|
|
||||||
|
Sorry, this is not implemented yet - you'll have to write your own handler
|
||||||
|
class based on L<SOAP::WSDL::Server::Mod_Perl2|SOAP::WSDL::Server::Mod_Perl2>.
|
||||||
|
|
||||||
|
=head1 Changing the encoding of a SOAP request
|
||||||
|
|
||||||
|
SOAP::WSDL uses utf-8 per default: utf-8
|
||||||
|
is the de-facto standard for webservice ommunication.
|
||||||
|
|
||||||
|
However, you can change the encoding the transport layer announces by calling
|
||||||
|
C<set_encoding($encoding)> on a client object.
|
||||||
|
|
||||||
|
You probably have to write your own serializer class too, because the default
|
||||||
|
serializer has the utf-8 encoding hardcoded in the envelope.
|
||||||
|
|
||||||
|
Just look into SOAP::WSDL::Serializer on how to do that.
|
||||||
|
|
||||||
|
Don't forget to register your serializer at the serializer factory
|
||||||
|
SOAP::WSDL::Factory::Serializer.
|
||||||
|
|
||||||
=head1 LICENSE AND COPYRIGHT
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
Copyright 2008 Martin Kutter.
|
Copyright 2008, 2009 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
|
the same terms as perl itself.
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %part_of :ATTR(:name<part> :default<[]>);
|
my %part_of :ATTR(:name<part> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %body_of :ATTR(:name<body> :default<[]>);
|
my %body_of :ATTR(:name<body> :default<[]>);
|
||||||
my %header_of :ATTR(:name<header> :default<[]>);
|
my %header_of :ATTR(:name<header> :default<[]>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
my %input_of :ATTR(:name<input> :default<[]>);
|
my %input_of :ATTR(:name<input> :default<[]>);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %element_of :ATTR(:name<element> :default<()>);
|
my %element_of :ATTR(:name<element> :default<()>);
|
||||||
my %type_of :ATTR(:name<type> :default<()>);
|
my %type_of :ATTR(:name<type> :default<()>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %binding_of :ATTR(:name<binding> :default<()>);
|
my %binding_of :ATTR(:name<binding> :default<()>);
|
||||||
my %address_of :ATTR(:name<address> :default<()>);
|
my %address_of :ATTR(:name<address> :default<()>);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use List::Util;
|
use List::Util;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %operation_of :ATTR(:name<operation> :default<()>);
|
my %operation_of :ATTR(:name<operation> :default<()>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %location :ATTR(:name<location> :default<()>);
|
my %location :ATTR(:name<location> :default<()>);
|
||||||
1;
|
1;
|
||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %use_of :ATTR(:name<use> :default<q{}>);
|
my %use_of :ATTR(:name<use> :default<q{}>);
|
||||||
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
my %namespace_of :ATTR(:name<namespace> :default<q{}>);
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use base qw(SOAP::WSDL::Header);
|
use base qw(SOAP::WSDL::Header);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %style_of :ATTR(:name<style> :default<()>);
|
my %style_of :ATTR(:name<style> :default<()>);
|
||||||
my %soapAction_of :ATTR(:name<soapAction> :default<()>);
|
my %soapAction_of :ATTR(:name<soapAction> :default<()>);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
use SOAP::WSDL::XSD::Typelib::ComplexType;
|
||||||
use SOAP::WSDL::XSD::Typelib::Element;
|
use SOAP::WSDL::XSD::Typelib::Element;
|
||||||
@@ -101,9 +101,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 728 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: Fault11.pm 728 2008-07-13 19:28:50Z kutterma $
|
$Id: Fault11.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
use SOAP::WSDL::Factory::Serializer;
|
use SOAP::WSDL::Factory::Serializer;
|
||||||
|
|
||||||
@@ -132,9 +132,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 735 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: XSD.pm 735 2008-08-14 07:36:54Z kutterma $
|
$Id: XSD.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use Scalar::Util qw(blessed);
|
|||||||
use SOAP::WSDL::Factory::Deserializer;
|
use SOAP::WSDL::Factory::Deserializer;
|
||||||
use SOAP::WSDL::Factory::Serializer;
|
use SOAP::WSDL::Factory::Serializer;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
my %dispatch_to_of :ATTR(:name<dispatch_to> :default<()>);
|
||||||
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
my %action_map_ref_of :ATTR(:name<action_map_ref> :default<{}>);
|
||||||
@@ -42,7 +42,7 @@ sub handle {
|
|||||||
};
|
};
|
||||||
if ($@) {
|
if ($@) {
|
||||||
die $deserializer_of{ $ident }->generate_fault({
|
die $deserializer_of{ $ident }->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "Error deserializing message: $@. \n"
|
message => "Error deserializing message: $@. \n"
|
||||||
});
|
});
|
||||||
@@ -65,7 +65,7 @@ sub handle {
|
|||||||
|
|
||||||
if (!$dispatch_to_of{ $ident }) {
|
if (!$dispatch_to_of{ $ident }) {
|
||||||
die $deserializer_of{ $ident }->generate_fault({
|
die $deserializer_of{ $ident }->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "No handler registered",
|
message => "No handler registered",
|
||||||
});
|
});
|
||||||
@@ -73,7 +73,7 @@ sub handle {
|
|||||||
|
|
||||||
if (! defined $request->header('SOAPAction') ) {
|
if (! defined $request->header('SOAPAction') ) {
|
||||||
die $deserializer_of{ $ident }->generate_fault({
|
die $deserializer_of{ $ident }->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "Not found: No SOAPAction given",
|
message => "Not found: No SOAPAction given",
|
||||||
});
|
});
|
||||||
@@ -81,7 +81,7 @@ sub handle {
|
|||||||
|
|
||||||
if (! defined $method_name) {
|
if (! defined $method_name) {
|
||||||
die $deserializer_of{ $ident }->generate_fault({
|
die $deserializer_of{ $ident }->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "Not found: No method found for the SOAPAction '$soap_action'",
|
message => "Not found: No method found for the SOAPAction '$soap_action'",
|
||||||
});
|
});
|
||||||
@@ -92,7 +92,7 @@ sub handle {
|
|||||||
|
|
||||||
if (!$method_ref) {
|
if (!$method_ref) {
|
||||||
die $deserializer_of{ $ident }->generate_fault({
|
die $deserializer_of{ $ident }->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "Not implemented: The handler does not implement the method $method_name",
|
message => "Not implemented: The handler does not implement the method $method_name",
|
||||||
});
|
});
|
||||||
@@ -190,7 +190,7 @@ SOAP::Server's deserializer create one for you:
|
|||||||
my $soap = MyServer::SomeService->new();
|
my $soap = MyServer::SomeService->new();
|
||||||
|
|
||||||
die $soap->get_deserializer()->generate_fault({
|
die $soap->get_deserializer()->generate_fault({
|
||||||
code => 'soap:Server',
|
code => 'SOAP-ENV:Server',
|
||||||
role => 'urn:localhost',
|
role => 'urn:localhost',
|
||||||
message => "The error message to pas back",
|
message => "The error message to pas back",
|
||||||
detail => "Some details on the error",
|
detail => "Some details on the error",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use Class::Std::Fast::Storable;
|
|||||||
|
|
||||||
use base qw(SOAP::WSDL::Server);
|
use base qw(SOAP::WSDL::Server);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.06');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
# mostly copied from SOAP::Lite. Unfortunately we can't use SOAP::Lite's CGI
|
||||||
# server directly - we would have to swap out it's base class...
|
# server directly - we would have to swap out it's base class...
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use Apache2::Const -compile => qw(
|
|||||||
HTTP_LENGTH_REQUIRED
|
HTTP_LENGTH_REQUIRED
|
||||||
);
|
);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %LOADED_OF = ();
|
my %LOADED_OF = ();
|
||||||
|
|
||||||
|
|||||||
161
lib/SOAP/WSDL/Server/Simple.pm
Normal file
161
lib/SOAP/WSDL/Server/Simple.pm
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
package SOAP::WSDL::Server::Simple;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Encode;
|
||||||
|
|
||||||
|
use HTTP::Request;
|
||||||
|
use HTTP::Response;
|
||||||
|
use HTTP::Status;
|
||||||
|
use HTTP::Headers;
|
||||||
|
use Scalar::Util qw(blessed);
|
||||||
|
|
||||||
|
use Class::Std::Fast::Storable;
|
||||||
|
|
||||||
|
use base qw(SOAP::WSDL::Server);
|
||||||
|
|
||||||
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
|
# 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...
|
||||||
|
#
|
||||||
|
# This should be a warning for us: We should not handle methods via inheritance,
|
||||||
|
# but via some plugin mechanism, to allow alternative handlers to be plugged
|
||||||
|
# in.
|
||||||
|
|
||||||
|
sub handle {
|
||||||
|
my ($self, $cgi) = @_;
|
||||||
|
|
||||||
|
my $response;
|
||||||
|
|
||||||
|
my $content = $cgi->param('POSTDATA');
|
||||||
|
|
||||||
|
my $request = HTTP::Request->new(
|
||||||
|
$ENV{'REQUEST_METHOD'} || '' => $ENV{'SCRIPT_NAME'},
|
||||||
|
HTTP::Headers->new(
|
||||||
|
map {
|
||||||
|
(/^HTTP_(.+)/i
|
||||||
|
? ($1=~m/SOAPACTION/)
|
||||||
|
?('SOAPAction')
|
||||||
|
:($1)
|
||||||
|
: $_
|
||||||
|
) => $ENV{$_}
|
||||||
|
} keys %ENV),
|
||||||
|
$content,
|
||||||
|
);
|
||||||
|
|
||||||
|
# we copy the response message around here.
|
||||||
|
# Passing by reference would be much better...
|
||||||
|
my $response_message = eval { $self->SUPER::handle($request) };
|
||||||
|
|
||||||
|
# caveat: SOAP::WSDL::SOAP::Typelib::Fault11 is false in bool context...
|
||||||
|
if ($@ || blessed $@) {
|
||||||
|
my $exception = $@;
|
||||||
|
$response = HTTP::Response->new(500);
|
||||||
|
$response->header('Content-type' => 'text/xml; charset="utf-8"');
|
||||||
|
if (blessed($exception)) {
|
||||||
|
$response->content( $self->get_serializer->serialize({
|
||||||
|
body => $exception
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$response->content($exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$response = HTTP::Response->new(200);
|
||||||
|
$response->header('Content-type' => 'text/xml; charset="utf-8"');
|
||||||
|
$response->content( encode('utf8', $response_message ) );
|
||||||
|
{
|
||||||
|
use bytes;
|
||||||
|
$response->header('Content-length', length $response_message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$self->_output($response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub _output :PRIVATE {
|
||||||
|
my ($self, $response) = @_;
|
||||||
|
my $code = $response->code;
|
||||||
|
binmode(STDOUT);
|
||||||
|
print STDOUT "HTTP/1.0 $code ", HTTP::Status::status_message($code)
|
||||||
|
, "\015\012", $response->headers_as_string("\015\012")
|
||||||
|
, "\015\012", $response->content;
|
||||||
|
|
||||||
|
warn "HTTP/1.0 $code ", HTTP::Status::status_message($code)
|
||||||
|
, "\015\012", $response->headers_as_string("\015\012")
|
||||||
|
, $response->content, "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SOAP::WSDL::Server::Simple - CGI based SOAP server for HTTP::Server::Simple
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
package TestServer;
|
||||||
|
use base qw(HTTP::Server::Simple::CGI);
|
||||||
|
use MyServer::TestService::TestPort;
|
||||||
|
|
||||||
|
sub handle_request {
|
||||||
|
my ($self, $cgi) = @_;
|
||||||
|
my $server = MyServer::TestService::TestPort->new({
|
||||||
|
dispatch_to => 'main',
|
||||||
|
transport_class => 'SOAP::WSDL::Server::Simple',
|
||||||
|
});
|
||||||
|
$server->handle($cgi);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $httpd = __PACKAGE__->new();
|
||||||
|
$httpd->run();
|
||||||
|
|
||||||
|
=head1 USAGE
|
||||||
|
|
||||||
|
To use SOAP::WSDL::Server::Simple efficiently, you should first create a server
|
||||||
|
interface using L<wsdl2perl.pl|wsdl2perl.pl>.
|
||||||
|
|
||||||
|
SOAP::WSDL::Server::Simple dispatches all calls to appropriately named methods in the
|
||||||
|
class or object set via C<dispatch_to>.
|
||||||
|
|
||||||
|
See the generated server class on details.
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Lightweight SOAP server for use with HTTP::Server::Simple, mainly designed
|
||||||
|
for testing purposes. It allows to set up a simple SOAP server without having
|
||||||
|
to configure CGI or mod_perl stuff.
|
||||||
|
|
||||||
|
SOAP::WSDL::Server::Simple is not recommended for production use.
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
=head2 handle
|
||||||
|
|
||||||
|
See synopsis above.
|
||||||
|
|
||||||
|
=head1 LICENSE AND COPYRIGHT
|
||||||
|
|
||||||
|
Copyright 2004-2008 Martin Kutter.
|
||||||
|
|
||||||
|
This file is part of SOAP-WSDL. You may distribute/modify it under the same
|
||||||
|
terms as perl itself
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
||||||
|
|
||||||
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
|
$Rev: 391 $
|
||||||
|
$LastChangedBy: kutterma $
|
||||||
|
$Id: Client.pm 391 2007-11-17 21:56:13Z 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 Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %port_of :ATTR(:name<port> :default<[]>);
|
my %port_of :ATTR(:name<port> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::Transport::HTTP;
|
|||||||
use strict; use warnings;
|
use strict; use warnings;
|
||||||
use base qw(LWP::UserAgent);
|
use base qw(LWP::UserAgent);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# create methods normally inherited from SOAP::Client
|
# create methods normally inherited from SOAP::Client
|
||||||
SUBFACTORY: {
|
SUBFACTORY: {
|
||||||
@@ -16,6 +16,10 @@ SUBFACTORY: {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub _agent {
|
||||||
|
return qq[SOAP::WSDL $VERSION];
|
||||||
|
}
|
||||||
|
|
||||||
sub send_receive {
|
sub send_receive {
|
||||||
my ($self, %parameters) = @_;
|
my ($self, %parameters) = @_;
|
||||||
my ($envelope, $soap_action, $endpoint, $encoding, $content_type) =
|
my ($envelope, $soap_action, $endpoint, $encoding, $content_type) =
|
||||||
@@ -91,9 +95,9 @@ Martin Kutter E<lt>martin.kutter fen-net.deE<gt>
|
|||||||
|
|
||||||
=head1 REPOSITORY INFORMATION
|
=head1 REPOSITORY INFORMATION
|
||||||
|
|
||||||
$Rev: 744 $
|
$Rev: 795 $
|
||||||
$LastChangedBy: kutterma $
|
$LastChangedBy: kutterma $
|
||||||
$Id: HTTP.pm 744 2008-10-15 16:58:45Z kutterma $
|
$Id: HTTP.pm 795 2009-02-21 00:04:29Z kutterma $
|
||||||
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Transport/HTTP.pm $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'basic';
|
use Class::Std::Fast::Storable constructor => 'basic';
|
||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# register on loading
|
# register on loading
|
||||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use SOAP::WSDL::Factory::Transport;
|
use SOAP::WSDL::Factory::Transport;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||||
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
SOAP::WSDL::Factory::Transport->register( https => __PACKAGE__ );
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package SOAP::WSDL::TypeLookup;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %TYPE_FROM = (
|
my %TYPE_FROM = (
|
||||||
# wsdl:
|
# wsdl:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use SOAP::WSDL::XSD::Schema::Builtin;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
my %schema_of :ATTR(:name<schema> :default<[]>);
|
my %schema_of :ATTR(:name<schema> :default<[]>);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<enumeration value="">
|
#<enumeration value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<attribute
|
#<attribute
|
||||||
# default = string
|
# default = string
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<attributeGroup
|
#<attributeGroup
|
||||||
# id = ID
|
# id = ID
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# only used in SOAP::WSDL - will be obsolete once SOAP::WSDL uses the
|
# only used in SOAP::WSDL - will be obsolete once SOAP::WSDL uses the
|
||||||
# generative approach, too
|
# generative approach, too
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use Class::Std::Fast::Storable;
|
|||||||
use Scalar::Util qw(blessed);
|
use Scalar::Util qw(blessed);
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.06');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
# name provided by Base
|
# name provided by Base
|
||||||
@@ -87,13 +87,11 @@ sub serialize {
|
|||||||
my $variety = $self->get_variety();
|
my $variety = $self->get_variety();
|
||||||
my $xml = ($opt->{ readable }) ? $opt->{ indent } : q{}; # add indentation
|
my $xml = ($opt->{ readable }) ? $opt->{ indent } : q{}; # add indentation
|
||||||
|
|
||||||
|
|
||||||
if ( $opt->{ qualify } ) {
|
if ( $opt->{ qualify } ) {
|
||||||
$opt->{ attributes } = [ ' xmlns="' . $self->get_targetNamespace .'"' ];
|
$opt->{ attributes } = [ ' xmlns="' . $self->get_targetNamespace .'"' ];
|
||||||
delete $opt->{ qualify };
|
delete $opt->{ qualify };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$xml .= join q{ } , "<$name" , @{ $opt->{ attributes } };
|
$xml .= join q{ } , "<$name" , @{ $opt->{ attributes } };
|
||||||
delete $opt->{ attributes }; # don't propagate...
|
delete $opt->{ attributes }; # don't propagate...
|
||||||
|
|
||||||
@@ -108,6 +106,13 @@ sub serialize {
|
|||||||
}
|
}
|
||||||
$xml .= '>';
|
$xml .= '>';
|
||||||
$xml .= "\n" if ( $opt->{ readable } ); # add linebreak
|
$xml .= "\n" if ( $opt->{ readable } ); # add linebreak
|
||||||
|
|
||||||
|
if ($self->schema) {
|
||||||
|
if ($self->schema()->get_elementFormDefault() ne "qualified") {
|
||||||
|
push @{$opt->{ attributes } }, q{xmlns=""}
|
||||||
|
if ($self->get_targetNamespace() ne "");
|
||||||
|
}
|
||||||
|
}
|
||||||
if ( ($variety eq "sequence") or ($variety eq "all") ) {
|
if ( ($variety eq "sequence") or ($variety eq "all") ) {
|
||||||
$opt->{ indent } .= "\t";
|
$opt->{ indent } .= "\t";
|
||||||
for my $element (@{ $self->get_element() }) {
|
for my $element (@{ $self->get_element() }) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
# name provided by Base
|
# name provided by Base
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<enumeration value="">
|
#<enumeration value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
#<pattern value="">
|
#<pattern value="">
|
||||||
|
|
||||||
# id provided by Base
|
# id provided by Base
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<xs:group name="myModelGroup">
|
#<xs:group name="myModelGroup">
|
||||||
# <xs:sequence>
|
# <xs:sequence>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<maxLength value="">
|
#<maxLength value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<minExclusive value="">
|
#<minExclusive value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable constructor => 'none';
|
use Class::Std::Fast::Storable constructor => 'none';
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
#<pattern value="">
|
#<pattern value="">
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use warnings;
|
|||||||
use Class::Std::Fast::Storable;
|
use Class::Std::Fast::Storable;
|
||||||
use base qw(SOAP::WSDL::Base);
|
use base qw(SOAP::WSDL::Base);
|
||||||
|
|
||||||
use version; our $VERSION = qv('2.00.05');
|
use version; our $VERSION = qv('2.00.07');
|
||||||
|
|
||||||
# child elements
|
# child elements
|
||||||
my %attributeGroup_of :ATTR(:name<attributeGroup> :default<[]>);
|
my %attributeGroup_of :ATTR(:name<attributeGroup> :default<[]>);
|
||||||
@@ -14,9 +14,9 @@ my %group_of :ATTR(:name<group> :default<[]>);
|
|||||||
my %type_of :ATTR(:name<type> :default<[]>);
|
my %type_of :ATTR(:name<type> :default<[]>);
|
||||||
|
|
||||||
# attributes
|
# attributes
|
||||||
my %attributeFormDefault_of :ATTR(:name<attributeFormDefault> :default<()>);
|
my %attributeFormDefault_of :ATTR(:name<attributeFormDefault> :default<unqualified>);
|
||||||
my %blockDefault_of :ATTR(:name<blockDefault> :default<()>);
|
my %blockDefault_of :ATTR(:name<blockDefault> :default<()>);
|
||||||
my %elementFormDefault_of :ATTR(:name<elementFormDefault> :default<()>);
|
my %elementFormDefault_of :ATTR(:name<elementFormDefault> :default<unqualified>);
|
||||||
my %finalDefault_of :ATTR(:name<finalDefault> :default<()>);
|
my %finalDefault_of :ATTR(:name<finalDefault> :default<()>);
|
||||||
my %version_of :ATTR(:name<version> :default<()>);
|
my %version_of :ATTR(:name<version> :default<()>);
|
||||||
|
|
||||||
@@ -58,6 +58,8 @@ sub find_element {
|
|||||||
my ($self, @args) = @_;
|
my ($self, @args) = @_;
|
||||||
my @found_at = grep {
|
my @found_at = grep {
|
||||||
$_->get_targetNamespace() eq $args[0] &&
|
$_->get_targetNamespace() eq $args[0] &&
|
||||||
|
# warn $_->get_name() . " default NS:" . $_->get_xmlns()->{'#default'} . "\n";
|
||||||
|
# $_->get_xmlns()->{'#default'} eq $args[0] &&
|
||||||
$_->get_name() eq $args[1]
|
$_->get_name() eq $args[1]
|
||||||
}
|
}
|
||||||
@{ $element_of{ ident $self } };
|
@{ $element_of{ ident $self } };
|
||||||
@@ -68,6 +70,7 @@ sub find_type {
|
|||||||
my ($self, @args) = @_;
|
my ($self, @args) = @_;
|
||||||
my @found_at = grep {
|
my @found_at = grep {
|
||||||
$_->get_targetNamespace() eq $args[0] &&
|
$_->get_targetNamespace() eq $args[0] &&
|
||||||
|
# $_->get_xmlns()->{'#default'} eq $args[0] &&
|
||||||
$_->get_name() eq $args[1]
|
$_->get_name() eq $args[1]
|
||||||
}
|
}
|
||||||
@{ $type_of{ ident $self } };
|
@{ $type_of{ ident $self } };
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user