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

Changeset 1908

Show
Ignore:
Timestamp:
07/31/07 22:12:18 (1 year ago)
Author:
nahi
Message:
  • avoid NoMethodError? when passing SOAPArray to LiteralRegistry?. It's caused when a servant raised an exception in literal service. Thanks to Emil for contributing test case for it. closes #393.
Files:

Legend:

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

    r1892 r1908  
    107107end 
    108108 
     109# marker for compound types which have named accessor 
     110module SOAPNameAccessible 
     111end 
     112 
    109113 
    110114### 
     
    509513# 
    510514class SOAPStruct < XSD::NSDBase 
     515  include Enumerable 
    511516  include SOAPCompoundtype 
    512   include Enumerable 
     517  include SOAPNameAccessible 
    513518 
    514519public 
     
    627632  include Enumerable 
    628633  include SOAPCompoundtype 
     634  include SOAPNameAccessible 
    629635 
    630636  attr_accessor :type 
     
    694700 
    695701  def to_obj 
    696     if members.empty? 
     702    if !have_member 
    697703      @text 
    698704    else 
  • trunk/lib/soap/mapping/encodedregistry.rb

    r1866 r1908  
    325325  def _obj2soap(obj, type_qname = nil) 
    326326    ret = nil 
    327     if obj.is_a?(SOAPStruct) or obj.is_a?(SOAPArray
     327    if obj.is_a?(SOAPCompoundtype
    328328      obj.replace do |ele| 
    329329        Mapping._obj2soap(ele, self) 
     
    366366      klass = definition.class_for if definition 
    367367    end 
    368     if definition and node.is_a?(::SOAP::SOAPStruct
     368    if definition and node.is_a?(::SOAP::SOAPNameAccessible
    369369      return elesoap2stubobj(node, klass, definition) 
    370370    end 
  • trunk/lib/soap/mapping/literalregistry.rb

    r1907 r1908  
    227227      if definition 
    228228        return elesoap2stubobj(node, obj_class, definition) 
    229       else 
     229      elsif node.is_a?(::SOAP::SOAPNameAccessible) 
    230230        return elesoap2plainobj(node) 
    231231      end 
     
    250250  def elesoap2plainobj(node) 
    251251    obj = nil 
    252     if node.members.empty? 
     252    if !node.have_member 
    253253      obj = base2obj(node, ::SOAP::SOAPString) 
    254254    else 
  • trunk/lib/soap/rpc/router.rb

    r1875 r1908  
    477477    def request_rpc(body, mapping_registry, literal_mapping_registry, opt) 
    478478      request = body.request 
    479       unless request.is_a?(SOAPStruct
     479      unless request.is_a?(SOAPNameAccessible
    480480        if request.is_a?(SOAPNil) 
    481481          # SOAP::Lite/0.69 seems to send xsi:nil="true" element as a request.