Compare commits

...
3 Commits
Author SHA1 Message Date
Martin Kutter 95465c33d9 import SOAP-WSDL 1.20 from CPAN
git-cpan-module:   SOAP-WSDL
git-cpan-version:  1.20
git-cpan-authorid: MKUTTER
git-cpan-file:     authors/id/M/MK/MKUTTER/SOAP-WSDL-1.20.tar.gz
2009-12-12 19:47:38 -08:00
Martin Kutter 1d8092299a import SOAP-WSDL 1.19 from CPAN
git-cpan-module:   SOAP-WSDL
git-cpan-version:  1.19
git-cpan-authorid: MKUTTER
git-cpan-file:     authors/id/M/MK/MKUTTER/SOAP-WSDL-1.19.tar.gz
2009-12-12 19:47:37 -08:00
Martin Kutter 90ea294d66 import SOAP-WSDL 1.18 from CPAN
git-cpan-module:   SOAP-WSDL
git-cpan-version:  1.18
git-cpan-authorid: MKUTTER
git-cpan-file:     authors/id/M/MK/MKUTTER/SOAP-WSDL-1.18.tar.gz
2009-12-12 19:47:37 -08:00
8 changed files with 250 additions and 45 deletions
+50 -8
View File
@@ -1,14 +1,56 @@
$Log: CHANGES,v $ $Log: CHANGES,v $
Revision 1.6 2004/06/11 19:51:49 lsc Revision 1.7 2004/07/27 13:00:03 lsc
- changed expansion mode - added missing test file
Revision 1.5 2004/06/11 19:49:54 lsc 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 - moved .t files to more self-describing names
- changed WSDL.pm to accept AXIS wsdl files - changed WSDL.pm to accept AXIS wsdl files
- implemented XPath query result caching on all absolute queries - implemented XPath query result caching on all absolute queries
Revision 1.4 2004/06/11 12:12:20 lsc Revision 1.7 2004/06/07 13:01:16 lsc
CPAN preparation added changelog to pod
Revision 1.3 2004/06/11 11:59:51 lsc
Test commit
+1
View File
@@ -2,6 +2,7 @@ t/1_performance.t
t/2_helloworld.NET.t t/2_helloworld.NET.t
t/acceptance/helloworld.asmx.xml t/acceptance/helloworld.asmx.xml
t/acceptance/helloworld.xml t/acceptance/helloworld.xml
t/acceptance/test.wsdl.xml
WSDL.pm WSDL.pm
MANIFEST MANIFEST
README README
+5
View File
@@ -13,6 +13,11 @@ SOAP::WSDL requires the following perl modules:
- XML::XPath - XML::XPath
If you want to use file system caching (improves performance), you also
need the following packages:
- Cache::Cache
INSTALLING INSTALLING
Use the usual mantra: Use the usual mantra:
+36 -9
View File
@@ -4,16 +4,16 @@ package SOAP::WSDL;
use SOAP::Lite; use SOAP::Lite;
use vars qw($VERSION @ISA); use vars qw($VERSION @ISA);
use XML::XPath; use XML::XPath;
use Cache::FileCache; # use Cache::FileCache;
use Data::Dumper; use Data::Dumper;
# use Carp;
use diagnostics; # use diagnostics;
@ISA= qw(SOAP::Lite); @ISA= qw(SOAP::Lite);
# let CVS handle this for you... # let CVS handle this for you...
$VERSION = sprintf("%d.%02d", q$Revision: 1.17 $ =~ /(\d+)\.(\d+)/); $VERSION = sprintf("%d.%02d", q$Revision: 1.20 $ =~ /(\d+)\.(\d+)/);
sub wsdlinit { sub wsdlinit {
my $self=shift; my $self=shift;
@@ -24,7 +24,7 @@ sub wsdlinit {
$self->{_WSDL}->{ checkoccurs } = 1 unless defined( $self->{_WSDL}->{ checkoccurs } ); $self->{_WSDL}->{ checkoccurs } = 1 unless defined( $self->{_WSDL}->{ checkoccurs } );
if (($self->{_WSDL}->{ caching }) && (! $self->{_WSDL }->{ fileCache })) { if (($self->{_WSDL}->{ caching }) && (! $self->{_WSDL }->{ fileCache })) {
$self->wsdl_cache_init() $self->wsdl_cache_init();
}; };
my $location=$self->transport->proxy->endpoint my $location=$self->transport->proxy->endpoint
@@ -225,11 +225,19 @@ sub wsdl_cache_init {
my $self=shift; my $self=shift;
my $p=shift || undef; my $p=shift || undef;
my $cache = undef; my $cache = undef;
if ( defined( $p ) ) { eval { require Cache::FileCache; };
$p->{ cache_root } = $self->{_WSDL}->{ cache_directory } unless ($p->{ cache_root }); if ($@) {
$cache=Cache::FileCache->new( $p ) if ($p->{ cache_root }); warn "File caching is enabled, but you do not have the Cache::FileCache module. Disabling Filesystem caching."
if ($self->{_WSDL}->{ cache_directory });
} else { } else {
$cache=Cache::FileCache->new( { cache_root => $self->{_WSDL}->{ cache_directory } } ) if ($self->{_WSDL}->{ cache_directory }); if ( defined( $p ) ) {
$p->{ cache_root } = $self->{_WSDL}->{ cache_directory } unless ($p->{ cache_root });
$cache=Cache::FileCache->new( $p ) if ($p->{ cache_root });
} else {
if ($self->{_WSDL}->{ cache_directory }) {
$cache=Cache::FileCache->new( { cache_root => $self->{_WSDL}->{ cache_directory } } );
}
}
} }
$self->{_WSDL}->{ fileCache } = $cache; $self->{_WSDL}->{ fileCache } = $cache;
} }
@@ -934,6 +942,16 @@ be stable from 1.14 on, and that is the part you'll use most frequently.
=over =over
=item * Check for the correct number of elements confused with complex types
If a complex type is marked optional in a WSDL file, but sub-parts are marked as
required, SOAP::WSDL will die if the complex type is not found in the data
(because it checks only for the occurence of simple type elements).
A quick-and-dirty workaround is to turn off the check with
$soap->wsdl_checkoccurs(0);
=item * Arrays of complex types are not checked for the correct number of elements =item * Arrays of complex types are not checked for the correct number of elements
Arrays of complex types are just encoded and not checked for correctness etc. Arrays of complex types are just encoded and not checked for correctness etc.
@@ -980,6 +998,15 @@ to the user.
=head1 CHANGES =head1 CHANGES
$Log: WSDL.pm,v $ $Log: WSDL.pm,v $
Revision 1.20 2004/07/29 06:56:45 lsc
removed "use" dependency on Cache::FileCache. require'ing it instead.
Revision 1.19 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 Revision 1.17 2004/07/05 08:19:49 lsc
- added wsdl_checkoccurs - added wsdl_checkoccurs
+29 -16
View File
@@ -1,10 +1,13 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
use strict; use strict;
use Test::More tests=> 7; use Test;
plan tests=> 6;
use Time::HiRes qw( gettimeofday tv_interval ); use Time::HiRes qw( gettimeofday tv_interval );
use lib '../..'; use lib '../..';
use Data::Dumper; use Data::Dumper;
use_ok "SOAP::WSDL"; use Cwd;
use SOAP::WSDL;
ok 1; # if we made it this far, we're ok
### test vars END ### test vars END
print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n"; print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
@@ -15,33 +18,43 @@ my $data = {
givenName => 'Vorname' givenName => 'Vorname'
}; };
my $dir = cwd;
# chomp /t/ to allow running the script from t/ directory
$dir=~s|/t/?||;
my $t0 = [gettimeofday]; my $t0 = [gettimeofday];
ok( my $soap=SOAP::WSDL->new( ok( my $soap=SOAP::WSDL->new(
wsdl => 'file:///home/lsc/eclipse3/workspace/SOAP/t/acceptance/helloworld.asmx.xml', wsdl => "file://$dir/t/acceptance/helloworld.asmx.xml",
no_dispatch => 1 no_dispatch => 1
), "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)" ); #->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx' ); ) );
print "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."ms)\n" ;
$soap->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx'); $soap->proxy('http://helloworld/helloworld.asmx');
$t0 = [gettimeofday]; $t0 = [gettimeofday];
ok($soap->wsdlinit(caching => 1), "wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)" );; eval{ $soap->wsdlinit(caching => 1) };
unless ($@) {
ok(1);
} else {
ok 0;
print STDERR $@;
}
print "wsdl file init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;;
$soap->readable(1); $soap->readable(1);
$t0 = [gettimeofday]; $t0 = [gettimeofday];
ok( $soap->call("sayHello" , %{ $data }), "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );; ok( $soap->call("sayHello" , %{ $data }));
print "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
$t0 = [gettimeofday]; $t0 = [gettimeofday];
ok($soap->call(sayHello => %{ $data }), "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );; ok($soap->call(sayHello => %{ $data }) );
print "1 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
$t0 = [gettimeofday]; $t0 = [gettimeofday];
for (my $i=1; $i<100; $i++) { for (my $i=1; $i<100; $i++) {
$soap->call(sayHello => %{ $data }); $soap->call(sayHello => %{ $data });
} }
ok(1, "100 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );; ok(1);
print "100 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)\n";
$soap->call(sayHello => %{ $data });
$t0 = [gettimeofday];
for (my $i=1; $i<100; $i++) {
$soap->call(sayHello => %{ $data });
}
ok(1, "100 x call pre-work (".tv_interval ( $t0, [gettimeofday]) ."s)" );;
+23 -11
View File
@@ -12,10 +12,13 @@
use strict; use strict;
use diagnostics; use diagnostics;
use Test::More tests => 5; use Test;
plan tests => 5;
use Time::HiRes qw( gettimeofday tv_interval ); use Time::HiRes qw( gettimeofday tv_interval );
use lib '../..'; use lib '../..';
use_ok "SOAP::WSDL"; use Cwd;
use SOAP::WSDL;
ok 1; # if we made it this far, we're ok
### test vars END ### test vars END
print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n"; print "Testing SOAP::WSDL ". $SOAP::WSDL::VERSION."\n";
print "Acceptance test against sample output with simple WSDL\n"; print "Acceptance test against sample output with simple WSDL\n";
@@ -39,16 +42,17 @@ my $data = {
}; };
my $t0 = [gettimeofday]; my $t0 = [gettimeofday];
my $dir=`pwd`; my $dir= cwd;
chomp $dir;
$dir=~s/\/t//; $dir=~s/\/t//;
ok( my $soap=SOAP::WSDL->new( ok( my $soap=SOAP::WSDL->new(
wsdl => 'file:///'.$dir.'/t/acceptance/test.wsdl.xml', wsdl => 'file:///'.$dir.'/t/acceptance/test.wsdl.xml',
no_dispatch => 1 no_dispatch => 1
), "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."s)" ); #->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx' ); ) );
$soap->proxy('http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx'); print "Create SOAP::WSDL object (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
$soap->proxy('http://helloworld/helloworld.asmx');
$t0 = [gettimeofday]; $t0 = [gettimeofday];
ok($soap->wsdlinit(), "WSDL init (".tv_interval ( $t0, [gettimeofday]) ."s)") ; ok($soap->wsdlinit());
print "WSDL init (".tv_interval ( $t0, [gettimeofday]) ."s)\n" ;
$t0 = [gettimeofday]; $t0 = [gettimeofday];
do { do {
@@ -64,8 +68,12 @@ do {
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//; $xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
$xml_test=~s/\<\/$1\:Body\>.*//; $xml_test=~s/\<\/$1\:Body\>.*//;
if ( ($xml) && ($xml eq $xml_test) ) { pass ("Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)") } else { if ( ($xml) && ($xml eq $xml_test) ) {
fail( "Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)") ; 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"; }; print "$xml\n$xml_test\n"; };
}; };
@@ -83,8 +91,12 @@ do {
$xml_test=~s/^.+\<([^\/]+?)\:Body\>//; $xml_test=~s/^.+\<([^\/]+?)\:Body\>//;
$xml_test=~s/\<\/$1\:Body\>.*//; $xml_test=~s/\<\/$1\:Body\>.*//;
if ( ($xml) && ($xml eq $xml_test) ) { pass ("Message encoding (" .tv_interval ( $t0, [gettimeofday]) ."s)") } else { if ( ($xml) && ($xml eq $xml_test) ) {
fail( "Message encoding (".tv_interval ( $t0, [gettimeofday]) ."s)") ; 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"; }; print "$xml\n$xml_test\n"; };
}; };
+1 -1
View File
@@ -68,7 +68,7 @@ xmlns="http://schemas.xmlsoap.org/wsdl/">
<service name="Service1"> <service name="Service1">
<port name="Service1Soap" binding="s0:Service1Soap"> <port name="Service1Soap" binding="s0:Service1Soap">
<soap:address <soap:address
location="http://erlm5aqa.ww001.siemens.net/lasttest/helloworld/helloworld.asmx" /> location="http://helloworld/helloworld.asmx" />
</port> </port>
</service> </service>
</definitions> </definitions>
+105
View File
@@ -0,0 +1,105 @@
<?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" />
<s:element minOccurs="0" maxOccurs="1" name="test"
type="s0:test2" />
</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" />
<part name="test1" type="s0:testExtended" />
<part name="test2" type="s0:test2"
targetNamespace="urn:test2" />
</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="Service1">
<port name="Service1Soap" binding="s0:Service1Soap">
<soap:address
location="http://helloworld/helloworld.asmx" />
</port>
</service>
</definitions>