def soap2obj(node, obj_class = nil)
cause = nil
begin
unless obj_class
typestr = Mapping.safeconstname(node.elename.name)
obj_class = Mapping.class_from_name(typestr)
end
return Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class)
rescue MappingError
cause = $!
end
if @excn_handler_soap2obj
begin
return @excn_handler_soap2obj.call(node) { |yield_node|
Mapping._soap2obj(yield_node, self)
}
rescue Exception
end
end
raise MappingError.new("cannot map #{node.type.name} to Ruby object", cause)
end