Changeset 1533
- Timestamp:
- 05/05/05 11:12:03 (4 years ago)
- Files:
-
- trunk/lib/soap/baseData.rb (modified) (1 diff)
- trunk/lib/soap/mapping/mapping.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/registry.rb (modified) (1 diff)
- trunk/lib/soap/rpc/driver.rb (modified) (2 diffs)
- trunk/lib/soap/wsdlDriver.rb (modified) (3 diffs)
- trunk/lib/wsdl/soap/driverCreator.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/baseData.rb
r1520 r1533 659 659 methodname = safe_accessor_name(methodname) 660 660 end 661 sclass = class << self; self; end 662 sclass.__send__(:define_method, methodname, proc { 661 Mapping.define_singleton_method(self, methodname) do 663 662 @data[@array.index(name)] 664 })665 sclass.__send__(:define_method, methodname + '=', proc {|value|663 end 664 Mapping.define_singleton_method(self, methodname + '=') do |value| 666 665 @data[@array.index(name)] = value 667 })666 end 668 667 end 669 668 trunk/lib/soap/mapping/mapping.rb
r1526 r1533 250 250 else 251 251 XSD::QName.new(namespace, name) 252 end 253 end 254 255 def self.define_singleton_method(obj, name, &block) 256 if RUBY_VERSION >= "1.7.0" 257 sclass = (class << obj; self; end) 258 sclass.__send__(:define_method, name, &block) 259 else 260 obj.instance_eval { 261 (@__method_block ||= {})[name] = block 262 } 263 obj.instance_eval <<-EOS 264 def #{name}(*arg) 265 @__method_block[#{name.dump}].call(*arg) 266 end 267 EOS 252 268 end 253 269 end … … 293 309 294 310 def self.define_attr_accessor(obj, name, getterproc, setterproc = nil) 295 sclass = class << obj; self; end 296 sclass.__send__(:define_method, name, getterproc) 297 sclass.__send__(:define_method, name + '=', setterproc) if setterproc 311 define_singleton_method(obj, name, &getterproc) 312 define_singleton_method(obj, name + '=', &setterproc) if setterproc 298 313 end 299 314 trunk/lib/soap/mapping/registry.rb
r1526 r1533 159 159 end 160 160 end 161 ancestors = klass.ancestors[1..-3] # except itself, Object and Kernel 161 ancestors = klass.ancestors 162 ancestors.delete(klass) 163 ancestors.delete(::Object) 164 ancestors.delete(::Kernel) 162 165 ancestors.each do |klass| 163 166 if map = @obj2soap[klass] trunk/lib/soap/rpc/driver.rb
r1520 r1533 205 205 206 206 def add_method_interface(name, param_count) 207 sclass = class << self; self; end 208 sclass.__send__(:define_method, name, proc { |*arg| 207 ::SOAP::Mapping.define_singleton_method(self, name) do |*arg| 209 208 unless arg.size == param_count 210 209 raise ArgumentError.new( … … 212 211 end 213 212 call(name, *arg) 214 })213 end 215 214 self.method(name) 216 215 end trunk/lib/soap/wsdlDriver.rb
r1520 r1533 108 108 end 109 109 if orgname != name and orgname.capitalize == name.capitalize 110 sclass = class << drv; self; end 111 sclass.__send__(:define_method, orgname, proc { |*arg| 110 ::SOAP::Mapping.define_singleton_method(drv, orgname) do |*arg| 112 111 __send__(name, *arg) 113 })112 end 114 113 end 115 114 end … … 506 505 507 506 def add_rpc_method_interface(name, parts_names) 508 sclass = class << @host; self; end 509 sclass.__send__(:define_method, name, proc { |*arg| 507 ::SOAP::Mapping.define_singleton_method(@host, name) do |*arg| 510 508 unless arg.size == parts_names.size 511 509 raise ArgumentError.new( … … 513 511 end 514 512 @servant.rpc_call(name, *arg) 515 })513 end 516 514 @host.method(name) 517 515 end 518 516 519 517 def add_document_method_interface(name, parts_names) 520 sclass = class << @host; self; end 521 sclass.__send__(:define_method, name, proc { |h, b| 518 ::SOAP::Mapping.define_singleton_method(@host, name) do |*arg| 522 519 @servant.document_send(name, h, b) 523 })520 end 524 521 @host.method(name) 525 522 end trunk/lib/wsdl/soap/driverCreator.rb
r1520 r1533 80 80 end 81 81 if name_as != name and name_as.capitalize == name.capitalize 82 sclass = class << self; self; end 83 sclass.__send__(:define_method, name_as, proc { |*arg| 82 ::SOAP::Mapping.define_singleton_method(self, name_as) do |*arg| 84 83 __send__(name, *arg) 85 })84 end 86 85 end 87 86 end