Changes in 1.5.7
Here are changes in 1.5.7 from 1.5.6.
- Environment
- soap4r gem depends on httpclient >= 2.1.0. (#379)
- let soap4r http clients (SOAP::RPC::Driver and WSDL/XSD importers) do not check soap_use_proxy environment variable and use only http_proxy/HTTP_PROXY and no_proxy/NO_PROXY envvars for proxy configuration. no need to set 'soap_use_proxy=on' envvar anymore. But to avoid proxy injection problem, when a library is used on CGI environment (with checking REQUEST_METHOD envvar existence), soap4r http clients use cgi_http_proxy/CGI_HTTP_PROXY envvar instead of http_proxy/HTTP_PROXY. (#378)
- SOAP/Ruby mapping
- try to call klass.soap_marshallable before mapping an XML element to the klass while unmarshalling. to avoid auto-mapping from element name, define klass.soap_marshallable method let it return false. (#223)
- let xsd2ruby.rb generate a mapping registry and a mapper from XML Schema definition. the mapper has obj2xml and xml2obj which uses the generated mapping registry. you can use this instead of XSD::Mapping.obj2xml and XSD::Mapping.xml2obj which does not know anything about mapping. (#362, #363)
- [BUG] Array or Struct was not properly marshalled when literal service + generated stub combination. (#360)
- [BUG] derived class was marshalled without xsi:type for literal service. (#361)
- [BUG] passing nil as a basetype through generated mapping registry was broken in 1.5.6. (#369)
- [BUG] an rpc/encoded parameter could be wrongly typed when the parameter is typed as a derived type from a base type of XML Schema datatypes. (#371)
- [BUG] under the earlier versions, we could use [] instead of CountryTargets?[]. from 1.5.6-GA it doesn't work. let LiteralRegistry? decide how the class should be mapped to according to the defined class in the parent complexType. (#373)
- SOAP
- allow xsi:nil="true" element as an RPC request though I don't think it's SOAP spec compliant. (#374)
- allow to customize default ns definition of SOAP Envelope. SOAPGenerator.new gets option hash as 'opt' and treats opt[:default_ns] as a XSD::NS which stores default ns definition of SOAP Envelope. See how it works in test/soap/test_custom_ns.rb. (#380)
- Payload
- added an API for filtering streamhandler to capture/generate HTTP header. (#276)
- added 'protocol.http.auth' option to set authentication information for both BasicAuth? and DigestAuth?. with the latest httpclient (formerly known as http-access2), now soap4r client can connect to DigestAuth? server. (#345)
- WSDL
- importer should not import http://schemas.xmlsoap.org/soap/encoding/. (#366)
- [BUG] error when simpleType element usage as "part" definition directly. (#367)
- [BUG] wsdl2ruby.rb did not generate a classdef entry for empty element definition such as <element name="foo"/>. let wsdl2ruby.rb generate 'class Foo < String'. (#370)