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

Changeset 1697

Show
Ignore:
Timestamp:
08/06/06 23:26:14 (2 years ago)
Author:
nahi
Message:

WSDLLiteralRegistry + generated classDef file caused Array mapping problem. fixes #232.

Files:

Legend:

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

    r1696 r1697  
    379379    schema_element = class_schema_variable(:schema_element, klass) 
    380380    return nil unless schema_element 
    381     schema_ns = schema_ns_definition(klass) 
    382     parse_schema_element_definition(schema_ns, schema_element) 
     381    parse_schema_element_definition(klass, schema_element) 
    383382  end 
    384383 
     
    432431  private 
    433432 
    434     def parse_schema_element_definition(schema_ns, schema_element) 
     433    def parse_schema_element_definition(klass, schema_element) 
     434      schema_ns = schema_ns_definition(klass) 
    435435      definition = SchemaDefinition.new 
    436436      if schema_element[0] == :choice 
     
    441441        varname, info = element 
    442442        class_name, name = info 
    443         as_array = false 
     443        as_array = klass.ancestors.include?(::Array) 
    444444        if /\[\]$/ =~ class_name 
    445445          class_name = class_name.sub(/\[\]$/, '') 
  • trunk/lib/soap/mapping/wsdlencodedregistry.rb

    r1696 r1697  
    269269        child = Mapping._soap2obj(value, self) 
    270270      end 
    271       vars[name] = child 
    272     end 
    273     if obj.is_a?(::Array) 
    274       vars.values.flatten.each do |item| 
    275         obj << item 
    276       end 
    277     else 
    278       Mapping.set_attributes(obj, vars) 
    279     end 
     271      if item and item.as_array? 
     272        (vars[name] ||= []) << child 
     273      else 
     274        vars[name] = child 
     275      end 
     276    end 
     277    Mapping.set_attributes(obj, vars) 
    280278  end 
    281279 
  • trunk/lib/soap/mapping/wsdlliteralregistry.rb

    r1696 r1697  
    433433    end 
    434434    if obj.is_a?(::Array) 
    435       vars.values.flatten.each do |item| 
    436         obj << item 
    437       end 
     435      obj.replace(vars.values.flatten) 
    438436    else 
    439437      Mapping.set_attributes(obj, vars)