def obj2soap(obj, qname, obj_class = nil)
soap_obj = nil
if obj.is_a?(SOAPElement)
soap_obj = obj
elsif eledef = @definedelements[qname]
soap_obj = obj2elesoap(obj, eledef)
elsif type = @definedtypes[qname]
soap_obj = obj2typesoap(obj, type)
else
soap_obj = any2soap(obj, qname, obj_class)
end
return soap_obj if soap_obj
if @excn_handler_obj2soap
soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
Mapping.obj2soap(yield_obj, nil, nil, MAPPING_OPT)
}
return soap_obj if soap_obj
end
raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
end