Class WSDL::SOAP::DriverCreator
In: lib/wsdl/soap/driverCreator.rb
Parent: Object

Methods

dump   dump_porttype   new  

Included Modules

ClassDefCreatorSupport

Attributes

definitions  [R] 

Public Class methods

[Source]

    # File lib/wsdl/soap/driverCreator.rb, line 25
25:   def initialize(definitions)
26:     @definitions = definitions
27:   end

Public Instance methods

[Source]

    # File lib/wsdl/soap/driverCreator.rb, line 29
29:   def dump(porttype = nil)
30:     if porttype.nil?
31:       result = ""
32:       @definitions.porttypes.each do |type|
33:         result << dump_porttype(type.name)
34:         result << "\n"
35:       end
36:     else
37:       result = dump_porttype(porttype)
38:     end
39:     result
40:   end

Private Instance methods

[Source]

    # File lib/wsdl/soap/driverCreator.rb, line 44
44:   def dump_porttype(name)
45:     class_name = create_class_name(name)
46:     methoddef, types = MethodDefCreator.new(@definitions).dump(name)
47:     mr_creator = MappingRegistryCreator.new(@definitions)
48:     binding = @definitions.bindings.find { |item| item.type == name }
49:     return '' unless binding.soapbinding        # not a SOAP binding
50:     address = @definitions.porttype(name).locations[0]
51: 
52:     c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
53:     c.def_require("soap/rpc/driver")
54:     c.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
55:     c.def_const("DefaultEndpointUrl", ndq(address))
56:     c.def_code(mr_creator.dump(types))
57:     c.def_code "Methods = [\n\#{methoddef.gsub(/^/, \"  \")}\n]\n"
58:     c.def_method("initialize", "endpoint_url = nil") do
59:       "endpoint_url ||= DefaultEndpointUrl\nsuper(endpoint_url, nil)\nself.mapping_registry = MappingRegistry\ninit_methods\n"
60:     end
61:     c.def_privatemethod("init_methods") do
62:       "Methods.each do |definitions|\nopt = definitions.last\nif opt[:request_style] == :document\nadd_document_operation(*definitions)\nelse\nadd_rpc_operation(*definitions)\nqname = definitions[0]\nname = definitions[2]\nif qname.name != name and qname.name.capitalize == name.capitalize\n::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|\n__send__(name, *arg)\nend\nend\nend\nend\n"
63:     end
64:     c.dump
65:   end

[Validate]