reidiculous-actionwebservice-client 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. data/CHANGELOG +320 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +381 -0
  4. data/Rakefile +180 -0
  5. data/TODO +32 -0
  6. data/lib/action_web_service.rb +71 -0
  7. data/lib/action_web_service/api.rb +297 -0
  8. data/lib/action_web_service/base.rb +38 -0
  9. data/lib/action_web_service/casting.rb +149 -0
  10. data/lib/action_web_service/client.rb +3 -0
  11. data/lib/action_web_service/client/base.rb +28 -0
  12. data/lib/action_web_service/client/soap_client.rb +113 -0
  13. data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  14. data/lib/action_web_service/container.rb +3 -0
  15. data/lib/action_web_service/container/action_controller_container.rb +93 -0
  16. data/lib/action_web_service/container/delegated_container.rb +86 -0
  17. data/lib/action_web_service/container/direct_container.rb +69 -0
  18. data/lib/action_web_service/dispatcher.rb +2 -0
  19. data/lib/action_web_service/dispatcher/abstract.rb +207 -0
  20. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
  21. data/lib/action_web_service/invocation.rb +202 -0
  22. data/lib/action_web_service/protocol.rb +4 -0
  23. data/lib/action_web_service/protocol/abstract.rb +115 -0
  24. data/lib/action_web_service/protocol/discovery.rb +37 -0
  25. data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  26. data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
  27. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
  28. data/lib/action_web_service/scaffolding.rb +281 -0
  29. data/lib/action_web_service/soap/attachment.rb +107 -0
  30. data/lib/action_web_service/soap/baseData.rb +942 -0
  31. data/lib/action_web_service/soap/element.rb +258 -0
  32. data/lib/action_web_service/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  33. data/lib/action_web_service/soap/encodingstyle/handler.rb +100 -0
  34. data/lib/action_web_service/soap/encodingstyle/literalHandler.rb +226 -0
  35. data/lib/action_web_service/soap/encodingstyle/soapHandler.rb +582 -0
  36. data/lib/action_web_service/soap/generator.rb +268 -0
  37. data/lib/action_web_service/soap/header/handler.rb +57 -0
  38. data/lib/action_web_service/soap/header/handlerset.rb +70 -0
  39. data/lib/action_web_service/soap/header/simplehandler.rb +44 -0
  40. data/lib/action_web_service/soap/httpconfigloader.rb +119 -0
  41. data/lib/action_web_service/soap/mapping.rb +10 -0
  42. data/lib/action_web_service/soap/mapping/factory.rb +355 -0
  43. data/lib/action_web_service/soap/mapping/mapping.rb +381 -0
  44. data/lib/action_web_service/soap/mapping/registry.rb +541 -0
  45. data/lib/action_web_service/soap/mapping/rubytypeFactory.rb +475 -0
  46. data/lib/action_web_service/soap/mapping/typeMap.rb +50 -0
  47. data/lib/action_web_service/soap/mapping/wsdlencodedregistry.rb +280 -0
  48. data/lib/action_web_service/soap/mapping/wsdlliteralregistry.rb +418 -0
  49. data/lib/action_web_service/soap/marshal.rb +59 -0
  50. data/lib/action_web_service/soap/mimemessage.rb +240 -0
  51. data/lib/action_web_service/soap/netHttpClient.rb +190 -0
  52. data/lib/action_web_service/soap/parser.rb +251 -0
  53. data/lib/action_web_service/soap/processor.rb +66 -0
  54. data/lib/action_web_service/soap/property.rb +333 -0
  55. data/lib/action_web_service/soap/rpc/cgistub.rb +206 -0
  56. data/lib/action_web_service/soap/rpc/driver.rb +254 -0
  57. data/lib/action_web_service/soap/rpc/element.rb +325 -0
  58. data/lib/action_web_service/soap/rpc/httpserver.rb +129 -0
  59. data/lib/action_web_service/soap/rpc/proxy.rb +497 -0
  60. data/lib/action_web_service/soap/rpc/router.rb +594 -0
  61. data/lib/action_web_service/soap/rpc/rpc.rb +25 -0
  62. data/lib/action_web_service/soap/rpc/soaplet.rb +162 -0
  63. data/lib/action_web_service/soap/rpc/standaloneServer.rb +43 -0
  64. data/lib/action_web_service/soap/soap.rb +140 -0
  65. data/lib/action_web_service/soap/streamHandler.rb +229 -0
  66. data/lib/action_web_service/soap/wsdlDriver.rb +575 -0
  67. data/lib/action_web_service/struct.rb +64 -0
  68. data/lib/action_web_service/support/class_inheritable_options.rb +28 -0
  69. data/lib/action_web_service/support/signature_types.rb +227 -0
  70. data/lib/action_web_service/test_invoke.rb +110 -0
  71. data/lib/action_web_service/version.rb +9 -0
  72. data/lib/action_web_service/wsdl/binding.rb +65 -0
  73. data/lib/action_web_service/wsdl/data.rb +64 -0
  74. data/lib/action_web_service/wsdl/definitions.rb +250 -0
  75. data/lib/action_web_service/wsdl/documentation.rb +32 -0
  76. data/lib/action_web_service/wsdl/import.rb +80 -0
  77. data/lib/action_web_service/wsdl/importer.rb +38 -0
  78. data/lib/action_web_service/wsdl/info.rb +39 -0
  79. data/lib/action_web_service/wsdl/message.rb +54 -0
  80. data/lib/action_web_service/wsdl/operation.rb +130 -0
  81. data/lib/action_web_service/wsdl/operationBinding.rb +108 -0
  82. data/lib/action_web_service/wsdl/param.rb +85 -0
  83. data/lib/action_web_service/wsdl/parser.rb +163 -0
  84. data/lib/action_web_service/wsdl/part.rb +52 -0
  85. data/lib/action_web_service/wsdl/port.rb +84 -0
  86. data/lib/action_web_service/wsdl/portType.rb +73 -0
  87. data/lib/action_web_service/wsdl/service.rb +61 -0
  88. data/lib/action_web_service/wsdl/soap/address.rb +40 -0
  89. data/lib/action_web_service/wsdl/soap/binding.rb +49 -0
  90. data/lib/action_web_service/wsdl/soap/body.rb +56 -0
  91. data/lib/action_web_service/wsdl/soap/cgiStubCreator.rb +76 -0
  92. data/lib/action_web_service/wsdl/soap/classDefCreator.rb +314 -0
  93. data/lib/action_web_service/wsdl/soap/classDefCreatorSupport.rb +126 -0
  94. data/lib/action_web_service/wsdl/soap/clientSkeltonCreator.rb +78 -0
  95. data/lib/action_web_service/wsdl/soap/complexType.rb +161 -0
  96. data/lib/action_web_service/wsdl/soap/data.rb +42 -0
  97. data/lib/action_web_service/wsdl/soap/definitions.rb +149 -0
  98. data/lib/action_web_service/wsdl/soap/driverCreator.rb +95 -0
  99. data/lib/action_web_service/wsdl/soap/element.rb +28 -0
  100. data/lib/action_web_service/wsdl/soap/fault.rb +56 -0
  101. data/lib/action_web_service/wsdl/soap/header.rb +86 -0
  102. data/lib/action_web_service/wsdl/soap/headerfault.rb +56 -0
  103. data/lib/action_web_service/wsdl/soap/mappingRegistryCreator.rb +92 -0
  104. data/lib/action_web_service/wsdl/soap/methodDefCreator.rb +228 -0
  105. data/lib/action_web_service/wsdl/soap/operation.rb +122 -0
  106. data/lib/action_web_service/wsdl/soap/servantSkeltonCreator.rb +67 -0
  107. data/lib/action_web_service/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  108. data/lib/action_web_service/wsdl/soap/wsdl2ruby.rb +176 -0
  109. data/lib/action_web_service/wsdl/types.rb +43 -0
  110. data/lib/action_web_service/wsdl/wsdl.rb +23 -0
  111. data/lib/action_web_service/wsdl/xmlSchema/all.rb +69 -0
  112. data/lib/action_web_service/wsdl/xmlSchema/annotation.rb +34 -0
  113. data/lib/action_web_service/wsdl/xmlSchema/any.rb +56 -0
  114. data/lib/action_web_service/wsdl/xmlSchema/attribute.rb +127 -0
  115. data/lib/action_web_service/wsdl/xmlSchema/choice.rb +69 -0
  116. data/lib/action_web_service/wsdl/xmlSchema/complexContent.rb +92 -0
  117. data/lib/action_web_service/wsdl/xmlSchema/complexType.rb +139 -0
  118. data/lib/action_web_service/wsdl/xmlSchema/content.rb +96 -0
  119. data/lib/action_web_service/wsdl/xmlSchema/data.rb +80 -0
  120. data/lib/action_web_service/wsdl/xmlSchema/element.rb +154 -0
  121. data/lib/action_web_service/wsdl/xmlSchema/enumeration.rb +36 -0
  122. data/lib/action_web_service/wsdl/xmlSchema/import.rb +65 -0
  123. data/lib/action_web_service/wsdl/xmlSchema/importer.rb +87 -0
  124. data/lib/action_web_service/wsdl/xmlSchema/include.rb +54 -0
  125. data/lib/action_web_service/wsdl/xmlSchema/length.rb +35 -0
  126. data/lib/action_web_service/wsdl/xmlSchema/parser.rb +166 -0
  127. data/lib/action_web_service/wsdl/xmlSchema/pattern.rb +36 -0
  128. data/lib/action_web_service/wsdl/xmlSchema/schema.rb +143 -0
  129. data/lib/action_web_service/wsdl/xmlSchema/sequence.rb +69 -0
  130. data/lib/action_web_service/wsdl/xmlSchema/simpleContent.rb +65 -0
  131. data/lib/action_web_service/wsdl/xmlSchema/simpleExtension.rb +54 -0
  132. data/lib/action_web_service/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  133. data/lib/action_web_service/wsdl/xmlSchema/simpleType.rb +73 -0
  134. data/lib/action_web_service/wsdl/xmlSchema/unique.rb +34 -0
  135. data/lib/action_web_service/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  136. data/lib/action_web_service/xsd/charset.rb +187 -0
  137. data/lib/action_web_service/xsd/codegen.rb +12 -0
  138. data/lib/action_web_service/xsd/codegen/classdef.rb +203 -0
  139. data/lib/action_web_service/xsd/codegen/commentdef.rb +34 -0
  140. data/lib/action_web_service/xsd/codegen/gensupport.rb +166 -0
  141. data/lib/action_web_service/xsd/codegen/methoddef.rb +63 -0
  142. data/lib/action_web_service/xsd/codegen/moduledef.rb +191 -0
  143. data/lib/action_web_service/xsd/datatypes.rb +1269 -0
  144. data/lib/action_web_service/xsd/datatypes1999.rb +20 -0
  145. data/lib/action_web_service/xsd/iconvcharset.rb +33 -0
  146. data/lib/action_web_service/xsd/mapping.rb +42 -0
  147. data/lib/action_web_service/xsd/namedelements.rb +95 -0
  148. data/lib/action_web_service/xsd/ns.rb +140 -0
  149. data/lib/action_web_service/xsd/qname.rb +78 -0
  150. data/lib/action_web_service/xsd/xmlparser.rb +61 -0
  151. data/lib/action_web_service/xsd/xmlparser/parser.rb +96 -0
  152. data/lib/action_web_service/xsd/xmlparser/rexmlparser.rb +54 -0
  153. data/lib/action_web_service/xsd/xmlparser/xmlparser.rb +50 -0
  154. data/lib/action_web_service/xsd/xmlparser/xmlscanner.rb +147 -0
  155. data/lib/actionwebservice.rb +1 -0
  156. data/setup.rb +1379 -0
  157. data/test/abstract_client.rb +183 -0
  158. data/test/abstract_dispatcher.rb +548 -0
  159. data/test/abstract_unit.rb +45 -0
  160. data/test/api_test.rb +103 -0
  161. data/test/apis/auto_load_api.rb +3 -0
  162. data/test/apis/broken_auto_load_api.rb +2 -0
  163. data/test/base_test.rb +42 -0
  164. data/test/casting_test.rb +95 -0
  165. data/test/client_soap_test.rb +156 -0
  166. data/test/client_xmlrpc_test.rb +153 -0
  167. data/test/container_test.rb +73 -0
  168. data/test/dispatcher_action_controller_soap_test.rb +139 -0
  169. data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  170. data/test/fixtures/db_definitions/mysql.sql +8 -0
  171. data/test/fixtures/db_definitions/sqlite3.sql +8 -0
  172. data/test/fixtures/users.yml +12 -0
  173. data/test/gencov +3 -0
  174. data/test/invocation_test.rb +185 -0
  175. data/test/run +6 -0
  176. data/test/scaffolded_controller_test.rb +146 -0
  177. data/test/struct_test.rb +52 -0
  178. data/test/test_invoke_test.rb +112 -0
  179. metadata +265 -0
