Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
903b3e95e4 | ||
|
|
a31389246e | ||
|
|
95465c33d9 |
@@ -0,0 +1,12 @@
|
|||||||
|
use Module::Build;
|
||||||
|
Module::Build->new(
|
||||||
|
dist_abstract => 'WSDL support for SOAP::Lite',
|
||||||
|
module_name => 'SOAP::WSDL',
|
||||||
|
license => 'artistic',
|
||||||
|
requires => {
|
||||||
|
'SOAP::Lite' => 0.,
|
||||||
|
'XML::XPath' => 0
|
||||||
|
},
|
||||||
|
buildrequires => { 'Test::More' => 0 },
|
||||||
|
|
||||||
|
)->create_build_script;
|
||||||
@@ -1,56 +1,153 @@
|
|||||||
$Log: CHANGES,v $
|
* v1.22 2007/05/30 - auto-discover service and port again
|
||||||
Revision 1.7 2004/07/27 13:00:03 lsc
|
- re-introduces auto-detecting of servicename and portname
|
||||||
- added missing test file
|
- fixes #27325: Test fails with Test::Pod::Coverage v 1.06.
|
||||||
|
- Now build requires Test::More
|
||||||
Revision 1.18 2004/07/16 07:43:05 lsc
|
- documentation update
|
||||||
fixed test scripts for windows
|
- cosmetics
|
||||||
|
|
||||||
Revision 1.17 2004/07/05 08:19:49 lsc
|
2007/05/28 private methods made private and pod update
|
||||||
- added wsdl_checkoccurs
|
- added pod tests
|
||||||
|
- made encodeComplexType and method generators private
|
||||||
Revision 1.16 2004/07/04 09:01:14 lsc
|
- updated pod
|
||||||
- change <definitions> element lookup from find('/definitions') and find('wsdl:definitions') to find('/*[1]') to process arbitrary default (wsdl) namespaces correctly
|
- fixed test scripts to work again from within/without t/
|
||||||
- fixed test output in test 06
|
- moved development repository to
|
||||||
|
https://svn.sourceforge.net/svnroot/soap-wsdl/ (finally !)
|
||||||
Revision 1.15 2004/07/02 12:28:31 lsc
|
|
||||||
- documentation update
|
2007/05/21 updated base version to customized version from Giovanni S Fois
|
||||||
- cosmetics
|
- merged in doc changes, so that they don't refer to "customized version"
|
||||||
|
- changed build process to Build.PL
|
||||||
Revision 1.14 2004/07/02 10:53:36 lsc
|
- changed repository layout to support new build process
|
||||||
- API change:
|
|
||||||
- call now behaves (almost) like SOAP::Lite::call
|
2006/11/06 only in the customized version
|
||||||
- call() takes a list (hash) as second argument
|
Added the support for default values in the wsdl file
|
||||||
- call does no longer support the "dispatch" option
|
|
||||||
- dispatching calls can be suppressed by passing
|
2006/11/04 only in the customized version
|
||||||
"no_dispatch => 1" to new()
|
Changed the calling interface. Now it's driven by the by the service
|
||||||
- dispatching calls can be suppressed by calling
|
and port names.
|
||||||
$soap->no_dispatch(1);
|
|
||||||
and re-enabled by calling
|
2006/11/03 only in the customized version
|
||||||
$soap->no_dispatch(0);
|
Corrected the Check for the correct number of elements in complex types
|
||||||
- Updated test skripts to reflect API change.
|
|
||||||
|
If a complex type is marked optional in a WSDL file, but sub-parts are marked as
|
||||||
Revision 1.13 2004/06/30 12:08:40 lsc
|
required, SOAP::WSDL used to die if the complex type was found in the data.
|
||||||
- added IServiceInstance (ecmed) to acceptance tests
|
Now, if a complex type has not data associated and is not strictly required, it
|
||||||
- refined documentation
|
will not be encoded.
|
||||||
|
|
||||||
Revision 1.12 2004/06/26 14:13:29 lsc
|
A quick-and-dirty workaround is to turn off the check with
|
||||||
- refined file caching
|
|
||||||
- added descriptive output to test scripts
|
$soap->wsdl_checkoccurs(0);
|
||||||
|
|
||||||
Revision 1.11 2004/06/26 07:55:40 lsc
|
2006/11/02 only in the customized version
|
||||||
- fixed "freeze" caching bug
|
- small changes for .Net compatibility when encoding complex types
|
||||||
- improved test scripts to test file system caching (and show the difference)
|
- added some test cases to the test suite try perl t/3_varous.t for more details
|
||||||
|
|
||||||
Revision 1.10 2004/06/26 06:30:33 lsc
|
|
||||||
- added filesystem caching using Cache::FileCache
|
2006/10/28 only in the customized version
|
||||||
|
- added a small support for the complexType restrictions of Arrays
|
||||||
Revision 1.9 2004/06/24 12:27:23 lsc
|
|
||||||
Cleanup
|
2006/10/02 only in the customized version
|
||||||
|
(Thanks to Dan Horne for having spotted so many bugs in a row)
|
||||||
Revision 1.8 2004/06/11 19:49:15 lsc
|
- the xml prefix was used as the default wsdl namespace when looking for the complextype restrictions
|
||||||
- moved .t files to more self-describing names
|
- the module crashed when the operation had no part declaration
|
||||||
- changed WSDL.pm to accept AXIS wsdl files
|
- the port name stated in the service definition was used as the portType
|
||||||
- implemented XPath query result caching on all absolute queries
|
- the test suited failed when the module was unzipped in a t.* named directory
|
||||||
|
|
||||||
Revision 1.7 2004/06/07 13:01:16 lsc
|
|
||||||
added changelog to pod
|
|
||||||
|
2006/09/15 only in the customized version
|
||||||
|
(Thanks to Terje Kristensen for his support and twisted wsdl files :)
|
||||||
|
- cleaned up the code for readability
|
||||||
|
- cleaned up the code for "use warnings" and "use strict"
|
||||||
|
- added support for wsdl files with multiple schema declarations
|
||||||
|
- added supporto for some restriction on complexTypes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2006/07/10 only in the customized version
|
||||||
|
- added the support for SOAP::header calls
|
||||||
|
|
||||||
|
2006/06/10 only in the customized version
|
||||||
|
|
||||||
|
- removed the overload based on the type of the call's parameters
|
||||||
|
|
||||||
|
- added an overloading support based on the unique name of the input message of the call. The input message must be provided by the calling script (sorry, the module has no mean to find this).
|
||||||
|
|
||||||
|
- added a light support to the sympletypes.
|
||||||
|
|
||||||
|
- added a light support to the imported namespaces in the types section.
|
||||||
|
|
||||||
|
- added the support for the multiple SOAP bindings. The correct binding must be provided by the calling script (sorry, the module has no mean to find this).
|
||||||
|
|
||||||
|
- the method will use his own soapAction if defined
|
||||||
|
|
||||||
|
- the method will use his own namespace if defined
|
||||||
|
|
||||||
|
- some other code cleaning
|
||||||
|
|
||||||
|
2006/04/23 only in the customized version
|
||||||
|
|
||||||
|
- corrected a bug related to the presence of the same method name on multiple
|
||||||
|
webservices
|
||||||
|
|
||||||
|
- added an overloading support based on the type of the call's parameters
|
||||||
|
|
||||||
|
- multiple extensions support added: a complextype can be an extension of a complextype which is an extension and so on
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Revision 1.7 2004/07/27 13:00:03 lsc
|
||||||
|
- added missing test file
|
||||||
|
|
||||||
|
Revision 1.18 2004/07/16 07:43:05 lsc
|
||||||
|
fixed test scripts for windows
|
||||||
|
|
||||||
|
Revision 1.17 2004/07/05 08:19:49 lsc
|
||||||
|
- added wsdl_checkoccurs
|
||||||
|
|
||||||
|
Revision 1.16 2004/07/04 09:01:14 lsc
|
||||||
|
- change <definitions> element lookup from find('/definitions') and find('wsdl:definitions') to find('/*[1]') to process arbitrary default (wsdl) namespaces correctly
|
||||||
|
- fixed test output in test 06
|
||||||
|
|
||||||
|
Revision 1.15 2004/07/02 12:28:31 lsc
|
||||||
|
- documentation update
|
||||||
|
- cosmetics
|
||||||
|
|
||||||
|
Revision 1.14 2004/07/02 10:53:36 lsc
|
||||||
|
- API change:
|
||||||
|
- call now behaves (almost) like SOAP::Lite::call
|
||||||
|
- call() takes a list (hash) as second argument
|
||||||
|
- call does no longer support the "dispatch" option
|
||||||
|
- dispatching calls can be suppressed by passing
|
||||||
|
"no_dispatch => 1" to new()
|
||||||
|
- dispatching calls can be suppressed by calling
|
||||||
|
$soap->no_dispatch(1);
|
||||||
|
and re-enabled by calling
|
||||||
|
$soap->no_dispatch(0);
|
||||||
|
- Updated test skripts to reflect API change.
|
||||||
|
|
||||||
|
Revision 1.13 2004/06/30 12:08:40 lsc
|
||||||
|
- added IServiceInstance (ecmed) to acceptance tests
|
||||||
|
- refined documentation
|
||||||
|
|
||||||
|
Revision 1.12 2004/06/26 14:13:29 lsc
|
||||||
|
- refined file caching
|
||||||
|
- added descriptive output to test scripts
|
||||||
|
|
||||||
|
Revision 1.11 2004/06/26 07:55:40 lsc
|
||||||
|
- fixed "freeze" caching bug
|
||||||
|
- improved test scripts to test file system caching (and show the difference)
|
||||||
|
|
||||||
|
Revision 1.10 2004/06/26 06:30:33 lsc
|
||||||
|
- added filesystem caching using Cache::FileCache
|
||||||
|
|
||||||
|
Revision 1.9 2004/06/24 12:27:23 lsc
|
||||||
|
Cleanup
|
||||||
|
|
||||||
|
Revision 1.8 2004/06/11 19:49:15 lsc
|
||||||
|
- moved .t files to more self-describing names
|
||||||
|
- changed WSDL.pm to accept AXIS wsdl files
|
||||||
|
- implemented XPath query result caching on all absolute queries
|
||||||
|
|
||||||
|
Revision 1.7 2004/06/07 13:01:16 lsc
|
||||||
|
added changelog to pod
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
Development of SOAP::WSDL takes place on sourceforge.net.
|
||||||
|
|
||||||
|
There's a svn repository available at
|
||||||
|
https://svn.sourceforge.net/svnroot/soap-wsdl
|
||||||
|
|
||||||
|
Engagement in the further development of this module is highly encouraged -
|
||||||
|
many people have already contributed, and many more probably will.
|
||||||
|
|
||||||
|
I'm sometimes a bit slow in answering e-mails or merging in changes -
|
||||||
|
so if you feel your changes are urgent, please set up a sourceforge account
|
||||||
|
and ask me for commit permissions on the repository - I will happily accept
|
||||||
|
you as co-author.
|
||||||
|
|
||||||
|
The (my) current roadmap for SOAP::WSDL is:
|
||||||
|
|
||||||
|
1.2*: Bugfixes and support for more XSD variants
|
||||||
|
|
||||||
|
1.3: Bindings support
|
||||||
|
|
||||||
|
2.*: WSDL -> Perl Class factory with offline WSDL processing
|
||||||
|
|
||||||
|
May 2007,
|
||||||
|
|
||||||
|
Martin Kutter
|
||||||
@@ -1,10 +1,15 @@
|
|||||||
t/1_performance.t
|
Build.PL
|
||||||
t/2_helloworld.NET.t
|
CHANGES
|
||||||
t/acceptance/helloworld.asmx.xml
|
HACKING
|
||||||
t/acceptance/helloworld.xml
|
lib/SOAP/WSDL.pm
|
||||||
t/acceptance/test.wsdl.xml
|
MANIFEST This list of files
|
||||||
WSDL.pm
|
META.yml
|
||||||
MANIFEST
|
README
|
||||||
README
|
t/1_performance.t
|
||||||
CHANGES
|
t/2_helloworld.NET.t
|
||||||
Makefile.PL
|
t/3_various.t
|
||||||
|
t/97_pod.t
|
||||||
|
t/98_pod_coverage.t
|
||||||
|
t/acceptance/helloworld.asmx.xml
|
||||||
|
t/acceptance/helloworld.xml
|
||||||
|
t/acceptance/test.wsdl.xml
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
name: SOAP-WSDL
|
||||||
|
version: 1.22
|
||||||
|
author: []
|
||||||
|
abstract: WSDL support for SOAP::Lite
|
||||||
|
license: artistic
|
||||||
|
resources:
|
||||||
|
license: http://opensource.org/licenses/artistic-license.php
|
||||||
|
requires:
|
||||||
|
SOAP::Lite: 0
|
||||||
|
XML::XPath: 0
|
||||||
|
provides:
|
||||||
|
SOAP::WSDL:
|
||||||
|
file: lib/SOAP/WSDL.pm
|
||||||
|
version: 1.22
|
||||||
|
generated_by: Module::Build version 0.28
|
||||||
|
meta-spec:
|
||||||
|
url: http://module-build.sourceforge.net/META-spec-v1.2.html
|
||||||
|
version: 1.2
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
use ExtUtils::MakeMaker;
|
|
||||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
|
||||||
# the contents of the Makefile that is written.
|
|
||||||
WriteMakefile(
|
|
||||||
'NAME' => 'SOAP::WSDL',
|
|
||||||
'VERSION_FROM' => 'WSDL.pm', # finds $VERSION
|
|
||||||
'PREREQ_PM' => { 'XML::XPath' => 0,
|
|
||||||
'SOAP::Lite' => 0 }
|
|
||||||
);
|
|
||||||
@@ -1,29 +1,31 @@
|
|||||||
SOAP::WSDL - a WSDL-driven message preprocessor for SOAP::Lite.
|
SOAP::WSDL - a WSDL-driven message preprocessor for SOAP::Lite.
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
|
||||||
See "perldoc SOAP::WSDL" (or "perldoc WSDL.pm") for details.
|
See "perldoc SOAP::WSDL" (or "perldoc WSDL.pm") for details.
|
||||||
|
|
||||||
|
|
||||||
PREREQUISITES
|
PREREQUISITES
|
||||||
|
|
||||||
SOAP::WSDL requires the following perl modules:
|
SOAP::WSDL requires the following perl modules:
|
||||||
|
|
||||||
- SOAP::Lite
|
- SOAP::Lite
|
||||||
- XML::XPath
|
- XML::XPath
|
||||||
|
|
||||||
|
|
||||||
INSTALLING
|
If you want to use file system caching (improves performance), you also
|
||||||
|
need the following packages:
|
||||||
Use the usual mantra:
|
|
||||||
|
- Cache::Cache
|
||||||
perl Makefile.PL
|
|
||||||
make
|
INSTALLING
|
||||||
make test
|
|
||||||
make install
|
perl Build.PL
|
||||||
|
perl Build
|
||||||
|
perl Build test
|
||||||
LICENSE
|
perl Build install
|
||||||
|
|
||||||
This library is free software, you can distribute it under the same
|
LICENSE
|
||||||
terms as perl itself.
|
|
||||||
|
This library is free software, you can distribute/modify it under the same
|
||||||
|
terms as perl itself.
|
||||||
|
|||||||
+1478
File diff suppressed because it is too large
Load Diff
+107
-54
@@ -1,54 +1,107 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
use strict;
|
use strict;
|
||||||
use Test::More tests=> 7;
|
use Test;
|
||||||
use Time::HiRes qw( gettimeofday tv_interval );
|
plan tests=> 11;
|
||||||
use lib '../..';
|
use Time::HiRes qw( gettimeofday tv_interval );
|
||||||
use Data::Dumper;
|
use lib '../lib';
|
||||||
use Cwd;
|
use Data::Dumper;
|
||||||
use_ok "SOAP::WSDL";
|
use Cwd;
|
||||||
### test vars END
|
|
||||||
|
use SOAP::WSDL;
|
||||||
print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
|
|
||||||
print "Performance test with simple WSDL file\n";
|
ok 1; # if we made it this far, we're ok
|
||||||
|
### test vars END
|
||||||
my $data = {
|
|
||||||
name => 'Mein Name',
|
print "# Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
|
||||||
givenName => 'Vorname'
|
print "# Performance test with WSDL file\n";
|
||||||
|
|
||||||
};
|
my $data = { name => 'Mein Name',
|
||||||
|
givenName => 'Vorname' };
|
||||||
my $dir = cwd;
|
|
||||||
|
my $dir = cwd;
|
||||||
# chomp /t/ to allow running the script from t/ directory
|
|
||||||
$dir=~s|/t/?||;
|
# chomp /t/ to allow running the script from t/ directory
|
||||||
|
$dir=~s|/t/?||;
|
||||||
my $t0 = [gettimeofday];
|
|
||||||
ok( my $soap=SOAP::WSDL->new(
|
my $t0 = [gettimeofday];
|
||||||
wsdl => "file://$dir/t/acceptance/helloworld.asmx.xml",
|
|
||||||
no_dispatch => 1
|
{
|
||||||
), "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)" ); #->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx' );
|
ok( my $soap=SOAP::WSDL->new(
|
||||||
|
wsdl => "file://$dir/t/acceptance/helloworld.asmx.xml",
|
||||||
$soap->proxy('http://helloworld/helloworld.asmx');
|
no_dispatch => 1
|
||||||
|
) );
|
||||||
$t0 = [gettimeofday];
|
|
||||||
ok($soap->wsdlinit(caching => 1), "wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
|
print "# Test with NO caching\n";
|
||||||
$soap->readable(1);
|
print "# Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)\n" ;
|
||||||
|
|
||||||
$t0 = [gettimeofday];
|
|
||||||
ok( $soap->call("sayHello" , %{ $data }), "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
|
$t0 = [gettimeofday];
|
||||||
|
eval{ $soap->wsdlinit(caching => 0) };
|
||||||
$t0 = [gettimeofday];
|
unless ($@) {
|
||||||
ok($soap->call(sayHello => %{ $data }), "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
|
ok(1);
|
||||||
|
} else {
|
||||||
$t0 = [gettimeofday];
|
ok 0;
|
||||||
for (my $i=1; $i<100; $i++) {
|
print STDERR $@;
|
||||||
$soap->call(sayHello => %{ $data });
|
}
|
||||||
}
|
print "# wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;;
|
||||||
ok(1, "100 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
|
|
||||||
|
$soap->readable(1);
|
||||||
$soap->call(sayHello => %{ $data });
|
$soap->wsdl_cache_store();
|
||||||
$t0 = [gettimeofday];
|
$soap->servicename("Service1");
|
||||||
for (my $i=1; $i<100; $i++) {
|
$soap->portname("Service1Soap");
|
||||||
$soap->call(sayHello => %{ $data });
|
|
||||||
}
|
$t0 = [gettimeofday];
|
||||||
ok(1, "100 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
|
ok( $soap->call("sayHello" , %{ $data }));
|
||||||
|
print "# NO cache first call: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
ok($soap->call(sayHello => %{ $data }) );
|
||||||
|
print "# NO cache second call (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
for (my $i=1; $i<100; $i++) {
|
||||||
|
$soap->call(sayHello => %{ $data });
|
||||||
|
}
|
||||||
|
ok(1);
|
||||||
|
print "# NO cache: 100 x call (".tv_interval ( $t0, [gettimeofday]) ."s)\n";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
print "# Test with caching ENABLED\n";
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
ok(my $soap=SOAP::WSDL->new(
|
||||||
|
wsdl => "file://$dir/t/acceptance/helloworld.asmx.xml",
|
||||||
|
no_dispatch => 1
|
||||||
|
) );
|
||||||
|
print "# Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)\n" ;
|
||||||
|
-e "$dir/t/cache" or mkdir "$dir/t/cache";
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
eval{ $soap->wsdlinit(caching => 1,cache_directory =>"$dir/t/cache") };
|
||||||
|
unless ($@) {
|
||||||
|
ok(1);
|
||||||
|
} else {
|
||||||
|
ok 0;
|
||||||
|
print STDERR $@;
|
||||||
|
}
|
||||||
|
print "# wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;;
|
||||||
|
$soap->readable(1);
|
||||||
|
$soap->servicename("Service1");
|
||||||
|
$soap->portname("Service1Soap");
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
ok( $soap->call("sayHello" , %{ $data }));
|
||||||
|
print "# CACHE first call (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
ok($soap->call(sayHello => %{ $data }) );
|
||||||
|
print "# CACHE second call: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
for (my $i=1; $i<100; $i++) {
|
||||||
|
$soap->call(sayHello => %{ $data });
|
||||||
|
}
|
||||||
|
ok(1);
|
||||||
|
print "# CACHE: 100 x call (".tv_interval ( $t0, [gettimeofday]) ."s)\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
+104
-90
@@ -1,90 +1,104 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
#######################################################################################
|
#######################################################################################
|
||||||
#
|
#
|
||||||
# 2_helloworld.t
|
# 2_helloworld.t
|
||||||
#
|
#
|
||||||
# Acceptance test for message encoding, based on .NET wsdl and example code.
|
# Acceptance test for message encoding, based on .NET wsdl and example code.
|
||||||
# SOAP::WSDL's encoding doesn't I<exactly> match the .NET example, because
|
# SOAP::WSDL's encoding doesn't I<exactly> match the .NET example, because
|
||||||
# .NET doesn't always specify types (SOAP::WSDL does), and the namespace
|
# .NET doesn't always specify types (SOAP::WSDL does), and the namespace
|
||||||
# prefixes chosen are different (maybe the encoding style, too ? this would be a bug !)
|
# prefixes chosen are different (maybe the encoding style, too ? this would be a bug !)
|
||||||
#
|
#
|
||||||
########################################################################################
|
########################################################################################
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use diagnostics;
|
use diagnostics;
|
||||||
use Test::More tests => 5;
|
use Test;
|
||||||
use Time::HiRes qw( gettimeofday tv_interval );
|
plan tests => 5;
|
||||||
use lib '../..';
|
use Time::HiRes qw( gettimeofday tv_interval );
|
||||||
use Cwd;
|
use lib '../lib';
|
||||||
use_ok "SOAP::WSDL";
|
use Cwd;
|
||||||
### test vars END
|
use SOAP::WSDL;
|
||||||
print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
|
ok 1; # if we made it this far, we're ok
|
||||||
print "Acceptance test against sample output with simple WSDL\n";
|
### test vars END
|
||||||
|
print "# Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
|
||||||
my $data = {
|
print "# Acceptance test against sample output with simple WSDL\n";
|
||||||
name => 'test',
|
|
||||||
# givenName => 'GIVENNAME',
|
my $data = {
|
||||||
# test => {
|
name => 'test',
|
||||||
# name => 'TESTNAME',
|
givenName => 'GIVENNAME',
|
||||||
# givenName => 'GIVENNAME',
|
test => {
|
||||||
# },
|
name => 'TESTNAME',
|
||||||
# test1 => {
|
givenName => 'GIVENNAME',
|
||||||
# name => 'TESTNAME',
|
},
|
||||||
# givenName => 'GIVENNAME',
|
};
|
||||||
# extend => 'EXTEND',
|
|
||||||
# },
|
|
||||||
# test2 => {
|
my $dir= cwd;
|
||||||
# name => 'TESTNAME',
|
$dir=~s/\/t\/?//;
|
||||||
# givenName => 'GIVENNAME',
|
|
||||||
# }
|
my $t0 = [gettimeofday];
|
||||||
};
|
ok( my $soap=SOAP::WSDL->new(wsdl => 'file:///'.$dir.'/t/acceptance/test.wsdl.xml',
|
||||||
|
no_dispatch => 1 ) );
|
||||||
my $t0 = [gettimeofday];
|
|
||||||
my $dir= cwd;
|
print "# Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
$dir=~s/\/t//;
|
|
||||||
ok( my $soap=SOAP::WSDL->new(
|
$t0 = [gettimeofday];
|
||||||
wsdl => 'file:///'.$dir.'/t/acceptance/test.wsdl.xml',
|
eval{ $soap->wsdlinit() };
|
||||||
no_dispatch => 1
|
unless ($@) {
|
||||||
), "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."s)" ); #->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx' );
|
ok(1);
|
||||||
$soap->proxy('http://helloworld/helloworld.asmx');
|
} else {
|
||||||
$t0 = [gettimeofday];
|
ok 0;
|
||||||
ok($soap->wsdlinit(), "WSDL init (".tv_interval ( $t0, [gettimeofday]) ."s)") ;
|
print STDERR $@;
|
||||||
|
}
|
||||||
$t0 = [gettimeofday];
|
|
||||||
do {
|
print "# WSDL init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
my $xml = $soap->serializer->method( $soap->call(sayHello => %{ $data }) );
|
$soap->servicename("Service1");
|
||||||
|
$soap->portname("Service1Soap");
|
||||||
open (FILE, "acceptance/helloworld.xml")
|
|
||||||
|| open (FILE, "t/acceptance/helloworld.xml") || die "can't open acceptance file";
|
$t0 = [gettimeofday];
|
||||||
my $xml_test=<FILE>;
|
do {
|
||||||
close FILE;
|
my $xml = $soap->serializer->method( $soap->call(sayHello => %{ $data }) );
|
||||||
$xml=~s/^.+\<([^\/]+?)\:Body\>//;
|
|
||||||
$xml=~s/\<\/$1\:Body\>.*//;
|
open (FILE, "acceptance/helloworld.xml")
|
||||||
|
|| open (FILE, "t/acceptance/helloworld.xml") || die "can't open acceptance file";
|
||||||
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
|
my $xml_test=<FILE>;
|
||||||
$xml_test=~s/\<\/$1\:Body\>.*//;
|
close FILE;
|
||||||
|
$xml=~s/^.+\<([^\/]+?)\:Body\>//;
|
||||||
if ( ($xml) && ($xml eq $xml_test) ) { pass ("Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)") } else {
|
$xml=~s/\<\/$1\:Body\>.*//;
|
||||||
fail( "Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)") ;
|
|
||||||
print "$xml\n$xml_test\n"; };
|
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
|
||||||
};
|
$xml_test=~s/\<\/$1\:Body\>.*//;
|
||||||
|
|
||||||
$t0 = [gettimeofday];
|
if ( ($xml) && ($xml eq $xml_test) ) {
|
||||||
do {
|
ok 1;
|
||||||
my $xml = $soap->serializer->method( $soap->call(sayHello => %{ $data }) );
|
print "# Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)\n"
|
||||||
|
} else {
|
||||||
open (FILE, "acceptance/helloworld.xml")
|
ok 0;
|
||||||
|| open FILE, ("t/acceptance/helloworld.xml") || die "can't open acceptance file";
|
print "# Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
my $xml_test=<FILE>;
|
print "$xml\n$xml_test\n"; };
|
||||||
close FILE;
|
};
|
||||||
$xml=~s/^.+\<([^\/]+?)\:Body\>//;
|
|
||||||
$xml=~s/\<\/$1\:Body\>.*//;
|
$t0 = [gettimeofday];
|
||||||
|
do {
|
||||||
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
|
my $xml = $soap->serializer->method( $soap->call(sayHello => %{ $data }) );
|
||||||
$xml_test=~s/\<\/$1\:Body\>.*//;
|
|
||||||
|
open (FILE, "acceptance/helloworld.xml")
|
||||||
if ( ($xml) && ($xml eq $xml_test) ) { pass ("Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)") } else {
|
|| open FILE, ("t/acceptance/helloworld.xml") || die "can't open acceptance file";
|
||||||
fail( "Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)") ;
|
my $xml_test=<FILE>;
|
||||||
print "$xml\n$xml_test\n"; };
|
close FILE;
|
||||||
};
|
$xml=~s/^.+\<([^\/]+?)\:Body\>//;
|
||||||
|
$xml=~s/\<\/$1\:Body\>.*//;
|
||||||
|
|
||||||
|
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
|
||||||
|
$xml_test=~s/\<\/$1\:Body\>.*//;
|
||||||
|
|
||||||
|
if ( ($xml) && ($xml eq $xml_test) ) {
|
||||||
|
ok 1;
|
||||||
|
print "# Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)\n";
|
||||||
|
} else {
|
||||||
|
ok 0;
|
||||||
|
print "# Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
print "$xml\n$xml_test\n";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|||||||
+112
@@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use Test;
|
||||||
|
plan tests=> 8;
|
||||||
|
use Time::HiRes qw( gettimeofday tv_interval );
|
||||||
|
use lib '../lib';
|
||||||
|
use Data::Dumper;
|
||||||
|
use Cwd;
|
||||||
|
use SOAP::WSDL;
|
||||||
|
|
||||||
|
ok 1; # if we made it this far, we're ok
|
||||||
|
### test vars END
|
||||||
|
|
||||||
|
print "# Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
|
||||||
|
print "# Various Features Test with WSDL file \n";
|
||||||
|
|
||||||
|
my $data = {name => 'Mein Name',
|
||||||
|
givenName => 'Vorname'};
|
||||||
|
|
||||||
|
my $dir = cwd;
|
||||||
|
|
||||||
|
# chomp /t/ to allow running the script from t/ directory
|
||||||
|
$dir=~s|/t/?||;
|
||||||
|
|
||||||
|
my $t0 = [gettimeofday];
|
||||||
|
ok( my $soap=SOAP::WSDL->new(wsdl => "file://$dir/t/acceptance/helloworld.asmx.xml",
|
||||||
|
no_dispatch => 1
|
||||||
|
));
|
||||||
|
|
||||||
|
print "# Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)\n" ;
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
eval{ $soap->wsdlinit(caching => 0) };
|
||||||
|
unless ($@) {
|
||||||
|
ok(1);
|
||||||
|
} else {
|
||||||
|
ok 0;
|
||||||
|
print STDERR $@;
|
||||||
|
}
|
||||||
|
print "# wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;;
|
||||||
|
|
||||||
|
$soap->readable(1);
|
||||||
|
$soap->servicename("Service1");
|
||||||
|
$soap->portname("Service1Soap");
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
|
||||||
|
ok( $soap->call("sayHello" , %{ $data }));
|
||||||
|
print "# Normal Call: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$soap->servicename("Service2");
|
||||||
|
$soap->portname("Service2Soap");
|
||||||
|
|
||||||
|
$data = {name => 'Mein Name',
|
||||||
|
givenName => 'Vorname'};
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
ok($soap->call(sayGoodBye => %{ $data }) );
|
||||||
|
print "# Multiple Services/Port Call: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$soap->servicename("Service2");
|
||||||
|
$soap->portname("Service2Soap");
|
||||||
|
$data = {name => 'Mein Name',
|
||||||
|
givenName => 'Vorname',
|
||||||
|
wsdl_input_name => 'firstOverload'
|
||||||
|
};
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
|
||||||
|
my $xml = $soap->serializer->method( $soap->call(sayGoodByeOverload => %{ $data }) );
|
||||||
|
$xml =~ /<name/ and ok(1);
|
||||||
|
|
||||||
|
$data = {
|
||||||
|
name => 'Mein Name',
|
||||||
|
givenName => 'Vorname',
|
||||||
|
wsdl_input_name => 'secondOverload'
|
||||||
|
};
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
$xml = $soap->serializer->method( $soap->call(sayGoodByeOverload => %{ $data }) );
|
||||||
|
$xml !~ /<name/ and ok(1);
|
||||||
|
|
||||||
|
print "# Overloaded Calls: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
|
||||||
|
$soap->servicename("Service2");
|
||||||
|
$soap->portname("Service2Soap");
|
||||||
|
$data = { name => 'Mein Name',
|
||||||
|
'recipients' => [
|
||||||
|
{user_name => 'Adam', last_name => "Eden"},
|
||||||
|
{user_name => 'Eve',last_name => 'Apple'},
|
||||||
|
],
|
||||||
|
wsdl_input_name => 'thirdOverload'
|
||||||
|
};
|
||||||
|
|
||||||
|
$t0 = [gettimeofday];
|
||||||
|
$xml = $soap->serializer->method( $soap->call(sayGoodByeOverload => %{ $data }) );
|
||||||
|
|
||||||
|
my $xpath = new XML::XPath->new(xml=>$xml);
|
||||||
|
|
||||||
|
my @recipients = $xpath->findnodes('//recipients');
|
||||||
|
if($recipients[0]->findvalue("user_name") eq "Adam" and
|
||||||
|
$recipients[0]->findvalue("last_name") eq "Eden" and
|
||||||
|
$recipients[1]->findvalue("user_name") eq "Eve" and
|
||||||
|
$recipients[1]->findvalue("last_name") eq "Apple"){
|
||||||
|
ok(1);
|
||||||
|
}else{
|
||||||
|
ok(0);
|
||||||
|
}
|
||||||
|
print "# Restricted Arrays: (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
|
||||||
|
print "#End\n";
|
||||||
|
|
||||||
|
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
use Test::More;
|
||||||
|
eval "use Test::Pod 1.00";
|
||||||
|
plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
|
||||||
|
|
||||||
|
use Cwd;
|
||||||
|
|
||||||
|
my $dir = cwd;
|
||||||
|
|
||||||
|
if ( $dir =~ /t$/ )
|
||||||
|
{
|
||||||
|
@directories = ('../lib/');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@directories = ();
|
||||||
|
}
|
||||||
|
|
||||||
|
my @files = all_pod_files(
|
||||||
|
@directories
|
||||||
|
);
|
||||||
|
|
||||||
|
plan tests => scalar(@files);
|
||||||
|
|
||||||
|
foreach my $module (@files)
|
||||||
|
{
|
||||||
|
pod_file_ok( $module )
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
use Test::More;
|
||||||
|
eval { use Test::Pod::Coverage 1.08 };
|
||||||
|
plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD" if $@;
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
if (-d 't/') # we're not in the test dir - probably using
|
||||||
|
{ # Build test
|
||||||
|
@dirs = ('blib/lib')
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@dirs = '../lib';
|
||||||
|
use lib '../lib'; # use our lib if we are in t/ (if we are, we're)
|
||||||
|
# not run from "make test" / "Build test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@files = all_modules( @dirs );
|
||||||
|
plan tests => scalar @files;
|
||||||
|
foreach (@files)
|
||||||
|
{
|
||||||
|
s/^\.\.::blib::lib:://;
|
||||||
|
s/^\.\.::lib:://;
|
||||||
|
pod_coverage_ok( $_ );
|
||||||
|
}
|
||||||
@@ -1,75 +1,180 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
||||||
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
||||||
xmlns:s="http://www.w3.org/2001/XMLSchema"
|
xmlns:s="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:s0="urn:HelloWorld"
|
xmlns:s0="urn:HelloWorld"
|
||||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
||||||
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
|
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
|
||||||
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
|
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
|
||||||
targetNamespace="urn:HelloWorld"
|
targetNamespace="urn:HelloWorld"
|
||||||
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
<types>
|
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||||
<s:schema elementFormDefault="qualified"
|
<types>
|
||||||
targetNamespace="urn:HelloWorld">
|
<s:schema elementFormDefault="qualified"
|
||||||
<s:element name="sayHello">
|
targetNamespace="urn:HelloWorld">
|
||||||
<s:complexType>
|
<s:element name="sayHello">
|
||||||
<s:sequence>
|
<s:complexType>
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="name"
|
<s:sequence>
|
||||||
type="s:string" />
|
<s:element minOccurs="0" maxOccurs="1" name="name"
|
||||||
</s:sequence>
|
type="s:string" />
|
||||||
</s:complexType>
|
</s:sequence>
|
||||||
</s:element>
|
</s:complexType>
|
||||||
|
</s:element>
|
||||||
<s:element name="sayHelloResponse">
|
|
||||||
<s:complexType>
|
<s:element name="sayGoodBye">
|
||||||
<s:sequence>
|
<s:complexType>
|
||||||
<s:element minOccurs="0" maxOccurs="1"
|
<s:sequence>
|
||||||
name="sayHelloResult" type="s:string" />
|
<s:element minOccurs="0" maxOccurs="1" name="name"
|
||||||
</s:sequence>
|
type="s:string" />
|
||||||
</s:complexType>
|
</s:sequence>
|
||||||
</s:element>
|
</s:complexType>
|
||||||
</s:schema>
|
</s:element>
|
||||||
</types>
|
|
||||||
|
<s:element name="sayHelloResponse">
|
||||||
<message name="sayHelloSoapIn">
|
<s:complexType>
|
||||||
<part name="parameters" element="s0:sayHello" />
|
<s:sequence>
|
||||||
</message>
|
<s:element minOccurs="0" maxOccurs="1" name="sayHelloResult" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
<message name="sayHelloSoapOut">
|
</s:complexType>
|
||||||
<part name="parameters" element="s0:sayHelloResponse" />
|
</s:element>
|
||||||
</message>
|
|
||||||
|
<s:element name="sayGoodByeResponse">
|
||||||
<portType name="Service1Soap">
|
<s:complexType>
|
||||||
<operation name="sayHello">
|
<s:sequence>
|
||||||
<input message="s0:sayHelloSoapIn" />
|
<s:element minOccurs="0" maxOccurs="1" name="sayGoodByeResult" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
<output message="s0:sayHelloSoapOut" />
|
</s:complexType>
|
||||||
</operation>
|
</s:element>
|
||||||
</portType>
|
<s:complexType name="contact_detail_list">
|
||||||
|
<s:complexContent>
|
||||||
<binding name="Service1Soap" type="s0:Service1Soap">
|
<s:restriction base="soapenc:Array">
|
||||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
<s:attribute ref="soapenc:arrayType" wsdl:arrayType="s0:person_detail[]"/>
|
||||||
style="document" />
|
</s:restriction>
|
||||||
|
</s:complexContent>
|
||||||
<operation name="sayHello">
|
</s:complexType>
|
||||||
<soap:operation soapAction="urn:HelloWorld#sayHello"
|
<s:complexType name="person_detail">
|
||||||
style="document" />
|
<s:all>
|
||||||
|
<s:element name="email_address" type="s:string"/>
|
||||||
<input>
|
<s:element name="user_name" type="s:string"/>
|
||||||
<soap:body use="literal" />
|
<s:element name="first_name" type="s:string"/>
|
||||||
</input>
|
<s:element name="last_name" type="s:string"/>
|
||||||
|
<s:element name="department" type="s:string"/>
|
||||||
<output>
|
<s:element name="id" type="s:string"/>
|
||||||
<soap:body use="literal" />
|
<s:element name="title" type="s:string"/>
|
||||||
</output>
|
</s:all>
|
||||||
</operation>
|
</s:complexType>
|
||||||
</binding>
|
</s:schema>
|
||||||
|
</types>
|
||||||
<service name="Service1">
|
|
||||||
<port name="Service1Soap" binding="s0:Service1Soap">
|
<message name="sayHelloSoapIn">
|
||||||
<soap:address
|
<part name="parameters" element="s0:sayHello" />
|
||||||
location="http://helloworld/helloworld.asmx" />
|
</message>
|
||||||
</port>
|
|
||||||
</service>
|
<message name="sayGoodByeSoapIn">
|
||||||
</definitions>
|
<part name="parameters" element="s0:sayHello" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<message name="sayGoodByeSoapInSecond">
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<message name="sayGoodByeSoapInThird">
|
||||||
|
<part name="name" type="s:string" />
|
||||||
|
<part name="recipients" type="s0:contact_detail_list" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
|
||||||
|
<message name="sayHelloSoapOut">
|
||||||
|
<part name="parameters" element="s0:sayGoodByeResponse" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<message name="sayGoodByeSoapOut">
|
||||||
|
<part name="parameters" element="s0:sayGoodByeResponse" />
|
||||||
|
</message>
|
||||||
|
|
||||||
|
<portType name="Service1Soap">
|
||||||
|
<operation name="sayHello">
|
||||||
|
<input message="s0:sayHelloSoapIn" />
|
||||||
|
|
||||||
|
<output message="s0:sayHelloSoapOut" />
|
||||||
|
</operation>
|
||||||
|
</portType>
|
||||||
|
|
||||||
|
|
||||||
|
<portType name="Service2Soap">
|
||||||
|
|
||||||
|
<operation name="sayGoodBye">
|
||||||
|
<input message="s0:sayGoodByeSoapIn" />
|
||||||
|
<output message="s0:sayGoodByeSoapOut" />
|
||||||
|
</operation>
|
||||||
|
|
||||||
|
<operation name="sayGoodByeOverload">
|
||||||
|
<input message="s0:sayGoodByeSoapIn" name="firstOverload" />
|
||||||
|
<output message="s0:sayGoodByeSoapOut" />
|
||||||
|
</operation>
|
||||||
|
|
||||||
|
<operation name="sayGoodByeOverload">
|
||||||
|
<input message="s0:sayGoodByeSoapInSecond" name="secondOverload" />
|
||||||
|
<output message="s0:sayGoodByeSoapOut" />
|
||||||
|
</operation>
|
||||||
|
|
||||||
|
<operation name="sayGoodByeOverload">
|
||||||
|
<input message="s0:sayGoodByeSoapInThird" name="thirdOverload" />
|
||||||
|
<output message="s0:sayGoodByeSoapOut" />
|
||||||
|
</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" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" />
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
<binding name="Service2Soap" type="s0:Service2Soap">
|
||||||
|
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
||||||
|
style="document" />
|
||||||
|
<operation name="sayGoodBye">
|
||||||
|
<soap:operation soapAction="urn:HelloWorld#sayGoodBye" style="document" />
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
<operation name="sayGoodByeOverload">
|
||||||
|
<soap:operation soapAction="urn:HelloWorld#sayGoodBye" style="document" />
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
<service name="Service1">
|
||||||
|
<port name="Service1Soap" binding="s0:Service1Soap">
|
||||||
|
<soap:address
|
||||||
|
location="http://helloworld/helloworld.asmx" />
|
||||||
|
</port>
|
||||||
|
</service>
|
||||||
|
<service name="Service2">
|
||||||
|
<port name="Service2Soap" binding="s0:Service2Soap">
|
||||||
|
<soap:address
|
||||||
|
location="http://helloworld/helloworld.asmx" />
|
||||||
|
</port>
|
||||||
|
</service>
|
||||||
|
</definitions>
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><sayHello xmlns="urn:HelloWorld"><name xsi:type="xsd:string">test</name></sayHello></soap:Body></soap:Envelope>
|
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><sayHello xmlns="urn:HelloWorld"><name xsi:type="xsd:string">test</name><givenName xsi:type="xsd:string">GIVENNAME</givenName><test><name xsi:type="xsd:string">TESTNAME</name><givenName xsi:type="xsd:string">GIVENNAME</givenName></test></sayHello></soap:Body></soap:Envelope>
|
||||||
+105
-105
@@ -1,105 +1,105 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
||||||
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
||||||
xmlns:s="http://www.w3.org/2001/XMLSchema"
|
xmlns:s="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:s0="urn:HelloWorld"
|
xmlns:s0="urn:HelloWorld"
|
||||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
||||||
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
|
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
|
||||||
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
|
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
|
||||||
targetNamespace="urn:HelloWorld"
|
targetNamespace="urn:HelloWorld"
|
||||||
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||||
<types>
|
<types>
|
||||||
<s:schema elementFormDefault="qualified"
|
<s:schema elementFormDefault="qualified"
|
||||||
targetNamespace="urn:HelloWorld">
|
targetNamespace="urn:HelloWorld">
|
||||||
<s:element name="sayHello">
|
<s:element name="sayHello">
|
||||||
<s:complexType>
|
<s:complexType>
|
||||||
<s:sequence>
|
<s:sequence>
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="name"
|
<s:element minOccurs="0" maxOccurs="1" name="name"
|
||||||
type="s:string" />
|
type="s:string" />
|
||||||
|
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="givenName"
|
<s:element minOccurs="0" maxOccurs="1" name="givenName"
|
||||||
type="s:string" />
|
type="s:string" />
|
||||||
|
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="test"
|
<s:element minOccurs="0" maxOccurs="1" name="test"
|
||||||
type="s0:test2" />
|
type="s0:test2" />
|
||||||
</s:sequence>
|
</s:sequence>
|
||||||
</s:complexType>
|
</s:complexType>
|
||||||
</s:element>
|
</s:element>
|
||||||
|
|
||||||
<s:element name="sayHelloResponse">
|
<s:element name="sayHelloResponse">
|
||||||
<s:complexType>
|
<s:complexType>
|
||||||
<s:sequence>
|
<s:sequence>
|
||||||
<s:element minOccurs="0" maxOccurs="1"
|
<s:element minOccurs="0" maxOccurs="1"
|
||||||
name="sayHelloResult" type="s:string" />
|
name="sayHelloResult" type="s:string" />
|
||||||
</s:sequence>
|
</s:sequence>
|
||||||
</s:complexType>
|
</s:complexType>
|
||||||
</s:element>
|
</s:element>
|
||||||
|
|
||||||
<s:complexType name="test2">
|
<s:complexType name="test2">
|
||||||
<s:sequence>
|
<s:sequence>
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="name"
|
<s:element minOccurs="0" maxOccurs="1" name="name"
|
||||||
type="s:string" />
|
type="s:string" />
|
||||||
|
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="givenName"
|
<s:element minOccurs="0" maxOccurs="1" name="givenName"
|
||||||
type="s:string" />
|
type="s:string" />
|
||||||
</s:sequence>
|
</s:sequence>
|
||||||
</s:complexType>
|
</s:complexType>
|
||||||
|
|
||||||
<s:complexType name="testExtended">
|
<s:complexType name="testExtended">
|
||||||
<s:extension base="s0:test2">
|
<s:extension base="s0:test2">
|
||||||
<s:sequence>
|
<s:sequence>
|
||||||
<s:element minOccurs="0" maxOccurs="1" name="extend"
|
<s:element minOccurs="0" maxOccurs="1" name="extend"
|
||||||
type="s:string" />
|
type="s:string" />
|
||||||
</s:sequence>
|
</s:sequence>
|
||||||
</s:extension>
|
</s:extension>
|
||||||
</s:complexType>
|
</s:complexType>
|
||||||
</s:schema>
|
</s:schema>
|
||||||
</types>
|
</types>
|
||||||
|
|
||||||
<message name="sayHelloSoapIn">
|
<message name="sayHelloSoapIn">
|
||||||
<part name="parameters" element="s0:sayHello" />
|
<part name="parameters" element="s0:sayHello" />
|
||||||
|
|
||||||
<part name="test1" type="s0:testExtended" />
|
<part name="test1" type="s0:testExtended" />
|
||||||
|
|
||||||
<part name="test2" type="s0:test2"
|
<part name="test2" type="s0:test2"
|
||||||
targetNamespace="urn:test2" />
|
targetNamespace="urn:test2" />
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
<message name="sayHelloSoapOut">
|
<message name="sayHelloSoapOut">
|
||||||
<part name="parameters" element="s0:sayHelloResponse" />
|
<part name="parameters" element="s0:sayHelloResponse" />
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
<portType name="Service1Soap">
|
<portType name="Service1Soap">
|
||||||
<operation name="sayHello">
|
<operation name="sayHello">
|
||||||
<input message="s0:sayHelloSoapIn" />
|
<input message="s0:sayHelloSoapIn" />
|
||||||
|
|
||||||
<output message="s0:sayHelloSoapOut" />
|
<output message="s0:sayHelloSoapOut" />
|
||||||
</operation>
|
</operation>
|
||||||
</portType>
|
</portType>
|
||||||
|
|
||||||
<binding name="Service1Soap" type="s0:Service1Soap">
|
<binding name="Service1Soap" type="s0:Service1Soap">
|
||||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
|
||||||
style="document" />
|
style="document" />
|
||||||
|
|
||||||
<operation name="sayHello">
|
<operation name="sayHello">
|
||||||
<soap:operation soapAction="urn:HelloWorld#sayHello"
|
<soap:operation soapAction="urn:HelloWorld#sayHello"
|
||||||
style="document" />
|
style="document" />
|
||||||
|
|
||||||
<input>
|
<input>
|
||||||
<soap:body use="literal" />
|
<soap:body use="literal" />
|
||||||
</input>
|
</input>
|
||||||
|
|
||||||
<output>
|
<output>
|
||||||
<soap:body use="literal" />
|
<soap:body use="literal" />
|
||||||
</output>
|
</output>
|
||||||
</operation>
|
</operation>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
<service name="Service1">
|
<service name="Service1">
|
||||||
<port name="Service1Soap" binding="s0:Service1Soap">
|
<port name="Service1Soap" binding="s0:Service1Soap">
|
||||||
<soap:address
|
<soap:address
|
||||||
location="http://helloworld/helloworld.asmx" />
|
location="http://helloworld/helloworld.asmx" />
|
||||||
</port>
|
</port>
|
||||||
</service>
|
</service>
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user