soap4r_es 0.0.1

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 (165) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wsdl2ruby.rb +140 -0
  3. data/bin/wsdl2ruby_rails.rb +140 -0
  4. data/bin/xsd2ruby.rb +92 -0
  5. data/lib/soap/attachment.rb +109 -0
  6. data/lib/soap/attrproxy.rb +35 -0
  7. data/lib/soap/baseData.rb +1095 -0
  8. data/lib/soap/element.rb +278 -0
  9. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  10. data/lib/soap/encodingstyle/handler.rb +121 -0
  11. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  12. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  13. data/lib/soap/filter/filterchain.rb +52 -0
  14. data/lib/soap/filter/handler.rb +32 -0
  15. data/lib/soap/filter/streamhandler.rb +30 -0
  16. data/lib/soap/filter.rb +14 -0
  17. data/lib/soap/generator.rb +299 -0
  18. data/lib/soap/header/handler.rb +64 -0
  19. data/lib/soap/header/handlerset.rb +78 -0
  20. data/lib/soap/header/mappinghandler.rb +48 -0
  21. data/lib/soap/header/simplehandler.rb +45 -0
  22. data/lib/soap/httpconfigloader.rb +140 -0
  23. data/lib/soap/mapping/encodedregistry.rb +541 -0
  24. data/lib/soap/mapping/factory.rb +389 -0
  25. data/lib/soap/mapping/literalregistry.rb +392 -0
  26. data/lib/soap/mapping/mapping.rb +577 -0
  27. data/lib/soap/mapping/registry.rb +297 -0
  28. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  29. data/lib/soap/mapping/schemadefinition.rb +171 -0
  30. data/lib/soap/mapping/typeMap.rb +107 -0
  31. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  32. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  33. data/lib/soap/mapping.rb +13 -0
  34. data/lib/soap/marshal.rb +60 -0
  35. data/lib/soap/mimemessage.rb +243 -0
  36. data/lib/soap/nestedexception.rb +43 -0
  37. data/lib/soap/netHttpClient.rb +242 -0
  38. data/lib/soap/ns.rb +39 -0
  39. data/lib/soap/parser.rb +253 -0
  40. data/lib/soap/processor.rb +67 -0
  41. data/lib/soap/property.rb +330 -0
  42. data/lib/soap/proxy.rb +15 -0
  43. data/lib/soap/rpc/cgistub.rb +249 -0
  44. data/lib/soap/rpc/driver.rb +222 -0
  45. data/lib/soap/rpc/element.rb +375 -0
  46. data/lib/soap/rpc/httpserver.rb +144 -0
  47. data/lib/soap/rpc/methodDef.rb +69 -0
  48. data/lib/soap/rpc/proxy.rb +573 -0
  49. data/lib/soap/rpc/router.rb +672 -0
  50. data/lib/soap/rpc/rpc.rb +26 -0
  51. data/lib/soap/rpc/soaplet.rb +201 -0
  52. data/lib/soap/rpc/standaloneServer.rb +44 -0
  53. data/lib/soap/soap.rb +163 -0
  54. data/lib/soap/streamHandler.rb +302 -0
  55. data/lib/soap/version.rb +12 -0
  56. data/lib/soap/wsdlDriver.rb +165 -0
  57. data/lib/wsdl/binding.rb +66 -0
  58. data/lib/wsdl/data.rb +65 -0
  59. data/lib/wsdl/definitions.rb +237 -0
  60. data/lib/wsdl/documentation.rb +33 -0
  61. data/lib/wsdl/import.rb +81 -0
  62. data/lib/wsdl/importer.rb +39 -0
  63. data/lib/wsdl/info.rb +51 -0
  64. data/lib/wsdl/message.rb +55 -0
  65. data/lib/wsdl/operation.rb +152 -0
  66. data/lib/wsdl/operationBinding.rb +241 -0
  67. data/lib/wsdl/param.rb +94 -0
  68. data/lib/wsdl/parser.rb +180 -0
  69. data/lib/wsdl/part.rb +53 -0
  70. data/lib/wsdl/port.rb +67 -0
  71. data/lib/wsdl/portType.rb +76 -0
  72. data/lib/wsdl/service.rb +62 -0
  73. data/lib/wsdl/soap/address.rb +41 -0
  74. data/lib/wsdl/soap/binding.rb +50 -0
  75. data/lib/wsdl/soap/body.rb +59 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +529 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +242 -0
  79. data/lib/wsdl/soap/classNameCreator.rb +57 -0
  80. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  81. data/lib/wsdl/soap/complexType.rb +174 -0
  82. data/lib/wsdl/soap/data.rb +43 -0
  83. data/lib/wsdl/soap/definitions.rb +201 -0
  84. data/lib/wsdl/soap/driverCreator.rb +121 -0
  85. data/lib/wsdl/soap/element.rb +34 -0
  86. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  87. data/lib/wsdl/soap/fault.rb +57 -0
  88. data/lib/wsdl/soap/header.rb +87 -0
  89. data/lib/wsdl/soap/headerfault.rb +57 -0
  90. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  91. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  92. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +380 -0
  93. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  94. data/lib/wsdl/soap/operation.rb +113 -0
  95. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  96. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  97. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  98. data/lib/wsdl/soap/wsdl2ruby.rb +249 -0
  99. data/lib/wsdl/types.rb +45 -0
  100. data/lib/wsdl/wsdl.rb +25 -0
  101. data/lib/wsdl/xmlSchema/all.rb +25 -0
  102. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  103. data/lib/wsdl/xmlSchema/any.rb +62 -0
  104. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  105. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  106. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  107. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  108. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  109. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  110. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  111. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  112. data/lib/wsdl/xmlSchema/content.rb +96 -0
  113. data/lib/wsdl/xmlSchema/data.rb +117 -0
  114. data/lib/wsdl/xmlSchema/element.rb +154 -0
  115. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  116. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  117. data/lib/wsdl/xmlSchema/group.rb +101 -0
  118. data/lib/wsdl/xmlSchema/import.rb +53 -0
  119. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  120. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  121. data/lib/wsdl/xmlSchema/include.rb +48 -0
  122. data/lib/wsdl/xmlSchema/length.rb +38 -0
  123. data/lib/wsdl/xmlSchema/list.rb +49 -0
  124. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  125. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  128. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  129. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  130. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  131. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  132. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  133. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  134. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  135. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  136. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  137. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  138. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  139. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  140. data/lib/wsdl/xmlSchema/union.rb +36 -0
  141. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  142. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  143. data/lib/wsdl/xmlSchema/xsd2ruby.rb +177 -0
  144. data/lib/xsd/charset.rb +190 -0
  145. data/lib/xsd/codegen/classdef.rb +230 -0
  146. data/lib/xsd/codegen/commentdef.rb +35 -0
  147. data/lib/xsd/codegen/gensupport.rb +277 -0
  148. data/lib/xsd/codegen/methoddef.rb +71 -0
  149. data/lib/xsd/codegen/moduledef.rb +209 -0
  150. data/lib/xsd/codegen.rb +13 -0
  151. data/lib/xsd/datatypes.rb +1465 -0
  152. data/lib/xsd/datatypes1999.rb +21 -0
  153. data/lib/xsd/iconvcharset.rb +33 -0
  154. data/lib/xsd/mapping.rb +69 -0
  155. data/lib/xsd/namedelements.rb +133 -0
  156. data/lib/xsd/ns.rb +183 -0
  157. data/lib/xsd/qname.rb +80 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +136 -0
  159. data/lib/xsd/xmlparser/nokogiriparser.rb +63 -0
  160. data/lib/xsd/xmlparser/ogaparser.rb +53 -0
  161. data/lib/xsd/xmlparser/oxparser.rb +97 -0
  162. data/lib/xsd/xmlparser/parser.rb +101 -0
  163. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  164. data/lib/xsd/xmlparser.rb +81 -0
  165. metadata +240 -0
