soap4r 1.5.7 → 1.5.8

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 (199) hide show
  1. data/bin/wsdl2ruby.rb +8 -2
  2. data/lib/soap/baseData.rb +93 -43
  3. data/lib/soap/element.rb +11 -8
  4. data/lib/soap/encodingstyle/handler.rb +15 -4
  5. data/lib/soap/encodingstyle/literalHandler.rb +18 -24
  6. data/lib/soap/encodingstyle/soapHandler.rb +34 -77
  7. data/lib/soap/generator.rb +74 -48
  8. data/lib/soap/header/handler.rb +1 -1
  9. data/lib/soap/header/mappinghandler.rb +47 -0
  10. data/lib/soap/mapping/encodedregistry.rb +19 -13
  11. data/lib/soap/mapping/factory.rb +19 -3
  12. data/lib/soap/mapping/literalregistry.rb +47 -35
  13. data/lib/soap/mapping/mapping.rb +92 -24
  14. data/lib/soap/mapping/registry.rb +34 -18
  15. data/lib/soap/mapping/schemadefinition.rb +8 -1
  16. data/lib/soap/mapping/typeMap.rb +18 -0
  17. data/lib/soap/mapping/wsdlencodedregistry.rb +8 -50
  18. data/lib/soap/mapping/wsdlliteralregistry.rb +45 -39
  19. data/lib/soap/nestedexception.rb +42 -0
  20. data/lib/soap/netHttpClient.rb +1 -0
  21. data/lib/soap/ns.rb +34 -0
  22. data/lib/soap/parser.rb +32 -29
  23. data/lib/soap/processor.rb +1 -1
  24. data/lib/soap/rpc/driver.rb +1 -0
  25. data/lib/soap/rpc/element.rb +18 -6
  26. data/lib/soap/rpc/httpserver.rb +38 -24
  27. data/lib/soap/rpc/proxy.rb +14 -11
  28. data/lib/soap/rpc/router.rb +4 -1
  29. data/lib/soap/soap.rb +7 -6
  30. data/lib/soap/wsdlDriver.rb +29 -8
  31. data/lib/tags +5690 -0
  32. data/lib/wsdl/definitions.rb +26 -40
  33. data/lib/wsdl/info.rb +11 -0
  34. data/lib/wsdl/parser.rb +2 -2
  35. data/lib/wsdl/soap/cgiStubCreator.rb +10 -5
  36. data/lib/wsdl/soap/classDefCreator.rb +140 -113
  37. data/lib/wsdl/soap/classDefCreatorSupport.rb +94 -12
  38. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  39. data/lib/wsdl/soap/clientSkeltonCreator.rb +6 -5
  40. data/lib/wsdl/soap/complexType.rb +10 -1
  41. data/lib/wsdl/soap/definitions.rb +4 -0
  42. data/lib/wsdl/soap/driverCreator.rb +14 -6
  43. data/lib/wsdl/soap/element.rb +4 -0
  44. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +11 -55
  45. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +28 -126
  46. data/lib/wsdl/soap/mappingRegistryCreator.rb +9 -3
  47. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +209 -94
  48. data/lib/wsdl/soap/methodDefCreator.rb +12 -16
  49. data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
  50. data/lib/wsdl/soap/servletStubCreator.rb +107 -0
  51. data/lib/wsdl/soap/standaloneServerStubCreator.rb +10 -5
  52. data/lib/wsdl/soap/wsdl2ruby.rb +28 -13
  53. data/lib/wsdl/wsdl.rb +2 -1
  54. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  55. data/lib/wsdl/xmlSchema/attributeGroup.rb +86 -0
  56. data/lib/wsdl/xmlSchema/choice.rb +4 -1
  57. data/lib/wsdl/xmlSchema/complexContent.rb +1 -1
  58. data/lib/wsdl/xmlSchema/complexExtension.rb +9 -1
  59. data/lib/wsdl/xmlSchema/complexRestriction.rb +8 -0
  60. data/lib/wsdl/xmlSchema/complexType.rb +38 -5
  61. data/lib/wsdl/xmlSchema/data.rb +30 -7
  62. data/lib/wsdl/xmlSchema/element.rb +10 -2
  63. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  64. data/lib/wsdl/xmlSchema/group.rb +118 -0
  65. data/lib/wsdl/xmlSchema/import.rb +11 -23
  66. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  67. data/lib/wsdl/xmlSchema/include.rb +11 -17
  68. data/lib/wsdl/xmlSchema/length.rb +3 -1
  69. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  70. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  71. data/lib/wsdl/xmlSchema/maxlength.rb +3 -1
  72. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  73. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  74. data/lib/wsdl/xmlSchema/minlength.rb +3 -1
  75. data/lib/wsdl/xmlSchema/schema.rb +34 -0
  76. data/lib/wsdl/xmlSchema/sequence.rb +4 -1
  77. data/lib/wsdl/xmlSchema/simpleExtension.rb +8 -0
  78. data/lib/wsdl/xmlSchema/simpleRestriction.rb +49 -8
  79. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  80. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  81. data/lib/wsdl/xmlSchema/xsd2ruby.rb +13 -4
  82. data/lib/xsd/charset.rb +8 -6
  83. data/lib/xsd/codegen/classdef.rb +5 -0
  84. data/lib/xsd/codegen/moduledef.rb +17 -0
  85. data/lib/xsd/datatypes.rb +165 -20
  86. data/lib/xsd/mapping.rb +13 -5
  87. data/lib/xsd/namedelements.rb +8 -0
  88. data/lib/xsd/ns.rb +50 -14
  89. data/lib/xsd/qname.rb +3 -2
  90. data/lib/xsd/xmlparser.rb +4 -3
  91. data/test/soap/asp.net/test_aspdotnet.rb +1 -1
  92. data/test/soap/auth/test_basic.rb +4 -3
  93. data/test/soap/auth/test_digest.rb +4 -3
  94. data/test/soap/calc/test_calc.rb +6 -4
  95. data/test/soap/calc/test_calc2.rb +6 -4
  96. data/test/soap/calc/test_calc_cgi.rb +6 -4
  97. data/test/soap/fault/test_customfault.rb +6 -4
  98. data/test/soap/fault/test_soaparray.rb +35 -0
  99. data/test/soap/filter/test_filter.rb +2 -2
  100. data/test/soap/header/test_authheader.rb +2 -2
  101. data/test/soap/header/test_authheader_cgi.rb +3 -3
  102. data/test/soap/header/test_simplehandler.rb +2 -2
  103. data/test/soap/helloworld/test_helloworld.rb +6 -4
  104. data/test/soap/ssl/test_ssl.rb +1 -1
  105. data/test/soap/struct/test_struct.rb +2 -2
  106. data/test/soap/swa/test_file.rb +6 -4
  107. data/test/soap/test_basetype.rb +4 -4
  108. data/test/soap/test_cookie.rb +2 -2
  109. data/test/soap/test_custom_ns.rb +50 -8
  110. data/test/soap/test_custommap.rb +6 -4
  111. data/test/soap/test_empty.rb +6 -4
  112. data/test/soap/test_envelopenamespace.rb +2 -2
  113. data/test/soap/test_extraattr.rb +6 -7
  114. data/test/soap/test_generator.rb +27 -0
  115. data/test/soap/test_mapping.rb +10 -0
  116. data/test/soap/test_nestedexception.rb +56 -0
  117. data/test/soap/test_nil.rb +6 -4
  118. data/test/soap/test_no_indent.rb +6 -4
  119. data/test/soap/test_response_as_xml.rb +2 -2
  120. data/test/soap/test_streamhandler.rb +6 -3
  121. data/test/soap/test_styleuse.rb +2 -2
  122. data/test/soap/wsdlDriver/test_calc.rb +2 -2
  123. data/test/soap/wsdlDriver/test_document.rb +2 -2
  124. data/test/soap/wsdlDriver/test_simpletype.rb +2 -2
  125. data/test/wsdl/abstract/test_abstract.rb +1 -1
  126. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  127. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  128. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  129. data/test/wsdl/anonymous/lp.wsdl +147 -0
  130. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  131. data/test/wsdl/any/expectedDriver.rb +3 -2
  132. data/test/wsdl/any/expectedEcho.rb +22 -2
  133. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  134. data/test/wsdl/any/expectedService.rb +3 -1
  135. data/test/wsdl/any/test_any.rb +2 -7
  136. data/test/wsdl/axisArray/axisArray.wsdl +31 -4
  137. data/test/wsdl/axisArray/test_axisarray.rb +58 -3
  138. data/test/wsdl/choice/choice.wsdl +39 -0
  139. data/test/wsdl/choice/test_choice.rb +134 -7
  140. data/test/wsdl/complexcontent/test_echo.rb +1 -1
  141. data/test/wsdl/datetime/test_datetime.rb +2 -2
  142. data/test/wsdl/document/array/double.wsdl +45 -6
  143. data/test/wsdl/document/array/test_array.rb +68 -1
  144. data/test/wsdl/document/document.wsdl +2 -0
  145. data/test/wsdl/document/test_nosoapaction.rb +1 -1
  146. data/test/wsdl/document/test_number.rb +1 -1
  147. data/test/wsdl/document/test_rpc.rb +78 -9
  148. data/test/wsdl/fault/test_fault.rb +1 -1
  149. data/test/wsdl/fault/test_multifault.rb +1 -1
  150. data/test/wsdl/group/expectedClassdef.rb +58 -0
  151. data/test/wsdl/group/expectedDriver.rb +51 -0
  152. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  153. data/test/wsdl/group/group.wsdl +88 -0
  154. data/test/wsdl/group/test_rpc.rb +145 -0
  155. data/test/wsdl/list/test_list.rb +1 -1
  156. data/test/wsdl/map/test_map.rb +2 -2
  157. data/test/wsdl/marshal/person_org.rb +5 -0
  158. data/test/wsdl/multiplefault.wsdl +11 -4
  159. data/test/wsdl/oneway/test_oneway.rb +1 -1
  160. data/test/wsdl/overload/test_overload.rb +1 -1
  161. data/test/wsdl/qualified/test_qualified.rb +1 -1
  162. data/test/wsdl/qualified/test_unqualified.rb +1 -1
  163. data/test/wsdl/raa/RAAService.rb +62 -57
  164. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  165. data/test/wsdl/raa/expectedDriver.rb +96 -0
  166. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  167. data/test/wsdl/raa/test_raa.rb +54 -19
  168. data/test/wsdl/ref/expectedDriver.rb +1 -1
  169. data/test/wsdl/ref/expectedProduct.rb +101 -16
  170. data/test/wsdl/ref/test_ref.rb +2 -1
  171. data/test/wsdl/rpc/test_rpc.rb +1 -2
  172. data/test/wsdl/rpc/test_rpc_lit.rb +13 -13
  173. data/test/wsdl/simplecontent/test_simplecontent.rb +5 -5
  174. data/test/wsdl/simpletype/rpc/expectedDriver.rb +3 -2
  175. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +2 -0
  176. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +10 -17
  177. data/test/wsdl/simpletype/rpc/expectedService.rb +4 -2
  178. data/test/wsdl/simpletype/test_simpletype.rb +2 -2
  179. data/test/wsdl/soap/test_soapbodyparts.rb +2 -2
  180. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +2 -0
  181. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +3 -2
  182. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +5 -9
  183. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +4 -2
  184. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +4 -2
  185. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +6 -0
  186. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +1 -1
  187. data/test/wsdl/soaptype/test_soaptype.rb +1 -1
  188. data/test/wsdl/test_multiplefault.rb +3 -1
  189. data/test/xsd/codegen/test_classdef.rb +30 -0
  190. data/test/xsd/test_ns.rb +21 -0
  191. data/test/xsd/test_xsd.rb +5 -4
  192. data/test/xsd/xsd2ruby/expected_mysample.rb +13 -2
  193. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +5 -11
  194. data/test/xsd/xsd2ruby/section.xsd +8 -0
  195. metadata +40 -8
  196. data/test/wsdl/axisArray/itemList.rb +0 -14
  197. data/test/wsdl/raa/RAA.rb +0 -120
  198. data/test/wsdl/raa/RAAServant.rb +0 -107
  199. data/test/wsdl/raa/server.rb +0 -103
