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

Changeset 1570

Show
Ignore:
Timestamp:
07/13/05 23:16:21 (3 years ago)
Author:
nahi
Message:

Let envelope namespace configuable. usage;

TemporaryNamespace? = 'http://www.w3.org/2003/05/soap-envelope'
@client.optionssoap.envelope.requestnamespace? = TemporaryNamespace?
@client.optionssoap.envelope.responsenamespace? = TemporaryNamespace?
@client.do_proc(...)

closes #124.

Files:

Legend:

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

    r1520 r1570  
    240240 
    241241  def encode(generator, ns, attrs = {}) 
    242     SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace, SOAPNamespaceTag) 
     242    SOAPGenerator.assign_ns(attrs, ns, elename.namespace, SOAPNamespaceTag) 
    243243    name = ns.name(@elename) 
    244244    generator.encode_tag(name, attrs) 
  • trunk/lib/soap/parser.rb

    r1520 r1570  
    6161public 
    6262 
     63  attr_accessor :envelopenamespace 
    6364  attr_accessor :default_encodingstyle 
    6465  attr_accessor :decode_typemap 
     
    7172    @lastnode = nil 
    7273    @handlers = {} 
     74    @envelopenamespace = opt[:envelopenamespace] || EnvelopeNamespace 
    7375    @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace 
    7476    @decode_typemap = opt[:decode_typemap] || nil 
     
    158160  def find_encodingstyle(ns, attrs) 
    159161    attrs.each do |key, value| 
    160       if (ns.compare(EnvelopeNamespace, AttrEncodingStyle, key)) 
     162      if (ns.compare(@envelopenamespace, AttrEncodingStyle, key)) 
    161163        return value 
    162164      end 
     
    169171 
    170172    # Envelope based parsing. 
    171     if ((ele.namespace == EnvelopeNamespace) || 
     173    if ((ele.namespace == @envelopenamespace) || 
    172174        (@allow_unqualified_element && ele.namespace.nil?)) 
    173175      o = decode_soap_envelope(ns, ele, attrs, parent) 
  • trunk/lib/soap/rpc/proxy.rb

    r1540 r1570  
    116116    reqopt = create_options({ 
    117117      :soapaction => op_info.soapaction || @soapaction, 
     118      :envelopenamespace => @options["soap.envelope.requestnamespace"], 
    118119      :default_encodingstyle => op_info.request_default_encodingstyle}) 
    119120    resopt = create_options({ 
     121      :envelopenamespace => @options["soap.envelope.responsenamespace"], 
    120122      :default_encodingstyle => op_info.response_default_encodingstyle}) 
    121123    env = route(req_header, req_body, reqopt, resopt) 
     
    131133 
    132134  def route(req_header, req_body, reqopt, resopt) 
    133     req_env = SOAPEnvelope.new(req_header, req_body) 
     135    req_env = ::SOAP::SOAPEnvelope.new(req_header, req_body) 
     136    unless reqopt[:envelopenamespace].nil? 
     137      set_envelopenamespace(req_env, reqopt[:envelopenamespace]) 
     138    end 
    134139    reqopt[:external_content] = nil 
    135140    conn_data = marshal(req_env, reqopt) 
     
    159164 
    160165private 
     166 
     167  def set_envelopenamespace(env, namespace) 
     168    env.elename.namespace = namespace 
     169    env.header.elename.namespace = namespace if env.header 
     170    env.body.elename.namespace = namespace if env.body 
     171  end 
    161172 
    162173  def create_request_header 
     
    201212        ::SOAP::StreamHandler.parse_media_type(contenttype) 
    202213      env = Processor.unmarshal(conn_data.receive_string, opt) 
     214    end 
     215    unless env.is_a?(::SOAP::SOAPEnvelope) 
     216      raise ResponseFormatError.new( 
     217        "response is not a SOAP envelope: #{conn_data.receive_string}") 
    203218    end 
    204219    env 
  • trunk/lib/soap/soap.rb

    r1552 r1570  
    7777class RPCRoutingError < Error; end 
    7878class EmptyResponseError < Error; end 
     79class ResponseFormatError < Error; end 
    7980 
    8081class UnhandledMustUnderstandHeaderError < Error; end