/tools/Ruby/lib/ruby/1.8/wsdl/soap/header.rb

http://github.com/agross/netopenspace · Ruby · 86 lines · 65 code · 16 blank · 5 comment · 3 complexity · 8db963995806f14ae9cdc565acda01bc MD5 · raw file

  1. # WSDL4R - WSDL SOAP body definition.
  2. # Copyright (C) 2002, 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 'wsdl/info'
  7. module WSDL
  8. module SOAP
  9. class Header < Info
  10. attr_reader :headerfault
  11. attr_reader :message # required
  12. attr_reader :part # required
  13. attr_reader :use # required
  14. attr_reader :encodingstyle
  15. attr_reader :namespace
  16. def initialize
  17. super
  18. @message = nil
  19. @part = nil
  20. @use = nil
  21. @encodingstyle = nil
  22. @namespace = nil
  23. @headerfault = nil
  24. end
  25. def targetnamespace
  26. parent.targetnamespace
  27. end
  28. def find_message
  29. root.message(@message) or raise RuntimeError.new("#{@message} not found")
  30. end
  31. def find_part
  32. find_message.parts.each do |part|
  33. if part.name == @part
  34. return part
  35. end
  36. end
  37. raise RuntimeError.new("#{@part} not found")
  38. end
  39. def parse_element(element)
  40. case element
  41. when HeaderFaultName
  42. o = WSDL::SOAP::HeaderFault.new
  43. @headerfault = o
  44. o
  45. else
  46. nil
  47. end
  48. end
  49. def parse_attr(attr, value)
  50. case attr
  51. when MessageAttrName
  52. if value.namespace.nil?
  53. value = XSD::QName.new(targetnamespace, value.source)
  54. end
  55. @message = value
  56. when PartAttrName
  57. @part = value.source
  58. when UseAttrName
  59. @use = value.source
  60. when EncodingStyleAttrName
  61. @encodingstyle = value.source
  62. when NamespaceAttrName
  63. @namespace = value.source
  64. else
  65. nil
  66. end
  67. end
  68. end
  69. end
  70. end