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

Changeset 1974

Show
Ignore:
Timestamp:
09/17/07 23:08:48 (1 year ago)
Author:
nahi
Message:
  • add the Generator option for using default namespace in SOAP message. it's for interoperability with non XML Namespace comformant implementation. false by default (same behavior as before.) you can turn it on with Driver#use_default_namespace = true or Server#use_default_namespace = true. closes #430.
Files:

Legend:

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

    r1970 r1974  
    6969      end 
    7070    when SOAPElement 
    71       # passes 2 times for simplifying namespace definition 
    72       data.each do |key, value| 
    73         if value.elename.namespace 
    74           Generator.assign_ns(attrs, ns, value.elename.namespace) 
     71      unless generator.use_default_namespace 
     72        # passes 2 times for simplifying namespace definition 
     73        data.each do |key, value| 
     74          if value.elename.namespace 
     75            Generator.assign_ns(attrs, ns, value.elename.namespace) 
     76          end 
    7577        end 
    7678      end 
  • trunk/lib/soap/generator.rb

    r1954 r1974  
    3232  attr_accessor :generate_explicit_type 
    3333  attr_accessor :use_numeric_character_reference 
     34  attr_accessor :use_default_namespace 
    3435 
    3536  def initialize(opt = {}) 
     
    4041    @generate_explicit_type = 
    4142      opt.key?(:generate_explicit_type) ? opt[:generate_explicit_type] : true 
    42     # elementformdefault is for default namespace usage controll 
    43     # TODO: should be renamed 
    44     @elementformdefault = opt[:elementformdefault] 
     43    # ':elementformdefault' is for backward compatibility 
     44    @use_default_namespace = opt[:use_default_namespace] 
    4545    @attributeformdefault = opt[:attributeformdefault] 
    4646    @use_numeric_character_reference = opt[:use_numeric_character_reference] 
     
    163163      data.elename.name 
    164164    else 
    165       if @elementformdefault 
     165      if @use_default_namespace 
    166166        Generator.assign_ns(attrs, ns, data.elename.namespace, '') 
    167167      else 
     
    251251      raise FormatEncodeError.new("empty namespace") 
    252252    end 
    253     unless ns.assigned?(namespace) 
     253    override_default_ns = (tag == '' and namespace != ns.default_namespace) 
     254    if override_default_ns or !ns.assigned?(namespace) 
    254255      tag = ns.assign(namespace, tag) 
    255256      if tag == '' 
  • trunk/lib/soap/rpc/driver.rb

    r1825 r1974  
    6161  __attr_proxy :default_encodingstyle, true 
    6262  __attr_proxy :generate_explicit_type, true 
     63  __attr_proxy :use_default_namespace, true 
    6364  __attr_proxy :return_response_as_xml, true 
    6465  __attr_proxy :headerhandler 
  • trunk/lib/soap/rpc/httpserver.rb

    r1825 r1974  
    2020  attr_reader :server 
    2121  attr_accessor :default_namespace 
     22 
     23  class << self 
     24    if RUBY_VERSION >= "1.7.0" 
     25      def __attr_proxy(symbol, assignable = false) 
     26        name = symbol.to_s 
     27        define_method(name) { 
     28          @router.__send__(name) 
     29        } 
     30        if assignable 
     31          aname = name + '=' 
     32          define_method(aname) { |rhs| 
     33            @router.__send__(aname, rhs) 
     34          } 
     35        end 
     36      end 
     37    else 
     38      def __attr_proxy(symbol, assignable = false) 
     39        name = symbol.to_s 
     40        module_eval <<-EOS 
     41          def #{name} 
     42            @router.#{name} 
     43          end 
     44        EOS 
     45        if assignable 
     46          module_eval <<-EOS 
     47            def #{name}=(value) 
     48              @router.#{name} = value 
     49            end 
     50          EOS 
     51        end 
     52      end 
     53    end 
     54  end 
     55 
     56  __attr_proxy :mapping_registry, true 
     57  __attr_proxy :literal_mapping_registry, true 
     58  __attr_proxy :generate_explicit_type, true 
     59  __attr_proxy :use_default_namespace, true 
    2260 
    2361  def initialize(config) 
     
    5997  def authenticator=(authenticator) 
    6098    @soaplet.authenticator = authenticator 
    61   end 
    62  
    63   def mapping_registry 
    64     @router.mapping_registry 
    65   end 
    66  
    67   def mapping_registry=(mapping_registry) 
    68     @router.mapping_registry = mapping_registry 
    69   end 
    70  
    71   def literal_mapping_registry 
    72     @router.literal_mapping_registry 
    73   end 
    74  
    75   def literal_mapping_registry=(literal_mapping_registry) 
    76     @router.literal_mapping_registry = literal_mapping_registry 
    77   end 
    78  
    79   def generate_explicit_type 
    80     @router.generate_explicit_type 
    81   end 
    82  
    83   def generate_explicit_type=(generate_explicit_type) 
    84     @router.generate_explicit_type = generate_explicit_type 
    8599  end 
    86100 
  • trunk/lib/soap/rpc/proxy.rb

    r1833 r1974  
    3333  attr_accessor :default_encodingstyle 
    3434  attr_accessor :generate_explicit_type 
     35  attr_accessor :use_default_namespace 
    3536  attr_accessor :return_response_as_xml 
    3637  attr_reader :headerhandler 
     
    5657    @default_encodingstyle = nil 
    5758    @generate_explicit_type = true 
     59    @use_default_namespace = false 
    5860    @return_response_as_xml = false 
    5961    @headerhandler = Header::HandlerSet.new 
     
    130132      :default_encodingstyle => 
    131133        @default_encodingstyle || op_info.request_default_encodingstyle, 
     134      :use_default_namespace => @use_default_namespace, 
    132135      :elementformdefault => op_info.elementformdefault, 
    133136      :attributeformdefault => op_info.attributeformdefault 
     
    137140      :default_encodingstyle => 
    138141        @default_encodingstyle || op_info.response_default_encodingstyle, 
     142      :use_default_namespace => @use_default_namespace, 
    139143      :elementformdefault => op_info.elementformdefault, 
    140144      :attributeformdefault => op_info.attributeformdefault 
  • trunk/lib/soap/rpc/router.rb

    r1908 r1974  
    3131  attr_accessor :literal_mapping_registry 
    3232  attr_accessor :generate_explicit_type 
     33  attr_accessor :use_default_namespace 
    3334  attr_accessor :external_ces 
    3435  attr_reader :filterchain 
     
    4041    @literal_mapping_registry = ::SOAP::Mapping::LiteralRegistry.new 
    4142    @generate_explicit_type = true 
     43    @use_default_namespace = false 
    4244    @external_ces = nil 
    4345    @operation_by_soapaction = {} 
     
    323325    opt[:default_encodingstyle] = default_encodingstyle 
    324326    opt[:generate_explicit_type] = @generate_explicit_type 
     327    opt[:use_default_namespace] = @use_default_namespace 
    325328    @filterchain.reverse_each do |filter| 
    326329      env = filter.on_outbound(env, opt)