Files

Class Index [+]

Quicksearch

SOAP::Mapping::Object

For anyType object: SOAP::Mapping::Object not ::Object

Public Class Methods

new() click to toggle source
    # File lib/soap/mapping/registry.rb, line 34
34:   def initialize
35:     @__xmlele_type = {}
36:     @__xmlele = []
37:     @__xmlattr = {}
38:   end

Public Instance Methods

[](qname) click to toggle source
    # 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
[]=(qname, value) click to toggle source
    # 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
__add_xmlele_value(qname, value) click to toggle source
    # 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
__xmlattr() click to toggle source
    # File lib/soap/mapping/registry.rb, line 45
45:   def __xmlattr
46:     @__xmlattr
47:   end
__xmlele() click to toggle source
    # File lib/soap/mapping/registry.rb, line 49
49:   def __xmlele
50:     @__xmlele
51:   end
inspect() click to toggle source
    # File lib/soap/mapping/registry.rb, line 40
40:   def inspect
41:     sprintf("#<%s:0x%x%s>", self.class.name, __id__,
42:       @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join)
43:   end
marshal_load(dumpobj) click to toggle source
     # File lib/soap/mapping/registry.rb, line 99
 99:   def marshal_load(dumpobj)
100:     __import(dumpobj)
101:   end

Private Instance Methods

__define_attr_accessor(qname) click to toggle source

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
__export() click to toggle source
     # 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
__import(dumpobj) click to toggle source
     # 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
__set_xmlele_value(key, org, value) click to toggle source
     # 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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.