Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

Changeset 1912

Show
Ignore:
Timestamp:
08/05/07 11:02:14 (1 year ago)
Author:
nahi
Message:
  • send xsi:nil=true element when literal + maxOccurs != 0 + nillable="true", not empty element. closes #395.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/soap/mapping/literalregistry.rb

    r1908 r1912  
    126126 
    127127  def stubobj2soap(obj, qname, definition) 
    128     if obj.is_a?(::String) 
     128    if obj.nil? 
     129      ele = SOAPNil.new 
     130      ele.elename = qname 
     131    elsif obj.is_a?(::String) 
    129132      ele = SOAPElement.new(qname, obj) 
    130133    else 
     
    138141      ele.elename = definition.elename 
    139142    end 
     143    return ele if obj.nil? 
    140144    stubobj2soap_elements(obj, ele, definition.elements) 
    141145    if definition.attributes 
  • trunk/test/wsdl/document/array/double.wsdl

    r1852 r1912  
    1919        <s:complexType> 
    2020          <s:sequence> 
    21             <s:element minOccurs="0" maxOccurs="1" name="ary" 
    22               type="tns:ArrayOfDouble"/> 
     21            <s:element nilleble="true" maxOccurs="1" name="ary" type="tns:ArrayOfDouble"/> 
    2322          </s:sequence> 
    2423        </s:complexType> 
     
    2726        <s:complexType> 
    2827          <s:sequence> 
    29             <s:element minOccurs="0" maxOccurs="1" name="ary" 
    30               type="tns:ArrayOfDouble"/> 
     28            <s:element nilleble="true" maxOccurs="1" name="ary" type="tns:ArrayOfDouble"/> 
    3129          </s:sequence> 
    3230        </s:complexType> 
  • trunk/test/wsdl/document/array/test_array.rb

    r1871 r1912  
    129129    assert_equal(double, @client.echo(:ary => double).ary) 
    130130  end 
     131 
     132  def test_stub 
     133    @client = ::WSDL::Document::PricerSoap.new("http://localhost:#{Port}/") 
     134    @client.wiredump_dev = STDOUT if $DEBUG 
     135    double = [0.1, 0.2, 0.3] 
     136    assert_equal(double, @client.echo(:ary => double).ary) 
     137  end 
     138 
     139  def test_stub_nil 
     140    @client = ::WSDL::Document::PricerSoap.new("http://localhost:#{Port}/") 
     141    @client.wiredump_dev = STDOUT if $DEBUG 
     142    assert_equal(nil, @client.echo(Echo.new).ary) 
     143  end 
    131144end 
    132145