/tools/Ruby/lib/ruby/1.8/soap/encodingstyle/handler.rb
http://github.com/agross/netopenspace · Ruby · 100 lines · 61 code · 26 blank · 13 comment · 0 complexity · e619f86af9b6350ec44e01c9f18e94e5 MD5 · raw file
- # SOAP4R - EncodingStyle handler library
- # Copyright (C) 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
- # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
- # redistribute it and/or modify it under the same terms of Ruby's license;
- # either the dual license version in 2003, or any later version.
- require 'soap/soap'
- require 'soap/baseData'
- require 'soap/element'
- module SOAP
- module EncodingStyle
- class Handler
- @@handlers = {}
- class EncodingStyleError < Error; end
- class << self
- def uri
- self::Namespace
- end
- def handler(uri)
- @@handlers[uri]
- end
- def each
- @@handlers.each do |key, value|
- yield(value)
- end
- end
- private
- def add_handler
- @@handlers[self.uri] = self
- end
- end
- attr_reader :charset
- attr_accessor :generate_explicit_type
- def decode_typemap=(definedtypes)
- @decode_typemap = definedtypes
- end
- def initialize(charset)
- @charset = charset
- @generate_explicit_type = true
- @decode_typemap = nil
- end
- ###
- ## encode interface.
- #
- # Returns a XML instance as a string.
- def encode_data(generator, ns, data, parent)
- raise NotImplementError
- end
- def encode_data_end(generator, ns, data, parent)
- raise NotImplementError
- end
- def encode_prologue
- end
- def encode_epilogue
- end
- ###
- ## decode interface.
- #
- # Returns SOAP/OM data.
- def decode_tag(ns, name, attrs, parent)
- raise NotImplementError.new('Method decode_tag must be defined in derived class.')
- end
- def decode_tag_end(ns, name)
- raise NotImplementError.new('Method decode_tag_end must be defined in derived class.')
- end
- def decode_text(ns, text)
- raise NotImplementError.new('Method decode_text must be defined in derived class.')
- end
- def decode_prologue
- end
- def decode_epilogue
- end
- end
- end
- end