For anyType object: SOAP::Mapping::Object not ::Object
# File lib/soap/mapping/registry.rb, line 53 53: def [](qname) 54: qname = Mapping.to_qname(qname) 55: @__xmlele.each do |k, v| 56: return v if k == qname 57: end 58: # fallback 59: @__xmlele.each do |k, v| 60: return v if k.name == qname.name 61: end 62: nil 63: end
# File lib/soap/mapping/registry.rb, line 65 65: def []=(qname, value) 66: qname = Mapping.to_qname(qname) 67: found = false 68: @__xmlele.each do |pair| 69: if pair[0] == qname 70: found = true 71: pair[1] = value 72: end 73: end 74: unless found 75: __define_attr_accessor(qname) 76: @__xmlele << [qname, value] 77: end 78: @__xmlele_type[qname] = :single 79: end
# File lib/soap/mapping/registry.rb, line 81 81: def __add_xmlele_value(qname, value) 82: found = false 83: @__xmlele.map! do |k, v| 84: if k == qname 85: found = true 86: [k, __set_xmlele_value(k, v, value)] 87: else 88: [k, v] 89: end 90: end 91: unless found 92: __define_attr_accessor(qname) 93: @__xmlele << [qname, value] 94: @__xmlele_type[qname] = :single 95: end 96: value 97: end
# File lib/soap/mapping/registry.rb, line 45 45: def __xmlattr 46: @__xmlattr 47: end
# File lib/soap/mapping/registry.rb, line 49 49: def __xmlele 50: @__xmlele 51: end
Mapping.define_attr_accessor calls define_method with proc and it exhausts much memory for each singleton Object. just instance_eval instead of it.
# File lib/soap/mapping/registry.rb, line 107 107: def __define_attr_accessor(qname) 108: # untaint depends GenSupport.safemethodname 109: name = Mapping.safemethodname(qname.name).untaint 110: # untaint depends on QName#dump 111: qnamedump = qname.dump.untaint 112: singleton = false 113: unless self.respond_to?(name) 114: singleton = true 115: instance_eval def #{name} self[#{qnamedump}] end 116: end 117: unless self.respond_to?(name + "=") 118: singleton = true 119: instance_eval def #{name}=(value) self[#{qnamedump}] = value end 120: end 121: if singleton && !self.respond_to?(:marshal_dump) 122: instance_eval def marshal_dump __export end 123: end 124: end
# File lib/soap/mapping/registry.rb, line 151 151: def __export 152: dumpobj = ::SOAP::Mapping::Object.new 153: dumpobj.__xmlele.replace(@__xmlele) 154: dumpobj.__xmlattr.replace(@__xmlattr) 155: dumpobj 156: end
# File lib/soap/mapping/registry.rb, line 158 158: def __import(dumpobj) 159: @__xmlele_type = {} 160: @__xmlele = [] 161: @__xmlattr = {} 162: dumpobj.__xmlele.each do |qname, value| 163: __add_xmlele_value(qname, value) 164: end 165: @__xmlattr.replace(dumpobj.__xmlattr) 166: end
# File lib/soap/mapping/registry.rb, line 138 138: def __set_xmlele_value(key, org, value) 139: case @__xmlele_type[key] 140: when :multi 141: org << value 142: org 143: when :single 144: @__xmlele_type[key] = :multi 145: [org, value] 146: else 147: raise RuntimeError.new("unknown type") 148: end 149: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.