@@ -63,7 +63,7 @@ class ComplexExtension < Info
63
63
  def check_type
64
64
  if @base == ::SOAP::ValueArrayName
65
65
  :TYPE_ARRAY
66
- elsif content
66
+ elsif content or !@attributes.empty?
67
67
  :TYPE_STRUCT
68
68
  else
69
69
  basetype.check_type
@@ -85,6 +85,14 @@ class ComplexExtension < Info
85
85
  o = Attribute.new
86
86
  @attributes << o
87
87
  o
88
+ when AttributeGroupName
89
+ o = AttributeGroup.new
90
+ @attributes << o
91
+ o
92
+ when AnyAttributeName
93
+ o = AnyAttribute.new
94
+ @attributes << o
95
+ o
88
96
  end
89
97
  end
90
98
 
@@ -74,6 +74,14 @@ class ComplexRestriction < Info
74
74
  o = Attribute.new
75
75
  @attributes << o
76
76
  o
77
+ when AttributeGroupName
78
+ o = AttributeGroup.new
79
+ @attributes << o
80
+ o
81
+ when AnyAttributeName
82
+ o = AnyAttribute.new
83
+ @attributes << o
84
+ o
77
85
  end
78
86
  end
79
87
 
@@ -62,6 +62,12 @@ class ComplexType < Info
62
62
  end
