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

Changeset 1712

Show
Ignore:
Timestamp:
09/03/06 20:05:01 (2 years ago)
Author:
nahi
Message:

allow String as a value of xsd:list of xsd:simpleType. closes #248.

Files:

Legend:

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

    r1697 r1712  
    124124  def simpleobj2soap(obj, type) 
    125125    type.check_lexical_format(obj) 
    126     return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
     126    return SOAPNil.new if obj.nil?      # TODO: check nillable. 
    127127    if type.base 
    128       soap_obj = base2soap(obj, TypeMap[type.base]) 
    129       soap_obj.type = type.name 
    130       soap_obj 
     128      ele = base2soap(obj, TypeMap[type.base]) 
     129      ele.type = type.name 
    131130    elsif type.list 
    132       base2soap(obj.join(" "), SOAP::SOAPString) 
     131      value = obj.is_a?(Array) ? obj.join(" ") : obj.to_s 
     132      ele = base2soap(value, SOAP::SOAPString) 
    133133    else 
    134134      raise MappingError.new("unsupported simpleType: #{type}") 
    135135    end 
     136    ele 
    136137  end 
    137138 
  • trunk/lib/soap/mapping/wsdlliteralregistry.rb

    r1697 r1712  
    122122      ele = base2soap(obj, TypeMap[type.base]) 
    123123    elsif type.list 
    124       ele = base2soap(obj.join(" "), SOAP::SOAPString) 
     124      value = obj.is_a?(Array) ? obj.join(" ") : obj.to_s 
     125      ele = base2soap(value, SOAP::SOAPString) 
    125126    else 
    126127      raise MappingError.new("unsupported simpleType: #{type}") 
  • trunk/test/wsdl/list/test_list.rb

    r1685 r1712  
    116116    assert_equal(e2.join(" "), ret.e2) 
    117117  end 
     118 
     119  def test_string_as_a_value 
     120    @client = List_porttype.new("http://localhost:#{Port}/") 
     121    @client.wiredump_dev = STDOUT if $DEBUG 
     122    e1 = ['inlineruby', 'inlineperl'] 
     123    e2 = 'python smalltalk' 
     124    ret = @client.echo(Echoele.new(e1, e2)) 
     125    # in the future... 
     126    #   assert_equal(e1, ret.e1) 
     127    #   assert_equal(e2, ret.e2) 
     128    assert_equal(e1.join(" "), ret.e1) 
     129    assert_equal(e2, ret.e2) 
     130  end 
    118131end 
    119132