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,139 @@
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
+ require 'action_web_service/wsdl/xmlSchema/content'
11
+ require 'action_web_service/wsdl/xmlSchema/element'
12
+ require 'action_web_service/xsd/namedelements'
13
+
14
+
15
+ module WSDL
16
+ module XMLSchema
17
+
18
+
19
+ class ComplexType < Info
20
+ attr_accessor :name
21
+ attr_accessor :complexcontent
22
+ attr_accessor :simplecontent
23
+ attr_reader :content
24
+ attr_accessor :final
25
+ attr_accessor :mixed
26
+ attr_reader :attributes
27
+
28
+ def initialize(name = nil)
29
+ super()
30
+ @name = name
31
+ @complexcontent = nil
32
+ @simplecontent = nil
33
+ @content = nil
34
+ @final = nil
35
+ @mixed = false
36
+ @attributes = XSD::NamedElements.new
37
+ end
38
+
39
+ def targetnamespace
40
+ # inner elements can be qualified
41
+ # parent.is_a?(WSDL::XMLSchema::Element) ? nil : parent.targetnamespace
42
+ parent.targetnamespace
43
+ end
44
+
45
+ def elementformdefault
46
+ parent.elementformdefault
47
+ end
48
+
49
+ AnyAsElement = Element.new(XSD::QName.new(nil, 'any'), XSD::AnyTypeName)
50
+ def each_element
51
+ if content
52
+ content.elements.each do |element|
53
+ if element.is_a?(Any)
54
+ yield(AnyAsElement)
55
+ else
56
+ yield(element)
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ def find_element(name)
63
+ if content
64
+ content.elements.each do |element|
65
+ if element.is_a?(Any)
66
+ return AnyAsElement if name == AnyAsElement.name
67
+ else
68
+ return element if name == element.name
69
+ end
70
+ end
71
+ end
72
+ nil
73
+ end
74
+
75
+ def find_element_by_name(name)
76
+ if content
77
+ content.elements.each do |element|
78
+ if element.is_a?(Any)
79
+ return AnyAsElement if name == AnyAsElement.name.name
80
+ else
81
+ return element if name == element.name.name
82
+ end
83
+ end
84
+ end
85
+ nil
86
+ end
87
+
88
+ def sequence_elements=(elements)
89
+ @content = Sequence.new
90
+ elements.each do |element|
91
+ @content << element
92
+ end
93
+ end
94
+
95
+ def all_elements=(elements)
96
+ @content = All.new
97
+ elements.each do |element|
98
+ @content << element
99
+ end
100
+ end
101
+
102
+ def parse_element(element)
103
+ case element
104
+ when AllName
105
+ @content = All.new
106
+ when SequenceName
107
+ @content = Sequence.new
108
+ when ChoiceName
109
+ @content = Choice.new
110
+ when ComplexContentName
111
+ @complexcontent = ComplexContent.new
112
+ when SimpleContentName
113
+ @simplecontent = SimpleContent.new
114
+ when AttributeName
115
+ o = Attribute.new
116
+ @attributes << o
117
+ o
118
+ else
119
+ nil
120
+ end
121
+ end
122
+
123
+ def parse_attr(attr, value)
124
+ case attr
125
+ when FinalAttrName
126
+ @final = value.source
127
+ when MixedAttrName
128
+ @mixed = (value.source == 'true')
129
+ when NameAttrName
130
+ @name = XSD::QName.new(targetnamespace, value.source)
131
+ else
132
+ nil
133
+ end
134
+ end
135
+ end
136
+
137
+
138
+ end
139
+ end
@@ -0,0 +1,96 @@
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 Content < Info
17
+ attr_accessor :final
18
+ attr_accessor :mixed
19
+ attr_accessor :type
20
+ attr_reader :contents
21
+ attr_reader :elements
22
+
23
+ def initialize
24
+ super()
25
+ @final = nil
26
+ @mixed = false
27
+ @type = nil
28
+ @contents = []
29
+ @elements = []
30
+ end
31
+
32
+ def targetnamespace
33
+ parent.targetnamespace
34
+ end
35
+
36
+ def <<(content)
37
+ @contents << content
38
+ update_elements
39
+ end
40
+
41
+ def each
42
+ @contents.each do |content|
43
+ yield content
44
+ end
45
+ end
46
+
47
+ def parse_element(element)
48
+ case element
49
+ when AllName, SequenceName, ChoiceName
50
+ o = Content.new
51
+ o.type = element.name
52
+ @contents << o
53
+ o
54
+ when AnyName
55
+ o = Any.new
56
+ @contents << o
57
+ o
58
+ when ElementName
59
+ o = Element.new
60
+ @contents << o
61
+ o
62
+ else
63
+ nil
64
+ end
65
+ end
66
+
67
+ def parse_attr(attr, value)
68
+ case attr
69
+ when FinalAttrName
70
+ @final = value.source
71
+ when MixedAttrName
72
+ @mixed = (value.source == 'true')
73
+ else
74
+ nil
75
+ end
76
+ end
77
+
78
+ def parse_epilogue
79
+ update_elements
80
+ end
81
+
82
+ private
83
+
84
+ def update_elements
85
+ @elements = []
86
+ @contents.each do |content|
87
+ if content.is_a?(Element)
88
+ @elements << [content.name, content]
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+
95
+ end
96
+ end
@@ -0,0 +1,80 @@
1
+ # WSDL4R - XMLSchema data definitions.
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/xsd/datatypes'
10
+ require 'action_web_service/wsdl/xmlSchema/annotation'
11
+ require 'action_web_service/wsdl/xmlSchema/schema'
12
+ require 'action_web_service/wsdl/xmlSchema/import'
13
+ require 'action_web_service/wsdl/xmlSchema/include'
14
+ require 'action_web_service/wsdl/xmlSchema/simpleType'
15
+ require 'action_web_service/wsdl/xmlSchema/simpleRestriction'
16
+ require 'action_web_service/wsdl/xmlSchema/simpleExtension'
17
+ require 'action_web_service/wsdl/xmlSchema/complexType'
18
+ require 'action_web_service/wsdl/xmlSchema/complexContent'
19
+ require 'action_web_service/wsdl/xmlSchema/simpleContent'
20
+ require 'action_web_service/wsdl/xmlSchema/any'
21
+ require 'action_web_service/wsdl/xmlSchema/element'
22
+ require 'action_web_service/wsdl/xmlSchema/all'
23
+ require 'action_web_service/wsdl/xmlSchema/choice'
24
+ require 'action_web_service/wsdl/xmlSchema/sequence'
25
+ require 'action_web_service/wsdl/xmlSchema/attribute'
26
+ require 'action_web_service/wsdl/xmlSchema/unique'
27
+ require 'action_web_service/wsdl/xmlSchema/enumeration'
28
+ require 'action_web_service/wsdl/xmlSchema/length'
29
+ require 'action_web_service/wsdl/xmlSchema/pattern'
30
+
31
+ module WSDL
32
+ module XMLSchema
33
+
34
+
35
+ AllName = XSD::QName.new(XSD::Namespace, 'all')
36
+ AnnotationName = XSD::QName.new(XSD::Namespace, 'annotation')
37
+ AnyName = XSD::QName.new(XSD::Namespace, 'any')
38
+ AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
39
+ ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
40
+ ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent')
41
+ ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType')
42
+ ElementName = XSD::QName.new(XSD::Namespace, 'element')
43
+ EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
44
+ ExtensionName = XSD::QName.new(XSD::Namespace, 'extension')
45
+ ImportName = XSD::QName.new(XSD::Namespace, 'import')
46
+ IncludeName = XSD::QName.new(XSD::Namespace, 'include')
47
+ LengthName = XSD::QName.new(XSD::Namespace, 'length')
48
+ PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
49
+ RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction')
50
+ SequenceName = XSD::QName.new(XSD::Namespace, 'sequence')
51
+ SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
52
+ SimpleContentName = XSD::QName.new(XSD::Namespace, 'simpleContent')
53
+ SimpleTypeName = XSD::QName.new(XSD::Namespace, 'simpleType')
54
+ UniqueName = XSD::QName.new(XSD::Namespace, 'unique')
55
+
56
+ AttributeFormDefaultAttrName = XSD::QName.new(nil, 'attributeFormDefault')
57
+ BaseAttrName = XSD::QName.new(nil, 'base')
58
+ DefaultAttrName = XSD::QName.new(nil, 'default')
59
+ ElementFormDefaultAttrName = XSD::QName.new(nil, 'elementFormDefault')
60
+ FinalAttrName = XSD::QName.new(nil, 'final')
61
+ FixedAttrName = XSD::QName.new(nil, 'fixed')
62
+ FormAttrName = XSD::QName.new(nil, 'form')
63
+ IdAttrName = XSD::QName.new(nil, 'id')
64
+ MaxOccursAttrName = XSD::QName.new(nil, 'maxOccurs')
65
+ MinOccursAttrName = XSD::QName.new(nil, 'minOccurs')
66
+ MixedAttrName = XSD::QName.new(nil, 'mixed')
67
+ NameAttrName = XSD::QName.new(nil, 'name')
68
+ NamespaceAttrName = XSD::QName.new(nil, 'namespace')
69
+ NillableAttrName = XSD::QName.new(nil, 'nillable')
70
+ ProcessContentsAttrName = XSD::QName.new(nil, 'processContents')
71
+ RefAttrName = XSD::QName.new(nil, 'ref')
72
+ SchemaLocationAttrName = XSD::QName.new(nil, 'schemaLocation')
73
+ TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
74
+ TypeAttrName = XSD::QName.new(nil, 'type')
75
+ UseAttrName = XSD::QName.new(nil, 'use')
76
+ ValueAttrName = XSD::QName.new(nil, 'value')
77
+
78
+
79
+ end
80
+ end
@@ -0,0 +1,154 @@
1
+ # WSDL4R - XMLSchema element 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
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Element < Info
17
+ class << self
18
+ if RUBY_VERSION > "1.7.0"
19
+ def attr_reader_ref(symbol)
20
+ name = symbol.to_s
21
+ define_method(name) {
22
+ instance_variable_get("@#{name}") ||
23
+ (refelement ? refelement.__send__(name) : nil)
24
+ }
25
+ end
26
+ else
27
+ def attr_reader_ref(symbol)
28
+ name = symbol.to_s
29
+ module_eval <<-EOS
30
+ def #{name}
31
+ @#{name} || (refelement ? refelement.#{name} : nil)
32
+ end
33
+ EOS
34
+ end
35
+ end
36
+ end
37
+
38
+ attr_writer :name # required
39
+ attr_writer :form
40
+ attr_writer :type
41
+ attr_writer :local_simpletype
42
+ attr_writer :local_complextype
43
+ attr_writer :constraint
44
+ attr_writer :maxoccurs
45
+ attr_writer :minoccurs
46
+ attr_writer :nillable
47
+
48
+ attr_reader_ref :name
49
+ attr_reader_ref :form
50
+ attr_reader_ref :type
51
+ attr_reader_ref :local_simpletype
52
+ attr_reader_ref :local_complextype
53
+ attr_reader_ref :constraint
54
+ attr_reader_ref :maxoccurs
55
+ attr_reader_ref :minoccurs
56
+ attr_reader_ref :nillable
57
+
58
+ attr_accessor :ref
59
+
60
+ def initialize(name = nil, type = nil)
61
+ super()
62
+ @name = name
63
+ @form = nil
64
+ @type = type
65
+ @local_simpletype = @local_complextype = nil
66
+ @constraint = nil
67
+ @maxoccurs = '1'
68
+ @minoccurs = '1'
69
+ @nillable = nil
70
+ @ref = nil
71
+ @refelement = nil
72
+ end
73
+
74
+ def refelement
75
+ @refelement ||= (@ref ? root.collect_elements[@ref] : nil)
76
+ end
77
+
78
+ def targetnamespace
79
+ parent.targetnamespace
80
+ end
81
+
82
+ def elementformdefault
83
+ parent.elementformdefault
84
+ end
85
+
86
+ def elementform
87
+ self.form.nil? ? parent.elementformdefault : self.form
88
+ end
89
+
90
+ def parse_element(element)
91
+ case element
92
+ when SimpleTypeName
93
+ @local_simpletype = SimpleType.new
94
+ @local_simpletype
95
+ when ComplexTypeName
96
+ @type = nil
97
+ @local_complextype = ComplexType.new
98
+ @local_complextype
99
+ when UniqueName
100
+ @constraint = Unique.new
101
+ @constraint
102
+ else
103
+ nil
104
+ end
105
+ end
106
+
107
+ def parse_attr(attr, value)
108
+ case attr
109
+ when NameAttrName
110
+ # namespace may be nil
111
+ if directelement? or elementform == 'qualified'
112
+ @name = XSD::QName.new(targetnamespace, value.source)
113
+ else
114
+ @name = XSD::QName.new(nil, value.source)
115
+ end
116
+ when FormAttrName
117
+ @form = value.source
118
+ when TypeAttrName
119
+ @type = value
120
+ when RefAttrName
121
+ @ref = value
122
+ when MaxOccursAttrName
123
+ if parent.is_a?(All)
124
+ if value.source != '1'
125
+ raise Parser::AttrConstraintError.new(
126
+ "cannot parse #{value} for #{attr}")
127
+ end
128
+ end
129
+ @maxoccurs = value.source
130
+ when MinOccursAttrName
131
+ if parent.is_a?(All)
132
+ unless ['0', '1'].include?(value.source)
133
+ raise Parser::AttrConstraintError.new(
134
+ "cannot parse #{value} for #{attr}")
135
+ end
136
+ end
137
+ @minoccurs = value.source
138
+ when NillableAttrName
139
+ @nillable = (value.source == 'true')
140
+ else
141
+ nil
142
+ end
143
+ end
144
+
145
+ private
146
+
147
+ def directelement?
148
+ parent.is_a?(Schema)
149
+ end
150
+ end
151
+
152
+
153
+ end
154
+ end