@@ -0,0 +1,179 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema schema definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class Schema < Info
19
+ attr_reader :targetnamespace # required
20
+ attr_reader :complextypes
21
+ attr_reader :simpletypes
22
+ attr_reader :elements
23
+ attr_reader :attributes
24
+ attr_reader :modelgroups
25
+ attr_reader :attributegroups
26
+ attr_reader :imports
27
+ attr_accessor :attributeformdefault
28
+ attr_accessor :elementformdefault
29
+ attr_accessor :version
30
+
31
+ attr_reader :importedschema
32
+
33
+ def initialize
34
+ super
35
+ @targetnamespace = nil
36
+ @complextypes = XSD::NamedElements.new
37
+ @simpletypes = XSD::NamedElements.new
38
+ @elements = XSD::NamedElements.new
39
+ @attributes = XSD::NamedElements.new
40
+ @modelgroups = XSD::NamedElements.new
41
+ @attributegroups = XSD::NamedElements.new
42
+ @imports = []
43
+ @attributeformdefault = "unqualified"
44
+ @elementformdefault = "unqualified"
45
+ @importedschema = {}
46
+ @location = nil
47
+ @root = self
48
+ @version = nil
49
+ end
50
+
51
+ def location
52
+ @location || (root.nil? ? nil : root.location)
53
+ end
54
+
55
+ def location=(location)
56
+ @location = location
57
+ end
58
+
59
+ def parse_element(element)
60
+ case element
61
+ when ImportName
62
+ o = Import.new
63
+ @imports << o
64
+ o
65
+ when IncludeName
66
+ o = Include.new
67
+ @imports << o
68
+ o
69
+ when ComplexTypeName
70
+ o = ComplexType.new
71
+ @complextypes << o
72
+ o
73
+ when SimpleTypeName
74
+ o = SimpleType.new
75
+ @simpletypes << o
76
+ o
77
+ when ElementName
78
+ o = Element.new
79
+ o.form = 'qualified' # root element is qualified
80
+ @elements << o
81
+ o
82
+ when AttributeName
83
+ o = Attribute.new
84
+ @attributes << o
85
+ o
86
+ when GroupName
87
+ o = Group.new
88
+ @modelgroups << o
89
+ o
90
+ when AttributeGroupName
91
+ o = AttributeGroup.new
92
+ @attributegroups << o
93
+ o
94
+ else
95
+ nil
96
+ end
97
+ end
98
+
99
+ def parse_attr(attr, value)
100
+ case attr
101
+ when TargetNamespaceAttrName
102
+ @targetnamespace = value.source
103
+ when AttributeFormDefaultAttrName
104
+ @attributeformdefault = value.source
105
+ when ElementFormDefaultAttrName
106
+ @elementformdefault = value.source
107
+ when VersionAttrName
108
+ @version = value.source
109
+ else
110
+ nil
111
+ end
112
+ end
113
+
114
+ def collect_attributes
115
+ result = XSD::NamedElements.new
116
+ result.concat(@attributes)
117
+ @imports.each do |import|
118
+ result.concat(import.content.collect_attributes) if import.content
119
+ end
120
+ result
121
+ end
122
+
123
+ def collect_modelgroups
124
+ result = XSD::NamedElements.new
125
+ result.concat(@modelgroups)
126
+ @imports.each do |import|
127
+ result.concat(import.content.collect_modelgroups) if import.content
128
+ end
129
+ result
130
+ end
131
+
132
+ def collect_attributegroups
133
+ result = XSD::NamedElements.new
134
+ result.concat(@attributegroups)
135
+ @imports.each do |import|
136
+ result.concat(import.content.collect_attributegroups) if import.content
137
+ end
138
+ result
139
+ end
140
+
141
+ def collect_elements
142
+ result = XSD::NamedElements.new
143
+ result.concat(@elements)
144
+ @imports.each do |import|
145
+ result.concat(import.content.collect_elements) if import.content
146
+ end
147
+ result
148
+ end
149
+
150
+ def collect_complextypes
151
+ result = XSD::NamedElements.new
152
+ result.concat(@complextypes)
153
+ @imports.each do |import|
154
+ result.concat(import.content.collect_complextypes) if import.content
155
+ end
156
+ result
157
+ end
158
+
159
+ def collect_simpletypes
160
+ result = XSD::NamedElements.new
161
+ result.concat(@simpletypes)
162
+ @imports.each do |import|
163
+ result.concat(import.content.collect_simpletypes) if import.content
164
+ end
165
+ result
166
+ end
167
+
168
+ def self.parse_element(element)
169
+ if element == SchemaName
170
+ Schema.new
171
+ else
172
+ nil
173
+ end
174
+ end
175
+ end
176
+
177
+
178
+ end
179
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema complexType definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/xmlSchema/content'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class Sequence < Content
18
+ attr_reader :any
19
+
20
+ def initialize
21
+ super()
22
+ @any = nil
23
+ end
24
+
25
+ def have_any?
26
+ !!@any
27
+ end
28
+
29
+ def parse_element(element)
30
+ case element
31
+ when SequenceName
32
+ o = Sequence.new
33
+ @elements << o
34
+ o
35
+ when ChoiceName
36
+ o = Choice.new
37
+ @elements << o
38
+ o
39
+ when GroupName
40
+ o = Group.new
41
+ @elements << o
42
+ o
43
+ when AnyName
44
+ @any = Any.new
45
+ @elements << @any
46
+ @any
47
+ else
48
+ super(element)
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ end
55
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema simpleContent definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class SimpleContent < Info
19
+ attr_reader :restriction
20
+ attr_reader :extension
21
+
22
+ def check_lexical_format(value)
23
+ check(value)
24
+ end
25
+
26
+ def initialize
27
+ super
28
+ @restriction = nil
29
+ @extension = nil
30
+ end
31
+
32
+ def base
33
+ content.base
34
+ end
35
+
36
+ def attributes
37
+ content.attributes
38
+ end
39
+
40
+ def targetnamespace
41
+ parent.targetnamespace
42
+ end
43
+
44
+ def parse_element(element)
45
+ case element
46
+ when RestrictionName
47
+ @restriction = SimpleRestriction.new
48
+ @restriction
49
+ when ExtensionName
50
+ @extension = SimpleExtension.new
51
+ @extension
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def content
58
+ @restriction || @extension
59
+ end
60
+
61
+ def check(value)
62
+ unless content.valid?(value)
63
+ raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
64
+ end
65
+ end
66
+ end
67
+
68
+
69
+ end
70
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema simpleType extension definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class SimpleExtension < Info
19
+ attr_reader :base
20
+ attr_reader :attributes
21
+
22
+ def initialize
23
+ super
24
+ @base = nil
25
+ @attributes = XSD::NamedElements.new
26
+ end
27
+
28
+ def targetnamespace
29
+ parent.targetnamespace
30
+ end
31
+
32
+ def valid?(value)
33
+ true
34
+ end
35
+
36
+ def parse_element(element)
37
+ case element
38
+ when AttributeName
39
+ o = Attribute.new
40
+ @attributes << o
41
+ o
42
+ when AttributeGroupName
43
+ o = AttributeGroup.new
44
+ @attributes << o
45
+ o
46
+ when AnyAttributeName
47
+ o = AnyAttribute.new
48
+ @attributes << o
49
+ o
50
+ end
51
+ end
52
+
53
+ def parse_attr(attr, value)
54
+ case attr
55
+ when BaseAttrName
56
+ @base = value
57
+ end
58
+ end
59
+ end
60
+
61
+
62
+ end
63
+ end
@@ -0,0 +1,133 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema simpleContent restriction definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class SimpleRestriction < Info
19
+ attr_reader :base
20
+ attr_accessor :length
21
+ attr_accessor :minlength
22
+ attr_accessor :maxlength
23
+ attr_accessor :pattern
24
+ attr_reader :enumeration
25
+ attr_accessor :whitespace
26
+ attr_accessor :maxinclusive
27
+ attr_accessor :maxexclusive
28
+ attr_accessor :minexclusive
29
+ attr_accessor :mininclusive
30
+ attr_accessor :totaldigits
31
+ attr_accessor :fractiondigits
32
+ attr_reader :fixed
33
+ attr_reader :attributes
34
+
35
+ def initialize
36
+ super
37
+ @base = nil
38
+ @enumeration = [] # NamedElements?
39
+ @length = nil
40
+ @maxlength = nil
41
+ @minlength = nil
42
+ @pattern = nil
43
+ @fixed = {}
44
+ @attributes = XSD::NamedElements.new
45
+ end
46
+
47
+ def valid?(value)
48
+ return false unless check_restriction(value)
49
+ return false unless check_length(value)
50
+ return false unless check_maxlength(value)
51
+ return false unless check_minlength(value)
52
+ return false unless check_pattern(value)
53
+ true
54
+ end
55
+
56
+ def enumeration?
57
+ !@enumeration.empty?
58
+ end
59
+
60
+ def parse_element(element)
61
+ case element
62
+ when LengthName
63
+ Length.new
64
+ when MinLengthName
65
+ MinLength.new
66
+ when MaxLengthName
67
+ MaxLength.new
68
+ when PatternName
69
+ Pattern.new
70
+ when EnumerationName
71
+ Enumeration.new
72
+ when WhiteSpaceName
73
+ WhiteSpace.new
74
+ when MaxInclusiveName
75
+ MaxInclusive.new
76
+ when MaxExclusiveName
77
+ MaxExclusive.new
78
+ when MinExclusiveName
79
+ MinExclusive.new
80
+ when MinInclusiveName
81
+ MinInclusive.new
82
+ when TotalDigitsName
83
+ TotalDigits.new
84
+ when FractionDigitsName
85
+ FractionDigits.new
86
+ when AttributeName
87
+ o = Attribute.new
88
+ @attributes << o
89
+ o
90
+ when AttributeGroupName
91
+ o = AttributeGroup.new
92
+ @attributes << o
93
+ o
94
+ when AnyAttributeName
95
+ o = AnyAttribute.new
96
+ @attributes << o
97
+ o
98
+ end
99
+ end
100
+
101
+ def parse_attr(attr, value)
102
+ case attr
103
+ when BaseAttrName
104
+ @base = value
105
+ end
106
+ end
107
+
108
+ private
109
+
110
+ def check_restriction(value)
111
+ @enumeration.empty? or @enumeration.include?(value)
112
+ end
113
+
114
+ def check_length(value)
115
+ @length.nil? or value.size == @length
116
+ end
117
+
118
+ def check_maxlength(value)
119
+ @maxlength.nil? or value.size <= @maxlength
120
+ end
121
+
122
+ def check_minlength(value)
123
+ @minlength.nil? or value.size >= @minlength
124
+ end
125
+
126
+ def check_pattern(value)
127
+ @pattern.nil? or @pattern =~ value
128
+ end
129
+ end
130
+
131
+
132
+ end
133
+ end
@@ -0,0 +1,88 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema simpleType definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class SimpleType < Info
19
+ attr_accessor :name
20
+ attr_reader :restriction
21
+ attr_reader :list
22
+ attr_reader :union
23
+
24
+ def check_lexical_format(value)
25
+ if @restriction
26
+ check_restriction(value)
27
+ elsif @list
28
+ # TODO: check
29
+ elsif @union
30
+ # TODO: check
31
+ else
32
+ raise ArgumentError.new("incomplete simpleType")
33
+ end
34
+ end
35
+
36
+ def base
37
+ if @restriction
38
+ @restriction.base
39
+ else
40
+ nil
41
+ end
42
+ end
43
+
44
+ def initialize(name = nil)
45
+ super()
46
+ @name = name
47
+ @restriction = nil
48
+ @list = nil
49
+ @union = nil
50
+ end
51
+
52
+ def targetnamespace
53
+ parent.targetnamespace
54
+ end
55
+
56
+ def parse_element(element)
57
+ case element
58
+ when RestrictionName
59
+ @restriction = SimpleRestriction.new
60
+ @restriction
61
+ when ListName
62
+ @list = List.new
63
+ @list
64
+ when UnionName
65
+ @union = Union.new
66
+ @union
67
+ end
68
+ end
69
+
70
+ def parse_attr(attr, value)
71
+ case attr
72
+ when NameAttrName
73
+ @name = XSD::QName.new(targetnamespace, value.source)
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def check_restriction(value)
80
+ unless @restriction.valid?(value)
81
+ raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
82
+ end
83
+ end
84
+ end
85
+
86
+
87
+ end
88
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema totalDigits definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class TotalDigits < Info
18
+ def initialize
19
+ super
20
+ end
21
+
22
+ def parse_element(element)
23
+ nil
24
+ end
25
+
26
+ def parse_attr(attr, value)
27
+ case attr
28
+ when FixedAttrName
29
+ parent.fixed[:totaldigits] = to_boolean(value)
30
+ when ValueAttrName
31
+ parent.totaldigits = to_int(value)
32
+ end
33
+ end
34
+ end
35
+
36
+
37
+ end
38
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema union definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class Union < Info
19
+ attr_reader :member_types
20
+
21
+ def initialize
22
+ super
23
+ @member_types = nil
24
+ end
25
+
26
+ def parse_attr(attr, value)
27
+ case attr
28
+ when MemberTypesAttrName
29
+ @member_types = value.source
30
+ end
31
+ end
32
+ end
33
+
34
+
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+ # WSDL4R - XMLSchema unique element.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+
12
+
13
+ module WSDL
14
+ module XMLSchema
15
+
16
+
17
+ class Unique < Info
18
+ def initialize
19
+ super
20
+ end
21
+
22
+ def parse_element(element)
23
+ # Accepts any element.
24
+ self
25
+ end
26
+
27
+ def parse_attr(attr, value)
28
+ # Accepts any attribute.
29
+ true
30
+ end
31
+ end
32
+
33
+
34
+ end
35
+ end