class SOAP::Mapping::Factory
Public Class Methods
new()
click to toggle source
# File lib/soap/mapping/factory.rb, line 16 def initialize # nothing to do end
Public Instance Methods
obj2soap(soap_class, obj, info, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 20 def obj2soap(soap_class, obj, info, map) raise NotImplementError.new # return soap_obj end
setiv2obj(obj, node, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 30 def setiv2obj(obj, node, map) return if node.nil? if obj.is_a?(Array) setiv2ary(obj, node, map) else setiv2struct(obj, node, map) end end
setiv2soap(node, obj, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 39 def setiv2soap(node, obj, map) if obj.class.class_variables.include?('@@schema_element') setdefinediv2soap(node, obj, map) else # should we sort instance_variables? how? obj.instance_variables.each do |var| name = var.to_s.sub(/^@/, '') elename = Mapping.name2elename(name) node.add(elename, Mapping._obj2soap(obj.instance_variable_get(var), map)) end end end
soap2obj(obj_class, node, info, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 25 def soap2obj(obj_class, node, info, map) raise NotImplementError.new # return convert_succeeded_or_not, obj end
Private Instance Methods
anonymous_class?(obj)
click to toggle source
# File lib/soap/mapping/factory.rb, line 91 def anonymous_class?(obj) name = obj.class.name name.nil? or name.empty? # 1.8 returns "" end
setdefinediv2soap(ele, obj, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 55 def setdefinediv2soap(ele, obj, map) definition = Mapping.schema_definition_classdef(obj.class) definition.elements.each do |eledef| child = Mapping.get_attribute(obj, eledef.varname) # extract method if child.nil? value = SOAPNil.new elsif child.is_a?(XSD::NSDBase) value = child else klass = Mapping.class_from_name(eledef.type) if klass && klass.include?(::SOAP::SOAPBasetype) value = klass.new(child) else # should check klass matches an actual object? value = Mapping._obj2soap(child, map) end end ele.add(eledef.elename.name, value) end end
setiv2ary(obj, node, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 77 def setiv2ary(obj, node, map) node.each do |name, value| Array.instance_method(:<<).bind(obj).call(Mapping._soap2obj(value, map)) end end
setiv2struct(obj, node, map)
click to toggle source
# File lib/soap/mapping/factory.rb, line 83 def setiv2struct(obj, node, map) vars = {} node.each do |name, value| vars[Mapping.elename2name(name)] = Mapping._soap2obj(value, map) end Mapping.set_attributes(obj, vars) end