soap4r 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
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