@@ -0,0 +1,20 @@
1
+ # XSD4R - XML Schema Datatype 1999 support
2
+ # Copyright (C) 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'action_web_service/xsd/datatypes'
10
+
11
+
12
+ module XSD
13
+ Namespace.replace('http://www.w3.org/1999/XMLSchema')
14
+ InstanceNamespace.replace('http://www.w3.org/1999/XMLSchema-instance')
15
+ AnyTypeLiteral.replace('ur-type')
16
+ AnySimpleTypeLiteral.replace('ur-type')
17
+ NilLiteral.replace('null')
18
+ NilValue.replace('1')
19
+ DateTimeLiteral.replace('timeInstant')
20
+ end
@@ -0,0 +1,33 @@
1
+ # XSD4R - Charset handling with iconv.
2
+ # Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'iconv'
10
+
11
+
12
+ module XSD
13
+
14
+
15
+ class IconvCharset
16
+ def self.safe_iconv(to, from, str)
17
+ iconv = Iconv.new(to, from)
18
+ out = ""
19
+ begin
20
+ out << iconv.iconv(str)
21
+ rescue Iconv::IllegalSequence => e
22
+ out << e.success
23
+ ch, str = e.failed.split(//, 2)
24
+ out << '?'
25
+ warn("Failed to convert #{ch}")
26
+ retry
27
+ end
28
+ return out
29
+ end
30
+ end
31
+
32
+
33
+ end
@@ -0,0 +1,42 @@
1
+ # XSD4R - XML Mapping for Ruby
2
+ # Copyright (C) 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require "soap/parser"
10
+ require 'action_web_service/soap/encodingstyle/literalHandler'
11
+ require "soap/generator"
12
+ require "soap/mapping"
13
+ require "soap/mapping/wsdlliteralregistry"
14
+
15
+
16
+ module XSD
17
+
18
+
19
+ module Mapping
20
+ MappingRegistry = SOAP::Mapping::WSDLLiteralRegistry.new
21
+ MappingOpt = {:default_encodingstyle => SOAP::LiteralNamespace}
22
+
23
+ def self.obj2xml(obj, elename = nil, io = nil)
24
+ if !elename.nil? and !elename.is_a?(XSD::QName)
25
+ elename = XSD::QName.new(nil, elename)
26
+ end
27
+ elename ||= XSD::QName.new(nil, SOAP::Mapping.name2elename(obj.class.to_s))
28
+ soap = SOAP::Mapping.obj2soap(obj, MappingRegistry)
29
+ soap.elename = elename
30
+ generator = SOAP::SOAPGenerator.new(MappingOpt)
31
+ generator.generate(soap, io)
32
+ end
33
+
34
+ def self.xml2obj(stream)
35
+ parser = SOAP::Parser.new(MappingOpt)
36
+ soap = parser.parse(stream)
37
+ SOAP::Mapping.soap2obj(soap, MappingRegistry)
38
+ end
39
+ end
40
+
41
+
42
+ end
@@ -0,0 +1,95 @@
1
+ # XSD4R - WSDL named element collection.
2
+ # Copyright (C) 2002, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ module XSD
10
+
11
+
12
+ class NamedElements
13
+ include Enumerable
14
+
15
+ def initialize
16
+ @elements = []
17
+ @cache = {}
18
+ end
19
+
20
+ def dup
21
+ o = NamedElements.new
22
+ o.elements = @elements.dup
23
+ o
24
+ end
25
+
26
+ def freeze
27
+ super
28
+ @elements.freeze
29
+ self
30
+ end
31
+
32
+ def empty?
33
+ size == 0
34
+ end
35
+
36
+ def size
37
+ @elements.size
38
+ end
39
+
40
+ def [](idx)
41
+ if idx.is_a?(Numeric)
42
+ @elements[idx]
43
+ else
44
+ @cache[idx] ||= @elements.find { |item| item.name == idx }
45
+ end
46
+ end
47
+
48
+ def find_name(name)
49
+ @elements.find { |item| item.name.name == name }
50
+ end
51
+
52
+ def keys
53
+ collect { |element| element.name }
54
+ end
55
+
56
+ def each
57
+ @elements.each do |element|
58
+ yield(element)
59
+ end
60
+ end
61
+
62
+ def <<(rhs)
63
+ @elements << rhs
64
+ self
65
+ end
66
+
67
+ def delete(rhs)
68
+ @elements.delete(rhs)
69
+ end
70
+
71
+ def +(rhs)
72
+ o = NamedElements.new
73
+ o.elements = @elements + rhs.elements
74
+ o
75
+ end
76
+
77
+ def concat(rhs)
78
+ @elements.concat(rhs.elements)
79
+ self
80
+ end
81
+
82
+ Empty = NamedElements.new.freeze
83
+
84
+ protected
85
+
86
+ def elements=(rhs)
87
+ @elements = rhs
88
+ end
89
+
90
+ def elements
91
+ @elements
92
+ end
93
+ end
94
+
95
+ end
@@ -0,0 +1,140 @@
1
+ # XSD4R - XML Schema Namespace library
2
+ # Copyright (C) 2000-2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'action_web_service/xsd/datatypes'
10
+
11
+
12
+ module XSD
13
+
14
+
15
+ class NS
16
+ class Assigner
17
+ def initialize
18
+ @count = 0
19
+ end
20
+
21
+ def assign(ns)
22
+ @count += 1
23
+ "n#{@count}"
24
+ end
25
+ end
26
+
27
+ attr_reader :default_namespace
28
+
29
+ class FormatError < Error; end
30
+
31
+ public
32
+
33
+ def initialize(tag2ns = {})
34
+ @tag2ns = tag2ns
35
+ @assigner = nil
36
+ @ns2tag = {}
37
+ @tag2ns.each do |tag, ns|
38
+ @ns2tag[ns] = tag
39
+ end
40
+ @default_namespace = nil
41
+ end
42
+
43
+ def assign(ns, tag = nil)
44
+ if (tag == '')
45
+ @default_namespace = ns
46
+ tag
47
+ else
48
+ @assigner ||= Assigner.new
49
+ tag ||= @assigner.assign(ns)
50
+ @ns2tag[ns] = tag
51
+ @tag2ns[tag] = ns
52
+ tag
53
+ end
54
+ end
55
+
56
+ def assigned?(ns)
57
+ @default_namespace == ns or @ns2tag.key?(ns)
58
+ end
59
+
60
+ def assigned_tag?(tag)
61
+ @tag2ns.key?(tag)
62
+ end
63
+
64
+ def clone_ns
65
+ cloned = NS.new(@tag2ns.dup)
66
+ cloned.assigner = @assigner
67
+ cloned.assign(@default_namespace, '') if @default_namespace
68
+ cloned
69
+ end
70
+
71
+ def name(name)
72
+ if (name.namespace == @default_namespace)
73
+ name.name
74
+ elsif @ns2tag.key?(name.namespace)
75
+ "#{@ns2tag[name.namespace]}:#{name.name}"
76
+ else
77
+ raise FormatError.new("namespace: #{name.namespace} not defined yet")
78
+ end
79
+ end
80
+
81
+ def compare(ns, name, rhs)
82
+ if (ns == @default_namespace)
83
+ return true if (name == rhs)
84
+ end
85
+ @tag2ns.each do |assigned_tag, assigned_ns|
86
+ if assigned_ns == ns && "#{assigned_tag}:#{name}" == rhs
87
+ return true
88
+ end
89
+ end
90
+ false
91
+ end
92
+
93
+ # $1 and $2 are necessary.
94
+ ParseRegexp = Regexp.new('^([^:]+)(?::(.+))?$')
95
+
96
+ def parse(str, local = false)
97
+ if ParseRegexp =~ str
98
+ if (name = $2) and (ns = @tag2ns[$1])
99
+ return XSD::QName.new(ns, name)
100
+ end
101
+ end
102
+ XSD::QName.new(local ? nil : @default_namespace, str)
103
+ end
104
+
105
+ # For local attribute key parsing
106
+ # <foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" />
107
+ # =>
108
+ # {}bar, {urn:a}baz
109
+ def parse_local(elem)
110
+ ParseRegexp =~ elem
111
+ if $2
112
+ ns = @tag2ns[$1]
113
+ name = $2
114
+ if !ns
115
+ raise FormatError.new("unknown namespace qualifier: #{$1}")
116
+ end
117
+ elsif $1
118
+ ns = nil
119
+ name = $1
120
+ else
121
+ raise FormatError.new("illegal element format: #{elem}")
122
+ end
123
+ XSD::QName.new(ns, name)
124
+ end
125
+
126
+ def each_ns
127
+ @ns2tag.each do |ns, tag|
128
+ yield(ns, tag)
129
+ end
130
+ end
131
+
132
+ protected
133
+
134
+ def assigner=(assigner)
135
+ @assigner = assigner
136
+ end
137
+ end
138
+
139
+
140
+ end
@@ -0,0 +1,78 @@
1
+ # XSD4R - XML QName definition.
2
+ # Copyright (C) 2002, 2003, 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ module XSD
10
+
11
+
12
+ class QName
13
+ attr_accessor :namespace
14
+ attr_accessor :name
15
+ attr_accessor :source
16
+
17
+ def initialize(namespace = nil, name = nil)
18
+ @namespace = namespace
19
+ @name = name
20
+ @source = nil
21
+ end
22
+
23
+ def dup_name(name)
24
+ XSD::QName.new(@namespace, name)
25
+ end
26
+
27
+ def dump
28
+ ns = @namespace.nil? ? 'nil' : @namespace.dump
29
+ name = @name.nil? ? 'nil' : @name.dump
30
+ "XSD::QName.new(#{ns}, #{name})"
31
+ end
32
+
33
+ def match(rhs)
34
+ if rhs.namespace and (rhs.namespace != @namespace)
35
+ return false
36
+ end
37
+ if rhs.name and (rhs.name != @name)
38
+ return false
39
+ end
40
+ true
41
+ end
42
+
43
+ def ==(rhs)
44
+ !rhs.nil? and @namespace == rhs.namespace and @name == rhs.name
45
+ end
46
+
47
+ def ===(rhs)
48
+ (self == rhs)
49
+ end
50
+
51
+ def eql?(rhs)
52
+ (self == rhs)
53
+ end
54
+
55
+ def hash
56
+ @namespace.hash ^ @name.hash
57
+ end
58
+
59
+ def to_s
60
+ "{#{ namespace }}#{ name }"
61
+ end
62
+
63
+ def inspect
64
+ sprintf("#<%s:0x%x %s>", self.class.name, __id__,
65
+ "{#{ namespace }}#{ name }")
66
+ end
67
+
68
+ NormalizedNameRegexp = /^\{([^}]*)\}(.*)$/
69
+ def parse(str)
70
+ NormalizedNameRegexp =~ str
71
+ self.new($1, $2)
72
+ end
73
+
74
+ EMPTY = QName.new.freeze
75
+ end
76
+
77
+
78
+ end
@@ -0,0 +1,61 @@
1
+ # XSD4R - XML Instance parser library.
2
+ # Copyright (C) 2002, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'action_web_service/xsd/xmlparser/parser'
10
+
11
+
12
+ module XSD
13
+
14
+
15
+ module XMLParser
16
+ def create_parser(host, opt)
17
+ XSD::XMLParser::Parser.create_parser(host, opt)
18
+ end
19
+ module_function :create_parser
20
+
21
+ # $1 is necessary.
22
+ NSParseRegexp = Regexp.new('^xmlns:?(.*)$')
23
+
24
+ def filter_ns(ns, attrs)
25
+ return attrs if attrs.nil? or attrs.empty?
26
+ newattrs = {}
27
+ attrs.each do |key, value|
28
+ if (NSParseRegexp =~ key)
29
+ # '' means 'default namespace'.
30
+ tag = $1 || ''
31
+ ns.assign(value, tag)
32
+ else
33
+ newattrs[key] = value
34
+ end
35
+ end
36
+ newattrs
37
+ end
38
+ module_function :filter_ns
39
+ end
40
+
41
+
42
+ end
43
+
44
+
45
+ # Try to load XML processor.
46
+ loaded = false
47
+ [
48
+ 'action_web_service/xsd/xmlparser/xmlparser',
49
+ 'action_web_service/xsd/xmlparser/xmlscanner',
50
+ 'action_web_service/xsd/xmlparser/rexmlparser',
51
+ ].each do |lib|
52
+ begin
53
+ require lib
54
+ loaded = true
55
+ break
56
+ rescue LoadError
57
+ end
58
+ end
59
+ unless loaded
60
+ raise RuntimeError.new("XML processor module not found.")
61
+ end