Custom Mapping with MappingRegistry?
Q
My original class 'Person' is sent as '{http://www.ruby-lang.org/xmlns/ruby/type/custom}Person' but I want it to be sent as '{urn:custom}person'.
driver = Driver.new(...)
driver.add_method("getAddress", "person")
person = Person.new("NaHi")
response = driver.getAddress(person)
=>
<n1:getAddress>
<person xmlns:n2="http://www.ruby-lang.org/xmlns/ruby/type/custom"
xsi:type="n2:Person">
<name xsi:type="xsd:string">NaHi</name>
</person>
</n1:getAddress>
A
Use MappingRegistry? (If you have WSDL, wsdl2ruby.rb generates this instead of you).
map = SOAP::Mapping::Registry.new
map.set(Person, ::SOAP::SOAPStruct,
::SOAP::Mapping::Registry::TypedStructFactory,
{:type => XSD::QName.new("urn:custom", "person")})
driver = Driver.new(...)
driver.add_method("getAddress", "person")
driver.mapping_registry = map
person = Person.new("NaHi")
response = driver.getAddress(person)
=>
<n1:getAddress>
<person xmlns:n2="urn:custom" xsi:type="n2:person">
<name xsi:type="xsd:string">NaHi</name>
</person>
</n1:getAddress>