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,36 @@
1
+ # WSDL4R - XMLSchema pattern definition for WSDL.
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 'action_web_service/wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Pattern < Info
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ def parse_element(element)
22
+ nil
23
+ end
24
+
25
+ def parse_attr(attr, value)
26
+ case attr
27
+ when ValueAttrName
28
+ parent.pattern = /\A#{value.source}\z/n
29
+ value.source
30
+ end
31
+ end
32
+ end
33
+
34
+
35
+ end
36
+ end
@@ -0,0 +1,143 @@
1
+ # WSDL4R - XMLSchema schema definition for WSDL.
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
+ require 'action_web_service/wsdl/info'
10
+ require 'action_web_service/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class Schema < Info
18
+ attr_reader :targetnamespace # required
19
+ attr_reader :complextypes
20
+ attr_reader :simpletypes
21
+ attr_reader :elements
22
+ attr_reader :attributes
23
+ attr_reader :imports
24
+ attr_accessor :attributeformdefault
25
+ attr_accessor :elementformdefault
26
+
27
+ attr_reader :importedschema
28
+
29
+ def initialize
30
+ super
31
+ @targetnamespace = nil
32
+ @complextypes = XSD::NamedElements.new
33
+ @simpletypes = XSD::NamedElements.new
34
+ @elements = XSD::NamedElements.new
35
+ @attributes = XSD::NamedElements.new
36
+ @imports = []
37
+ @attributeformdefault = "unqualified"
38
+ @elementformdefault = "unqualified"
39
+ @importedschema = {}
40
+ @location = nil
41
+ @root = self
42
+ end
43
+
44
+ def location
45
+ @location || (root.nil? ? nil : root.location)
46
+ end
47
+
48
+ def location=(location)
49
+ @location = location
50
+ end
51
+
52
+ def parse_element(element)
53
+ case element
54
+ when ImportName
55
+ o = Import.new
56
+ @imports << o
57
+ o
58
+ when IncludeName
59
+ o = Include.new
60
+ @imports << o
61
+ o
62
+ when ComplexTypeName
63
+ o = ComplexType.new
64
+ @complextypes << o
65
+ o
66
+ when SimpleTypeName
67
+ o = SimpleType.new
68
+ @simpletypes << o
69
+ o
70
+ when ElementName
71
+ o = Element.new
72
+ @elements << o
73
+ o
74
+ when AttributeName
75
+ o = Attribute.new
76
+ @attributes << o
77
+ o
78
+ else
79
+ nil
80
+ end
81
+ end
82
+
83
+ def parse_attr(attr, value)
84
+ case attr
85
+ when TargetNamespaceAttrName
86
+ @targetnamespace = value.source
87
+ when AttributeFormDefaultAttrName
88
+ @attributeformdefault = value.source
89
+ when ElementFormDefaultAttrName
90
+ @elementformdefault = value.source
91
+ else
92
+ nil
93
+ end
94
+ end
95
+
96
+ def collect_attributes
97
+ result = XSD::NamedElements.new
98
+ result.concat(@attributes)
99
+ @imports.each do |import|
100
+ result.concat(import.content.collect_attributes) if import.content
101
+ end
102
+ result
103
+ end
104
+
105
+ def collect_elements
106
+ result = XSD::NamedElements.new
107
+ result.concat(@elements)
108
+ @imports.each do |import|
109
+ result.concat(import.content.collect_elements) if import.content
110
+ end
111
+ result
112
+ end
113
+
114
+ def collect_complextypes
115
+ result = XSD::NamedElements.new
116
+ result.concat(@complextypes)
117
+ @imports.each do |import|
118
+ result.concat(import.content.collect_complextypes) if import.content
119
+ end
120
+ result
121
+ end
122
+
123
+ def collect_simpletypes
124
+ result = XSD::NamedElements.new
125
+ result.concat(@simpletypes)
126
+ @imports.each do |import|
127
+ result.concat(import.content.collect_simpletypes) if import.content
128
+ end
129
+ result
130
+ end
131
+
132
+ def self.parse_element(element)
133
+ if element == SchemaName
134
+ Schema.new
135
+ else
136
+ nil
137
+ end
138
+ end
139
+ end
140
+
141
+
142
+ end
143
+ end
@@ -0,0 +1,69 @@
1
+ # WSDL4R - XMLSchema complexType definition for WSDL.
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/wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Sequence < Info
17
+ attr_reader :minoccurs
18
+ attr_reader :maxoccurs
19
+ attr_reader :elements
20
+
21
+ def initialize
22
+ super()
23
+ @minoccurs = '1'
24
+ @maxoccurs = '1'
25
+ @elements = []
26
+ end
27
+
28
+ def targetnamespace
29
+ parent.targetnamespace
30
+ end
31
+
32
+ def elementformdefault
33
+ parent.elementformdefault
34
+ end
35
+
36
+ def <<(element)
37
+ @elements << element
38
+ end
39
+
40
+ def parse_element(element)
41
+ case element
42
+ when AnyName
43
+ o = Any.new
44
+ @elements << o
45
+ o
46
+ when ElementName
47
+ o = Element.new
48
+ @elements << o
49
+ o
50
+ else
51
+ nil
52
+ end
53
+ end
54
+
55
+ def parse_attr(attr, value)
56
+ case attr
57
+ when MaxOccursAttrName
58
+ @maxoccurs = value.source
59
+ when MinOccursAttrName
60
+ @minoccurs = value.source
61
+ else
62
+ nil
63
+ end
64
+ end
65
+ end
66
+
67
+
68
+ end
69
+ end
@@ -0,0 +1,65 @@
1
+ # WSDL4R - XMLSchema simpleContent definition for WSDL.
2
+ # Copyright (C) 2004, 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/wsdl/info'
10
+ require 'action_web_service/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class SimpleContent < Info
18
+ attr_reader :restriction
19
+ attr_reader :extension
20
+
21
+ def check_lexical_format(value)
22
+ check(value)
23
+ end
24
+
25
+ def initialize
26
+ super
27
+ @restriction = nil
28
+ @extension = nil
29
+ end
30
+
31
+ def base
32
+ content.base
33
+ end
34
+
35
+ def targetnamespace
36
+ parent.targetnamespace
37
+ end
38
+
39
+ def parse_element(element)
40
+ case element
41
+ when RestrictionName
42
+ @restriction = SimpleRestriction.new
43
+ @restriction
44
+ when ExtensionName
45
+ @extension = SimpleExtension.new
46
+ @extension
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def content
53
+ @restriction || @extension
54
+ end
55
+
56
+ def check(value)
57
+ unless content.valid?(value)
58
+ raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
59
+ end
60
+ end
61
+ end
62
+
63
+
64
+ end
65
+ end
@@ -0,0 +1,54 @@
1
+ # WSDL4R - XMLSchema simpleType extension definition for WSDL.
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 'action_web_service/wsdl/info'
10
+ require 'action_web_service/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class SimpleExtension < Info
18
+ attr_reader :base
19
+ attr_reader :attributes
20
+
21
+ def initialize
22
+ super
23
+ @base = nil
24
+ @attributes = XSD::NamedElements.new
25
+ end
26
+
27
+ def targetnamespace
28
+ parent.targetnamespace
29
+ end
30
+
31
+ def valid?(value)
32
+ true
33
+ end
34
+
35
+ def parse_element(element)
36
+ case element
37
+ when AttributeName
38
+ o = Attribute.new
39
+ @attributes << o
40
+ o
41
+ end
42
+ end
43
+
44
+ def parse_attr(attr, value)
45
+ case attr
46
+ when BaseAttrName
47
+ @base = value
48
+ end
49
+ end
50
+ end
51
+
52
+
53
+ end
54
+ end
@@ -0,0 +1,73 @@
1
+ # WSDL4R - XMLSchema simpleContent restriction definition for WSDL.
2
+ # Copyright (C) 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
+ require 'action_web_service/wsdl/info'
10
+ require 'action_web_service/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class SimpleRestriction < Info
18
+ attr_reader :base
19
+ attr_reader :enumeration
20
+ attr_accessor :length
21
+ attr_accessor :pattern
22
+
23
+ def initialize
24
+ super
25
+ @base = nil
26
+ @enumeration = [] # NamedElements?
27
+ @length = nil
28
+ @pattern = nil
29
+ end
30
+
31
+ def valid?(value)
32
+ return false unless check_restriction(value)
33
+ return false unless check_length(value)
34
+ return false unless check_pattern(value)
35
+ true
36
+ end
37
+
38
+ def parse_element(element)
39
+ case element
40
+ when EnumerationName
41
+ Enumeration.new # just a parsing handler
42
+ when LengthName
43
+ Length.new # just a parsing handler
44
+ when PatternName
45
+ Pattern.new # just a parsing handler
46
+ end
47
+ end
48
+
49
+ def parse_attr(attr, value)
50
+ case attr
51
+ when BaseAttrName
52
+ @base = value
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def check_restriction(value)
59
+ @enumeration.empty? or @enumeration.include?(value)
60
+ end
61
+
62
+ def check_length(value)
63
+ @length.nil? or value.size == @length
64
+ end
65
+
66
+ def check_pattern(value)
67
+ @pattern.nil? or @pattern =~ value
68
+ end
69
+ end
70
+
71
+
72
+ end
73
+ end
@@ -0,0 +1,73 @@
1
+ # WSDL4R - XMLSchema simpleType definition for WSDL.
2
+ # Copyright (C) 2004, 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/wsdl/info'
10
+ require 'action_web_service/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class SimpleType < Info
18
+ attr_accessor :name
19
+ attr_reader :restriction
20
+
21
+ def check_lexical_format(value)
22
+ if @restriction
23
+ check_restriction(value)
24
+ else
25
+ raise ArgumentError.new("incomplete simpleType")
26
+ end
27
+ end
28
+
29
+ def base
30
+ if @restriction
31
+ @restriction.base
32
+ else
33
+ raise ArgumentError.new("incomplete simpleType")
34
+ end
35
+ end
36
+
37
+ def initialize(name = nil)
38
+ super()
39
+ @name = name
40
+ @restriction = nil
41
+ end
42
+
43
+ def targetnamespace
44
+ parent.targetnamespace
45
+ end
46
+
47
+ def parse_element(element)
48
+ case element
49
+ when RestrictionName
50
+ @restriction = SimpleRestriction.new
51
+ @restriction
52
+ end
53
+ end
54
+
55
+ def parse_attr(attr, value)
56
+ case attr
57
+ when NameAttrName
58
+ @name = XSD::QName.new(targetnamespace, value.source)
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def check_restriction(value)
65
+ unless @restriction.valid?(value)
66
+ raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
67
+ end
68
+ end
69
+ end
70
+
71
+
72
+ end
73
+ end