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.
- data/bin/wsdl2ruby.rb +8 -2
- data/lib/soap/baseData.rb +93 -43
- data/lib/soap/element.rb +11 -8
- data/lib/soap/encodingstyle/handler.rb +15 -4
- data/lib/soap/encodingstyle/literalHandler.rb +18 -24
- data/lib/soap/encodingstyle/soapHandler.rb +34 -77
- data/lib/soap/generator.rb +74 -48
- data/lib/soap/header/handler.rb +1 -1
- data/lib/soap/header/mappinghandler.rb +47 -0
- data/lib/soap/mapping/encodedregistry.rb +19 -13
- data/lib/soap/mapping/factory.rb +19 -3
- data/lib/soap/mapping/literalregistry.rb +47 -35
- data/lib/soap/mapping/mapping.rb +92 -24
- data/lib/soap/mapping/registry.rb +34 -18
- data/lib/soap/mapping/schemadefinition.rb +8 -1
- data/lib/soap/mapping/typeMap.rb +18 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +8 -50
- data/lib/soap/mapping/wsdlliteralregistry.rb +45 -39
- data/lib/soap/nestedexception.rb +42 -0
- data/lib/soap/netHttpClient.rb +1 -0
- data/lib/soap/ns.rb +34 -0
- data/lib/soap/parser.rb +32 -29
- data/lib/soap/processor.rb +1 -1
- data/lib/soap/rpc/driver.rb +1 -0
- data/lib/soap/rpc/element.rb +18 -6
- data/lib/soap/rpc/httpserver.rb +38 -24
- data/lib/soap/rpc/proxy.rb +14 -11
- data/lib/soap/rpc/router.rb +4 -1
- data/lib/soap/soap.rb +7 -6
- data/lib/soap/wsdlDriver.rb +29 -8
- data/lib/tags +5690 -0
- data/lib/wsdl/definitions.rb +26 -40
- data/lib/wsdl/info.rb +11 -0
- data/lib/wsdl/parser.rb +2 -2
- data/lib/wsdl/soap/cgiStubCreator.rb +10 -5
- data/lib/wsdl/soap/classDefCreator.rb +140 -113
- data/lib/wsdl/soap/classDefCreatorSupport.rb +94 -12
- data/lib/wsdl/soap/classNameCreator.rb +54 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +6 -5
- data/lib/wsdl/soap/complexType.rb +10 -1
- data/lib/wsdl/soap/definitions.rb +4 -0
- data/lib/wsdl/soap/driverCreator.rb +14 -6
- data/lib/wsdl/soap/element.rb +4 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +11 -55
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +28 -126
- data/lib/wsdl/soap/mappingRegistryCreator.rb +9 -3
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +209 -94
- data/lib/wsdl/soap/methodDefCreator.rb +12 -16
- data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
- data/lib/wsdl/soap/servletStubCreator.rb +107 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +10 -5
- data/lib/wsdl/soap/wsdl2ruby.rb +28 -13
- data/lib/wsdl/wsdl.rb +2 -1
- data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
- data/lib/wsdl/xmlSchema/attributeGroup.rb +86 -0
- data/lib/wsdl/xmlSchema/choice.rb +4 -1
- data/lib/wsdl/xmlSchema/complexContent.rb +1 -1
- data/lib/wsdl/xmlSchema/complexExtension.rb +9 -1
- data/lib/wsdl/xmlSchema/complexRestriction.rb +8 -0
- data/lib/wsdl/xmlSchema/complexType.rb +38 -5
- data/lib/wsdl/xmlSchema/data.rb +30 -7
- data/lib/wsdl/xmlSchema/element.rb +10 -2
- data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
- data/lib/wsdl/xmlSchema/group.rb +118 -0
- data/lib/wsdl/xmlSchema/import.rb +11 -23
- data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
- data/lib/wsdl/xmlSchema/include.rb +11 -17
- data/lib/wsdl/xmlSchema/length.rb +3 -1
- data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +3 -1
- data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/minlength.rb +3 -1
- data/lib/wsdl/xmlSchema/schema.rb +34 -0
- data/lib/wsdl/xmlSchema/sequence.rb +4 -1
- data/lib/wsdl/xmlSchema/simpleExtension.rb +8 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +49 -8
- data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
- data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +13 -4
- data/lib/xsd/charset.rb +8 -6
- data/lib/xsd/codegen/classdef.rb +5 -0
- data/lib/xsd/codegen/moduledef.rb +17 -0
- data/lib/xsd/datatypes.rb +165 -20
- data/lib/xsd/mapping.rb +13 -5
- data/lib/xsd/namedelements.rb +8 -0
- data/lib/xsd/ns.rb +50 -14
- data/lib/xsd/qname.rb +3 -2
- data/lib/xsd/xmlparser.rb +4 -3
- data/test/soap/asp.net/test_aspdotnet.rb +1 -1
- data/test/soap/auth/test_basic.rb +4 -3
- data/test/soap/auth/test_digest.rb +4 -3
- data/test/soap/calc/test_calc.rb +6 -4
- data/test/soap/calc/test_calc2.rb +6 -4
- data/test/soap/calc/test_calc_cgi.rb +6 -4
- data/test/soap/fault/test_customfault.rb +6 -4
- data/test/soap/fault/test_soaparray.rb +35 -0
- data/test/soap/filter/test_filter.rb +2 -2
- data/test/soap/header/test_authheader.rb +2 -2
- data/test/soap/header/test_authheader_cgi.rb +3 -3
- data/test/soap/header/test_simplehandler.rb +2 -2
- data/test/soap/helloworld/test_helloworld.rb +6 -4
- data/test/soap/ssl/test_ssl.rb +1 -1
- data/test/soap/struct/test_struct.rb +2 -2
- data/test/soap/swa/test_file.rb +6 -4
- data/test/soap/test_basetype.rb +4 -4
- data/test/soap/test_cookie.rb +2 -2
- data/test/soap/test_custom_ns.rb +50 -8
- data/test/soap/test_custommap.rb +6 -4
- data/test/soap/test_empty.rb +6 -4
- data/test/soap/test_envelopenamespace.rb +2 -2
- data/test/soap/test_extraattr.rb +6 -7
- data/test/soap/test_generator.rb +27 -0
- data/test/soap/test_mapping.rb +10 -0
- data/test/soap/test_nestedexception.rb +56 -0
- data/test/soap/test_nil.rb +6 -4
- data/test/soap/test_no_indent.rb +6 -4
- data/test/soap/test_response_as_xml.rb +2 -2
- data/test/soap/test_streamhandler.rb +6 -3
- data/test/soap/test_styleuse.rb +2 -2
- data/test/soap/wsdlDriver/test_calc.rb +2 -2
- data/test/soap/wsdlDriver/test_document.rb +2 -2
- data/test/soap/wsdlDriver/test_simpletype.rb +2 -2
- data/test/wsdl/abstract/test_abstract.rb +1 -1
- data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
- data/test/wsdl/anonymous/expectedDriver.rb +59 -0
- data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
- data/test/wsdl/anonymous/lp.wsdl +147 -0
- data/test/wsdl/anonymous/test_anonymous.rb +130 -0
- data/test/wsdl/any/expectedDriver.rb +3 -2
- data/test/wsdl/any/expectedEcho.rb +22 -2
- data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
- data/test/wsdl/any/expectedService.rb +3 -1
- data/test/wsdl/any/test_any.rb +2 -7
- data/test/wsdl/axisArray/axisArray.wsdl +31 -4
- data/test/wsdl/axisArray/test_axisarray.rb +58 -3
- data/test/wsdl/choice/choice.wsdl +39 -0
- data/test/wsdl/choice/test_choice.rb +134 -7
- data/test/wsdl/complexcontent/test_echo.rb +1 -1
- data/test/wsdl/datetime/test_datetime.rb +2 -2
- data/test/wsdl/document/array/double.wsdl +45 -6
- data/test/wsdl/document/array/test_array.rb +68 -1
- data/test/wsdl/document/document.wsdl +2 -0
- data/test/wsdl/document/test_nosoapaction.rb +1 -1
- data/test/wsdl/document/test_number.rb +1 -1
- data/test/wsdl/document/test_rpc.rb +78 -9
- data/test/wsdl/fault/test_fault.rb +1 -1
- data/test/wsdl/fault/test_multifault.rb +1 -1
- data/test/wsdl/group/expectedClassdef.rb +58 -0
- data/test/wsdl/group/expectedDriver.rb +51 -0
- data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
- data/test/wsdl/group/group.wsdl +88 -0
- data/test/wsdl/group/test_rpc.rb +145 -0
- data/test/wsdl/list/test_list.rb +1 -1
- data/test/wsdl/map/test_map.rb +2 -2
- data/test/wsdl/marshal/person_org.rb +5 -0
- data/test/wsdl/multiplefault.wsdl +11 -4
- data/test/wsdl/oneway/test_oneway.rb +1 -1
- data/test/wsdl/overload/test_overload.rb +1 -1
- data/test/wsdl/qualified/test_qualified.rb +1 -1
- data/test/wsdl/qualified/test_unqualified.rb +1 -1
- data/test/wsdl/raa/RAAService.rb +62 -57
- data/test/wsdl/raa/expectedClassDef.rb +100 -0
- data/test/wsdl/raa/expectedDriver.rb +96 -0
- data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
- data/test/wsdl/raa/test_raa.rb +54 -19
- data/test/wsdl/ref/expectedDriver.rb +1 -1
- data/test/wsdl/ref/expectedProduct.rb +101 -16
- data/test/wsdl/ref/test_ref.rb +2 -1
- data/test/wsdl/rpc/test_rpc.rb +1 -2
- data/test/wsdl/rpc/test_rpc_lit.rb +13 -13
- data/test/wsdl/simplecontent/test_simplecontent.rb +5 -5
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +3 -2
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +2 -0
- data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +10 -17
- data/test/wsdl/simpletype/rpc/expectedService.rb +4 -2
- data/test/wsdl/simpletype/test_simpletype.rb +2 -2
- data/test/wsdl/soap/test_soapbodyparts.rb +2 -2
- data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +2 -0
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +3 -2
- data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +5 -9
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +4 -2
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +4 -2
- data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +6 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +1 -1
- data/test/wsdl/soaptype/test_soaptype.rb +1 -1
- data/test/wsdl/test_multiplefault.rb +3 -1
- data/test/xsd/codegen/test_classdef.rb +30 -0
- data/test/xsd/test_ns.rb +21 -0
- data/test/xsd/test_xsd.rb +5 -4
- data/test/xsd/xsd2ruby/expected_mysample.rb +13 -2
- data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +5 -11
- data/test/xsd/xsd2ruby/section.xsd +8 -0
- metadata +40 -8
- data/test/wsdl/axisArray/itemList.rb +0 -14
- data/test/wsdl/raa/RAA.rb +0 -120
- data/test/wsdl/raa/RAAServant.rb +0 -107
- 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
|
|
@@ -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
|
178
|
+
@abstract = to_boolean(value)
|
146
179
|
when FinalAttrName
|
147
180
|
@final = value.source
|
148
181
|
when MixedAttrName
|
149
|
-
@mixed = (value
|
182
|
+
@mixed = to_boolean(value)
|
150
183
|
when NameAttrName
|
151
184
|
@name = XSD::QName.new(targetnamespace, value.source)
|
152
185
|
else
|
data/lib/wsdl/xmlSchema/data.rb
CHANGED
@@ -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/
|
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
|
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
|
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
|
-
@
|
26
|
-
|
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
|
-
@
|
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
|
|