Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

Changeset 1783

Show
Ignore:
Timestamp:
05/18/07 00:16:39 (2 years ago)
Author:
nahi
Message:
  • oneway service support. actually, supports input only services for server and client. closes #200.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/soap/rpc/proxy.rb

    r1775 r1783  
    8585 
    8686  def add_rpc_operation(qname, soapaction, name, param_def, opt = {}) 
     87    ensure_styleuse_option(opt, :rpc, :encoded) 
    8788    opt[:request_qname] = qname 
    88     opt[:request_style] ||= :rpc 
    89     opt[:response_style] ||= :rpc 
    90     opt[:request_use] ||= :encoded 
    91     opt[:response_use] ||= :encoded 
    9289    op = Operation.new(soapaction, param_def, opt) 
    9390    assign_operation(name, qname, soapaction, op) 
     
    9592 
    9693  def add_document_operation(soapaction, name, param_def, opt = {}) 
    97     opt[:request_style] ||= :document 
    98     opt[:response_style] ||= :document 
    99     opt[:request_use] ||= :literal 
    100     opt[:response_use] ||= :literal 
     94    ensure_styleuse_option(opt, :document, :literal) 
    10195    op = Operation.new(soapaction, param_def, opt) 
    10296    assign_operation(name, nil, soapaction, op) 
     
    143137    ) 
    144138    env = route(req_header, req_body, reqopt, resopt) 
     139    if op_info.response_use.nil? 
     140      return nil 
     141    end 
    145142    raise EmptyResponseError unless env 
    146143    receive_headers(env.header) 
     
    190187 
    191188private 
     189 
     190  def ensure_styleuse_option(opt, style, use) 
     191    if opt[:request_style] || opt[:response_style] || opt[:request_use] || opt[:response_use] 
     192      # do not edit 
     193    else 
     194      opt[:request_style] ||= style 
     195      opt[:response_style] ||= style 
     196      opt[:request_use] ||= use 
     197      opt[:response_use] ||= use 
     198    end 
     199  end 
    192200 
    193201  def initialize_streamhandler(options) 
     
    431439    end 
    432440 
     441    # nil means oneway 
    433442    def check_use(use) 
    434       unless [:encoded, :literal].include?(use) 
     443      unless [:encoded, :literal, nil].include?(use) 
    435444        raise MethodDefinitionError.new("unknown use: #{use}") 
    436445      end 
  • trunk/lib/soap/rpc/router.rb

    r1754 r1783  
    179179    conn_data.is_fault = true if soap_response.is_a?(SOAPFault) 
    180180    header = call_headers(headerhandler) 
    181     body = SOAPBody.new(soap_response) 
    182     env = SOAPEnvelope.new(header, body) 
    183     marshal(conn_data, env, default_encodingstyle) 
     181    if op.response_use.nil? 
     182      conn_data.send_string = "" 
     183      conn_data 
     184    else 
     185      body = SOAPBody.new(soap_response) 
     186      env = SOAPEnvelope.new(header, body) 
     187      marshal(conn_data, env, default_encodingstyle) 
     188    end 
    184189  end 
    185190 
     
    218223 
    219224  def ensure_styleuse_option(opt, style, use) 
    220     opt[:request_style] ||= style 
    221     opt[:response_style] ||= style 
    222     opt[:request_use] ||= use 
    223     opt[:response_use] ||= use 
     225    if opt[:request_style] || opt[:response_style] || opt[:request_use] || opt[:response_use] 
     226      # do not edit 
     227    else 
     228      opt[:request_style] ||= style 
     229      opt[:response_style] ||= style 
     230      opt[:request_use] ||= use 
     231      opt[:response_use] ||= use 
     232    end 
    224233  end 
    225234 
     
    433442      if @response_style == :rpc 
    434443        response_rpc(result, mapping_registry, literal_mapping_registry, opt) 
     444      elsif @doc_response_qnames.empty? 
     445        # nothing to do 
    435446      else 
    436447        response_doc(result, mapping_registry, literal_mapping_registry, opt) 
     
    588599    end 
    589600 
     601    # nil means oneway 
    590602    def check_use(use) 
    591       unless [:encoded, :literal].include?(use) 
     603      unless [:encoded, :literal, nil].include?(use) 
    592604        raise ArgumentError.new("unknown use: #{use}") 
    593605      end 
  • trunk/lib/wsdl/operationBinding.rb

    r1711 r1783  
    7777  end 
    7878 
     79  def soapbody 
     80    (@input || @output).soapbody 
     81  end 
     82 
     83  def soapnamespace 
     84    soapbody ? soapbody.namespace : nil 
     85  end 
     86 
    7987  def parse_element(element) 
    8088    case element 
  • trunk/lib/wsdl/soap/classDefCreatorSupport.rb

    r1757 r1783  
    7373 
    7474  def sym(ele) 
    75     ':' + ele 
     75    ':' + ele.id2name 
     76  end 
     77 
     78  def nsym(ele) 
     79    ele.nil? ? 'nil' : sym(ele) 
    7680  end 
    7781 
  • trunk/lib/wsdl/soap/methodDefCreator.rb

    r1775 r1783  
    109109    name_as = operation.name 
    110110    style = binding.soapoperation_style 
    111     inputuse = binding.input.soapbody_use 
    112     outputuse = binding.output.soapbody_use 
    113     namespace = binding.input.soapbody.namespace 
     111    inputuse = binding.input ? binding.input.soapbody_use : nil 
     112    outputuse = binding.output ? binding.output.soapbody_use : nil 
     113    namespace = binding.soapnamespace 
    114114    if style == :rpc 
    115115      qname = XSD::QName.new(namespace, name_as) 
     
    128128  #{dq(name)}, 
    129129  #{paramstr}, 
    130   { :request_style =>  #{sym(style.id2name)}, :request_use =>  #{sym(inputuse.id2name)}, 
    131     :response_style => #{sym(style.id2name)}, :response_use => #{sym(outputuse.id2name)}, 
     130  { :request_style =>  #{nsym(style)}, :request_use =>  #{nsym(inputuse)}, 
     131    :response_style => #{nsym(style)}, :response_use => #{nsym(outputuse)}, 
    132132    :faults => #{op_faults_str} } 
    133133__EOD__