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,43 @@
1
+ # WSDL4R - WSDL types definition.
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
+
14
+
15
+ class Types < Info
16
+ attr_reader :schemas
17
+
18
+ def initialize
19
+ super
20
+ @schemas = []
21
+ end
22
+
23
+ def parse_element(element)
24
+ case element
25
+ when SchemaName
26
+ o = XMLSchema::Schema.new
27
+ @schemas << o
28
+ o
29
+ when DocumentationName
30
+ o = Documentation.new
31
+ o
32
+ else
33
+ nil
34
+ end
35
+ end
36
+
37
+ def parse_attr(attr, value)
38
+ nil
39
+ end
40
+ end
41
+
42
+
43
+ end
@@ -0,0 +1,23 @@
1
+ # WSDL4R - Base definitions.
2
+ # Copyright (C) 2000, 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/qname'
10
+
11
+
12
+ module WSDL
13
+
14
+
15
+ Version = '0.0.2'
16
+
17
+ Namespace = 'http://schemas.xmlsoap.org/wsdl/'
18
+ SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/'
19
+
20
+ class Error < StandardError; end
21
+
22
+
23
+ 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 All < 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,34 @@
1
+ # WSDL4R - WSDL SOAP documentation element.
2
+ # Copyright (C) 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 Annotation < Info
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ def parse_element(element)
22
+ # Accepts any element.
23
+ self
24
+ end
25
+
26
+ def parse_attr(attr, value)
27
+ # Accepts any attribute.
28
+ true
29
+ end
30
+ end
31
+
32
+
33
+ end
34
+ end
@@ -0,0 +1,56 @@
1
+ # WSDL4R - XMLSchema any definition for WSDL.
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 'action_web_service/wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Any < Info
17
+ attr_accessor :maxoccurs
18
+ attr_accessor :minoccurs
19
+ attr_accessor :namespace
20
+ attr_accessor :process_contents
21
+
22
+ def initialize
23
+ super()
24
+ @maxoccurs = '1'
25
+ @minoccurs = '1'
26
+ @namespace = '##any'
27
+ @process_contents = 'strict'
28
+ end
29
+
30
+ def targetnamespace
31
+ parent.targetnamespace
32
+ end
33
+
34
+ def parse_element(element)
35
+ nil
36
+ end
37
+
38
+ def parse_attr(attr, value)
39
+ case attr
40
+ when MaxOccursAttrName
41
+ @maxoccurs = value.source
42
+ when MinOccursAttrName
43
+ @minoccurs = value.source
44
+ when NamespaceAttrName
45
+ @namespace = value.source
46
+ when ProcessContentsAttrName
47
+ @process_contents = value.source
48
+ else
49
+ nil
50
+ end
51
+ end
52
+ end
53
+
54
+
55
+ end
56
+ end
@@ -0,0 +1,127 @@
1
+ # WSDL4R - XMLSchema attribute 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 Attribute < 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 :use
39
+ attr_writer :form
40
+ attr_writer :name
41
+ attr_writer :type
42
+ attr_writer :local_simpletype
43
+ attr_writer :default
44
+ attr_writer :fixed
45
+
46
+ attr_reader_ref :use
47
+ attr_reader_ref :form
48
+ attr_reader_ref :name
49
+ attr_reader_ref :type
50
+ attr_reader_ref :local_simpletype
51
+ attr_reader_ref :default
52
+ attr_reader_ref :fixed
53
+
54
+ attr_accessor :ref
55
+ attr_accessor :arytype
56
+
57
+ def initialize
58
+ super
59
+ @use = nil
60
+ @form = nil
61
+ @name = nil
62
+ @type = nil
63
+ @local_simpletype = nil
64
+ @default = nil
65
+ @fixed = nil
66
+ @ref = nil
67
+ @refelement = nil
68
+ @arytype = nil
69
+ end
70
+
71
+ def refelement
72
+ @refelement ||= root.collect_attributes[@ref]
73
+ end
74
+
75
+ def targetnamespace
76
+ parent.targetnamespace
77
+ end
78
+
79
+ def parse_element(element)
80
+ case element
81
+ when SimpleTypeName
82
+ @local_simpletype = SimpleType.new
83
+ @local_simpletype
84
+ end
85
+ end
86
+
87
+ def parse_attr(attr, value)
88
+ case attr
89
+ when RefAttrName
90
+ @ref = value
91
+ when UseAttrName
92
+ @use = value.source
93
+ when FormAttrName
94
+ @form = value.source
95
+ when NameAttrName
96
+ if directelement?
97
+ @name = XSD::QName.new(targetnamespace, value.source)
98
+ else
99
+ @name = XSD::QName.new(nil, value.source)
100
+ end
101
+ when TypeAttrName
102
+ @type = value
103
+ when DefaultAttrName
104
+ @default = value.source
105
+ when FixedAttrName
106
+ @fixed = value.source
107
+ when ArrayTypeAttrName
108
+ @arytype = if value.namespace.nil?
109
+ XSD::QName.new(XSD::Namespace, value.source)
110
+ else
111
+ value
112
+ end
113
+ else
114
+ nil
115
+ end
116
+ end
117
+
118
+ private
119
+
120
+ def directelement?
121
+ parent.is_a?(Schema)
122
+ end
123
+ end
124
+
125
+
126
+ end
127
+ 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 Choice < 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,92 @@
1
+ # WSDL4R - XMLSchema complexContent 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/xsd/namedelements'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class ComplexContent < Info
18
+ attr_accessor :base
19
+ attr_reader :derivetype
20
+ attr_reader :content
21
+ attr_reader :attributes
22
+
23
+ def initialize
24
+ super
25
+ @base = nil
26
+ @derivetype = nil
27
+ @content = nil
28
+ @attributes = XSD::NamedElements.new
29
+ @basetype = nil
30
+ end
31
+
32
+ def targetnamespace
33
+ parent.targetnamespace
34
+ end
35
+
36
+ def elementformdefault
37
+ parent.elementformdefault
38
+ end
39
+
40
+ def basetype
41
+ @basetype ||= root.collect_complextypes[@base]
42
+ end
43
+
44
+ def parse_element(element)
45
+ case element
46
+ when RestrictionName, ExtensionName
47
+ @derivetype = element.name
48
+ self
49
+ when AllName
50
+ if @derivetype.nil?
51
+ raise Parser::ElementConstraintError.new("base attr not found.")
52
+ end
53
+ @content = All.new
54
+ @content
55
+ when SequenceName
56
+ if @derivetype.nil?
57
+ raise Parser::ElementConstraintError.new("base attr not found.")
58
+ end
59
+ @content = Sequence.new
60
+ @content
61
+ when ChoiceName
62
+ if @derivetype.nil?
63
+ raise Parser::ElementConstraintError.new("base attr not found.")
64
+ end
65
+ @content = Choice.new
66
+ @content
67
+ when AttributeName
68
+ if @derivetype.nil?
69
+ raise Parser::ElementConstraintError.new("base attr not found.")
70
+ end
71
+ o = Attribute.new
72
+ @attributes << o
73
+ o
74
+ end
75
+ end
76
+
77
+ def parse_attr(attr, value)
78
+ if @derivetype.nil?
79
+ return nil
80
+ end
81
+ case attr
82
+ when BaseAttrName
83
+ @base = value
84
+ else
85
+ nil
86
+ end
87
+ end
88
+ end
89
+
90
+
91
+ end
92
+ end