module SOAP::Mapping::RegistrySupport

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/soap/mapping/registry.rb, line 174
def initialize
  super()
  @class_schema_definition = {}
  @class_elename_schema_definition = {}
  @elename_schema_definition = {}
  @type_schema_definition = {}
end

Public Instance Methods

add_attributes2soap(obj, ele) click to toggle source
# File lib/soap/mapping/registry.rb, line 230
def add_attributes2soap(obj, ele)
  if definition = Mapping.schema_definition_classdef(obj.class)
    add_definedattributes2soap(obj, ele, definition)
  elsif obj.respond_to?(:__xmlattr)
    obj.__xmlattr.each do |key, value|
      ele.extraattr[key] = value
    end
  end
end
add_definedattributes2soap(obj, ele, typedef) click to toggle source
# File lib/soap/mapping/registry.rb, line 240
def add_definedattributes2soap(obj, ele, typedef)
  if typedef.attributes
    typedef.attributes.each do |qname, param|
      value = get_xmlattr_value(obj, qname)
      ele.extraattr[qname] = value unless value.nil?
    end
  end
end
base2obj(value, klass) click to toggle source
# File lib/soap/mapping/registry.rb, line 273
def base2obj(value, klass)
  v = if value.respond_to?(:data)
        value.data
      elsif value.respond_to?(:text)
        value.text
      else
        nil
      end
  if value.is_a?(klass)
    v
  else
    klass.to_data(v)
  end
end
base2soap(obj, type, qualified = nil) click to toggle source
# File lib/soap/mapping/registry.rb, line 259
def base2soap(obj, type, qualified = nil)
  return SOAPNil.new if obj.nil?
  soap_obj = nil
  if type <= XSD::XSDString
    str = XSD::Charset.encoding_conv(obj.to_s, Mapping.external_ces,
      XSD::Charset.encoding)
    soap_obj = type.new(str)
  else
    soap_obj = type.new(obj)
  end
  soap_obj.qualified = qualified
  soap_obj
end
elename_schema_definition_from_class(klass) click to toggle source
# File lib/soap/mapping/registry.rb, line 202
def elename_schema_definition_from_class(klass)
  @class_elename_schema_definition[klass]
end
find_node_definition(node) click to toggle source
# File lib/soap/mapping/registry.rb, line 214
def find_node_definition(node)
  schema_definition_from_type(node.type) ||
    schema_definition_from_elename(node.elename) ||
    find_schema_definition(node.elename.name) ||
    find_schema_definition(node.type.name)
end
find_schema_definition(name) click to toggle source
# File lib/soap/mapping/registry.rb, line 221
def find_schema_definition(name)
  return nil unless name
  typestr = Mapping.safeconstname(name)
  obj_class = Mapping.class_from_name(typestr)
  if obj_class
    schema_definition_from_class(obj_class)
  end
end
get_xmlattr_value(obj, qname) click to toggle source
# File lib/soap/mapping/registry.rb, line 249
def get_xmlattr_value(obj, qname)
  attrname = 'xmlattr_' + qname.name
  value = Mapping.get_attribute(obj, attrname)
  if value.nil?
    attrname = Mapping.safemethodname('xmlattr_' + qname.name)
    value = Mapping.get_attribute(obj, attrname)
  end
  value
end
is_stubobj_elements_for_array(vars) click to toggle source
# File lib/soap/mapping/registry.rb, line 288
def is_stubobj_elements_for_array(vars)
  vars.keys.size == 1 and vars.values[0].is_a?(::Array)
end
register(definition) click to toggle source
# File lib/soap/mapping/registry.rb, line 182
def register(definition)
  obj_class = definition[:class]
  definition = Mapping.create_schema_definition(obj_class, definition)
  # give complexType definition a priority explicitly
  if !@class_schema_definition[obj_class] or definition.type
    @class_schema_definition[obj_class] = definition
  end
  if definition.elename and !definition.is_anonymous?
    @class_elename_schema_definition[obj_class] = definition
    @elename_schema_definition[definition.elename] = definition
  end
  if definition.type
    @type_schema_definition[definition.type] = definition
  end
end
schema_definition_from_class(klass) click to toggle source
# File lib/soap/mapping/registry.rb, line 198
def schema_definition_from_class(klass)
  @class_schema_definition[klass] || Mapping.schema_definition_classdef(klass)
end
schema_definition_from_elename(qname) click to toggle source
# File lib/soap/mapping/registry.rb, line 206
def schema_definition_from_elename(qname)
  @elename_schema_definition[qname]
end
schema_definition_from_type(type) click to toggle source
# File lib/soap/mapping/registry.rb, line 210
def schema_definition_from_type(type)
  @type_schema_definition[type]
end