63
63
  end
64
64
 
65
+ def base
66
+ if c = @complexcontent || @simplecontent
67
+ c.base
68
+ end
69
+ end
70
+
65
71
  def elements
66
72
  if c = @complexcontent || @content
67
73
  c.elements
@@ -71,13 +77,30 @@ class ComplexType < Info
71
77
  end
72
78
 
73
79
  def attributes
80
+ attrs = nil
74
81
  if @complexcontent
75
- @complexcontent.attributes + @attributes
82
+ attrs = @complexcontent.attributes + @attributes
76
83
  elsif @simplecontent
77
- @simplecontent.attributes + @attributes
84
+ attrs = @simplecontent.attributes + @attributes
78
85
  else
79
- @attributes
86
+ attrs = @attributes
87
+ end
88
+ found = XSD::NamedElements.new
89
+ attrs.each do |attr|
90
+ case attr
91
+ when Attribute
92
+ found << attr
93
+ when AttributeGroup
94
+ if attr.attributes
95
+ found.concat(attr.attributes)
96
+ end
97
+ when AnyAttribute
98
+ # ignored
99
+ else
100
+ warn("unknown attribute: #{attr}")
101
+ end
80
102
  end
103
+ found
81
104
  end
82
105
 
83
106
  def nested_elements
@@ -126,6 +149,8 @@ class ComplexType < Info
126
149
  @content = Sequence.new
