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(/^@/, '').to_sym
      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