The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Release notes for SOAP::WSDL 2.00_27
-------

I'm proud to present a new pre-release version of SOAP::WSDL.

SOAP::WSDL is a toolkit for creating WSDL-based SOAP client 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
          o Automatically encodes perl data structures as message data
          o Automatically sets HTTP headers right
    * Efficient documentation
          o SOAP::WSDL::Manual guides you at getting your work done, not at 
          the module's internals
    * Thorough test suite
          o SOAP::WSDL is heavily regression tested, with a test coverage of 
          over 95% (excluding documentation - you wouldn't want to read 
          through it all).
    * 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
          o Deserializer plugins via SOAP::WSDL::Factory::Serializer

The following changes have been made:

2.00_27

The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1850793 ] Add a to_hash_ref method
   * [ 1844427 ] Support multiple parts in body

The following bugs have been fixed (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
The numbers with # are CPAN RT IDs (http://rt.cpan.org/).

   * [ 1850795 ] attributes referencing types in default namespace throw
   * [ 1844458 ] Add warning when generating Interface with multiple parts
   * [ 1843841 ] Grammar/typos in Manual.pod
   * [ 1843799 ] ./Build test fails due to testcount mismatch not IO::Scalar
   * [ 1845077 ] Top level simpleType elements don't serialize correctly

The following uncategorized improvements have been made:

   * Fixed serializing complexType elements with no elements to empty element
   * Enhanced test suite
   * Documentation improvements

2.00_26

The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

The following bugs have been fixed (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
The numbers with # are CPAN RT IDs (http://rt.cpan.org/).

   * [ 1843195 ] t/013_complexType.t still requires Class::Std::Storable
   * [ 1843590 ] Tests broken on Cygwin

The following uncategorized improvements have been made:

   * Added examples
   * Added Content-length header to CGI output

2.00_25
---
WARNING: INCOMPATIBLE CHANGE:

   SOAP::WSDL now uses Class::Std::Fast. Read the MIGRATING guide for 
   upgrading from previous versions.
   You probably need to re-generate all your interfaces.

WARNING: INCOMPATIBLE CHANGE:

   SOAP::WSDL::XSD::Typelib::anySimpleType based objects no longer serialize 
   to their XML value on stringification.
   This means that strings are no longer XML-escaped when the simpleType 
   containing the string is printed or used like this:

    my $value = "$simpleType";

   Note that ComplexType objects still serialize to their XML on 
   stringification. This Change is due to the demands of applications 
   embedding SOAP::WSDL::XSD::Typelib objects in templates - it would mean 
   a nasty ->get_value for every (simple) value.

The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1837347 ] Use Class::Std::Fast
   Class::Std::Fast allows optimizations which almost double SOAP::WSDL's
   performance and reduce code size. Class::Std::Fast also opens the door
   for even faster XS implementations.
   * [ 1842436 ] Add SOAP Server

The following bugs have been fixed (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
The numbers with # are CPAN RT IDs (http://rt.cpan.org/).

   * [ 1842418 ] Message parser eats up whitespaces between entities
   * [ 1839820 ] encoding parameter of Content-Type header set incorrectly
   * [ 1839851 ] token in UPPERCASE in default typemap
   * [ 1839690 ] Can't use two prefixes for namespace in WSDL
   * [ 1839833 ] incorrect encoding/decoding of double-quote

The following uncategorized improvements have been made:

   * Errors in typemap generation have been fixed
   * XML parser speedups
   * The test suite has been improved

2.00_24
---
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1832998 ] Make interface methods complain when called as class method
   * [ 1826833 ] listify all XSD type objects when called as @{}

The following bugs have been fixed (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
The numbers with # are CPAN RT IDs (http://rt.cpan.org/).

   * #30685: Error in MessageParser when using __SKIP__ in typemap
   * [ 1831398 ] Badd class names for atomic typed elements
   * [ 1828240 ] POD Defects
   * [ 1792348 ] 006_client.t requires SOAP::Lite (again)

The following uncategorized improvements have been made:   

   * The test suite has been improved
   * Documentation has been improved

2.00_23
---

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):

   * [ 1826382 ] nillable elements not serialized as xsi:nil
   * [ 1826337 ] Second element in complexType gets eaten up
   * [ 1792348 ] 006_client.t requires SOAP::Lite (again)

The following uncategorized improvements have been made:   

   * Test for complexType containing element with atomic simpleType added

2.00_22
----

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):

   * [ 1817697 ] Dots in service/port names lead to broken interfaces
   * [ 1817699 ] Templates not found on all OS

