In: |
soap/mapping/factory.rb
|
Parent: | Object |
MARSHAL_TAG | = | { String => ['"', 1], Regexp => ['/', 2], Array => ['[', 1], Hash => ['{', 1] |
# 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.
# File soap/mapping/factory.rb, line 32 def create_empty_object(klass) klass.allocate end
It breaks Thread.current[:SOAPMarshalDataKey].
# 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].
# File soap/mapping/factory.rb, line 86 def mark_unmarshalled_obj(node, obj) Thread.current[:SOAPMarshalDataKey][node.id] = obj end
# File soap/mapping/factory.rb, line 20 def obj2soap(soap_class, obj, info, map) raise NotImplementError.new # return soap_obj end
# 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
# 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