127
150
  when ChoiceName
128
151
  @content = Choice.new
152
+ when GroupName
153
+ @content = Group.new
129
154
  when ComplexContentName
130
155
  @complexcontent = ComplexContent.new
131
156
  when SimpleContentName
@@ -134,6 +159,14 @@ class ComplexType < Info
134
159
  o = Attribute.new
135
160
  @attributes << o
136
161
  o
162
+ when AttributeGroupName
163
+ o = AttributeGroup.new
164
+ @attributes << o
165
+ o
166
+ when AnyAttributeName
167
+ o = AnyAttribute.new
168
+ @attributes << o
169
+ o
137
170
  else
138
171
  nil
139
172
  end
@@ -142,11 +175,11 @@ class ComplexType < Info
142
175
  def parse_attr(attr, value)
143
176
  case attr
144
177
  when AbstractAttrName
145
- @abstract = (value.source == 'true')
178
+ @abstract = to_boolean(value)
146
179
  when FinalAttrName
147
180
  @final = value.source
148
181
  when MixedAttrName
149
- @mixed = (value.source == 'true')
182
+ @mixed = to_boolean(value)
150
183
  when NameAttrName
151
184
  @name = XSD::QName.new(targetnamespace, value.source)
152
185
  else
@@ -20,6 +20,7 @@ require 'wsdl/xmlSchema/complexRestriction'
20
20
  require 'wsdl/xmlSchema/complexExtension'
