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

Changeset 1515

Show
Ignore:
Timestamp:
04/27/05 16:13:21 (4 years ago)
Author:
nahi
Message:

let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap. closes #70.

Files:

Legend:

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

    r1506 r1515  
    2424  module TraverseSupport 
    2525    def mark_marshalled_obj(obj, soap_obj) 
     26      raise if obj.nil? 
    2627      Thread.current[:SOAPMarshalDataKey][obj.__id__] = soap_obj 
    2728    end 
    2829 
    2930    def mark_unmarshalled_obj(node, obj) 
     31      return if obj.nil? 
    3032      # node.id is not Object#id but SOAPReference#id 
    3133      Thread.current[:SOAPMarshalDataKey][node.id] = obj 
     
    4244  end 
    4345 
    44   def self.soap2obj(node, registry = nil
     46  def self.soap2obj(node, registry = nil, klass = nil
    4547    registry ||= Mapping::DefaultRegistry 
    4648    Thread.current[:SOAPMarshalDataKey] = {} 
    47     obj = _soap2obj(node, registry
     49    obj = _soap2obj(node, registry, klass
    4850    Thread.current[:SOAPMarshalDataKey] = nil 
    4951    obj 
     
    112114  end 
    113115 
    114   def self._soap2obj(node, registry
     116  def self._soap2obj(node, registry, klass = nil
    115117    if node.is_a?(SOAPReference) 
    116118      target = node.__getobj__ 
     
    119121        return referent 
    120122      else 
    121         return _soap2obj(target, registry
    122       end 
    123     end 
    124     return registry.soap2obj(node
     123        return _soap2obj(target, registry, klass
     124      end 
     125    end 
     126    return registry.soap2obj(node, klass
    125127  end 
    126128 
  • trunk/lib/soap/mapping/registry.rb

    r1508 r1515  
    166166    end 
    167167 
    168     def soap2obj(node) 
    169       klass = node.class 
    170       if map = @soap2obj[klass] 
     168    def soap2obj(node, klass = nil) 
     169      if map = @soap2obj[node.class] 
    171170        map.each do |obj_class, factory, info| 
     171          next if klass and obj_class != klass 
    172172          conv, obj = factory.soap2obj(obj_class, node, info, @registry) 
    173173          return true, obj if conv 
     
    385385  end 
    386386 
    387   def soap2obj(node
    388     obj = _soap2obj(node
     387  def soap2obj(node, klass = nil
     388    obj = _soap2obj(node, klass
    389389    if @allow_original_mapping 
    390390      addextend2obj(obj, node.extraattr[RubyExtendName]) 
     
    430430 
    431431  # Might return nil as a mapping result. 
    432   def _soap2obj(node
     432  def _soap2obj(node, klass = nil
    433433    if node.extraattr.key?(RubyTypeName) 
    434434      conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self) 
    435435      return obj if conv 
    436436    else 
    437       conv, obj = @map.soap2obj(node
     437      conv, obj = @map.soap2obj(node, klass
    438438      return obj if conv 
    439439      conv, obj = @default_factory.soap2obj(nil, node, nil, self) 
  • trunk/lib/soap/mapping/wsdlencodedregistry.rb

    r1505 r1515  
    1616 
    1717 
    18 class WSDLEncodedRegistry 
     18class WSDLEncodedRegistry < Registry 
    1919  include TraverseSupport 
    2020 
     
    3434      :allow_original_mapping => true 
    3535    ) 
     36    @schema_element_cache = {} 
    3637  end 
    3738 
     
    6667  def soap2obj(node, obj_class = nil) 
    6768    begin 
    68       return Mapping.soap2obj(node
     69      return _soap2obj(node, obj_class
    6970    rescue MappingError 
    7071    end 
     
    112113 
    113114  def simple2soap(obj, type) 
     115    type.check_lexical_format(obj) 
     116    return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
    114117    o = base2soap(obj, TypeMap[type.base]) 
    115     type.check_lexical_format(obj) 
    116118    o 
    117119  end 
     
    145147 
    146148  def struct2soap(obj, type_qname, type) 
     149    return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
    147150    soap_obj = SOAPStruct.new(type_qname) 
    148     mark_marshalled_obj(obj, soap_obj) 
    149     elements2soap(obj, soap_obj, type.content.elements) 
     151    unless obj.nil? 
     152      mark_marshalled_obj(obj, soap_obj) 
     153      elements2soap(obj, soap_obj, type.content.elements) 
     154    end 
    150155    soap_obj 
    151156  end 
    152157 
    153158  def array2soap(obj, type_qname, type) 
     159    return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
    154160    arytype = type.child_type 
    155161    soap_obj = SOAPArray.new(ValueArrayName, 1, arytype) 
    156     mark_marshalled_obj(obj, soap_obj) 
    157     obj.each do |item| 
    158       soap_obj.add(Mapping._obj2soap(item, self, arytype)) 
     162    unless obj.nil? 
     163      mark_marshalled_obj(obj, soap_obj) 
     164      obj.each do |item| 
     165        soap_obj.add(Mapping._obj2soap(item, self, arytype)) 
     166      end 
    159167    end 
    160168    soap_obj 
     
    164172  MapValueName = XSD::QName.new(nil, "value") 
    165173  def map2soap(obj, type_qname, type) 
     174    return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
    166175    keytype = type.child_type(MapKeyName) || XSD::AnyTypeName 
    167176    valuetype = type.child_type(MapValueName) || XSD::AnyTypeName 
    168177    soap_obj = SOAPStruct.new(MapQName) 
    169     mark_marshalled_obj(obj, soap_obj) 
    170     obj.each do |key, value| 
    171       elem = SOAPStruct.new 
    172       elem.add("key", Mapping._obj2soap(key, self, keytype)) 
    173       elem.add("value", Mapping._obj2soap(value, self, valuetype)) 
    174       # ApacheAxis allows only 'item' here. 
    175       soap_obj.add("item", elem) 
     178    unless obj.nil? 
     179      mark_marshalled_obj(obj, soap_obj) 
     180      obj.each do |key, value| 
     181        elem = SOAPStruct.new 
     182        elem.add("key", Mapping._obj2soap(key, self, keytype)) 
     183        elem.add("value", Mapping._obj2soap(value, self, valuetype)) 
     184        # ApacheAxis allows only 'item' here. 
     185        soap_obj.add("item", elem) 
     186      end 
    176187    end 
    177188    soap_obj 
     
    186197    end 
    187198  end 
     199 
     200  def _soap2obj(node, obj_class) 
     201    unless obj_class 
     202      typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name) 
     203      obj_class = Mapping.class_from_name(typestr) 
     204    end 
     205    if obj_class and obj_class.class_variables.include?('@@schema_element') 
     206      soap2definedobj(node, obj_class) 
     207    else 
     208      Mapping.soap2obj(node, nil, obj_class) 
     209    end 
     210  end 
     211 
     212  def soap2definedobj(node, obj_class) 
     213    obj = Mapping.create_empty_object(obj_class) 
     214    unless node.is_a?(SOAPNil) 
     215      add_elements2obj(node, obj) 
     216    end 
     217    obj 
     218  end 
     219 
     220  def add_elements2obj(node, obj) 
     221    elements, as_array = schema_element_definition(obj.class) 
     222    vars = {} 
     223    node.each do |name, value| 
     224      if class_name = elements[name] 
     225        if klass = Mapping.class_from_name(class_name) 
     226          # klass must be a SOAPBasetype or a class 
     227          if klass.ancestors.include?(::SOAP::SOAPBasetype) 
     228            if value.respond_to?(:data) 
     229              child = klass.new(value.data).data 
     230            else 
     231              child = klass.new(nil).data 
     232            end 
     233          else 
     234            child = Mapping._soap2obj(value, self, klass) 
     235          end 
     236        else 
     237          raise MappingError.new("unknown class: #{class_name}") 
     238        end 
     239      else      # untyped element is treated as anyType. 
     240        child = Mapping._soap2obj(value, self) 
     241      end 
     242      vars[name] = child 
     243    end 
     244    Mapping.set_attributes(obj, vars) 
     245  end 
     246 
     247  # it caches @@schema_element.  this means that @@schema_element must not be 
     248  # changed while a lifetime of a WSDLLiteralRegistry. 
     249  def schema_element_definition(klass) 
     250    @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass) 
     251  end 
    188252end 
    189253 
  • trunk/lib/soap/mapping/wsdlliteralregistry.rb

    r1504 r1515  
    1818 
    1919 
    20 class WSDLLiteralRegistry 
     20class WSDLLiteralRegistry < Registry 
    2121  attr_reader :definedelements 
    2222  attr_reader :definedtypes 
     
    5454 
    5555  # node should be a SOAPElement 
    56   def soap2obj(node) 
     56  def soap2obj(node, obj_class = nil) 
     57    unless obj_class.nil? 
     58      raise MappingError.new("must not reach here") 
     59    end 
    5760    begin 
    5861      return soapele2obj(node) 
     
    209212      soapele2definedobj(node, obj_class) 
    210213    elsif node.is_a?(SOAPElement) or node.is_a?(SOAPStruct) 
     214        # SOAPArray for literal? 
    211215      soapele2undefinedobj(node) 
    212216    else 
  • trunk/lib/soap/rpc/element.rb

    r1411 r1515  
    7878  attr_reader :inparam 
    7979  attr_reader :outparam 
     80  attr_reader :retval_name 
     81  attr_reader :retavl_class_name 
    8082 
    8183  def initialize(qname, param_def = nil) 
     
    9496    @outparam = {} 
    9597    @retval_name = nil 
     98    @retavl_class_name = nil 
    9699 
    97100    init_param(@param_def) if @param_def 
     
    193196        @inoutparam_names.push(name) 
    194197      when RETVAL 
    195         if (@retval_name) 
    196           raise MethodDefinitionError.new('Duplicated retval') 
     198        if @retval_name 
     199          raise MethodDefinitionError.new('duplicated retval') 
    197200        end 
    198201        @retval_name = name 
     202        @retavl_class_name = param_type ? param_type[0] : nil 
    199203      else 
    200         raise MethodDefinitionError.new("Unknown type: #{io_type}") 
     204        raise MethodDefinitionError.new("unknown type: #{io_type}") 
    201205      end 
    202206    end 
     
    256260    # NCName & ruby's method name 
    257261    unless /\A[\w_][\w\d_\-]*\z/ =~ qname.name 
    258       raise MethodDefinitionError.new("Element name '#{qname.name}' not allowed") 
     262      raise MethodDefinitionError.new("element name '#{qname.name}' not allowed") 
    259263    end 
    260264  end 
  • trunk/lib/wsdl/soap/classDefCreator.rb

    r1494 r1515  
    135135      if element.type == XSD::AnyTypeName 
    136136        type = nil 
    137       elsif basetype = element_basetype(element) 
    138         type = basetype.name 
     137      elsif klass = element_basetype(element) 
     138        type = klass.name 
    139139      elsif element.type 
    140140        type = create_class_name(element.type) 
     
    159159        params << "#{varname} = nil" 
    160160      end 
    161       qname = (varname == name) ? nil : element.name 
    162       schema_element << [varname, qname, type] 
     161      eleqname = (varname == name) ? nil : element.name 
     162      schema_element << [varname, eleqname, type] 
    163163    end 
    164164    unless typedef.attributes.empty? 
     
    188188 
    189189  def element_basetype(ele) 
    190     if type = basetype_class(ele.type) 
    191       type 
     190    if klass = basetype_class(ele.type) 
     191      klass 
    192192    elsif ele.local_simpletype 
    193193      basetype_class(ele.local_simpletype.base) 
     
    198198 
    199199  def attribute_basetype(attr) 
    200     if type = basetype_class(attr.type) 
    201       type 
     200    if klass = basetype_class(attr.type) 
     201      klass 
    202202    elsif attr.local_simpletype 
    203203      basetype_class(attr.local_simpletype.base) 
     
    208208 
    209209  def basetype_class(type) 
     210    return nil if type.nil? 
    210211    if simpletype = @simpletypes[type] 
    211212      basetype_mapped_class(simpletype.base) 
     
    219220    attributes.each do |attribute| 
    220221      name = name_attribute(attribute) 
    221       if basetype = attribute_basetype(attribute) 
    222         type = basetype.name 
     222      if klass = attribute_basetype(attribute) 
     223        type = klass.name 
    223224      else 
    224225        type = nil 
  • trunk/lib/wsdl/soap/classDefCreatorSupport.rb

    r1445 r1515  
    2222  def create_class_name(qname) 
    2323    if klass = basetype_mapped_class(qname) 
    24       ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass) 
     24      ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name 
    2525    else 
    2626      safeconstname(qname.name) 
  • trunk/lib/wsdl/soap/methodDefCreator.rb

    r1479 r1515  
    2626    @complextypes = @definitions.collect_complextypes 
    2727    @elements = @definitions.collect_elements 
    28     @types = nil 
     28    @types = [] 
    2929  end 
    3030 
    3131  def dump(porttype) 
    32     @types = [] 
     32    @types.clear 
    3333    result = "" 
    3434    operations = @definitions.porttype(porttype).operations 
     
    4242    end 
    4343    return result, @types 
    44   end 
    45  
    46 private 
    47  
    48   def dump_method(operation, binding) 
    49     name = safemethodname(operation.name.name) 
    50     name_as = operation.name.name 
    51     style = binding.soapoperation_style 
    52     namespace = binding.input.soapbody.namespace 
    53     if style == :rpc 
    54       paramstr = param2str(collect_rpcparameter(operation)) 
    55     else 
    56       paramstr = param2str(collect_documentparameter(operation)) 
    57     end 
    58     if paramstr.empty? 
    59       paramstr = '[]' 
    60     else 
    61       paramstr = "[\n" << paramstr.gsub(/^/, '    ') << "\n  ]" 
    62     end 
    63     return <<__EOD__ 
    64 [#{dq(name_as)}, #{dq(name)}, 
    65   #{paramstr}, 
    66   #{ndq(binding.soapaction)}, #{ndq(namespace)}, #{sym(style.id2name)} 
    67 ] 
    68 __EOD__ 
    6944  end 
    7045 
     
    10277  end 
    10378 
     79private 
     80 
     81  def dump_method(operation, binding) 
     82    name = safemethodname(operation.name.name) 
     83    name_as = operation.name.name 
     84    style = binding.soapoperation_style 
     85    namespace = binding.input.soapbody.namespace 
     86    if style == :rpc 
     87      paramstr = param2str(collect_rpcparameter(operation)) 
     88    else 
     89      paramstr = param2str(collect_documentparameter(operation)) 
     90    end 
     91    if paramstr.empty? 
     92      paramstr = '[]' 
     93    else 
     94      paramstr = "[\n" << paramstr.gsub(/^/, '    ') << "\n  ]" 
     95    end 
     96    return <<__EOD__ 
     97[#{dq(name_as)}, #{dq(name)}, 
     98  #{paramstr}, 
     99  #{ndq(binding.soapaction)}, #{ndq(namespace)}, #{sym(style.id2name)} 
     100] 
     101__EOD__ 
     102  end 
     103 
    104104  def rpcdefinedtype(part) 
    105105    if mapped = basetype_mapped_class(part.type) 
     
    108108      ['::' + basetype_mapped_class(definedtype.base).name] 
    109109    elsif definedtype = @elements[part.element] 
    110       ['::SOAP::SOAPStruct', part.element.namespace, part.element.name] 
     110      #['::SOAP::SOAPStruct', part.element.namespace, part.element.name] 
     111      ['nil', part.element.namespace, part.element.name] 
    111112    elsif definedtype = @complextypes[part.type] 
    112113      case definedtype.compoundtype 
    113       when :TYPE_STRUCT, :TYPE_MAP 
    114         ['::SOAP::SOAPStruct', part.type.namespace, part.type.name] 
     114      when :TYPE_STRUCT 
     115        type = create_class_name(part.type) 
     116        [type, part.type.namespace, part.type.name] 
     117      when :TYPE_MAP 
     118        [Hash.name, part.type.namespace, part.type.name] 
    115119      when :TYPE_ARRAY 
    116120        arytype = definedtype.find_arytype || XSD::AnyTypeName 
    117121        ns = arytype.namespace 
    118122        name = arytype.name.sub(/\[(?:,)*\]$/, '') 
    119         ['::SOAP::SOAPArray', ns, name] 
     123        type = create_class_name(XSD::QName.new(ns, name)) 
     124        [type + '[]', ns, name] 
    120125      else 
    121126        raise NotImplementedError.new("must not reach here") 
     
    147152    # ignore inline type definition. 
    148153    return if type.nil? 
     154    return if @types.include?(type) 
    149155    @types << type 
    150156    return unless @complextypes[type] 
  • trunk/test/wsdl/any/expectedDriver.rb

    r1445 r1515  
    1717    ["echo", "echo", 
    1818      [ 
    19         ["in", "echoitem", [::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]], 
    20         ["retval", "echoitem", [::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]] 
     19        ["in", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]], 
     20        ["retval", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]] 
    2121      ], 
    2222      "urn:example.com:echo", "urn:example.com:echo", :rpc 
  • trunk/test/wsdl/any/expectedService.rb

    r1445 r1515  
    1818    ["echo", "echo", 
    1919      [ 
    20         ["in", "echoitem", [::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]], 
    21         ["retval", "echoitem", [::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]] 
     20        ["in", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]], 
     21        ["retval", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]] 
    2222      ], 
    2323      "urn:example.com:echo", "urn:example.com:echo", :rpc 
  • trunk/test/wsdl/rpc/rpc.wsdl

    r1444 r1515  
    1313          <xsd:element name="family-name" type="xsd:string" /> 
    1414          <xsd:element name="given_name" type="xsd:string" /> 
     15          <xsd:element name="age" type="xsd:int" /> 
     16          <xsd:element name="link" type="txd:person" /> 
    1517        </xsd:all> 
    1618      </xsd:complexType> 
     
    3234      <output message="tns:echo_out"/> 
    3335    </operation> 
     36 
     37    <operation name="echo_err"> 
     38      <input message="tns:echo_in"/> 
     39      <output message="tns:echo_out"/> 
     40    </operation> 
    3441  </portType> 
    3542 
     
    3744    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> 
    3845    <operation name="echo"> 
     46      <soap:operation soapAction=""/> 
     47      <input> 
     48        <soap:body use="encoded" namespace="urn:rpc" 
     49            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     50      </input> 
     51      <output> 
     52        <soap:body use="encoded" namespace="urn:rpc" 
     53            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
     54      </output> 
     55    </operation> 
     56 
     57    <operation name="echo_err"> 
     58      <soap:operation soapAction=""/> 
    3959      <input> 
    4060        <soap:body use="encoded" namespace="urn:rpc" 
  • trunk/test/wsdl/rpc/test_rpc.rb

    r1444 r1515  
    1212  class Server < ::SOAP::RPC::StandaloneServer 
    1313    def on_init 
     14      self.generate_explicit_type = false 
    1415      add_rpc_method(self, 'echo', 'arg1', 'arg2') 
     16      add_rpc_method(self, 'echo_err', 'arg1', 'arg2') 
    1517    end 
    1618   
     19    DummyPerson = Struct.new("family-name".intern, :given_name) 
    1720    def echo(arg1, arg2) 
    18       arg1.family_name = arg2.family_name 
    19       arg1.given_name = arg2.given_name 
    20       arg1 
     21      case arg1.family_name 
     22      when 'normal' 
     23        arg1.family_name = arg2.family_name 
     24        arg1.given_name = arg2.given_name 
     25        arg1.age = arg2.age 
     26        arg1 
     27      when 'dummy' 
     28        DummyPerson.new("family-name", "given_name") 
     29      else 
     30        raise 
     31      end 
     32    end 
     33   
     34    ErrPerson = Struct.new(:given_name, :no_such_element) 
     35    def echo_err(arg1, arg2) 
     36      ErrPerson.new(58, Time.now) 
    2137    end 
    2238  end 
     
    7995    @client.wiredump_dev = STDOUT if $DEBUG 
    8096 
    81     ret = @client.echo(Person.new("Na", "Hi"), Person.new("Hi", "Na")) 
     97    ret = @client.echo(Person.new("normal", "", 12), Person.new("Hi", "Na", 21)) 
     98    assert_equal(Person, ret.class) 
    8299    assert_equal("Hi", ret.family_name) 
    83100    assert_equal("Na", ret.given_name) 
     101    assert_equal(21, ret.age) 
     102 
     103    ret = @client.echo(Person.new("dummy", "", 12), Person.new("Hi", "Na", 21)) 
     104    assert_equal(Person, ret.class) 
     105    assert_equal("family-name", ret.family_name) 
     106    assert_equal("given_name", ret.given_name) 
     107    assert_equal(nil, ret.age) 
     108 
     109    ret = @client.echo_err(Person.new("Na", "Hi"), Person.new("Hi", "Na")) 
     110    assert_equal(Person, ret.class) 
     111    assert_equal("58", ret.given_name) 
     112    assert_equal(nil, ret.family_name) 
     113    assert_equal(nil, ret.age) 
    84114  end 
    85115end 
  • trunk/test/wsdl/simpletype/rpc/expectedDriver.rb

    r1445 r1515  
    1818      [ 
    1919        ["in", "version", [::SOAP::SOAPString]], 
    20         ["retval", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
     20        ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
    2121      ], 
    2222      "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc 
     
    2424    ["echo_version_r", "echo_version_r", 
    2525      [ 
    26         ["in", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
     26        ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
    2727        ["retval", "version", [::SOAP::SOAPString]] 
    2828      ], 
  • trunk/test/wsdl/simpletype/rpc/expectedService.rb

    r1445 r1515  
    1919      [ 
    2020        ["in", "version", [::SOAP::SOAPString]], 
    21         ["retval", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
     21        ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
    2222      ], 
    2323      "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc 
     
    2525    ["echo_version_r", "echo_version_r", 
    2626      [ 
    27         ["in", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
     27        ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
    2828        ["retval", "version", [::SOAP::SOAPString]] 
    2929      ], 
  • trunk/test/wsdl/soap/wsdl2ruby/expectedDriver.rb

    r1445 r1515  
    1818      [ 
    1919        ["in", "version", [::SOAP::SOAPString]], 
    20         ["retval", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
     20        ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
    2121      ], 
    2222      "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc 
     
    2424    ["echo_version_r", "echo_version_r", 
    2525      [ 
    26         ["in", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
     26        ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
    2727        ["retval", "version", [::SOAP::SOAPString]] 
    2828      ], 
  • trunk/test/wsdl/soap/wsdl2ruby/expectedService.cgi

    r1445 r1515  
    1919      [ 
    2020        ["in", "version", [::SOAP::SOAPString]], 
    21         ["retval", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
     21        ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
    2222      ], 
    2323      "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc 
     
    2525    ["echo_version_r", "echo_version_r", 
    2626      [ 
    27         ["in", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
     27        ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
    2828        ["retval", "version", [::SOAP::SOAPString]] 
    2929      ], 
  • trunk/test/wsdl/soap/wsdl2ruby/expectedService.rb

    r1445 r1515  
    1919      [ 
    2020        ["in", "version", [::SOAP::SOAPString]], 
    21         ["retval", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
     21        ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 
    2222      ], 
    2323      "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc 
     
    2525    ["echo_version_r", "echo_version_r", 
    2626      [ 
    27         ["in", "version_struct", [::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
     27        ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 
    2828        ["retval", "version", [::SOAP::SOAPString]] 
    2929      ],