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

Changeset 1921

Show
Ignore:
Timestamp:
08/25/07 00:52:30 (11 months ago)
Author:
nahi
Message:
Files:

Legend:

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

    r1908 r1921  
    335335      return base2soap(obj, type) 
    336336    end 
     337    cause = nil 
    337338    begin  
    338339      if definition = schema_definition_from_class(obj.class) 
     
    343344      return ret if ret 
    344345    rescue MappingError 
     346      cause = $! 
    345347    end 
    346348    if @excn_handler_obj2soap 
     
    350352      return ret if ret 
    351353    end 
    352     raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM."
     354    raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.", cause
    353355  end 
    354356 
     
    377379    conv, obj = @default_factory.soap2obj(nil, node, nil, self) 
    378380    return obj if conv 
     381    cause = nil 
    379382    if @excn_handler_soap2obj 
    380383      begin 
     
    383386          } 
    384387      rescue Exception 
    385       end 
    386     end 
    387     raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.") 
     388        cause = $! 
     389      end 
     390    end 
     391    raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.", cause) 
    388392  end 
    389393 
  • trunk/lib/soap/mapping/literalregistry.rb

    r1912 r1921  
    4949  # node should be a SOAPElement 
    5050  def soap2obj(node, obj_class = nil) 
     51    cause = nil 
    5152    begin 
    5253      return any2obj(node, obj_class) 
    5354    rescue MappingError 
     55      cause = $! 
    5456    end 
    5557    if @excn_handler_soap2obj 
     
    6163      end 
    6264    end 
    63     raise MappingError.new("cannot map #{node.elename.name}/#{node.type.name} to Ruby object"
     65    raise MappingError.new("cannot map #{node.elename.name}/#{node.type.name} to Ruby object", cause
    6466  end 
    6567 
  • trunk/lib/soap/mapping/wsdlencodedregistry.rb

    r1895 r1921  
    5656  # map anything for now: must refer WSDL while mapping.  [ToDo] 
    5757  def soap2obj(node, obj_class = nil) 
     58    cause = nil 
    5859    begin 
    5960      unless obj_class 
     
    6364      return Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class) 
    6465    rescue MappingError 
     66      cause = $! 
    6567    end 
    6668    if @excn_handler_soap2obj 
     
    7274      end 
    7375    end 
    74     raise MappingError.new("cannot map #{node.type.name} to Ruby object"
     76    raise MappingError.new("cannot map #{node.type.name} to Ruby object", cause
    7577  end 
    7678 
  • trunk/lib/soap/mapping/wsdlliteralregistry.rb

    r1895 r1921  
    5353  # node should be a SOAPElement 
    5454  def soap2obj(node, obj_class = nil) 
     55    cause = nil 
    5556    begin 
    5657      return any2obj(node, obj_class) 
    5758    rescue MappingError 
     59      cause = $! 
    5860    end 
    5961    if @excn_handler_soap2obj 
     
    6668    end 
    6769    if node.respond_to?(:type) 
    68       raise MappingError.new("cannot map #{node.type.name} to Ruby object"
    69     else 
    70       raise MappingError.new("cannot map #{node.elename.name} to Ruby object"
     70      raise MappingError.new("cannot map #{node.type.name} to Ruby object", cause
     71    else 
     72      raise MappingError.new("cannot map #{node.elename.name} to Ruby object", cause
    7173    end 
    7274  end 
  • trunk/lib/soap/soap.rb

    r1898 r1921  
    99require 'xsd/qname' 
    1010require 'xsd/charset' 
     11require 'soap/nestedexception' 
    1112 
    1213 
     
    6263MediaType = 'text/xml' 
    6364 
    64 class Error < StandardError; end 
     65class Error < StandardError; include NestedException; end 
    6566 
    6667class StreamError < Error; end 
  • trunk/lib/wsdl/wsdl.rb

    r1824 r1921  
    88 
    99require 'xsd/qname' 
     10require 'soap/nestedexception' 
    1011 
    1112 
     
    1819SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/' 
    1920 
    20 class Error < StandardError; end 
     21class Error < StandardError; include ::SOAP::NestedException; end 
    2122 
    2223 
  • trunk/lib/xsd/datatypes.rb

    r1919 r1921  
    99require 'xsd/qname' 
    1010require 'xsd/charset' 
     11require 'soap/nestedexception' 
    1112require 'uri' 
    1213 
     
    7879AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral) 
    7980 
    80 class Error < StandardError; end 
     81class Error < StandardError; include ::SOAP::NestedException; end 
    8182class ValueSpaceError < Error; end 
    8283 
     
    344345        return narrow32bit(Float(str)) 
    345346      rescue ArgumentError 
    346         raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'."
     347        raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!
    347348      end 
    348349    end 
     
    410411            return Float(str + '0') 
    411412          rescue ArgumentError 
    412             raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'."
     413            raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!
    413414          end 
    414415        else 
    415           raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'."
     416          raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!
    416417        end 
    417418      end 
     
    951952      URI.parse(value.to_s.strip) 
    952953    rescue URI::InvalidURIError 
    953       raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'."
     954      raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.", $!
    954955    end 
    955956  end 
     
    12101211      data = Integer(str) 
    12111212    rescue ArgumentError 
    1212       raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'."
     1213      raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!
    12131214    end 
    12141215    unless validate(data) 
  • trunk/test/soap/test_mapping.rb

    r1873 r1921  
    6969  end 
    7070 
     71  def test_nestedexception 
     72    ele = Thread.new {} 
     73    obj = [ele] 
     74    begin 
     75      SOAP::Marshal.dump(obj) 
     76    rescue ::SOAP::Mapping::MappingError => e 
     77      assert(e.backtrace.find { |line| /\[NESTED\]/ =~ line }) 
     78    end 
     79  end 
     80 
    7181  def test_date 
    7282    targets = [