The following uncategorized improvements have been made:   

   * Code cleanup. The XSD library has been cleaned up a bit. Should result 
   in a minor speedup in serializing and deserializing XML messages,

2.00_21 - not released
----
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):

   * [ 1810058 ] .tt's pod indexed on CPAN (again)
   * [ 1809284 ] Rename SOAP::WSDL::Deserializer::SOAP11 to ::XSD

The following uncategorized improvements have been made:   

   * Requires at least perl 5.8.0. This is due to a bug in perls before - 
   see http://aspn.activestate.com/ASPN/Mail/Message/perl5-porters/929746

2.00_20
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1815646 ] Only include last part of port name in interface
   * [ 1815648 ] Methods with empty body cannot be called as ->method()
   * [ 1815651 ] Empty complexType definitions not supported
   
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):

   * [ 1815643 ] ComplexTypes cannot be freezed/thawed

The following uncategorized improvements have been made:   

   * WSDL definitions are decoded into utf8
   * fixed tests to use correct path on windows

2.00_19
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1810395 ] Implement complexType complexContent extension

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):

   * [ 1813144 ] Typemap not used in interface class
   * [ 1810058 ] .tt's pod indexed on CPAN

The following uncategorized improvements have been made:   

   * Documentation improvements

2.00_18
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1790983 ] Create generator Plugin API
   Generator factory is SOAP::WSDL::Factory::Generator

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):

   * [ 1805252 ] t/SOAP/WSDL/XSD/Typelib/Builtin/004_time.t fails
   The default timezone conversion has been fixed.

The following uncategorized improvements have been made:   

   * Documentation improvements
   * Test updates
   * readable() has been converted into a no-op, as it already had no effect 
   any more

2.00_17
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

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):

   * [ 1772617 ] SOAP Header not working
   Added header support. Currently, SOAP headers are only supported with 
   the SOM or the XSD (SOAP11) serializer.

   * [ 1805238 ] Tests in t/SOAP/WSDL don't work when run from t/

   * [ 1805241 ] explain() broken in SOAP::WSDL
   explain has been removed from SOAP::WSDL
   
The following uncategorized improvements have been made:   

   * Added limited support for complexType complexContent content model with 
   restriction variety.
   SOAP::WSDL now supports this XML Schema definition variant, although no
   constraints are imposed on derived types yet.
   Derived types do not serialize with a xsi:type attribute (and the xsi:type 
   attribute is not recognized by the XML parser), so you cannot use derived 
   types as a substitute for theri parent, yet.

   * Added support for complexType choice variety
   complexType definitions using the choice variety are now supported,
   even though the content is not checked (if you pass in invalid data, 
   invalid XML will be generated).

   * Added Loopback Transport backend.
   SOAP::WSDL::Tranport::Loopback just returns the request as respons, but 
   allows testing the whole chain from user interface to transport backend.

   * Fixed SOAP::WSDL::Factory::Transport prefer user-registered 
   transport backend

   * Fixed set_soap_version method in SOAP::WSDL::Client.
   Re-setting the SOAP version now invalidates (resets) serializer and 
   deserializer, but not the transport backend.

   * Fixed SOAP::WSDL::XSD::Typelib::Builtin::boolean to return false 
   when false and true when true.

   * SOAP::WSDL::XSD::Typelib::Builtin::normalizedString now replaces all 
   occurences of tab, newline and carriage return by whitespce on set_value.

   * Code cleanup
      o Lots of orphan methods now replaced by the SOAP::WSDL::Generator 
        hierarchy have been removed.
      o Unused (and unusable) readable option checking has been removed in 
        SOAP::WSDL::Serializer::SOAP11.
      o Unused XML Schema facet attributes have been removed from XSD Builtin 
        classes
      o Methods common to all expat parser classes have been factored out 
        into a common base class.
   
   * XML serialization speedup for SOAP::WSDL::XSD::* objects

   * Tests added to improve test coverage.

   * A few documentation errors have been fixed

   * Misspelled default Typemap and Interface prefixes have been corrected

