SOAP::Mapping::Factory (Class)

In: soap/mapping/factory.rb
Parent: Object

Constants

MARSHAL_TAG = { String => ['"', 1], Regexp => ['/', 2], Array => ['[', 1], Hash => ['{', 1]

Included Modules

TraverseSupport

Public Class methods

[Source]

# File soap/mapping/factory.rb, line 16
  def initialize
    # nothing to do

  end

Public Instance methods

[Source]

# File soap/mapping/factory.rb, line 42
    def create_empty_object(klass)
      if klass <= Struct
        name = klass.name
        return ::Marshal.load(sprintf("\004\006S:%c%s\000", name.length + 5, name))
      end
      if MARSHAL_TAG.has_key?(klass)
        tag, terminate = MARSHAL_TAG[klass]
        return ::Marshal.load(sprintf("\004\006%s%s", tag, "\000" * terminate))
      end
      MARSHAL_TAG.each do |k, v|
        if klass < k
          name = klass.name
          tag, terminate = v
          return ::Marshal.load(sprintf("\004\006C:%c%s%s%s", name.length + 5, name, tag, "\000" * terminate))
        end
      end
      name = klass.name
      ::Marshal.load(sprintf("\004\006o:%c%s\000", name.length + 5, name))
    end

ruby/1.7 or later.

[Source]

# File soap/mapping/factory.rb, line 32
    def create_empty_object(klass)
      klass.allocate
    end

It breaks Thread.current[:SOAPMarshalDataKey].

[Source]

# File soap/mapping/factory.rb, line 81
  def mark_marshalled_obj(obj, soap_obj)
    Thread.current[:SOAPMarshalDataKey][obj.__id__] = soap_obj
  end

It breaks Thread.current[:SOAPMarshalDataKey].

[Source]

# File soap/mapping/factory.rb, line 86
  def mark_unmarshalled_obj(node, obj)
    Thread.current[:SOAPMarshalDataKey][node.id] = obj
  end

[Source]

# File soap/mapping/factory.rb, line 20
  def obj2soap(soap_class, obj, info, map)
    raise NotImplementError.new
    # return soap_obj

  end

[Source]

# File soap/mapping/factory.rb, line 63
  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

[Source]

# File soap/mapping/factory.rb, line 72
  def setiv2soap(node, obj, map)
    obj.instance_variables.each do |var|
      name = var.sub(/^@/, '')
      node.add(Mapping.name2elename(name),
        Mapping._obj2soap(obj.instance_eval(var), map))
    end
  end

[Source]

# File soap/mapping/factory.rb, line 25
  def soap2obj(obj_class, node, info, map)
    raise NotImplementError.new
    # return convert_succeeded_or_not, obj

  end

[Validate]