21
21
  require 'wsdl/xmlSchema/simpleContent'
22
22
  require 'wsdl/xmlSchema/any'
23
+ require 'wsdl/xmlSchema/anyAttribute'
23
24
  require 'wsdl/xmlSchema/element'
24
25
  require 'wsdl/xmlSchema/all'
25
26
  require 'wsdl/xmlSchema/choice'
@@ -28,11 +29,21 @@ require 'wsdl/xmlSchema/list'
28
29
  require 'wsdl/xmlSchema/attribute'
29
30
  require 'wsdl/xmlSchema/union'
30
31
  require 'wsdl/xmlSchema/unique'
31
- require 'wsdl/xmlSchema/enumeration'
32
+ require 'wsdl/xmlSchema/group'
33
+ require 'wsdl/xmlSchema/attributeGroup'
34
+
32
35
  require 'wsdl/xmlSchema/length'
33
- require 'wsdl/xmlSchema/maxlength'
34
36
  require 'wsdl/xmlSchema/minlength'
37
+ require 'wsdl/xmlSchema/maxlength'
35
38
  require 'wsdl/xmlSchema/pattern'
39
+ require 'wsdl/xmlSchema/enumeration'
40
+ require 'wsdl/xmlSchema/whitespace'
41
+ require 'wsdl/xmlSchema/maxinclusive'
42
+ require 'wsdl/xmlSchema/maxexclusive'
43
+ require 'wsdl/xmlSchema/minexclusive'
44
+ require 'wsdl/xmlSchema/mininclusive'
45
+ require 'wsdl/xmlSchema/totaldigits'
46
+ require 'wsdl/xmlSchema/fractiondigits'
36
47
 
37
48
  module WSDL
38
49
  module XMLSchema
@@ -41,20 +52,18 @@ module XMLSchema
41
52
  AllName = XSD::QName.new(XSD::Namespace, 'all')
42
53
  AnnotationName = XSD::QName.new(XSD::Namespace, 'annotation')
43
54
  AnyName = XSD::QName.new(XSD::Namespace, 'any')
55
+ AnyAttributeName = XSD::QName.new(XSD::Namespace, 'anyAttribute')
44
56
  AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
57
+ AttributeGroupName = XSD::QName.new(XSD::Namespace, 'attributeGroup')
45
58
  ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
46
59
  ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent')
47
60
  ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType')
48
61
  ElementName = XSD::QName.new(XSD::Namespace, 'element')
49
- EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
50
62
  ExtensionName = XSD::QName.new(XSD::Namespace, 'extension')
63
+ GroupName = XSD::QName.new(XSD::Namespace, 'group')
51
64
  ImportName = XSD::QName.new(XSD::Namespace, 'import')
52
65
  IncludeName = XSD::QName.new(XSD::Namespace, 'include')
53
- LengthName = XSD::QName.new(XSD::Namespace, 'length')
54
66
  ListName = XSD::QName.new(XSD::Namespace, 'list')
55
- MaxLengthName = XSD::QName.new(XSD::Namespace, 'maxLength')
56
- MinLengthName = XSD::QName.new(XSD::Namespace, 'minLength')
57
- PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
58
67
  RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction')
59
68
  SequenceName = XSD::QName.new(XSD::Namespace, 'sequence')
60
69
  SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
