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

Changeset 1969

Show
Ignore:
Timestamp:
09/17/07 11:16:42 (8 months ago)
Author:
nahi
Message:
  • wsdl2ruby.rb generates incomplete encoded Array mapping registry for base64Binary[]. closes #428.
Files:

Legend:

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

    r1827 r1969  
    9494  end 
    9595 
    96   def find_arytype 
     96  def find_soapenc_arytype 
    9797    unless compoundtype == :TYPE_ARRAY 
    9898      raise RuntimeError.new("Assert: not for array") 
     
    106106        end 
    107107      end 
     108    end 
     109  end 
     110 
     111  def find_arytype 
     112    unless compoundtype == :TYPE_ARRAY 
     113      raise RuntimeError.new("Assert: not for array") 
     114    end 
     115    if arytype = find_soapenc_arytype 
     116      return arytype 
    108117    end 
    109118    if map_as_array? 
  • trunk/lib/wsdl/soap/encodedMappingRegistryCreator.rb

    r1958 r1969  
    6767      dump_struct_typemap(mpath, qname, typedef) 
    6868    when :TYPE_ARRAY 
    69       dump_array_typemap(mpath, qname, typedef
     69      dump_array_typemap(mpath, qname, typedef, :encoded => true
    7070    when :TYPE_SIMPLE 
    7171      dump_simple_typemap(mpath, qname, typedef) 
  • trunk/lib/wsdl/soap/mappingRegistryCreatorSupport.rb

    r1958 r1969  
    2525  end 
    2626 
    27   def dump_array_typemap(mpath, qname, typedef
     27  def dump_array_typemap(mpath, qname, typedef, opt = {}
    2828    dump_with_inner { 
    29       dump_literal_array_typemap(mpath, qname, typedef) 
     29      if typedef.find_soapenc_arytype 
     30        if opt[:encoded] 
     31          dump_encoded_array_typemap(mpath, qname, typedef) 
     32        end 
     33      else 
     34        dump_literal_array_typemap(mpath, qname, typedef) 
     35      end 
    3036    } 
    3137  end 
     
    318324      parse_elements(typedef.elements, qname.namespace, var[:class], nil) 
    319325    if parsed_element.empty? 
    320       parsed_element = [create_soapenc_array_element_definition(typedef, mpath)] 
     326      parsed_element = [create_array_element_definition(typedef, mpath)] 
    321327    end 
    322328    var[:schema_element] = dump_schema_element_definition(parsed_element, 2) 
     
    325331  end 
    326332 
    327   def create_soapenc_array_element_definition(typedef, mpath) 
     333  def dump_encoded_array_typemap(mpath, qname, typedef) 
     334    arytype = typedef.find_arytype || XSD::AnyTypeName 
     335    type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, '')) 
     336    return <<__EOD__ 
     337#{@varname}.set( 
     338  #{mapped_class_name(qname, mpath)}, 
     339  ::SOAP::SOAPArray, 
     340  ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 
     341  { :type => #{dqname(type)} } 
     342
     343__EOD__ 
     344  end 
     345 
     346  # used when "soapenc:arrayType" definition 
     347  def create_array_element_definition(typedef, mpath) 
    328348    child_type = typedef.child_type 
    329349    child_element = typedef.find_aryelement 
  • trunk/test/wsdl/raa/expectedMappingRegistry.rb

    r1958 r1969  
    5656  ) 
    5757 
    58   EncodedRegistry.register( 
    59     :class => WSDL::RAA::InfoArray, 
    60     :schema_type => XSD::QName.new(NsC_002, "InfoArray"), 
    61     :schema_element => [ 
    62       ["item", ["WSDL::RAA::Info", XSD::QName.new(nil, "item")], [0, nil]] 
    63     ] 
     58  EncodedRegistry.set( 
     59    WSDL::RAA::InfoArray, 
     60    ::SOAP::SOAPArray, 
     61    ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 
     62    { :type => XSD::QName.new(NsC_002, "Info") } 
    6463  ) 
    6564 
    66   EncodedRegistry.register( 
    67     :class => WSDL::RAA::StringArray, 
    68     :schema_type => XSD::QName.new(NsC_002, "StringArray"), 
    69     :schema_element => [ 
    70       ["item", ["String", XSD::QName.new(nil, "item")], [0, nil]] 
    71     ] 
     65  EncodedRegistry.set( 
     66    WSDL::RAA::StringArray, 
     67    ::SOAP::SOAPArray, 
     68    ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 
     69    { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") } 
    7270  ) 
    7371 
     
    123121  ) 
    124122 
    125   LiteralRegistry.register( 
    126     :class => WSDL::RAA::InfoArray, 
    127     :schema_type => XSD::QName.new(NsC_002, "InfoArray"), 
    128     :schema_element => [ 
    129       ["item", ["WSDL::RAA::Info", XSD::QName.new(nil, "item")], [0, nil]] 
    130     ] 
    131   ) 
    132  
    133   LiteralRegistry.register( 
    134     :class => WSDL::RAA::StringArray, 
    135     :schema_type => XSD::QName.new(NsC_002, "StringArray"), 
    136     :schema_element => [ 
    137       ["item", ["String", XSD::QName.new(nil, "item")], [0, nil]] 
    138     ] 
    139   ) 
    140123end 
    141124