Changeset 1921
- Timestamp:
- 08/25/07 00:52:30 (11 months ago)
- Files:
-
- trunk/lib/soap/mapping/encodedregistry.rb (modified) (5 diffs)
- trunk/lib/soap/mapping/literalregistry.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/wsdlencodedregistry.rb (modified) (3 diffs)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (2 diffs)
- trunk/lib/soap/nestedexception.rb (added)
- trunk/lib/soap/soap.rb (modified) (2 diffs)
- trunk/lib/wsdl/wsdl.rb (modified) (2 diffs)
- trunk/lib/xsd/datatypes.rb (modified) (6 diffs)
- trunk/test/soap/test_mapping.rb (modified) (1 diff)
- trunk/test/soap/test_nestedexception.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/encodedregistry.rb
r1908 r1921 335 335 return base2soap(obj, type) 336 336 end 337 cause = nil 337 338 begin 338 339 if definition = schema_definition_from_class(obj.class) … … 343 344 return ret if ret 344 345 rescue MappingError 346 cause = $! 345 347 end 346 348 if @excn_handler_obj2soap … … 350 352 return ret if ret 351 353 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) 353 355 end 354 356 … … 377 379 conv, obj = @default_factory.soap2obj(nil, node, nil, self) 378 380 return obj if conv 381 cause = nil 379 382 if @excn_handler_soap2obj 380 383 begin … … 383 386 } 384 387 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) 388 392 end 389 393 trunk/lib/soap/mapping/literalregistry.rb
r1912 r1921 49 49 # node should be a SOAPElement 50 50 def soap2obj(node, obj_class = nil) 51 cause = nil 51 52 begin 52 53 return any2obj(node, obj_class) 53 54 rescue MappingError 55 cause = $! 54 56 end 55 57 if @excn_handler_soap2obj … … 61 63 end 62 64 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) 64 66 end 65 67 trunk/lib/soap/mapping/wsdlencodedregistry.rb
r1895 r1921 56 56 # map anything for now: must refer WSDL while mapping. [ToDo] 57 57 def soap2obj(node, obj_class = nil) 58 cause = nil 58 59 begin 59 60 unless obj_class … … 63 64 return Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class) 64 65 rescue MappingError 66 cause = $! 65 67 end 66 68 if @excn_handler_soap2obj … … 72 74 end 73 75 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) 75 77 end 76 78 trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1895 r1921 53 53 # node should be a SOAPElement 54 54 def soap2obj(node, obj_class = nil) 55 cause = nil 55 56 begin 56 57 return any2obj(node, obj_class) 57 58 rescue MappingError 59 cause = $! 58 60 end 59 61 if @excn_handler_soap2obj … … 66 68 end 67 69 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) 71 73 end 72 74 end trunk/lib/soap/soap.rb
r1898 r1921 9 9 require 'xsd/qname' 10 10 require 'xsd/charset' 11 require 'soap/nestedexception' 11 12 12 13 … … 62 63 MediaType = 'text/xml' 63 64 64 class Error < StandardError; end65 class Error < StandardError; include NestedException; end 65 66 66 67 class StreamError < Error; end trunk/lib/wsdl/wsdl.rb
r1824 r1921 8 8 9 9 require 'xsd/qname' 10 require 'soap/nestedexception' 10 11 11 12 … … 18 19 SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/' 19 20 20 class Error < StandardError; end21 class Error < StandardError; include ::SOAP::NestedException; end 21 22 22 23 trunk/lib/xsd/datatypes.rb
r1919 r1921 9 9 require 'xsd/qname' 10 10 require 'xsd/charset' 11 require 'soap/nestedexception' 11 12 require 'uri' 12 13 … … 78 79 AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral) 79 80 80 class Error < StandardError; end81 class Error < StandardError; include ::SOAP::NestedException; end 81 82 class ValueSpaceError < Error; end 82 83 … … 344 345 return narrow32bit(Float(str)) 345 346 rescue ArgumentError 346 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'." )347 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!) 347 348 end 348 349 end … … 410 411 return Float(str + '0') 411 412 rescue ArgumentError 412 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'." )413 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!) 413 414 end 414 415 else 415 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'." )416 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!) 416 417 end 417 418 end … … 951 952 URI.parse(value.to_s.strip) 952 953 rescue URI::InvalidURIError 953 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'." )954 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.", $!) 954 955 end 955 956 end … … 1210 1211 data = Integer(str) 1211 1212 rescue ArgumentError 1212 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'." )1213 raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!) 1213 1214 end 1214 1215 unless validate(data) trunk/test/soap/test_mapping.rb
r1873 r1921 69 69 end 70 70 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 71 81 def test_date 72 82 targets = [