@@ -63,6 +72,19 @@ SimpleTypeName = XSD::QName.new(XSD::Namespace, 'simpleType')
63
72
  UnionName = XSD::QName.new(XSD::Namespace, 'union')
64
73
  UniqueName = XSD::QName.new(XSD::Namespace, 'unique')
65
74
 
75
+ LengthName = XSD::QName.new(XSD::Namespace, 'length')
76
+ MinLengthName = XSD::QName.new(XSD::Namespace, 'minLength')
77
+ MaxLengthName = XSD::QName.new(XSD::Namespace, 'maxLength')
78
+ PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
79
+ EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
80
+ WhiteSpaceName = XSD::QName.new(XSD::Namespace, 'whiteSpace')
81
+ MaxInclusiveName = XSD::QName.new(XSD::Namespace, 'maxInclusive')
82
+ MaxExclusiveName = XSD::QName.new(XSD::Namespace, 'maxExclusive')
83
+ MinExclusiveName = XSD::QName.new(XSD::Namespace, 'minExclusive')
84
+ MinInclusiveName = XSD::QName.new(XSD::Namespace, 'minInclusive')
85
+ TotalDigitsName = XSD::QName.new(XSD::Namespace, 'totalDigits')
86
+ FractionDigitsName = XSD::QName.new(XSD::Namespace, 'fractionDigits')
87
+
66
88
  AbstractAttrName = XSD::QName.new(nil, 'abstract')
67
89
  AttributeFormDefaultAttrName = XSD::QName.new(nil, 'attributeFormDefault')
68
90
  BaseAttrName = XSD::QName.new(nil, 'base')
@@ -87,6 +109,7 @@ TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
87
109
  TypeAttrName = XSD::QName.new(nil, 'type')
88
110
  UseAttrName = XSD::QName.new(nil, 'use')
89
111
  ValueAttrName = XSD::QName.new(nil, 'value')
112
+ VersionAttrName = XSD::QName.new(nil, 'version')
90
113
 
91
114
 
92
115
  end
@@ -1,4 +1,4 @@
1
- # WSDL4R - XMLSchema element definition for WSDL.
1
+ # WSDL4R - XMLSchema element definition.
2
2
  # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
@@ -52,6 +52,8 @@ class Element < Info
52
52
  attr_reader_ref :local_complextype
53
53
  attr_reader_ref :constraint
54
54
  attr_reader_ref :nillable
55
+ attr_reader_ref :default
56
+ attr_reader_ref :abstract
55
57
 
56
58
  attr_accessor :ref
57
59
 
@@ -65,6 +67,8 @@ class Element < Info
65
67
  @maxoccurs = 1
66
68
  @minoccurs = 1
67
69
  @nillable = nil
70
+ @default = nil
71
+ @abstract = false
68
72
  @ref = nil
69
73
  @refelement = nil
70
74
  end
@@ -147,7 +151,11 @@ class Element < Info
147
151
  end
148
152
  @minoccurs = Integer(value.source)
149
153
  when NillableAttrName
150
- @nillable = (value.source == 'true')
154
+ @nillable = to_boolean(value)
155
+ when DefaultAttrName
156
+ @default = value.source
157
+ when AbstractAttrName
158
+ @abstract = to_boolean(value)
151
159
  else
152
160
  nil
153
161
  end
