SOAP::WSDLDriver::Servant__ (Class)

In: soap/wsdlDriver.rb
Parent: Object

Methods

Attributes

allow_unqualified_element  [RW] 
default_encodingstyle  [RW] 
generate_explicit_type  [RW] 
mapping_registry  [RW] 
options  [R] 
port  [R] 
streamhandler  [R] 
wsdl_mapping_registry  [RW] 

Classes and Modules

Class SOAP::WSDLDriver::Servant__::Mapper

Included Modules

Logger::Severity SOAP

Public Class methods

[Source]

# File soap/wsdlDriver.rb, line 164
    def initialize(host, wsdl, port, logdev)
      @host = host
      @wsdl = wsdl
      @port = port
      @logdev = logdev

      @options = setup_options
      @mapping_registry = nil           # for rpc unmarshal

      @wsdl_mapping_registry = nil      # for rpc marshal

      @default_encodingstyle = EncodingNamespace
      @allow_unqualified_element = true
      @generate_explicit_type = false
      @wiredump_file_base = nil
      @mandatorycharset = nil

      @wsdl_elements = @wsdl.collect_elements
      @wsdl_types = @wsdl.collect_complextypes
      @rpc_decode_typemap = @wsdl_types +
        @wsdl.soap_rpc_complextypes(port.find_binding)
      @wsdl_mapping_registry = Mapping::WSDLRegistry.new(@rpc_decode_typemap)
      @doc_mapper = Mapper.new(@wsdl_elements, @wsdl_types)
      endpoint_url = @port.soap_address.location
      @streamhandler = HTTPPostStreamHandler.new(endpoint_url,
        @options["protocol.http"] ||= Property.new)
      # Convert a map which key is QName, to a Hash which key is String.

      @operations = {}
      @port.inputoperation_map.each do |op_name, op_info|
        @operations[op_name.name] = op_info
        add_method_interface(op_info)
      end
    end

Public Instance methods

req_header: [[element, mustunderstand, encodingstyle(QName/String)], …] req_body: SOAPBasetype/SOAPCompoundtype

[Source]

# File soap/wsdlDriver.rb, line 245
    def document_send(name, header_obj, body_obj)
      log(INFO) { "document_send: sending document '#{ name }'." }
      op_info = @operations[name]
      req_header = header_from_obj(header_obj, op_info)
      req_body = body_from_obj(body_obj, op_info)
      opt = create_options
      res_header, res_body = invoke(req_header, req_body, op_info, opt)
      if res_body.fault
        raise SOAP::FaultError.new(res_body.fault)
      end
      res_body_obj = res_body.response ?

        Mapping.soap2obj(res_body.response, @mapping_registry) : nil
      return res_header, res_body_obj
    end

[Source]

# File soap/wsdlDriver.rb, line 196
    def endpoint_url
      @streamhandler.endpoint_url
    end

[Source]

# File soap/wsdlDriver.rb, line 200
    def endpoint_url=(endpoint_url)
      @streamhandler.endpoint_url = endpoint_url
      @streamhandler.reset
    end

[Source]

# File soap/wsdlDriver.rb, line 205
    def rpc_send(method_name, *params)
      log(INFO) { "call: calling method '#{ method_name }'." }
      log(DEBUG) { "call: parameters '#{ params.inspect }'." }

      op_info = @operations[method_name]
      method = create_method_struct(op_info, params)
      req_header = nil
      req_body = SOAPBody.new(method)

      if @wiredump_file_base
        @streamhandler.wiredump_file_base =
          @wiredump_file_base + '_' << method_name
      end

      begin
        opt = create_options
        opt[:decode_typemap] = @rpc_decode_typemap
        res_header, res_body = invoke(req_header, req_body, op_info, opt)
        if res_body.fault
          raise SOAP::FaultError.new(res_body.fault)
        end
      rescue SOAP::FaultError => e
        Mapping.fault2exception(e)
      end

      ret = res_body.response ?

        Mapping.soap2obj(res_body.response, @mapping_registry) : nil

      if res_body.outparams
        outparams = res_body.outparams.collect { |outparam|
          Mapping.soap2obj(outparam)
        }
        return [ret].concat(outparams)
      else
        return ret
      end
    end

[Validate]