Changes in 1.5.8
Here are changes in 1.5.8 from 1.5.7.
- XML Schema
- added classes for the last of built-in datatypes of XML Schema Datatypes (NMTOKEN, NMTOKENS, Name, NCName, ID, IDREF, IDREFS, ENTITY, and ENTITIES). lexical scope is not checked for these datatypes yet. (#340)
- added anonymous type support. wsdl2ruby.rb/xsd2ruby.rb maps anonymous type to inner class. (#355)
- added support of all XML Schema facets for restriction. No validation implemented yet. do you want to validate XML messages by soap4r? (#364)
- added <xsd:attributeGroup> support. (#389)
- added <xsd:anyAttribute> support. just ignore anyAttribute because wsdll2ruby.rb now generates xmlattr method. use it for adding any attribute. (#390)
- added <xsd:group> support. (#391)
- [BUG] XSD::XSDDuration should allow durations lower than a day. Thanks to an anonymous user for taking the time to file the ticket. (#401)
- [BUG] choice handling bug fixed according to a patch from KR, Vesa Varimo. If there was choice element in complex type, soap4r didn't process all elements if the first element was an empty array. (#382)
- [BUG] some WSDL caused cyclic schema inclusion. <xsd:import> supported cyclic include but <xsd:include> did not. extract common implementation as importHandler.rb. (#385)
- [BUG] added supports of <xsd:complexType> definition inheritance. earlier soap4r supported only element definition inheritance. (#394)
- [BUG] support <xsd:choice maxOccurs="unbounded"/>: treat it <xsd:all/> for now. (#400)
- [BUG] allow <xsd:any> appear twice or more. with the current implementation, soap4r ignores <xsd:any> element definition such as namespace and processContent. just allow any element appear. (#402)
- [BUG] Type simpleType and simpleContent was unmarshalled as a String, not as an instance of the subclass which is generated by wsdl2ruby.rb. (#412)
- [BUG] ignore xsd:element definition when the same qname is also defined as a xsd:complexType. it's a workaround for this version. (#413)
- [BUG] wsdl2ruby.rb generated inconsistent class definition when the base class was :TYPE_ARRAY and the derived class was a :TYPE_STRUCT. let the derived class be a standalone (not a derived) class. (#424)
- [BUG] wsdl2ruby.rb generates incomplete encoded Array mapping registry for base64Binary[]. (#428)
- [BUG] LiteralMappingRegistryCreator? did not generate an entry for the element which type is mapped to an Array. (#432)
- SOAP
- add :default_ns_tag option to configure a pre-defined Namespace tag. :default_ns is for configuring namespace definitions at SOAPEnvelope. :default_ns_tag is for configuring pre-defined namespace tag. (#383)
- login.live.com returns SOAPFault as a direct child of SOAPEnvelope. support it even though it's not spec compliant. (#384)
- allow to remove mustUnderstand attribute from a SOAP Header. I heard that there's an implementation which cannot handle mustUnderstand existence. (#429)
- add the Generator option for using default namespace in SOAP message. it's for interoperability with non XML Namespace comformant implementation. false by default (same behavior as before.) you can turn it on with Driver#use_default_namespace = true or Server#use_default_namespace = true. (#430)
- [BUG] send xsi:nil=true element when literal + maxOccurs != 0 + nillable="true", not empty element. (#395)
- [BUG] do not crash when parsing an incomplete multi-dimensional array. (#397)
- [BUG] do not dump xsi:type for non-polymorphic type of literal service. there's an implementation which only allows xsd:type for polymorphic type hint. (#405)
- [BUG] a content of the stub class which is generated as a subclass of String by wsdl2ruby.rb was not properly encoded. (#415)
- [BUG] a value of XML attribute was not properly encoded. users who did XML-encode a value in SOAPElement#extraattr should care about this change (not needed from now.) (#416)
- [BUG] XML encoding does not work properly depending on CES. (#417)
- [BUG] soap4r's XML namespace handler did not handle xmlns="" correctly. it means 'no default namespace'. (#421)
- [BUG] multi-refed basetype value was not be able to decode with generated EncodedRegistry?. (#423)
- [BUG] unqualified element 'Envelope', 'Header', 'Body' and 'Fault' caused an error while parsing. (#431)
- [BUG] illegal marshaling a request for rpc/literal + parameter is a built-in basetype of XML Schema + message is defined as "type" (not "element"). fixed. (#434)
- SOAP/Ruby mapping
- let MappingError? be a NestedException? and show original cause of MappingError?. (#404)
- check illegal constant name before const_defined? call to avoid warnings. (#386)
- added a header handler which utilize a mapping registry. (#425)
- [BUG] avoid NoMethodError? when passing SOAPArray to LiteralRegistry?. It's caused when a servant raised an exception in literal service. Thanks to Emil for contributing test case for it. (#393)
- [BUG] allow the Fixnum which have an instance variable to be marshalled. For Fixnum, ivars are not marshalled but allowed to be marshalled in Ruby's marshal. (#406)
- [BUG] a Driver generated by a WSDLDriverFactory did not handle nested sequence/choice correctly. (#409)
- [BUG] a Driver generated by a WSDLDriverFactory ignored 'xmlattr_*' value in a Hash parameter. (#414)
- [BUG] let it be distinguishable <ele attr=""> from <ele> (no attribute in the element). now the former returns "" and the latter returns nil. (#418)
- misc
- added SOAP::WSDLDriverFactory#dump_method_signatures. it returns a formatted text which describes method signatures. (#141)
- added servletStubCreator. wsdl2ruby.rb with --servlet_stub creates servlet stub for WEBrick. (#290)
- wsdl2ruby.rb generated too much 'XSD::QName.new(...)' parts. let wsdl2ruby.rb/xsd2ruby.rb extract common namespace definitions as constants. (#381)
- let wsdl2ruby.rb/xsd2ruby.rb generate member types as a comment for each class in classdef file. (#384)
- do not raise warning when there's a simpleType definition which have non-enumeration restriction. Generated mapping registry wrongly contained references to undefined classes. (#399)
- [BUG] as a workaround of class name crash problem between generated class and generated driver, add --drivername_postfix option to wsdl2ruby.rb. (#372)
- [BUG] soap4r without httpclient caused NameError?. forgot to add required dependency in the previous release. (#403)