summaryrefslogtreecommitdiff
path: root/lib/wsdl/soap/driverCreator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wsdl/soap/driverCreator.rb')
-rw-r--r--lib/wsdl/soap/driverCreator.rb22
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/wsdl/soap/driverCreator.rb b/lib/wsdl/soap/driverCreator.rb
index b752ee336d..dd504210f1 100644
--- a/lib/wsdl/soap/driverCreator.rb
+++ b/lib/wsdl/soap/driverCreator.rb
@@ -1,5 +1,5 @@
# WSDL4R - Creating driver code from WSDL.
-# Copyright (C) 2002, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+# Copyright (C) 2002, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
# redistribute it and/or modify it under the same terms of Ruby's license;
@@ -46,16 +46,17 @@ private
methoddef, types = MethodDefCreator.new(@definitions).dump(name)
mr_creator = MappingRegistryCreator.new(@definitions)
binding = @definitions.bindings.find { |item| item.type == name }
- addresses = @definitions.porttype(name).locations
+ return '' unless binding.soapbinding # not a SOAP binding
+ address = @definitions.porttype(name).locations[0]
- c = ::XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
+ c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
c.def_require("soap/rpc/driver")
c.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
- c.def_const("DefaultEndpointUrl", addresses[0].dump)
+ c.def_const("DefaultEndpointUrl", ndq(address))
c.def_code(mr_creator.dump(types))
c.def_code <<-EOD
Methods = [
-#{ methoddef.gsub(/^/, " ") }
+#{methoddef.gsub(/^/, " ")}
]
EOD
c.def_method("initialize", "endpoint_url = nil") do
@@ -69,14 +70,19 @@ Methods = [
c.def_privatemethod("init_methods") do
<<-EOD
Methods.each do |name_as, name, params, soapaction, namespace, style|
- qname = ::XSD::QName.new(namespace, name_as)
+ qname = XSD::QName.new(namespace, name_as)
if style == :document
- @proxy.add_document_method(qname, soapaction, name, params)
- add_document_method_interface(name, name_as)
+ @proxy.add_document_method(soapaction, name, params)
+ add_document_method_interface(name, params)
else
@proxy.add_rpc_method(qname, soapaction, name, params)
add_rpc_method_interface(name, params)
end
+ if name_as != name and name_as.capitalize == name.capitalize
+ ::SOAP::Mapping.define_singleton_method(self, name_as) do |*arg|
+ __send__(name, *arg)
+ end
+ end
end
EOD
end