/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

  1. # SOAP4R - EncodingStyle handler library
  2. # Copyright (C) 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
  3. # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
  4. # redistribute it and/or modify it under the same terms of Ruby's license;
  5. # either the dual license version in 2003, or any later version.
  6. require 'soap/soap'
  7. require 'soap/baseData'
  8. require 'soap/element'
  9. module SOAP
  10. module EncodingStyle
  11. class Handler
  12. @@handlers = {}
  13. class EncodingStyleError < Error; end
  14. class << self
  15. def uri
  16. self::Namespace
  17. end
  18. def handler(uri)
  19. @@handlers[uri]
  20. end
  21. def each
  22. @@handlers.each do |key, value|
  23. yield(value)
  24. end
  25. end
  26. private
  27. def add_handler
  28. @@handlers[self.uri] = self
  29. end
  30. end
  31. attr_reader :charset
  32. attr_accessor :generate_explicit_type
  33. def decode_typemap=(definedtypes)
  34. @decode_typemap = definedtypes
  35. end
  36. def initialize(charset)
  37. @charset = charset
  38. @generate_explicit_type = true
  39. @decode_typemap = nil
  40. end
  41. ###
  42. ## encode interface.
  43. #
  44. # Returns a XML instance as a string.
  45. def encode_data(generator, ns, data, parent)
  46. raise NotImplementError
  47. end
  48. def encode_data_end(generator, ns, data, parent)
  49. raise NotImplementError
  50. end
  51. def encode_prologue
  52. end
  53. def encode_epilogue
  54. end
  55. ###
  56. ## decode interface.
  57. #
  58. # Returns SOAP/OM data.
  59. def decode_tag(ns, name, attrs, parent)
  60. raise NotImplementError.new('Method decode_tag must be defined in derived class.')
  61. end
  62. def decode_tag_end(ns, name)
  63. raise NotImplementError.new('Method decode_tag_end must be defined in derived class.')
  64. end
  65. def decode_text(ns, text)
  66. raise NotImplementError.new('Method decode_text must be defined in derived class.')
  67. end
  68. def decode_prologue
  69. end
  70. def decode_epilogue
  71. end
  72. end
  73. end
  74. end