2.00_16
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1761532 ] Support embedded atomic types
   SOAP::WSDL now supports a greater variety of XML Schema type definitions.
   Note that XML Schema support is still incomplete, though.

   * [ 1797943 ] Create Perl Hash Deserializer
   There's a new deserializer which outputs perl hashes as data structures.
   Much like XML::Simple, but faster. No XML Attribute support, though.

   * [ 1797678 ] Move Code generator from WSDL::Definitions to separate class

   * [ 1803330 ] Create one interface per port
   SOAP::WSDL now creates one interface per port, not one per service.

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):

   * [ 1804441 ] parts from binding not regarded in SOAP::WSDL
   SOAP::WSDL (interpreter mode) now respects the body parts specified in the 
   binding.

   * [ 1803763 ] nonNegativeInteger misspelled in Schema::Builtin

   * [ 1793965 ] _expand() does not work on non-root-node ns declarations

   * [ 1792348 ] 006_client.t requires SOAP::Lite in 2.00_15
   SOAP::WSDL no longer attempts to load SOAP::WSDL::Deserializer::SOM when 
   no_dispatch is set.
   006_client.t now sets outputxml(1), to be really sure.
   
The following uncategorized improvements have been made:   

   * Code generator only generates interface for the first port in a service
   The code generator now generates interfaces for all ports.
   Note: The naming scheme has changed. It is now
    InterfacePrefix::Service::Port
   
   * XML Parser speedup
   The XML parser has received a little speedup.
   
   * A number of errors in parsing / traversing WSDL documents have been 
   corrected.
   
   * Documentation has been improved
   
   * A number of (incorrect, but passing) tests have been fixed.

   * Code cleanup: The SOAP::WSDL::SAX* modules are no longer included, as they 
   are not supported any more. They can still be found in SOAP::WSDL's 
   subversion repository in the attic directory, though.
   
2.00_15
----

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):

   * [ 1792321 ] 2.00_14 requires SOAP::Lite for passing tests

2.00_14
----

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):

   * [ 1792235 ] SOAP::WSDL::Transport::Test missing from 2.00_13
   The package has been re-added

   * [ 1792221 ] class_resolver not set from ::Client in 2.00_13
   Changed to set class_resolver correctly.

The following uncategorized improvements have been made:

   * The ::SOM deserializer has been simplified to be just a subclass 
   of SOAP::Deserializer from SOAP::Lite
   * Factories now emit more useful error messages when no class is registered
   for the protocol/soap_version requested
   * Documentation has been improved
      - refined ::Factory:: modules' documentation
   * Several tests have been added
   * XSD classes have been improved for testability

2.00_13
----
The following features were added (the numbers in square brackets are the 
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):

   * [ 1790619 ] Test transport backend
   A test transport backend has been implemented (SOAP::WSDL::Transport::Test).
   It returns the contents from a file and discards the response.
   The filename is determined from the soap_action field.
   
   * [ 1785196 ] Replace outputsom(1) by deserializer plugin
   outputsom(1) in SOAP::WSDL is now implemented via using the deserializer 
   plugin SOAP::WSDL::Deserializer::SOM.

   * [1785195] Support deserializer plugins
   Deserializer plugin API added via SOAP::WSDL::Factory::Deserializer.
  
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):

   * [1789581] Support ComplexType mixed
   WSDL parser now supports using the mixed="true" attribute in complexType 
   definitions. Mixed content in messages is only supported via SOAP::SOM yet.

   * [1787975] 016_client_object.t fails due to testing XML as string
   Removed string test.
  
   * [1787959] Test wsdl seems to be broken
   Corrected typo.
  
   * [1787955] ::XSD::Typelib::date is broken
   SOAP::WSDL::XSD::Typelib::Builtin::date now converts time-zoned dates properly, 
   and adds the local time zone if none is given.

   * [1785646] SOAPAction header not set from soap:operation soapAction
   SOAP::WSDL now sets the SOAPAction header correctly.

The following uncategorized improvements have been made:

   * Documentation improvements

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.

   * [1785678] SOAP envelope not checked for namespace
   The SOAP envelope is now checked for the correct namespace.
   
   * [1786644] SOAP::WSDL::Manual - doc error
   Documentation improvements
    
The following uncategorized improvements have been made

   * The SOAPAction header is now alway quoted (R1109 in WS-I BP 1.0).
   
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:
        - WS-I Compliance document added.


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 <wsdl:documentation> 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).