diff --git a/Build.PL b/Build.PL index e763e2e..22ca352 100644 --- a/Build.PL +++ b/Build.PL @@ -4,7 +4,7 @@ Module::Build->new( create_makefile_pl => 'passthrough', dist_abstract => 'SOAP with WSDL support', dist_name => 'SOAP-WSDL', - dist_version => '2.00_11', + dist_version => '2.00_12', module_name => 'SOAP::WSDL', license => 'artistic', requires => { diff --git a/CHANGES b/CHANGES index 16e6dcd..5c2e318 100644 --- a/CHANGES +++ b/CHANGES @@ -1,778 +1,122 @@ ------------------------------------------------------------------------- -r176 | kutterma | 2007-08-31 17:28:29 +0200 (Fr, 31 Aug 2007) | 2 lines - -- set SVN keywords -- updated docs ------------------------------------------------------------------------- -r175 | kutterma | 2007-08-31 17:05:42 +0200 (Fr, 31 Aug 2007) | 6 lines - -- modified SOAP::WSDL::Client to allow passing the SOAPAction header to call() -- modified SOAP::WSDL::Definitions's generator to emit interfaces which include - soap_action and style information for every operation -- re-generated GetWeather example interface -- fixed wsdl2perl.pl (typo) - ------------------------------------------------------------------------- -r174 | kutterma | 2007-08-31 15:49:04 +0200 (Fr, 31 Aug 2007) | 2 lines - -- SOAPAction header is now always quoted. -- updated docs ------------------------------------------------------------------------- -r173 | kutterma | 2007-08-31 15:48:10 +0200 (Fr, 31 Aug 2007) | 1 line - -- added WS-I basic profile compliance docs. Looks like we're far from being compliant... ------------------------------------------------------------------------- -r172 | kutterma | 2007-08-30 22:58:41 +0200 (Do, 30 Aug 2007) | 1 line - -- updated TODO list ------------------------------------------------------------------------- -r170 | kutterma | 2007-08-30 22:32:56 +0200 (Do, 30 Aug 2007) | 1 line - -- added RELEASE_NOTES ------------------------------------------------------------------------- -r169 | kutterma | 2007-08-30 21:33:50 +0200 (Do, 30 Aug 2007) | 1 line - -- fixed SOAP11 serializer package name ------------------------------------------------------------------------- -r168 | kutterma | 2007-08-30 21:32:39 +0200 (Do, 30 Aug 2007) | 4 lines - -- added Serializer factory -- modified client to use serializer -- moved old SOAP::WSDL::Envelope into Serializer namespace -- moved Tranport factory into Factory namespace ------------------------------------------------------------------------- -r167 | kutterma | 2007-08-30 21:30:17 +0200 (Do, 30 Aug 2007) | 1 line - -- fixed Envelope to comply to new serializer scheme ------------------------------------------------------------------------- -r166 | kutterma | 2007-08-30 18:44:48 +0200 (Do, 30 Aug 2007) | 1 line - -- re-fixed Transport factory ------------------------------------------------------------------------- -r165 | kutterma | 2007-08-30 18:43:36 +0200 (Do, 30 Aug 2007) | 1 line - -- added HTTP Transport class (really) ------------------------------------------------------------------------- -r164 | kutterma | 2007-08-30 14:38:47 +0200 (Do, 30 Aug 2007) | 1 line - -- first try at serializer factory. ------------------------------------------------------------------------- -r163 | kutterma | 2007-08-30 10:34:00 +0200 (Do, 30 Aug 2007) | 1 line - -- updated docs (reference to homepage and forum) ------------------------------------------------------------------------- -r162 | kutterma | 2007-08-30 10:29:49 +0200 (Do, 30 Aug 2007) | 1 line - -- updated docs ------------------------------------------------------------------------- -r161 | kutterma | 2007-08-30 10:17:28 +0200 (Do, 30 Aug 2007) | 2 lines - -- modified client to use SOAP::WSDL::Transport factory -- fixed SOAP::WSDL::Transport factory ------------------------------------------------------------------------- -r160 | kutterma | 2007-08-30 00:20:09 +0200 (Do, 30 Aug 2007) | 1 line - -- added weird SOAP::Lite nameing scheme to registered && SOAP::Lite Transport instantiations ------------------------------------------------------------------------- -r159 | kutterma | 2007-08-30 00:00:15 +0200 (Do, 30 Aug 2007) | 1 line - -- first try at Transport factory and Transport::HTTP implementation class. ------------------------------------------------------------------------- -r158 | kutterma | 2007-08-29 22:36:34 +0200 (Mi, 29 Aug 2007) | 1 line - -- updated TODO list ------------------------------------------------------------------------- -r153 | kutterma | 2007-08-29 11:24:40 +0200 (Mi, 29 Aug 2007) | 4 lines - -- removed XML::LibXML dependencies (is now required, not used in test scripts) -- fixed WSDLParser to switch on expat namespace support when parsing files -- added expat based tests ported from XML::LibXML based WSDL parser tests -- updated docs ------------------------------------------------------------------------- -r152 | kutterma | 2007-08-28 23:28:06 +0200 (Di, 28 Aug 2007) | 3 lines - -- updated Build.PL -- updated CHANGES -- updated MANIFEST ------------------------------------------------------------------------- -r151 | kutterma | 2007-08-28 23:07:14 +0200 (Di, 28 Aug 2007) | 1 line - -- fixed namespace test ------------------------------------------------------------------------- -r150 | kutterma | 2007-08-28 23:06:00 +0200 (Di, 28 Aug 2007) | 1 line - -- renamed tests to better meet their content ------------------------------------------------------------------------- -r149 | kutterma | 2007-08-28 23:03:30 +0200 (Di, 28 Aug 2007) | 1 line - -- cleanup ------------------------------------------------------------------------- -r148 | kutterma | 2007-08-28 23:02:01 +0200 (Di, 28 Aug 2007) | 2 lines - -- added namespace test -- removed SAX handler from usage test ------------------------------------------------------------------------- -r147 | kutterma | 2007-08-28 22:57:48 +0200 (Di, 28 Aug 2007) | 1 line - -- added namespace support ------------------------------------------------------------------------- -r146 | kutterma | 2007-08-28 21:56:35 +0200 (Di, 28 Aug 2007) | 1 line - -- removed POD directive from template, so the CPAN indexer won't show it... ------------------------------------------------------------------------- -r145 | kutterma | 2007-08-28 16:35:18 +0200 (Di, 28 Aug 2007) | 5 lines - -- XML::SAX::Base and XML::SAX::ParserFactory and Pod::Simple::Text dependencies to ease testing -- removed unneccessary performance test -- Added Expat-based WSDL parser and test to get rid of XML::LibXML dependency some day... - - needs further work: namespaces are not processed correctly, yet - ------------------------------------------------------------------------- -r144 | kutterma | 2007-08-14 11:05:40 +0200 (Di, 14 Aug 2007) | 1 line - -- added missing prerequisite 'Template' to Build.PL ------------------------------------------------------------------------- -r143 | kutterma | 2007-08-13 20:43:20 +0200 (Mo, 13 Aug 2007) | 3 lines - -- fixed POD (#1772710) -- fixed Makefile.PL - now try the passthrough variant first. If too many CPAN testers still fail, we may switch to traditional, some day... -- prepared 2.00_10 pre-release ------------------------------------------------------------------------- -r142 | kutterma | 2007-08-13 15:55:45 +0200 (Mo, 13 Aug 2007) | 1 line - -typo ------------------------------------------------------------------------- -r141 | kutterma | 2007-08-12 21:45:51 +0200 (So, 12 Aug 2007) | 2 lines - -- corrected POD error -- little speedup in add_FOO methods ------------------------------------------------------------------------- -r140 | kutterma | 2007-08-12 21:27:58 +0200 (So, 12 Aug 2007) | 1 line - -- corrected POD error ------------------------------------------------------------------------- -r139 | kutterma | 2007-08-12 21:15:59 +0200 (So, 12 Aug 2007) | 1 line - -- adder repository information ------------------------------------------------------------------------- -r138 | kutterma | 2007-08-12 21:13:08 +0200 (So, 12 Aug 2007) | 1 line - -- typo ------------------------------------------------------------------------- -r137 | kutterma | 2007-08-12 21:12:20 +0200 (So, 12 Aug 2007) | 3 lines - -- updated docs -- added svn information -- cosmetics ------------------------------------------------------------------------- -r136 | kutterma | 2007-08-12 15:11:50 +0200 (So, 12 Aug 2007) | 2 lines - -- fixed element ref="" top level- elements in code generator -- prepared 2.00_09 pre-release ------------------------------------------------------------------------- -r135 | kutterma | 2007-08-12 14:44:06 +0200 (So, 12 Aug 2007) | 1 line - -- prepared 2.00_09 pre-release ------------------------------------------------------------------------- -r134 | kutterma | 2007-08-12 14:30:33 +0200 (So, 12 Aug 2007) | 2 lines - -- updated README -- bumped up version ------------------------------------------------------------------------- -r133 | kutterma | 2007-08-12 14:27:17 +0200 (So, 12 Aug 2007) | 1 line - -- fixed Build.PL to leave Makefile.PL untouched. ------------------------------------------------------------------------- -r132 | kutterma | 2007-08-12 14:21:24 +0200 (So, 12 Aug 2007) | 1 line - -- now really added Makefile.PL ------------------------------------------------------------------------- -r131 | kutterma | 2007-08-12 14:18:59 +0200 (So, 12 Aug 2007) | 3 lines - -- fixed documentation for generated code with element ref="" declarations -- fixed element ref="" test for generated code -- added (generated) Makefile.PL to make CPAN testers happy ------------------------------------------------------------------------- -r130 | kutterma | 2007-08-10 15:57:12 +0200 (Fr, 10 Aug 2007) | 1 line - -- first try at truely callback-based parser (inspired by XML::Compile) ------------------------------------------------------------------------- -r129 | kutterma | 2007-08-07 17:53:40 +0200 (Di, 07 Aug 2007) | 1 line - -- moved duplicate sub generation out of loop ------------------------------------------------------------------------- -r128 | kutterma | 2007-08-07 14:16:28 +0200 (Di, 07 Aug 2007) | 1 line - -- bool now returns numerical value in bool context, not "true" or "false" (always true...) ------------------------------------------------------------------------- -r127 | kutterma | 2007-08-07 11:45:23 +0200 (Di, 07 Aug 2007) | 1 line - -- fixed test to be timezone sensitive ------------------------------------------------------------------------- -r126 | kutterma | 2007-08-07 11:09:51 +0200 (Di, 07 Aug 2007) | 1 line - -- made test timezone-sensitive ------------------------------------------------------------------------- -r125 | kutterma | 2007-08-07 11:09:16 +0200 (Di, 07 Aug 2007) | 1 line - -- made test timezone-sensitive ------------------------------------------------------------------------- -r124 | kutterma | 2007-08-06 18:05:02 +0200 (Mo, 06 Aug 2007) | 2 lines - -- fixed element ref handling in code generator in ComplexType. -- top-level element ref still not supported/tested ------------------------------------------------------------------------- -r123 | kutterma | 2007-08-06 17:48:57 +0200 (Mo, 06 Aug 2007) | 1 line - -- test now dies and outputs code to eval on eval errors ------------------------------------------------------------------------- -r122 | kutterma | 2007-08-06 17:29:46 +0200 (Mo, 06 Aug 2007) | 1 line - -- fixed element ref="" handling in complexType ------------------------------------------------------------------------- -r121 | kutterma | 2007-08-06 17:29:14 +0200 (Mo, 06 Aug 2007) | 1 line - -- added test data for element ref inside complexType ------------------------------------------------------------------------- -r120 | kutterma | 2007-08-06 17:28:54 +0200 (Mo, 06 Aug 2007) | 1 line - -- added test for element ref inside complexType ------------------------------------------------------------------------- -r119 | kutterma | 2007-08-06 17:13:03 +0200 (Mo, 06 Aug 2007) | 1 line - -- fixed element ref handling ------------------------------------------------------------------------- -r118 | kutterma | 2007-08-06 17:12:47 +0200 (Mo, 06 Aug 2007) | 1 line - -- added element ref test data ------------------------------------------------------------------------- -r117 | kutterma | 2007-08-06 17:12:36 +0200 (Mo, 06 Aug 2007) | 1 line - -- added element ref test ------------------------------------------------------------------------- -r116 | kutterma | 2007-08-06 15:47:30 +0200 (Mo, 06 Aug 2007) | 1 line - -- refined docs ------------------------------------------------------------------------- -r115 | kutterma | 2007-08-06 15:39:39 +0200 (Mo, 06 Aug 2007) | 1 line - -- updated docs. Hope the CPAN indexer ignores "=for developers"... ------------------------------------------------------------------------- -r114 | kutterma | 2007-08-06 14:12:28 +0200 (Mo, 06 Aug 2007) | 1 line - -- removed annoying pod ------------------------------------------------------------------------- -r113 | kutterma | 2007-08-05 18:42:09 +0200 (So, 05 Aug 2007) | 5 lines - -- removed SOAP::Lite dependency -- updated docs -- changed SOAP::WSDL::XSD::Typelib::ComplexType to require the actuall class for element data, not just the base class (good for finding errors earlier) -- implemented returning SOAP::SOM objects in SOAP::WSDL -- added SOAP::WSDL example(weather_wsdl.pl) ------------------------------------------------------------------------- -r112 | kutterma | 2007-08-03 16:12:57 +0200 (Fr, 03 Aug 2007) | 1 line - -updated docs ------------------------------------------------------------------------- -r111 | kutterma | 2007-08-03 16:12:04 +0200 (Fr, 03 Aug 2007) | 1 line - -- added "skip" ------------------------------------------------------------------------- -r110 | kutterma | 2007-07-31 22:27:25 +0200 (Di, 31 Jul 2007) | 2 lines - -- further work on removing SOAP::Lite dependency -- Note: SOAP::WSDL may be broken ! ------------------------------------------------------------------------- -r109 | kutterma | 2007-07-31 21:10:40 +0200 (Di, 31 Jul 2007) | 3 lines - -- finished move from XSD::Primitive to Builtin -- fixed a few tests -- removed typo namespace from TypeLookupt ------------------------------------------------------------------------- -r108 | kutterma | 2007-07-31 21:02:43 +0200 (Di, 31 Jul 2007) | 1 line - -- removed unneeded example stuff ------------------------------------------------------------------------- -r107 | kutterma | 2007-07-31 20:32:43 +0200 (Di, 31 Jul 2007) | 1 line - -- rename to Builtin ------------------------------------------------------------------------- -r106 | kutterma | 2007-07-31 20:32:11 +0200 (Di, 31 Jul 2007) | 1 line - -- prepared rename to Builtin ------------------------------------------------------------------------- -r105 | kutterma | 2007-07-31 13:17:52 +0200 (Di, 31 Jul 2007) | 2 lines - -- added configurable ContentType / charset -- maybe split up charset and content type into two methods ? ------------------------------------------------------------------------- -r104 | kutterma | 2007-07-31 00:16:15 +0200 (Di, 31 Jul 2007) | 3 lines - -- removed optional nanoseconds from dateTime conversions -- added conversion to date objects -- removed fetching WSDL via SOAP::Schema in SOAP::WSDL. SOAP::Lite is still used as base class. ------------------------------------------------------------------------- -r103 | kutterma | 2007-07-30 13:25:06 +0200 (Mo, 30 Jul 2007) | 1 line - -- updated TODO ------------------------------------------------------------------------- -r102 | kutterma | 2007-07-30 13:23:09 +0200 (Mo, 30 Jul 2007) | 2 lines - -- updated Build.PL dependencies -- update TODO ------------------------------------------------------------------------- -r101 | kutterma | 2007-07-30 13:22:05 +0200 (Mo, 30 Jul 2007) | 2 lines - -- added dateTime test -- fixed pod test ------------------------------------------------------------------------- -r100 | kutterma | 2007-07-27 16:03:15 +0200 (Fr, 27 Jul 2007) | 2 lines - -- allow passing list refs of hash refs to set_value. -I hope I got all combinations by now - start getting ugly... ------------------------------------------------------------------------- -r99 | kutterma | 2007-07-26 23:18:35 +0200 (Do, 26 Jul 2007) | 1 line - -- added SOAP::Lite usage (to be removed later) ------------------------------------------------------------------------- -r98 | kutterma | 2007-07-26 23:16:30 +0200 (Do, 26 Jul 2007) | 3 lines - -- removed SOAP::Lite dependency -- added set_trace and tracing facility support via callback in call() -- added fault_class property to allow different Fault classes (somewhen later on) ------------------------------------------------------------------------- -r97 | kutterma | 2007-07-25 16:59:49 +0200 (Mi, 25 Jul 2007) | 3 lines - -- dateTime now converts date strings into XML date strings -- updated docs - ------------------------------------------------------------------------- -r96 | kutterma | 2007-07-23 11:17:36 +0200 (Mo, 23 Jul 2007) | 3 lines - -- SOAP::WSDL::Definitions::create now - - converts '.' in service names to '::' (.NET class separator to perl class separator) - - outputs Typemaps and Interface classes in UTF8 to allow proper inclusion of UTF8 documentation from WSDL ------------------------------------------------------------------------- -r95 | kutterma | 2007-07-23 10:26:59 +0200 (Mo, 23 Jul 2007) | 1 line - -- typo ------------------------------------------------------------------------- -r94 | kutterma | 2007-07-23 10:11:46 +0200 (Mo, 23 Jul 2007) | 1 line - -- typo ------------------------------------------------------------------------- -r93 | kutterma | 2007-07-22 23:24:12 +0200 (So, 22 Jul 2007) | 1 line - -updated TODO ------------------------------------------------------------------------- -r92 | kutterma | 2007-07-22 23:19:15 +0200 (So, 22 Jul 2007) | 3 lines - -- WSDLHandler now handles tags -- SOAP::WSDL::Definitions now includes some usable doc in generated interface classes -- fixed explain in SimpleType, ComplexType and Element (someway) ------------------------------------------------------------------------- -r91 | kutterma | 2007-07-22 21:18:21 +0200 (So, 22 Jul 2007) | 1 line - -- updated docs ------------------------------------------------------------------------- -r90 | kutterma | 2007-07-22 15:42:23 +0200 (So, 22 Jul 2007) | 1 line - -- updated docs ------------------------------------------------------------------------- -r89 | kutterma | 2007-07-22 15:38:25 +0200 (So, 22 Jul 2007) | 2 lines - -- updated docs -- removed useless docs from "internally used only" - modules ------------------------------------------------------------------------- -r88 | kutterma | 2007-07-22 09:17:57 +0200 (So, 22 Jul 2007) | 1 line - -typo ------------------------------------------------------------------------- -r87 | kutterma | 2007-07-21 23:57:46 +0200 (Sa, 21 Jul 2007) | 1 line - -- updated docs ------------------------------------------------------------------------- -r86 | kutterma | 2007-07-21 23:24:24 +0200 (Sa, 21 Jul 2007) | 5 lines - -- removed irritating pod from SOAP::WSDL::XSD::Typelib::Builtin::* classes and put int into SOAP::WSDL::XSD::Typelib::Builtin -- added fast constructor creation BEGIN block to all SOAP::WSDL::XSD::Typelib::Builtin::* classes -- added examples -- updated docs -- prepared 2.00_07 pre-release ------------------------------------------------------------------------- -r85 | kutterma | 2007-07-21 18:12:49 +0200 (Sa, 21 Jul 2007) | 4 lines - -- added wsdl2perl code generation script - works against FortuneCookie web service at fullerdata.com -- fixed SOAP::WSDL::Client::Base to work as base class for generated classes -- added interface generation facility to SOAP::WSDL::Definitions -- updated docs (a few) ------------------------------------------------------------------------- -r84 | kutterma | 2007-07-20 15:37:40 +0200 (Fr, 20 Jul 2007) | 9 lines - -- added Expat-based parser -- made Expat-based parser the default -- added fast "new" method to most important "Builtin" types -- added Parser POD -- fixed propagating element names in complex types to element elements - element ref="element" should work on - class level now (don't know whether typelib supports it yet) -- updated tests -- updated HACKING -- prepared 2.00_06 release ------------------------------------------------------------------------- -r83 | kutterma | 2007-07-19 13:09:33 +0200 (Do, 19 Jul 2007) | 1 line - -- fixed element class generation (removed additional ::) ------------------------------------------------------------------------- -r82 | kutterma | 2007-07-17 22:17:02 +0200 (Di, 17 Jul 2007) | 1 line - -- updated README and HACKING ------------------------------------------------------------------------- -r81 | kutterma | 2007-07-17 22:00:14 +0200 (Di, 17 Jul 2007) | 5 lines - -- added parent ref in SOAP::WSDL::Base - now we have a real tree, and maybe can completely support namespaces some day -- replaced grep by List::Util::first where appropriate -- code cleanup -- fixed test for Code Generation -- updated a few tests ------------------------------------------------------------------------- -r80 | kutterma | 2007-07-17 17:00:48 +0200 (Di, 17 Jul 2007) | 1 line - -- improved pod in generated classes ------------------------------------------------------------------------- -r79 | kutterma | 2007-07-17 14:41:44 +0200 (Di, 17 Jul 2007) | 1 line - -- made explain look nicer ------------------------------------------------------------------------- -r78 | kutterma | 2007-07-15 12:25:03 +0200 (So, 15 Jul 2007) | 7 lines - -- SOAP::WSDL::Definitions can now generate - - Typemaps - - Type and Element classes -- fixed SOAP::WSDL::XSD::Typelib::ComplexType to support elements with type="ComplexType" definitions -- moved toClass method in SOAP::WSDL::XSD::ComplexType, Element and SimpleType to to_class and added compatibility wrapper with warning for toClass calls -- added generator test -- updated docs ------------------------------------------------------------------------- -r77 | kutterma | 2007-07-14 10:46:54 +0200 (Sa, 14 Jul 2007) | 1 line - -- started working on high-level code generator ------------------------------------------------------------------------- -r76 | kutterma | 2007-07-13 09:21:33 +0200 (Fr, 13 Jul 2007) | 1 line - -- fixed handling of complex data (hashes with lists embedded lists of objects) ------------------------------------------------------------------------- -r75 | kutterma | 2007-07-10 12:08:39 +0200 (Di, 10 Jul 2007) | 1 line - -- removed unneeded SOAP::Lite calls ------------------------------------------------------------------------- -r74 | kutterma | 2007-07-10 12:08:10 +0200 (Di, 10 Jul 2007) | 1 line - -- updated to new SOAP::Lite API ------------------------------------------------------------------------- -r73 | kutterma | 2007-07-10 12:00:25 +0200 (Di, 10 Jul 2007) | 6 lines - -- re-integrated old SOAP::WSDL tests -- updated docs -- SOAP::WSDL::XSD::Typelib::Builtin::string now escapes XML builtin entities on serialization -- SOAP::WSDL::XSD::Element now supports generating classes for elements and types into different namespaces -- SOAP::WSDL::Definitions now supports different namespaces for elements and types when generating typmaps -- 2.00_05 release preparation ------------------------------------------------------------------------- -r72 | kutterma | 2007-07-06 11:20:56 +0200 (Fr, 06 Jul 2007) | 1 line - -- fixed detail (typo) ------------------------------------------------------------------------- -r71 | kutterma | 2007-07-05 16:13:28 +0200 (Do, 05 Jul 2007) | 1 line - -- TODO comments added ------------------------------------------------------------------------- -r70 | kutterma | 2007-07-04 16:14:50 +0200 (Mi, 04 Jul 2007) | 2 lines - -- updated docs -- prepared 2.00_04 release ------------------------------------------------------------------------- -r69 | kutterma | 2007-07-04 16:07:54 +0200 (Mi, 04 Jul 2007) | 1 line - -- ComplexType now ignores xmlns - TODO: check xmlns, don't ignore... ------------------------------------------------------------------------- -r68 | kutterma | 2007-07-04 11:25:31 +0200 (Mi, 04 Jul 2007) | 1 line - -- made builtin types with overloads serializable ------------------------------------------------------------------------- -r67 | kutterma | 2007-07-04 09:51:06 +0200 (Mi, 04 Jul 2007) | 4 lines - -- updated docs -- removed unneeded uses from test -- added Build requirements from tests -- prepared 2.00_03 release ------------------------------------------------------------------------- -r66 | kutterma | 2007-07-04 00:06:29 +0200 (Mi, 04 Jul 2007) | 3 lines - -- split up builtin type lib into single files for Class::Std::Storable -- fixed more tests -- fixed complexType serialization for non-objecs ------------------------------------------------------------------------- -r65 | kutterma | 2007-07-03 16:52:54 +0200 (Di, 03 Jul 2007) | 2 lines - -- fixed a few tests -- added performance improvements ------------------------------------------------------------------------- -r64 | kutterma | 2007-07-03 15:09:27 +0200 (Di, 03 Jul 2007) | 1 line - -- small performance improvements ------------------------------------------------------------------------- -r63 | kutterma | 2007-07-03 14:37:28 +0200 (Di, 03 Jul 2007) | 3 lines - -- fixed serializing complextypes correctly -- fixed handling has attribute refs in new -- fixed performance problems in MessageHandler ------------------------------------------------------------------------- -r62 | kutterma | 2007-07-03 14:37:14 +0200 (Di, 03 Jul 2007) | 1 line - -- re-added ------------------------------------------------------------------------- -r61 | kutterma | 2007-07-03 14:36:59 +0200 (Di, 03 Jul 2007) | 1 line - - ------------------------------------------------------------------------- -r60 | kutterma | 2007-07-01 09:52:41 +0200 (So, 01 Jul 2007) | 2 lines - -- fixed lots of tests -- attic tests may be re-integrated now... ------------------------------------------------------------------------- -r59 | kutterma | 2007-06-28 13:07:35 +0200 (Do, 28 Jun 2007) | 1 line - -- added ignore for dist tar.gz ------------------------------------------------------------------------- -r58 | kutterma | 2007-06-28 13:06:25 +0200 (Do, 28 Jun 2007) | 1 line - -- updated buildrequires ------------------------------------------------------------------------- -r57 | kutterma | 2007-06-28 13:05:03 +0200 (Do, 28 Jun 2007) | 1 line - -- typo ------------------------------------------------------------------------- -r56 | kutterma | 2007-06-28 11:15:24 +0200 (Do, 28 Jun 2007) | 1 line - -- pre-release 2.00_01 ------------------------------------------------------------------------- -r55 | kutterma | 2007-06-28 10:23:20 +0200 (Do, 28 Jun 2007) | 1 line - -- moved old tests to attic ------------------------------------------------------------------------- -r54 | kutterma | 2007-06-28 10:15:41 +0200 (Do, 28 Jun 2007) | 1 line - -- fixed a few typos ------------------------------------------------------------------------- -r53 | kutterma | 2007-06-28 10:10:41 +0200 (Do, 28 Jun 2007) | 3 lines - -- fixed MessageHandler to support deserializing into objects which return false in boolean context -- updated docs -- fixed Fault11 (named detail correctly) ------------------------------------------------------------------------- -r52 | kutterma | 2007-06-27 17:36:01 +0200 (Mi, 27 Jun 2007) | 3 lines - -- added Fault for SOAP 1.1 implementation -- fixed ComplexType - though it doesn't work quite for faults yet... - ------------------------------------------------------------------------- -r51 | kutterma | 2007-06-27 13:27:59 +0200 (Mi, 27 Jun 2007) | 13 lines - -- added test for sending objects via call() -- modified Client to accept objects of type SOAP::WSDL::XSD::Typelib::Builtin::anyType as message content -without checking the WSDL objects -Note: -- SOAPAction is just guessed - needs to be replaced by something better -- The method should be looked up from the typelib, too, and serialized according to the rules specified in the WSDL -and dumped into the typelib. - -- updated to_typelib to include top element -- fixed element and complextype templates for toClass - - - ------------------------------------------------------------------------- -r50 | kutterma | 2007-06-27 00:01:32 +0200 (Mi, 27 Jun 2007) | 1 line - -- added xsi xmlns to envelope ------------------------------------------------------------------------- -r49 | kutterma | 2007-06-26 23:52:18 +0200 (Di, 26 Jun 2007) | 1 line - -- cosmetics and a few doc updates ------------------------------------------------------------------------- -r48 | kutterma | 2007-06-26 22:47:52 +0200 (Di, 26 Jun 2007) | 2 lines - -- refactored element serializing to make it somewhat more consistent -- added nillable implementation for Elements ------------------------------------------------------------------------- -r47 | kutterma | 2007-06-26 18:06:59 +0200 (Di, 26 Jun 2007) | 1 line - -- removed shebang ------------------------------------------------------------------------- -r46 | kutterma | 2007-06-26 18:06:33 +0200 (Di, 26 Jun 2007) | 1 line - -- added warnings ------------------------------------------------------------------------- -r45 | kutterma | 2007-06-26 17:39:09 +0200 (Di, 26 Jun 2007) | 3 lines - -- got toClass working for generating WSDL based type libraries. -- changed typelib base class behavior to qualify first element called. -TODO (a bigger one): Fully support namespaces... ------------------------------------------------------------------------- -r44 | kutterma | 2007-06-26 12:10:33 +0200 (Di, 26 Jun 2007) | 14 lines - -- changed Typelib::Element to work as attribute of a type (serialize serializes start_tag and end_tag provided by Typelib::Element around it's vontent, if present) -- worked on toClass functionality with embedded templates. -There's much to do - current impl should support: - * - * - - * - * - - * - * - -All other variants are not completely supported yet. ------------------------------------------------------------------------- -r43 | kutterma | 2007-06-25 18:58:56 +0200 (Mo, 25 Jun 2007) | 1 line - -- broke element again... ------------------------------------------------------------------------- -r42 | kutterma | 2007-06-25 17:30:34 +0200 (Mo, 25 Jun 2007) | 3 lines - -- fixed to_typemap to report atomic simple and complex types correctly -- update tests -- renamed WSDLFilter to WSDLHandler ------------------------------------------------------------------------- -r41 | kutterma | 2007-06-25 17:29:41 +0200 (Mo, 25 Jun 2007) | 1 line - - ------------------------------------------------------------------------- -r40 | kutterma | 2007-06-25 14:15:40 +0200 (Mo, 25 Jun 2007) | 2 lines - -- Client.pm now uses XML::LibXML as default and falls back on XML::SAX::ParserFactory if not present -- fixed tests ------------------------------------------------------------------------- -r39 | kutterma | 2007-06-25 14:07:28 +0200 (Mo, 25 Jun 2007) | 2 lines - -- typo in Element -- fixed tests ------------------------------------------------------------------------- -r38 | kutterma | 2007-06-25 10:31:20 +0200 (Mo, 25 Jun 2007) | 2 lines - -- made WSDLFilter.pm a inside out class and let it run without XML::SAX::Base (This probably breaks a lot of tests - we need to implement XML::LibXML semantics in all tests / classes which use it) -- first swag at to_typemap Typemap generation. to_typemap implemented throughout the WSDL:: modules. Some implementations (Elenenet.pm, ComplexType.pm) need further work for correctly handling atomic simpleType / complexType definitions. ------------------------------------------------------------------------- -r37 | kutterma | 2007-06-24 09:15:22 +0200 (So, 24 Jun 2007) | 3 lines - -- added test for on-the-fly created ComplexType -- fixed ComplexType factory to really work -- startet working on Element facets ------------------------------------------------------------------------- -r36 | kutterma | 2007-06-24 09:14:46 +0200 (So, 24 Jun 2007) | 2 lines - -- added test for on-the-fly created ComplexType -- startet working on Element facets ------------------------------------------------------------------------- -r35 | kutterma | 2007-06-24 08:13:32 +0200 (So, 24 Jun 2007) | 1 line - -- implemented ComplexType as class factory to get rid of the annoying START every subclass had to implement. ------------------------------------------------------------------------- -r34 | kutterma | 2007-06-23 23:22:35 +0200 (Sa, 23 Jun 2007) | 2 lines - -- added XSD Typelib SimpleType, Element and ComplexType base classes (stereotypes). -ComplexType's not yet complete (no restriction / extension etc. handling). ------------------------------------------------------------------------- -r33 | kutterma | 2007-06-23 11:04:56 +0200 (Sa, 23 Jun 2007) | 2 lines - -- added SOAP::WSDL::XSD::Typelib::Builtin implementation of builtin XML Schema datatypes with built-in stringification, boolification and numerification. -- SAX::MessageHandler now deserializes simple types in SOAP messages into SOAP::WSDL::XSD::Typelib::Builtin (provided these are named in the ClassResolver...) ------------------------------------------------------------------------- -r32 | kutterma | 2007-06-23 02:14:16 +0200 (Sa, 23 Jun 2007) | 4 lines - -- added pod -- added ref handling for elements -- added abstract handling for elements (easy...) -- added storing of content model (simpleContent/complexContent) to simpleType and complexType, though the attribute is still ignored in serializing ------------------------------------------------------------------------- -r31 | kutterma | 2007-06-23 00:37:18 +0200 (Sa, 23 Jun 2007) | 1 line - -- renamed MessageFilter to MessageHandler ------------------------------------------------------------------------- -r30 | kutterma | 2007-06-23 00:35:54 +0200 (Sa, 23 Jun 2007) | 1 line - -- renamed MessageFilter to MessageHandler ------------------------------------------------------------------------- -r29 | kutterma | 2007-06-23 00:35:16 +0200 (Sa, 23 Jun 2007) | 2 lines - -- switched to Class::Std::Storable -- renamed MessageFilter to MessageHandler ------------------------------------------------------------------------- -r28 | kutterma | 2007-06-22 18:56:28 +0200 (Fr, 22 Jun 2007) | 3 lines - -- optimised SOAP::WSDL::SAX::MessageFilter for performance -- moved Typelob into own directory and load it dynamically from test script -- added some pod ------------------------------------------------------------------------- -r27 | kutterma | 2007-06-22 15:34:28 +0200 (Fr, 22 Jun 2007) | 5 lines - -- modified SOAP::WSDL::XSD lib to allow serializing of object hierarchies -- added SOAP::WSDL::SAX::MessageFilter for creating object hierarchies from SOAP messages -- moved Builtin XML Schema types to SOAP::WSDL:XSD::Schema::Builtin -- added test + benchmark for serializing /deserializing SOAP messages into object trees -- fixed Client to use SOAP::WSDL::Types as typelib, not first SOAP::WSDL::XSD::Schema ------------------------------------------------------------------------- -r26 | kutterma | 2007-06-21 23:35:30 +0200 (Do, 21 Jun 2007) | 2 lines - -- first swag at a typed SOAP Message parser. -Typelib is still to be implemented... ------------------------------------------------------------------------- -r25 | kutterma | 2007-06-21 18:14:49 +0200 (Do, 21 Jun 2007) | 1 line - -- added missing files from last commit ------------------------------------------------------------------------- -r24 | kutterma | 2007-06-19 00:29:36 +0200 (Di, 19 Jun 2007) | 3 lines - -- worked a bit on explain -- introduced handling of multiple schema definitions in one WSDL file -- fixed propagating targetNamespace to child elements in WSDLFilter ------------------------------------------------------------------------- -r23 | kutterma | 2007-06-16 14:48:30 +0200 (Sa, 16 Jun 2007) | 1 line - -- updated new SOAP::WSDL framework to use inside out classes based on Class::Std (not yet complete) ------------------------------------------------------------------------- -r22 | kutterma | 2007-06-12 23:19:41 +0200 (Di, 12 Jun 2007) | 4 lines - -- updated a few tests -- fixed a few WSDLs -- fixed handling of elements with minOccurs 0 -- fixed setting of minOccurs/maxOccurs for all/sequence complexTypes ------------------------------------------------------------------------- -r21 | kutterma | 2007-06-08 21:38:41 +0200 (Fr, 08 Jun 2007) | 2 lines - -- updated a few tests -- fixed namespaces in tests ------------------------------------------------------------------------- -r19 | kutterma | 2007-05-31 16:58:18 +0200 (Do, 31 Mai 2007) | 10 lines - -- first swag at a WSDL-generated Object-tree based SOAP client. - -Works as following: -a) a sax filter transforms the sax stream from a wsdl into a perl object tree -b) the perl object tree has methods for performing the following tasks: - a) explain: Tell what services and methods are there, and how to use them - b) serialize: Serialize data structures to the XML defined in the WSDL & schema -c) The client uses the generated XML to call the SOAP Server. Unfortunately, SOAP::Lite -does not allow custom XML to be rendered as a method's "value", so we have to replace -call() completely and generate the envelope on our own (which is not complete yet). ------------------------------------------------------------------------- -r9 | kutterma | 2007-05-28 17:08:41 +0200 (Mo, 28 Mai 2007) | 1 line - -- first try at bindings support - see t/12/bindings on how we could find out bindings and portname from a target URL ------------------------------------------------------------------------- -r4 | kutterma | 2007-05-28 15:15:03 +0200 (Mo, 28 Mai 2007) | 1 line - -- move from private repository to sourceforge ------------------------------------------------------------------------- +Release notes for SOAP::WSDL 2.00_12 +------- + +I'm very happy to present a new pre-release version of SOAP::WSDL. + +SOAP::WSDL is a toolkit for creating SOAP interfaces in perl. + +Features: + + * WSDL based SOAP client + o SOAP1.1 support + o Supports document/literal message style/encoding + * Code generator for generating WSDL-based interface classes + o Generated code includes usage documentation for the web service interface + * Easy-to use API. SOAP::WSDL is much easier to use than SOAP::Lite. + o Automatically encodes perl data structures as message data + o Automatically sets HTTP headers right + * SOAP::Lite like look and feel. + o Where possible, SOAP::WSDL mimics SOAP::Lite's API to allow easy migrations + * XML schema based class library for creating data objects + * High-performance XML parser + * Plugin support. SOAP::WSDL can be extended through plugins in various aspects. + The following plugins are supported: + o Transport plugins via SOAP::WSDL::Factory::Transport + o Serializer plugins via SOAP::WSDL::Factory::Serializer + + +The following changes have been made: + +2.00_12 +---- + +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): + + * [1787146] SOAP::WSDL still uses XML::LibXML + The superficious usage of XML::LibXML has been removed. XML::LibXML with + sax filter has been replaced by SOAP::WSDL::Expat::WSDLParser. + + * [1787054] Test suite requires XML::LibXML in 2.00_11 + The test suite no longer requires XML::LibXML to pass. + +2.00_11 +---- + +The following features were added (the numbers in square brackets are the +tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924): + + * [1767963] Transport plugins via SOAP::WSDL::Factory::Transport. + SOAP::WSDL uses SOAP::Lite's tranport modules as default, with a + lightweight HTTP(S) transport plugin as fallback. + Custom transport modules can be registered via SOAP::WSDL::Factory::Transport. + + * [ 1772730 ] Serializer plugins via SOAP::WSDL::Factory::Serializer + The default serializer for SOAP1.1 is SOAP::WSDL::Serializer::SOAP11. + Custom serializers classes can be registered via + SOAP::WSDL::Factory::Serializer or set via SOAP::WSDL's set_serializer + method. + +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): + + * [ 1764854 ] Port WSDL parser to expat and remove XML::LibXML dependency + SOAP::WSDL now requires only XML::Parser to be installed. + XML::LibXML is not required any more, though XML::LibXML based modules still + exist. + +The following uncategorized improvements have been made + + * The number of dependencies has been reduced. SOAP::WSDL no longer requires the + following modules to be installed: + - XML::SAX::Base + - XML::SAX::ParserFactory + - Pod::Simple::Text + - XML::LibXML + + * The missing prerequisite Template has been added. + * Documentation has been improved. + + +2.00_10 +---- + * Changed Makefile.PL to use Module::Build (passthrough mode) + * fixed element ref="" handling + +2.00_09 +---- + * SOAP::WSDL::XSD::Typelib::Builtin::boolean objects now return their numerical + value in bool context, not "true" or "false" (always true...) + * date/time test are now timezone-sensitive + * examples added + +2.00_08 +--- + * SOAP::WSDL::XSD::Typelib::ComplexType objects now check the class of their + child objects. + This provides early feedback to developers. + * SOAP message parser can skip unwanted parts of the message to improve parsing + speed - see SOAP::WSDL::Expat::MessageParser for details. + * HTTP Content-Type is configurable + * SOAP::WSDL::XSD::Typelib::ComplexType based objects accept any combination of + hash refs, list refs and objects as parameter to set_value() and new(). + * SOAP::WSDL::XSD::Typelib::Builtin::dateTime and ::date convert date + strings into XML date strings + * SOAP::WSDL::Definitions::create now + - converts '.' in service names to '::' (.NET class separator to perl class + separator) + - outputs Typemaps and Interface classes in UTF8 to allow proper inclusion + of UTF8 documentation from WSDL + * SOAP::WSDL::Definitions::create() includes doc in generated interface classes + * WSDLHandler now handles tags + * fixed explain in SimpleType, ComplexType and Element + +2.00_07 and below +--- + * Implemented a Code generator for creating SOAP interfaces based on WSDL definitions + * Implemented a high-speed stream based SOAP message parser + SOAP message parser returns a objects based on XML schema based class library + * Implemented a XML schema based class library + * Implemented a stream based WSDL parser. + Parses WSDL into objects. Objects can serialize data, and explain how to use the + service(s) they make up (output documentation). diff --git a/MANIFEST b/MANIFEST index 42bf646..4452f08 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,3 +1,4 @@ +benchmark/01_expat.t bin/wsdl2perl.pl Build.PL CHANGES @@ -22,7 +23,6 @@ example/lib/MyTypemaps/FullerData_x0020_Fortune_x0020_Cookie.pm example/lib/MyTypemaps/GlobalWeather.pm example/weather.pl example/weather_wsdl.pl -example/weather_xml_compile.pl example/wsdl/FortuneCookie.xml example/wsdl/genericbarcode.xml example/wsdl/globalweather.xml @@ -42,7 +42,7 @@ lib/SOAP/WSDL/Factory/Serializer.pm lib/SOAP/WSDL/Factory/Transport.pm lib/SOAP/WSDL/Manual.pod lib/SOAP/WSDL/Manual/Glossary.pod -lib/SOAP/WSDL/Manual/WS_I_BasicProfile_Compliance.pod +lib/SOAP/WSDL/Manual/WS_I.pod lib/SOAP/WSDL/Message.pm lib/SOAP/WSDL/Operation.pm lib/SOAP/WSDL/OpMessage.pm @@ -50,7 +50,6 @@ lib/SOAP/WSDL/Parser.pod lib/SOAP/WSDL/Part.pm lib/SOAP/WSDL/Port.pm lib/SOAP/WSDL/PortType.pm -lib/SOAP/WSDL/RELEASE_NOTES lib/SOAP/WSDL/SAX/MessageHandler.pm lib/SOAP/WSDL/SAX/WSDLHandler.pm lib/SOAP/WSDL/Serializer/SOAP11.pm @@ -203,6 +202,5 @@ t/SOAP/WSDL/11_helloworld.NET.t t/SOAP/WSDL/12_binding.pl t/SOAP/WSDL/XSD/Typelib/Builtin/001_string.t t/SOAP/WSDL/XSD/Typelib/Builtin/002_dateTime.t -t/SOAP/WSDL/XSD/Typelib/Builtin/002_time.t t/SOAP/WSDL/XSD/Typelib/Builtin/003_date.t TODO diff --git a/META.yml b/META.yml index 3017e61..e60f0ef 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- name: SOAP-WSDL -version: 2.00_11 +version: 2.00_12 author: abstract: SOAP with WSDL support license: artistic @@ -23,13 +23,14 @@ meta-spec: provides: SOAP::WSDL: file: lib/SOAP/WSDL.pm - version: 2.00_10 + version: 2.00_12 SOAP::WSDL::Base: file: lib/SOAP/WSDL/Base.pm SOAP::WSDL::Binding: file: lib/SOAP/WSDL/Binding.pm SOAP::WSDL::Client: file: lib/SOAP/WSDL/Client.pm + version: 2.00_12 SOAP::WSDL::Client::Base: file: lib/SOAP/WSDL/Client/Base.pm SOAP::WSDL::Definitions: diff --git a/benchmark/01_expat.t b/benchmark/01_expat.t new file mode 100644 index 0000000..edbf5d6 --- /dev/null +++ b/benchmark/01_expat.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +use strict; +use warnings; +use lib '../lib'; +use lib 'lib'; +use lib '../t/lib'; +use SOAP::WSDL::SAX::MessageHandler; + +use Benchmark; +use SOAP::WSDL::Expat::MessageParser; +use XML::Simple; +use XML::LibXML; +use MyComplexType; +use MyElement; +use MySimpleType; + +my $xml = q{ + + Test + Test2 + }; + + +my $parser = SOAP::WSDL::Expat::MessageParser->new({ + class_resolver => 'FakeResolver' +}); + +$XML::Simple::PREFERRED_PARSER = 'XML::Parser'; + +my $libxml = XML::LibXML->new(); + +timethese 1000, +{ + 'SOAP::WSDL' => sub { $parser->parse( $xml ) }, + #'XML::Simple (Hash)' => sub { XMLin $xml }, + 'XML::LibXML (DOM)' => sub { my $dom = $libxml->parse_string( $xml ) }, +}; + +use Test::More tests => 1; +is $parser->get_data(), q{} + . q{TestTest2} + , 'Content comparison'; + +$parser->class_resolver( 'FakeResolver2' ); + + +# data classes reside in t/lib/Typelib/ +BEGIN { + package FakeResolver; + { + my %class_list = ( + 'MyAtomicComplexTypeElement' => 'MyAtomicComplexTypeElement', + 'MyAtomicComplexTypeElement/test' => 'MyTestElement', + 'MyAtomicComplexTypeElement/test2' => 'MyTestElement2', + ); + + sub get_map { return \%class_list }; + + sub new { return bless {}, 'FakeResolver' }; + + sub get_class { + my $name = join('/', @{ $_[1] }); + return ($class_list{ $name }) ? $class_list{ $name } + : warn "no class found for $name"; + }; + }; +}; diff --git a/example/weather_xml_compile.pl b/example/weather_xml_compile.pl deleted file mode 100644 index f534a8c..0000000 --- a/example/weather_xml_compile.pl +++ /dev/null @@ -1,43 +0,0 @@ -# Accessing the globalweather service at -# www.webservicex.net/GlobalWeather/GlobalWeather.asmx -# -# Note that the GlobalWeather web service returns a (quoted) XML structure - -# don't be surprised by the response's format. -# -# I have no connection to www.webservicex.net -# Use this script at your own risk. -# -# This script demonstrates the use of SOAP::WSDL in SOAP::Lite style. -=for later -use lib 'lib/'; -use lib '../lib'; -use SOAP::WSDL; -use File::Basename qw(dirname); -use File::Spec; -my $path = File::Spec->rel2abs( dirname __FILE__); - -my $soap = SOAP::WSDL->new(); -my $som = $soap->wsdl("file:///$path/wsdl/globalweather.xml")->no_dispatch(1) - ->call('GetWeather', GetWeather => { CountryName => 'Germany', CityName => 'Munich' }); - -print $som; - -=for later use - -die $som->message() if $som->fault(); - -print $som->result(); - -=cut - -use Carp; -use diagnostics; - -use XML::Compile::WSDL; -my $schema = XML::Compile::WSDL->new('wsdl/globalweather.xml', - schema_dirs => 'D:/Test/XMLC/' -); - -my $operation = $schema->prepare('GetWeather', role => 'CLIENT', port => 'GlobalWeatherSoap'); -use Data::Dumper; -print Dumper $operation; diff --git a/lib/SOAP/WSDL.pm b/lib/SOAP/WSDL.pm index f4b2800..dea81e5 100644 --- a/lib/SOAP/WSDL.pm +++ b/lib/SOAP/WSDL.pm @@ -5,13 +5,11 @@ use vars qw($AUTOLOAD); use Carp; use Scalar::Util qw(blessed); use SOAP::WSDL::Client; -use SOAP::WSDL::Envelope; -use SOAP::WSDL::SAX::WSDLHandler; +use SOAP::WSDL::Expat::WSDLParser; use Class::Std; -use XML::LibXML; use LWP::UserAgent; -our $VERSION='2.00_10'; +our $VERSION='2.00_12'; my %no_dispatch_of :ATTR(:name); my %wsdl_of :ATTR(:name); @@ -98,13 +96,11 @@ sub wsdlinit { croak $response->message() if ($response->code != 200); # TODO: Port parser to expat and remove XML::LibXML dependency - my $parser = XML::LibXML->new(); - my $filter = SOAP::WSDL::SAX::WSDLHandler->new(); - $parser->set_handler( $filter ); + my $parser = SOAP::WSDL::Expat::WSDLParser->new(); $parser->parse_string( $response->content() ); # sanity checks - my $wsdl_definitions = $filter->get_data() or die "unable to parse WSDL"; + my $wsdl_definitions = $parser->get_data() or die "unable to parse WSDL"; my $types = $wsdl_definitions->first_types() or die "unable to extract schema from WSDL"; my $ns = $wsdl_definitions->get_xmlns() @@ -662,9 +658,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 176 $ + $Rev: 188 $ $LastChangedBy: kutterma $ - $Id: WSDL.pm 176 2007-08-31 15:28:29Z kutterma $ + $Id: WSDL.pm 188 2007-09-03 15:15:19Z kutterma $ $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $ =cut diff --git a/lib/SOAP/WSDL/Client.pm b/lib/SOAP/WSDL/Client.pm index fab1f81..68cf7b5 100644 --- a/lib/SOAP/WSDL/Client.pm +++ b/lib/SOAP/WSDL/Client.pm @@ -13,6 +13,8 @@ use SOAP::WSDL::Factory::Transport; use SOAP::WSDL::Expat::MessageParser; use SOAP::WSDL::SOAP::Typelib::Fault11; +our $VERSION='2.00_12'; + # Package global for speed and memory savings. # But should be factored out into serializer/deserializer... my $PARSER; @@ -381,9 +383,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 176 $ + $Rev: 188 $ $LastChangedBy: kutterma $ - $Id: Client.pm 176 2007-08-31 15:28:29Z kutterma $ + $Id: Client.pm 188 2007-09-03 15:15:19Z kutterma $ $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $ =cut diff --git a/lib/SOAP/WSDL/Expat/MessageParser.pm b/lib/SOAP/WSDL/Expat/MessageParser.pm index 390e3a0..4da88b4 100644 --- a/lib/SOAP/WSDL/Expat/MessageParser.pm +++ b/lib/SOAP/WSDL/Expat/MessageParser.pm @@ -8,7 +8,7 @@ use XML::Parser::Expat; sub new { my ($class, $args) = @_; my $self = { - class_resolver => $args->{ class_resolver } + class_resolver => $args->{ class_resolver }, }; bless $self, $class; return $self; @@ -20,9 +20,9 @@ sub class_resolver { } sub _initialize { - my ($self, $parser) = @_; + my ($self, $parser) = @_; - delete $self->{ data }; + delete $self->{ data }; # remove potential old results my $characters; my $current = undef; @@ -34,17 +34,25 @@ sub _initialize { # use "globals" for speed my ($_prefix, $_localname, $_element, $_method, $_class, $_parser, %_attrs) = (); - + no strict qw(refs); $parser->setHandlers( Start => sub { ($_parser, $_element, %_attrs) = @_; ($_prefix, $_localname) = split m{:}xms , $_element; - $_localname ||= $_element; # for non-prefixed elements - + $_localname ||= $_element; # for non-prefixed elements + # ignore top level elements - if (@{ $ignore } && $_localname eq $ignore->[0]) { + if (@{ $ignore } && $_localname eq $ignore->[0]) { + CHECK_ENVELOPE: { + last CHECK_ENVELOPE if $_localname ne 'Envelope'; + last CHECK_ENVELOPE if exists $_attrs{ 'xmlns' } + && $_attrs{ 'xmlns' } eq 'http://schemas.xmlsoap.org/soap/envelope/'; + last CHECK_ENVELOPE if $_attrs{ "xmlns:$_prefix"} + eq 'http://schemas.xmlsoap.org/soap/envelope/'; + die "Bad namespace for SOAP envelope: " . $parser->recognized_string(); + } shift @{ $ignore }; return; } @@ -52,10 +60,10 @@ sub _initialize { push @{ $path }, $_localname; # step down in path return if $skip; # skip inside __SKIP__ - # resolve class of this element + # resolve class of this element $_class = $self->{ class_resolver }->get_class( $path ) or die "Cannot resolve class for " - . join('/', @{ $path }) . " via $self->{ class_resolver }"; + . join('/', @{ $path }) . " via " . $self->{ class_resolver }; # maybe write as "return $skip = join ... if (...)" ? # would save a BLOCK... @@ -71,15 +79,17 @@ sub _initialize { # if $class matches... if (index $_class, 'SOAP::WSDL::XSD::Typelib::Builtin', 0 < 0) { - # check wheter there is a CODE reference for $class::new. + # check wheter there is a non-empty ARRAY reference for $_class::ISA + # or a "new" method # If not, require it - all classes required here MUST # define new() - # This is the same as $class->can('new'), but it's way faster - *{ "$_class\::new" }{ CODE } + # This is not exactly the same as $class->can('new'), but it's way faster + defined *{ "$_class\::new" }{ CODE } + or scalar @{ *{ "$_class\::ISA" }{ ARRAY } } or eval "require $_class" ## no critic qw(ProhibitStringyEval) - or die $@; + or die $@; } - + $current = $_class->new({ %_attrs }); # set new current object # remember top level element @@ -124,8 +134,8 @@ sub _initialize { # set appropriate attribute in last element # multiple values must be implemented in base class $_method = "add_$_localname"; - $$list[-1]->$_method( $current ); - + $$list[-1]->$_method( $current ); + $current = pop @$list; # step up in object hierarchy... } ); @@ -208,8 +218,8 @@ This module may be used under the same terms as perl itself. $ID: $ - $LastChangedDate: 2007-08-31 17:28:29 +0200 (Fr, 31 Aug 2007) $ - $LastChangedRevision: 176 $ + $LastChangedDate: 2007-09-02 21:05:18 +0200 (So, 02 Sep 2007) $ + $LastChangedRevision: 184 $ $LastChangedBy: kutterma $ $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $ diff --git a/lib/SOAP/WSDL/Manual.pod b/lib/SOAP/WSDL/Manual.pod index c70079c..6ba21cb 100644 --- a/lib/SOAP/WSDL/Manual.pod +++ b/lib/SOAP/WSDL/Manual.pod @@ -35,9 +35,6 @@ the service's interface structure. The results of all calls to your service object's methods (except new) are objects based on SOAP::WSDL's XML schema implementation. -These objects are false in boolean context, and serialize to XML when -printed. - To access the object's properties use get_NAME / set_NAME getter/setter methods whith NAME corresponding to the XML tag name. diff --git a/lib/SOAP/WSDL/Manual/WS_I_BasicProfile_Compliance.pod b/lib/SOAP/WSDL/Manual/WS_I.pod similarity index 99% rename from lib/SOAP/WSDL/Manual/WS_I_BasicProfile_Compliance.pod rename to lib/SOAP/WSDL/Manual/WS_I.pod index 426aa9f..d2fa1b5 100644 --- a/lib/SOAP/WSDL/Manual/WS_I_BasicProfile_Compliance.pod +++ b/lib/SOAP/WSDL/Manual/WS_I.pod @@ -2,7 +2,7 @@ =head1 NAME -SOAP::WSDL WS-I Basic Profile Compliance - How SOAP::WSDL complies to WS-I Basic Profile 1.0 +SOAP::WSDL::Manual::WS_I - How SOAP::WSDL complies to WS-I Basic Profile 1.0 =head1 DESCRIPTION @@ -292,7 +292,18 @@ the SOAPAction header from the operation name and the top node's namespace. SOAP::WSDL::Client always assures the SOAPaction header is quoted, thus automatically inserts the empty string if no SOAPAction header is defined. + +=head2 R1015 + + A RECEIVER MUST generate a fault if they encounter a message whose document + element has a local name of "Envelope" but a namespace name that is not + "http://schemas.xmlsoap.org/soap/envelope/". + +SOAP::WSDL::Expat::MessageParser checks the namespace of the SOAP envelope. + +SOAP::WSDL::Expat::MessageParser does not check that Envelope is the root +element, yet. =head1 RULES NOT CONFIRMED @@ -347,16 +358,6 @@ However, rpc-literal bindings are not supported, yet. TODO support rpc-literal bindings. -=head2 R1015 - - A RECEIVER MUST generate a fault if they encounter a message whose document - element has a local name of "Envelope" but a namespace name that is not - "http://schemas.xmlsoap.org/soap/envelope/". - -SOAP::WSDL::Expat::MessageParser does not check the namespace of the SOAP envelope. - -TODO implement checking namespace of the SOAP envelope and emit fault if not "http://schemas.xmlsoap.org/soap/envelope/". - =head2 R2008 In a DESCRIPTION the value of the location attribute of a wsdl:import element diff --git a/lib/SOAP/WSDL/RELEASE_NOTES b/lib/SOAP/WSDL/RELEASE_NOTES deleted file mode 100644 index 505e05a..0000000 --- a/lib/SOAP/WSDL/RELEASE_NOTES +++ /dev/null @@ -1,71 +0,0 @@ -Release notes for SOAP::WSDL 2.00_11 -------- - -I'm happy to present a new pre-release version of SOAP::WSDL. - -The following features were added (the numbers in brackets are the tracker IDs -from https://sourceforge.net/tracker/?group_id=111978&atid=660924): - - * [1767963] Transport plugins via SOAP::WSDL::Factory::Transport. - SOAP::WSDL uses SOAP::Lite's tranport modules as default, with a - lightweight HTTP(S) transport plugin as fallback. - Custom transport modules can be registered via - SOAP::WSDL::Factory::Transport. - - * [ 1772730 ] Serializer plugins via SOAP::WSDL::Factory::Serializer - The default serializer for SOAP1.1 is SOAP::WSDL::Serializer::SOAP11. - Custom serializers classes can be registered via - SOAP::WSDL::Factory::Serializer or set via SOAP::Lite's set_serializer - method. - -The following bugs have been fixed (the numbers in brackets are the tracker IDs -from https://sourceforge.net/tracker/?group_id=111978&atid=660921): - - * [ 1764854 ] Port WSDL parser to expat and remove XML::LibXML dependency - SOAP::WSDL now requires only XML::Parser to be installed. - XML::LibXML is not required any more, though XML::LibXML based modules still - exist. - -The following uncategorized improvements have been made - - * The number of dependencies has been reduced. SOAP::WSDL no longer requires the - following modules to be installed: - - XML::SAX::Base - - XML::SAX::ParserFactory - - Pod::Simple::Text - - * The missing prerequisite Template has been added. - * Documentation has been improved. - -The following changes were made in former pre-relase versions: - -2.00_10 ----- - * Changed Makefile.PL to use Module::Build (passthrough mode) - * fixed element ref="" handling - -2.00_09 ----- - * SOAP::WSDL::XSD::Typelib::Builtin::boolean objects now return their numerical - value in bool context, not "true" or "false" (always true...) - * date/time test are now timezone-sensitive - * examples added - -2.00_08 ---- - * SOAP message parser may skip unwanted parts of the message - see - SOAP::WSDL::Expat::MessageParser for details. - * HTTP Content-Type is configurable now - * SOAP::WSDL::XSD::Typelib::ComplexType based objects now accept a - list ref of hash refs as parameter to set_value. - * SOAP::WSDL::XSD::Typelib::Builtin::dateTime and ::date now converts date - strings into XML date strings - * SOAP::WSDL::Definitions::create now - - converts '.' in service names to '::' (.NET class separator to perl class - separator) - - outputs Typemaps and Interface classes in UTF8 to allow proper inclusion - of UTF8 documentation from WSDL - * WSDLHandler now handles tags - * SOAP::WSDL::Definitions now includes some usable doc in generated interface classes - * fixed explain in SimpleType, ComplexType and Element (someway) - \ No newline at end of file diff --git a/lib/SOAP/WSDL/XSD/ComplexType.pm b/lib/SOAP/WSDL/XSD/ComplexType.pm index eadb046..270d1fe 100644 --- a/lib/SOAP/WSDL/XSD/ComplexType.pm +++ b/lib/SOAP/WSDL/XSD/ComplexType.pm @@ -181,7 +181,7 @@ sub to_class { my $template = <<'EOT'; package [% type_prefix %][% self.get_name %]; use strict; -use Class::Std::Storable; + use SOAP::WSDL::XSD::Typelib::ComplexType; use base qw( SOAP::WSDL::XSD::Typelib::ComplexType diff --git a/lib/SOAP/WSDL/XSD/Element.pm b/lib/SOAP/WSDL/XSD/Element.pm index b02508a..3bf27a3 100644 --- a/lib/SOAP/WSDL/XSD/Element.pm +++ b/lib/SOAP/WSDL/XSD/Element.pm @@ -244,7 +244,7 @@ sub to_class { my $template = <<'EOT'; package [% element_prefix %][% self.get_name %]; use strict; -use Class::Std::Storable; + use SOAP::WSDL::XSD::Typelib::Element; [% IF (type = self.first_simpleType) %] diff --git a/lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm b/lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm index c9ac125..4c6af08 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm @@ -37,29 +37,20 @@ BEGIN { sub set_value { # use set_value from base class if we have a XML-DateTime format #2037-12-31T00:00:00.0000000+01:00 - if ( + return $_[0]->SUPER::set_value($_[1]) if ( $_[1] =~ m{ ^\d{4} \- \d{2} \- \d{2} T \d{2} \: \d{2} \: \d{2} (:? \. \d{1,7} )? [\+\-] \d{2} \: \d{2} $ }xms - ) { - $_[0]->SUPER::set_value($_[1]) - } - # use a combination of strptime and strftime for converting the date - # strptime does not emit timezone info, so we're pretty fucked up here. - # - # Unfortunately, strftime outputs the time zone as [+-]0000, whereas XML - # whants it as [+-]00:00 - # We leave out the optional nanoseconds part, as it would always be empty. - else { - # strptime sets empty values to undef - and strftime doesn't like that... - my @time_from = map { ! defined $_ ? 0 : $_ } strptime($_[1]); - undef $time_from[-1]; + ); + + # strptime sets empty values to undef - and strftime doesn't like that... + my @time_from = map { ! defined $_ ? 0 : $_ } strptime($_[1]); + undef $time_from[-1]; - my $time_str = strftime( '%Y-%m-%dT%H:%M:%S%z', @time_from ); - substr $time_str, -2, 0, ':'; - $_[0]->SUPER::set_value($time_str); - } + my $time_str = strftime( '%Y-%m-%dT%H:%M:%S%z', @time_from ); + substr $time_str, -2, 0, ':'; + $_[0]->SUPER::set_value($time_str); } 1; diff --git a/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm b/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm index bb208a3..6f2cb60 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm @@ -4,9 +4,9 @@ use strict; use warnings; use Carp; use SOAP::WSDL::XSD::Typelib::Builtin; -use Scalar::Util qw(blessed); -use Class::Std::Storable; +use Scalar::Util qw(blessed refaddr); use Data::Dumper; +use Class::Std::Storable; use base qw(SOAP::WSDL::XSD::Typelib::Builtin::anyType); @@ -64,7 +64,7 @@ sub _factory { my $is_list = $type->isa('SOAP::WSDL::XSD::Typelib::Builtin::list'); *{ "$class\::set_$name" } = sub { - my ($self, $value) = @_; + # my ($self, $value) = @_; # The structure below looks rather weird, but is optimized for performance. # @@ -93,11 +93,11 @@ sub _factory { # for GLOB references, feel free to add them. # d) we should also die for non-blessed non-ARRAY/HASH references in lists but don't do yet - oh my ! - my $is_ref = ref $value; - $attribute_ref->{ ident $self } = ($is_ref) + my $is_ref = ref $_[1]; + $attribute_ref->{ ident $_[0] } = ($is_ref) ? $is_ref eq 'ARRAY' ? $is_list # remembered from outside closure - ? $type->new({ value => $value }) # list element - can take list ref as value + ? $type->new({ value => $_[1] }) # list element - can take list ref as value : [ map { ref $_ ? ref $_ eq 'HASH' @@ -106,20 +106,20 @@ sub _factory { ? $_ : croak "cannot use " . ref($_) . " reference as value for $name - $type required" : $type->new({ value => $_ }) - } @{ $value } + } @{ $_[1] } ] : $is_ref eq 'HASH' - ? $type->new( $value ) + ? $type->new( $_[1] ) : $is_ref eq $type - ? $value + ? $_[1] : die croak "cannot use $is_ref reference as value for $name - $type required" - : $type->new({ value => $value }); + : $type->new({ value => $_[1] }); }; *{ "$class\::add_$name" } = sub { my $ident = ident $_[0]; warn "attempting to add empty value to " . ref $_[0] - if (not defined $_[1]); + if not defined $_[1]; # first call return $attribute_ref->{ $ident } = $_[1] @@ -133,16 +133,30 @@ sub _factory { return push @{ $attribute_ref->{ $ident } }, $_[1]; }; + *{ "$class\::$name" } = *{ "$class\::add_$name" }; } + + *{ "$class\::new" } = sub { + my $self = bless \my ($o), $_[0]; + $self->BUILD( ident $self, $_[1] ) if exists &BUILD; + $self->_init( ident $self, $_[1] ); + $self->START( ident $self, $_[1] ) if exists &START; + return $self; + }; - *{ "$class\::START" } = sub { - my ($self, $ident, $args_of) = @_; + *{ "$class\::_init" } = sub { + # We're working on @_ for speed. + # Normally, the first line would look like this: + # my ($self, $ident, $args_of) = @_; + # + # The hanging side comment show you what would be there, then. + # iterate over keys of arguments # and call set appropriate field in clase map { ($ATTRIBUTES_OF{ $class }->{ $_ }) ? do { my $method = "set_$_"; - $self->$method( $args_of->{ $_ } ); + $_[0]->$method( $_[2]->{ $_ } ); # ( $args_of->{ $_ } ); } : $_ =~ m{ \A # beginning of string xmlns # xmlns @@ -152,8 +166,8 @@ sub _factory { croak "unknown field $_ in $class. Valid fields are:\n" . join(', ', @{ $ELEMENTS_FROM{ $class } }) . "\n" . "Structure given:\n" . Dumper @_ }; - } keys %$args_of; - return $self; + } keys %{ $_[2] }; # %$args_of; + return $_[0]; # $self; }; diff --git a/lib/SOAP/WSDL/XSD/Typelib/Element.pm b/lib/SOAP/WSDL/XSD/Typelib/Element.pm index 77ccd31..5ae03b6 100644 --- a/lib/SOAP/WSDL/XSD/Typelib/Element.pm +++ b/lib/SOAP/WSDL/XSD/Typelib/Element.pm @@ -1,8 +1,6 @@ #!/usr/bin/perl package SOAP::WSDL::XSD::Typelib::Element; use strict; -use Class::Std::Storable; -use Data::Dumper; my %NAME; my %NILLABLE; diff --git a/t/002_parse_wsdl.t b/t/002_parse_wsdl.t index c3928c5..922e97f 100644 --- a/t/002_parse_wsdl.t +++ b/t/002_parse_wsdl.t @@ -1,30 +1,24 @@ #!/usr/bin/perl -w use strict; use warnings; -use Test::More tests => 18; # qw/no_plan/; # TODO: change to tests => N; +use Test::More tests => 17; use lib '../lib'; -use XML::LibXML; - eval { require Test::XML; import Test::XML; }; -use_ok(qw/SOAP::WSDL::SAX::WSDLHandler/); +use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); my $filter; -ok($filter = SOAP::WSDL::SAX::WSDLHandler->new( -), "Object creation"); - -my $parser = XML::LibXML->new(); -$parser->set_handler( $filter ); +my $parser = SOAP::WSDL::Expat::WSDLParser->new(); $parser->parse_string( xml() ); my $wsdl; -ok( $wsdl = $filter->get_data() , "get object tree"); +ok( $wsdl = $parser->get_data() , "get object tree"); my $types = $wsdl->first_types(); diff --git a/t/003_wsdl_based_serializer.t b/t/003_wsdl_based_serializer.t index 2550bc6..09dcf39 100644 --- a/t/003_wsdl_based_serializer.t +++ b/t/003_wsdl_based_serializer.t @@ -1,16 +1,14 @@ use Test::More tests => 11; use Data::Dumper; use lib '../lib'; -use XML::LibXML; -use_ok(qw/SOAP::WSDL::SAX::WSDLHandler/); +use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); my $filter; -ok($filter = SOAP::WSDL::SAX::WSDLHandler->new(), "Object creation"); +my $parser; -my $parser = XML::LibXML->new(); -$parser->set_handler( $filter ); +ok($parser = SOAP::WSDL::Expat::WSDLParser->new() ); eval { $parser->parse_string( xml() ) }; if ($@) @@ -24,8 +22,7 @@ else } my $wsdl; -ok( $wsdl = $filter->get_data() , "get object tree"); - +ok( $wsdl = $parser->get_data() , "get object tree"); my $schema = $wsdl->first_types(); diff --git a/t/004_parse_wsdl.t b/t/004_parse_wsdl.t index b01c0ab..4f188c6 100644 --- a/t/004_parse_wsdl.t +++ b/t/004_parse_wsdl.t @@ -4,21 +4,16 @@ use warnings; use Test::More tests => 5; use lib '../lib'; -use XML::LibXML; - eval { require Test::XML; import Test::XML; }; -use_ok(qw/SOAP::WSDL::SAX::WSDLHandler/); +use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); -my $filter; +my $parser; -ok($filter = SOAP::WSDL::SAX::WSDLHandler->new(), "Object creation"); - -my $parser = XML::LibXML->new(); -$parser->set_handler( $filter ); +ok($parser = SOAP::WSDL::Expat::WSDLParser->new(), "Object creation"); eval { $parser->parse_string( xml() ) }; if ($@) @@ -32,7 +27,7 @@ else } my $wsdl; -ok( $wsdl = $filter->get_data() , "get object tree"); +ok( $wsdl = $parser->get_data() , "get object tree"); my $schema = $wsdl->get_types()->[0]->get_schema()->[0] || die "No schema !"; diff --git a/t/005_parse_contributed.t b/t/005_parse_contributed.t index f341128..0b9b532 100644 --- a/t/005_parse_contributed.t +++ b/t/005_parse_contributed.t @@ -4,19 +4,13 @@ use warnings; use Test::More qw/no_plan/; # TODO: change to tests => N; use Data::Dumper; use lib '../lib'; -use XML::LibXML; - use diagnostics; -use_ok(qw/SOAP::WSDL::SAX::WSDLHandler/); +use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); -my $filter; - -ok($filter = SOAP::WSDL::SAX::WSDLHandler->new(), "Object creation"); - -my $parser = XML::LibXML->new(); -$parser->set_handler( $filter ); +my $parser; +ok($parser = SOAP::WSDL::Expat::WSDLParser->new(), "Object creation"); eval { $parser->parse_string( xml() ) }; if ($@) { @@ -29,7 +23,7 @@ else } my $wsdl; -ok( $wsdl = $filter->get_data() , "get object tree"); +ok( $wsdl = $parser->get_data() , "get object tree"); my $opt = { namespace => $wsdl->get_xmlns(), diff --git a/t/007_envelope.t b/t/007_envelope.t index 4f071eb..c52e974 100644 --- a/t/007_envelope.t +++ b/t/007_envelope.t @@ -10,7 +10,7 @@ eval { import Test::XML; }; -use_ok qw/SOAP::WSDL::Envelope/; +use_ok qw/SOAP::WSDL::Serializer::SOAP11/; my $opt = { readable => 1, @@ -18,7 +18,7 @@ my $opt = { }, }; my $xml; -ok( $xml = SOAP::WSDL::Envelope->serialize( +ok( $xml = SOAP::WSDL::Serializer::SOAP11->serialize( undef, undef, $opt ), "serialize empty envelope" diff --git a/t/015_to_typemap.t b/t/015_to_typemap.t index df92ee4..c024716 100644 --- a/t/015_to_typemap.t +++ b/t/015_to_typemap.t @@ -1,30 +1,18 @@ #!/usr/bin/perl -w use strict; use warnings; -use Test::More; +use Test::More tests => 5; use lib '../lib'; - -if (eval "require XML::LibXML") { - plan tests => 5; -} -else { - plan skip_all => "Cannot test without XML::LibXML"; -} - eval { require Test::XML; import Test::XML; }; -use_ok(qw/SOAP::WSDL::SAX::WSDLHandler/); +use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); -my $filter; - -ok($filter = SOAP::WSDL::SAX::WSDLHandler->new(), "Object creation"); - -my $parser = XML::LibXML->new(); -$parser->set_handler( $filter ); +my $parser; +ok($parser = SOAP::WSDL::Expat::WSDLParser->new(), "Object creation"); eval { $parser->parse_string( xml() ) }; if ($@) { @@ -37,7 +25,7 @@ else } my $wsdl; -ok( $wsdl = $filter->get_data() , "get object tree"); +ok( $wsdl = $parser->get_data() , "get object tree"); ok $wsdl->to_typemap( { prefix => 'CP::EAI::Typelib::' } ), 'typemap'; exit; diff --git a/t/SOAP/WSDL/XSD/Typelib/Builtin/002_time.t b/t/SOAP/WSDL/XSD/Typelib/Builtin/002_time.t deleted file mode 100644 index fe28fcb..0000000 --- a/t/SOAP/WSDL/XSD/Typelib/Builtin/002_time.t +++ /dev/null @@ -1,25 +0,0 @@ -use Test::More tests => 3; -use strict; -use warnings; -use lib '../lib'; - -use_ok('SOAP::WSDL::XSD::Typelib::Builtin::time'); -my $obj; - -$obj = SOAP::WSDL::XSD::Typelib::Builtin::time->new(); - -$obj->set_value( '12:23:03' ); -is $obj->get_value() , '12:23:03+01:00', 'conversion'; - -$obj->set_value( '12:23:03.12345+01:00' ), ; -is $obj->get_value() , '12:23:03.12345+01:00', 'no conversion'; - - - -# exit; - -#~ use Benchmark; -#~ timethese 10000, { - #~ xml => sub { $obj->set_value('2037-12-31T00:00:00.0000000+01:00') }, - #~ string => sub { $obj->set_value('2037-12-31') }, -#~ } \ No newline at end of file diff --git a/t/lib/MyElement.pm b/t/lib/MyElement.pm index c03d1e0..06329f2 100644 --- a/t/lib/MyElement.pm +++ b/t/lib/MyElement.pm @@ -1,7 +1,6 @@ #!/usr/bin/perl package MyElement; use strict; -use Class::Std::Storable; use SOAP::WSDL::XSD::Typelib::Element; use SOAP::WSDL::XSD::Typelib::Builtin; use base ( @@ -14,7 +13,6 @@ sub get_xmlns { 'urn:Test' }; package MyComplexTypeElement; use strict; -use Class::Std::Storable; use SOAP::WSDL::XSD::Typelib::Element; use MyComplexType; use base ( @@ -27,7 +25,6 @@ sub get_xmlns { 'urn:Test' }; package MyTestElement; use strict; -use Class::Std::Storable; use SOAP::WSDL::XSD::Typelib::Element; use SOAP::WSDL::XSD::Typelib::Builtin::string; use base ( @@ -36,12 +33,11 @@ use base ( ); __PACKAGE__->__set_name('MyTestElement'); - + sub get_xmlns { 'urn:Test' }; package MyTestElement2; use strict; -use Class::Std::Storable; use SOAP::WSDL::XSD::Typelib::Element; use SOAP::WSDL::XSD::Typelib::Builtin; use base ( @@ -57,7 +53,6 @@ sub get_xmlns { 'urn:Test' }; package MyAtomicComplexTypeElement; use strict; -use Class::Std::Storable; use SOAP::WSDL::XSD::Typelib::Element; use SOAP::WSDL::XSD::Typelib::ComplexType; use SOAP::WSDL::XSD::Typelib::Builtin; diff --git a/t/lib/Typelib/Base.pm b/t/lib/Typelib/Base.pm index b3dccf6..b1a59fb 100644 --- a/t/lib/Typelib/Base.pm +++ b/t/lib/Typelib/Base.pm @@ -1,5 +1,5 @@ package Typelib::Base; -use Class::Std::Storable; +use Class::Std::Storable; sub mk_add_mutators { my $class = shift; diff --git a/t/lib/Typelib/TEnqueueMessage.pm b/t/lib/Typelib/TEnqueueMessage.pm index 07bce48..49a4b45 100644 --- a/t/lib/Typelib/TEnqueueMessage.pm +++ b/t/lib/Typelib/TEnqueueMessage.pm @@ -1,7 +1,6 @@ package Typelib::TEnqueueMessage; use strict; use base qw(Typelib::Base); -use Class::Std::Storable; my %MMessage_of :ATTR(:name :default<()>); diff --git a/t/lib/Typelib/TMessage.pm b/t/lib/Typelib/TMessage.pm index 8f7713b..24f56b0 100644 --- a/t/lib/Typelib/TMessage.pm +++ b/t/lib/Typelib/TMessage.pm @@ -1,7 +1,6 @@ package Typelib::TMessage; use strict; use base qw(Typelib::Base); -use Class::Std::Storable; my %MRecipientURI_of :ATTR(:name :default<()>); my %MMessageContent_of :ATTR(:name :default<()>);