summaryrefslogtreecommitdiff
path: root/lib/soap/rpc
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 15:08:56 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 15:08:56 +0000
commit3edeb852fe27ae9d11596697ea74f9b583f69e8a (patch)
treeec583bf4781cefd0a19735386b456046b8993d70 /lib/soap/rpc
parent3a664c4b407c9273b90eaca48da83b8719eb5b1b (diff)
* lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/rpc')
-rw-r--r--lib/soap/rpc/driver.rb45
1 files changed, 20 insertions, 25 deletions
diff --git a/lib/soap/rpc/driver.rb b/lib/soap/rpc/driver.rb
index 028addc3eb..5fd755c51a 100644
--- a/lib/soap/rpc/driver.rb
+++ b/lib/soap/rpc/driver.rb
@@ -27,17 +27,13 @@ class Driver
class << self
def __attr_proxy(symbol, assignable = false)
name = symbol.to_s
- module_eval <<-EOD
- def #{name}
- @servant.#{name}
- end
- EOD
+ self.__send__(:define_method, name, proc {
+ @servant.__send__(name)
+ })
if assignable
- module_eval <<-EOD
- def #{name}=(rhs)
- @servant.#{name} = rhs
- end
- EOD
+ self.__send__(:define_method, name + '=', proc { |rhs|
+ @servant.__send__(name + '=', rhs)
+ })
end
end
end
@@ -292,28 +288,27 @@ private
end
def add_rpc_method_interface(name, param_def)
- param_names = []
- i = 0
+ param_count = 0
@proxy.operation[name].each_param_name(RPC::SOAPMethod::IN,
RPC::SOAPMethod::INOUT) do |param_name|
- i += 1
- param_names << "arg#{ i }"
+ param_count += 1
end
- callparam = (param_names.collect { |pname| ", " + pname }).join
- @host.instance_eval <<-EOS
- def #{ name }(#{ param_names.join(", ") })
- @servant.call(#{ name.dump }#{ callparam })
- end
- EOS
+ sclass = class << @host; self; end
+ sclass.__send__(:define_method, name, proc { |*arg|
+ unless arg.size == param_count
+ raise ArgumentError.new(
+ "wrong number of arguments (#{arg.size} for #{param_count})")
+ end
+ @servant.call(name, *arg)
+ })
@host.method(name)
end
def add_document_method_interface(name, paramname)
- @host.instance_eval <<-EOS
- def #{ name }(param)
- @servant.call(#{ name.dump }, param)
- end
- EOS
+ sclass = class << @host; self; end
+ sclass.__send__(:define_method, name, proc { |param|
+ @servant.call(name, param)
+ })
@host.method(name)
end