@@ -0,0 +1,37 @@
1
+ # WSDL4R - XMLSchema fractionDigits definition for WSDL.
2
+ # Copyright (C) 2000-2007 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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class FractionDigits < 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 FixedAttrName
28
+ parent.fixed[:fractiondigits] = to_boolean(value)
29
+ when ValueAttrName
30
+ parent.fractiondigits = to_int(value)
31
+ end
32
+ end
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,118 @@
1
+ # WSDL4R - XMLSchema group definition.
2
+ # Copyright (C) 2000-2007 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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class Group < 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_accessor :maxoccurs
40
+ attr_accessor :minoccurs
41
+ attr_writer :content
42
+
43
+ attr_reader_ref :name
44
+ attr_reader_ref :content
45
+
46
+ attr_accessor :ref
47
+
48
+ def initialize(name = nil)
49
+ super()
50
+ @name = name
51
+ @maxoccurs = 1
52
+ @minoccurs = 1
53
+ @content = nil
54
+ @ref = nil
55
+ @refelement = nil
56
+ end
57
+
58
+ def refelement
59
+ @refelement ||= (@ref ? root.collect_modelgroups[@ref] : nil)
60
+ end
61
+
62
+ def targetnamespace
63
+ parent.targetnamespace
64
+ end
65
+
66
+ def elementformdefault
67
+ parent.elementformdefault
68
+ end
69
+
70
+ def parse_element(element)
71
+ case element
72
+ when AllName
73
+ @content = All.new
74
+ when SequenceName
75
+ @content = Sequence.new
76
+ when ChoiceName
77
+ @content = Choice.new
78
+ else
79
+ nil
80
+ end
81
+ end
82
+
83
+ def parse_attr(attr, value)
84
+ case attr
85
+ when NameAttrName
86
+ @name = XSD::QName.new(targetnamespace, value.source)
87
+ when RefAttrName
88
+ @ref = value
89
+ when MaxOccursAttrName
90
+ if parent.is_a?(All)
91
+ if value.source != '1'
92
+ raise Parser::AttributeConstraintError.new(
93
+ "cannot parse #{value} for #{attr}")
94
+ end
95
+ end
96
+ if value.source == 'unbounded'
97
+ @maxoccurs = nil
98
+ else
99
+ @maxoccurs = Integer(value.source)
100
+ end
101
+ value.source
102
+ when MinOccursAttrName
103
+ if parent.is_a?(All)
104
+ unless ['0', '1'].include?(value.source)
105
+ raise Parser::AttributeConstraintError.new(
106
+ "cannot parse #{value} for #{attr}")
107
+ end
108
+ end
109
+ @minoccurs = Integer(value.source)
110
+ else
111
+ nil
112
+ end
113
+ end
114
+ end
115
+
116
+
117
+ end
118
+ end
@@ -8,6 +8,7 @@
8
8
 
9
9
  require 'wsdl/info'
10
10
  require 'wsdl/xmlSchema/importer'
11
+ require 'wsdl/xmlSchema/importHandler'
11
12
 
12
13
 
13
14
  module WSDL
@@ -16,14 +17,19 @@ module XMLSchema
16
17
 
17
18
  class Import < Info
18
19
  attr_reader :namespace
19
- attr_reader :schemalocation
20
- attr_reader :content
21
20
 
22
21
  def initialize
23
22
  super
24
23
  @namespace = nil
25
- @schemalocation = nil
26
- @content = nil
24
+ @handler = ImportHandler.new
25
+ end
26
+
27
+ def schemalocation
28
+ @handler.schemalocation
29
+ end
30
+
31
+ def content
32
+ @handler.content
27
33
  end
28
34
 
29
35
  def parse_element(element)
@@ -35,29 +41,11 @@ class Import < Info
35
41
  when NamespaceAttrName
36
42
  @namespace = value.source
37
43
  when SchemaLocationAttrName
38
- @schemalocation = URI.parse(value.source)
39
- if @schemalocation.relative? and !parent.location.nil? and
40
- !parent.location.relative?
41
- @schemalocation = parent.location + @schemalocation
42
- end
43
- if root.importedschema.key?(@schemalocation)
44
- @content = root.importedschema[@schemalocation]
45
- else
46
- root.importedschema[@schemalocation] = nil # placeholder
47
- @content = import(@schemalocation)
48
- root.importedschema[@schemalocation] = @content
49
- end
50
- @schemalocation
44
+ @handler.parse_schemalocation(value.source, root, parent)
51
45
  else
52
46
  nil
53
47
  end
54
48
  end
55
-
56
- private
57
-
58
- def import(location)
59
- Importer.import(location, root)
60
- end
61
49
  end
62
50
 
63
51