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
@@ -0,0 +1,37 @@
|
|
1
|
+
# WSDL4R - XMLSchema totalDigits 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 TotalDigits < 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[:totaldigits] = to_boolean(value)
|
29
|
+
when ValueAttrName
|
30
|
+
parent.totaldigits = to_int(value)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# WSDL4R - XMLSchema whiteSpace 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 WhiteSpace < 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[:whitespace] = to_boolean(value)
|
29
|
+
when ValueAttrName
|
30
|
+
parent.whitespace = value.source
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -9,7 +9,9 @@
|
|
9
9
|
require 'xsd/codegen/gensupport'
|
10
10
|
require 'wsdl/xmlSchema/importer'
|
11
11
|
require 'wsdl/soap/classDefCreator'
|
12
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
12
13
|
require 'wsdl/soap/literalMappingRegistryCreator'
|
14
|
+
require 'wsdl/soap/classNameCreator'
|
13
15
|
require 'logger'
|
14
16
|
|
15
17
|
|
@@ -18,6 +20,8 @@ module XMLSchema
|
|
18
20
|
|
19
21
|
|
20
22
|
class XSD2Ruby
|
23
|
+
include WSDL::SOAP::ClassDefCreatorSupport
|
24
|
+
|
21
25
|
attr_accessor :location
|
22
26
|
attr_reader :opt
|
23
27
|
attr_accessor :logger
|
@@ -41,6 +45,7 @@ private
|
|
41
45
|
@basedir = nil
|
42
46
|
@xsd = nil
|
43
47
|
@name = nil
|
48
|
+
@name_creator = WSDL::SOAP::ClassNameCreator.new
|
44
49
|
end
|
45
50
|
|
46
51
|
def create_file
|
@@ -55,7 +60,7 @@ private
|
|
55
60
|
@classdef_filename = @name + '.rb'
|
56
61
|
check_file(@classdef_filename) or return
|
57
62
|
write_file(@classdef_filename) do |f|
|
58
|
-
f << WSDL::SOAP::ClassDefCreator.new(@xsd, @modulepath).dump
|
63
|
+
f << WSDL::SOAP::ClassDefCreator.new(@xsd, @name_creator, @modulepath).dump
|
59
64
|
end
|
60
65
|
end
|
61
66
|
|
@@ -78,9 +83,9 @@ private
|
|
78
83
|
end
|
79
84
|
|
80
85
|
def dump_mapping_registry
|
81
|
-
|
82
|
-
|
83
|
-
|
86
|
+
defined_const = {}
|
87
|
+
creator = WSDL::SOAP::LiteralMappingRegistryCreator.new(@xsd, @name_creator, @modulepath, defined_const)
|
88
|
+
module_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry')
|
84
89
|
if @modulepath
|
85
90
|
module_name = [@modulepath, module_name].join('::')
|
86
91
|
end
|
@@ -90,6 +95,10 @@ private
|
|
90
95
|
varname = 'Registry'
|
91
96
|
m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new')
|
92
97
|
m.def_code(creator.dump(varname))
|
98
|
+
#
|
99
|
+
defined_const.each do |ns, tag|
|
100
|
+
m.def_const(tag, dq(ns))
|
101
|
+
end
|
93
102
|
m.dump
|
94
103
|
end
|
95
104
|
|
data/lib/xsd/charset.rb
CHANGED
@@ -77,6 +77,8 @@ public
|
|
77
77
|
'X_UNKNOWN' => nil,
|
78
78
|
}
|
79
79
|
|
80
|
+
CharsetStrCache = {}
|
81
|
+
|
80
82
|
|
81
83
|
###
|
82
84
|
## handlers
|
@@ -119,26 +121,26 @@ public
|
|
119
121
|
|
120
122
|
def Charset.charset_str(label)
|
121
123
|
if CharsetMap.respond_to?(:key)
|
122
|
-
CharsetMap.key(label.downcase) || 'X_UNKNOWN'
|
124
|
+
CharsetStrCache[label] ||= CharsetMap.key(label.downcase) || 'X_UNKNOWN'
|
123
125
|
else
|
124
|
-
CharsetMap.index(label.downcase) || 'X_UNKNOWN'
|
126
|
+
CharsetStrCache[label] ||= CharsetMap.index(label.downcase) || 'X_UNKNOWN'
|
125
127
|
end
|
126
128
|
end
|
127
129
|
|
128
130
|
# us_ascii = '[\x00-\x7F]'
|
129
131
|
us_ascii = '[\x9\xa\xd\x20-\x7F]' # XML 1.0 restricted.
|
130
|
-
USASCIIRegexp = Regexp.new("\\A#{us_ascii}*\\z", nil,
|
132
|
+
USASCIIRegexp = Regexp.new("\\A#{us_ascii}*\\z", nil, 'NONE')
|
131
133
|
|
132
134
|
twobytes_euc = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'
|
133
135
|
threebytes_euc = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'
|
134
136
|
character_euc = "(?:#{us_ascii}|#{twobytes_euc}|#{threebytes_euc})"
|
135
|
-
EUCRegexp = Regexp.new("\\A#{character_euc}*\\z", nil,
|
137
|
+
EUCRegexp = Regexp.new("\\A#{character_euc}*\\z", nil, 'NONE')
|
136
138
|
|
137
139
|
# onebyte_sjis = '[\x00-\x7F\xA1-\xDF]'
|
138
140
|
onebyte_sjis = '[\x9\xa\xd\x20-\x7F\xA1-\xDF]' # XML 1.0 restricted.
|
139
141
|
twobytes_sjis = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'
|
140
142
|
character_sjis = "(?:#{onebyte_sjis}|#{twobytes_sjis})"
|
141
|
-
SJISRegexp = Regexp.new("\\A#{character_sjis}*\\z", nil,
|
143
|
+
SJISRegexp = Regexp.new("\\A#{character_sjis}*\\z", nil, 'NONE')
|
142
144
|
|
143
145
|
# 0xxxxxxx
|
144
146
|
# 110yyyyy 10xxxxxx
|
@@ -149,7 +151,7 @@ public
|
|
149
151
|
fourbytes_utf8 = '(?:[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF])'
|
150
152
|
character_utf8 =
|
151
153
|
"(?:#{us_ascii}|#{twobytes_utf8}|#{threebytes_utf8}|#{fourbytes_utf8})"
|
152
|
-
UTF8Regexp = Regexp.new("\\A#{character_utf8}*\\z", nil,
|
154
|
+
UTF8Regexp = Regexp.new("\\A#{character_utf8}*\\z", nil, 'NONE')
|
153
155
|
|
154
156
|
def Charset.is_us_ascii(str)
|
155
157
|
USASCIIRegexp =~ str
|
data/lib/xsd/codegen/classdef.rb
CHANGED
@@ -60,6 +60,11 @@ class ClassDef < ModuleDef
|
|
60
60
|
spacer = true
|
61
61
|
buf << dump_const
|
62
62
|
end
|
63
|
+
unless @innermodule.empty?
|
64
|
+
buf << dump_emptyline # always add 1 empty line
|
65
|
+
spacer = true
|
66
|
+
buf << dump_innermodule
|
67
|
+
end
|
63
68
|
unless @code.empty?
|
64
69
|
buf << dump_emptyline if spacer
|
65
70
|
spacer = true
|
@@ -19,6 +19,9 @@ class ModuleDef
|
|
19
19
|
include GenSupport
|
20
20
|
include CommentDef
|
21
21
|
|
22
|
+
attr_reader :name
|
23
|
+
attr_reader :innermodule
|
24
|
+
|
22
25
|
def initialize(name)
|
23
26
|
@name = name
|
24
27
|
@comment = nil
|
@@ -26,6 +29,7 @@ class ModuleDef
|
|
26
29
|
@code = []
|
27
30
|
@requirepath = []
|
28
31
|
@methoddef = []
|
32
|
+
@innermodule = []
|
29
33
|
end
|
30
34
|
|
31
35
|
def def_require(path)
|
@@ -77,6 +81,11 @@ class ModuleDef
|
|
77
81
|
spacer = true
|
78
82
|
buf << dump_const
|
79
83
|
end
|
84
|
+
unless @innermodule.empty?
|
85
|
+
buf << dump_emptyline # always add 1 empty line
|
86
|
+
spacer = true
|
87
|
+
buf << dump_innermodule
|
88
|
+
end
|
80
89
|
unless @code.empty?
|
81
90
|
buf << dump_emptyline if spacer
|
82
91
|
spacer = true
|
@@ -110,6 +119,14 @@ private
|
|
110
119
|
)
|
111
120
|
end
|
112
121
|
|
122
|
+
def dump_innermodule
|
123
|
+
dump_static(
|
124
|
+
@innermodule.collect { |moduledef|
|
125
|
+
moduledef.dump
|
126
|
+
}.join("\n")
|
127
|
+
)
|
128
|
+
end
|
129
|
+
|
113
130
|
def dump_code
|
114
131
|
dump_static(@code.join("\n"))
|
115
132
|
end
|
data/lib/xsd/datatypes.rb
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
require 'xsd/qname'
|
10
10
|
require 'xsd/charset'
|
11
|
+
require 'soap/nestedexception'
|
11
12
|
require 'uri'
|
12
13
|
|
13
14
|
|
@@ -48,15 +49,15 @@ QNameLiteral = 'QName'
|
|
48
49
|
NormalizedStringLiteral = 'normalizedString'
|
49
50
|
TokenLiteral = 'token'
|
50
51
|
LanguageLiteral = 'language'
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
52
|
+
NMTOKENLiteral = 'NMTOKEN'
|
53
|
+
NMTOKENSLiteral = 'NMTOKENS'
|
54
|
+
NameLiteral = 'Name'
|
55
|
+
NCNameLiteral = 'NCName'
|
56
|
+
IDLiteral = 'ID'
|
57
|
+
IDREFLiteral = 'IDREF'
|
58
|
+
IDREFSLiteral = 'IDREFS'
|
59
|
+
ENTITYLiteral = 'ENTITY'
|
60
|
+
ENTITIESLiteral = 'ENTITIES'
|
60
61
|
IntegerLiteral = 'integer'
|
61
62
|
NonPositiveIntegerLiteral = 'nonPositiveInteger'
|
62
63
|
NegativeIntegerLiteral = 'negativeInteger'
|
@@ -77,7 +78,7 @@ AttrNilName = QName.new(InstanceNamespace, NilLiteral)
|
|
77
78
|
AnyTypeName = QName.new(Namespace, AnyTypeLiteral)
|
78
79
|
AnySimpleTypeName = QName.new(Namespace, AnySimpleTypeLiteral)
|
79
80
|
|
80
|
-
class Error < StandardError; end
|
81
|
+
class Error < StandardError; include ::SOAP::NestedException; end
|
81
82
|
class ValueSpaceError < Error; end
|
82
83
|
|
83
84
|
|
@@ -343,7 +344,7 @@ private
|
|
343
344
|
begin
|
344
345
|
return narrow32bit(Float(str))
|
345
346
|
rescue ArgumentError
|
346
|
-
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
|
347
|
+
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
|
347
348
|
end
|
348
349
|
end
|
349
350
|
end
|
@@ -409,10 +410,10 @@ private
|
|
409
410
|
begin
|
410
411
|
return Float(str + '0')
|
411
412
|
rescue ArgumentError
|
412
|
-
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
|
413
|
+
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
|
413
414
|
end
|
414
415
|
else
|
415
|
-
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
|
416
|
+
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
|
416
417
|
end
|
417
418
|
end
|
418
419
|
end
|
@@ -454,8 +455,8 @@ private
|
|
454
455
|
unless Regexp.last_match
|
455
456
|
raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
|
456
457
|
end
|
457
|
-
if
|
458
|
-
#
|
458
|
+
if $5 and !$6 and !$7 and !$8
|
459
|
+
# allows durations lower than a day such as 'PT5S'.
|
459
460
|
raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
|
460
461
|
end
|
461
462
|
sign = $1
|
@@ -491,12 +492,12 @@ private
|
|
491
492
|
r << "#{ @min }M" if @min.nonzero?
|
492
493
|
r << "#{ @sec }S" if @sec.nonzero?
|
493
494
|
str << l
|
494
|
-
if l.empty?
|
495
|
-
str << "0D"
|
496
|
-
end
|
497
495
|
unless r.empty?
|
498
496
|
str << "T" << r
|
499
497
|
end
|
498
|
+
if l.empty? and r.empty?
|
499
|
+
str << "0D"
|
500
|
+
end
|
500
501
|
str
|
501
502
|
end
|
502
503
|
end
|
@@ -950,7 +951,7 @@ private
|
|
950
951
|
begin
|
951
952
|
URI.parse(value.to_s.strip)
|
952
953
|
rescue URI::InvalidURIError
|
953
|
-
raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.")
|
954
|
+
raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.", $!)
|
954
955
|
end
|
955
956
|
end
|
956
957
|
end
|
@@ -1052,6 +1053,150 @@ private
|
|
1052
1053
|
end
|
1053
1054
|
end
|
1054
1055
|
|
1056
|
+
class XSDNMTOKEN < XSDToken
|
1057
|
+
Type = QName.new(Namespace, NMTOKENLiteral)
|
1058
|
+
|
1059
|
+
def initialize(value = nil)
|
1060
|
+
init(Type, value)
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
private
|
1064
|
+
|
1065
|
+
def screen_data(value)
|
1066
|
+
super
|
1067
|
+
# TODO: check lexical space and convert to a value
|
1068
|
+
value
|
1069
|
+
end
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
class XSDNMTOKENS < XSDNMTOKEN
|
1073
|
+
Type = QName.new(Namespace, NMTOKENSLiteral)
|
1074
|
+
|
1075
|
+
def initialize(value = nil)
|
1076
|
+
init(Type, value)
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
private
|
1080
|
+
|
1081
|
+
def screen_data(value)
|
1082
|
+
# derived by list
|
1083
|
+
# TODO: check lexical space and convert to a value
|
1084
|
+
value
|
1085
|
+
end
|
1086
|
+
end
|
1087
|
+
|
1088
|
+
class XSDName < XSDToken
|
1089
|
+
Type = QName.new(Namespace, NameLiteral)
|
1090
|
+
|
1091
|
+
def initialize(value = nil)
|
1092
|
+
init(Type, value)
|
1093
|
+
end
|
1094
|
+
|
1095
|
+
private
|
1096
|
+
|
1097
|
+
def screen_data(value)
|
1098
|
+
super
|
1099
|
+
# TODO: check lexical space and convert to a value
|
1100
|
+
value
|
1101
|
+
end
|
1102
|
+
end
|
1103
|
+
|
1104
|
+
class XSDNCName < XSDName
|
1105
|
+
Type = QName.new(Namespace, NCNameLiteral)
|
1106
|
+
|
1107
|
+
def initialize(value = nil)
|
1108
|
+
init(Type, value)
|
1109
|
+
end
|
1110
|
+
|
1111
|
+
private
|
1112
|
+
|
1113
|
+
def screen_data(value)
|
1114
|
+
super
|
1115
|
+
# TODO: check lexical space and convert to a value
|
1116
|
+
value
|
1117
|
+
end
|
1118
|
+
end
|
1119
|
+
|
1120
|
+
class XSDID < XSDNCName
|
1121
|
+
Type = QName.new(Namespace, IDLiteral)
|
1122
|
+
|
1123
|
+
def initialize(value = nil)
|
1124
|
+
init(Type, value)
|
1125
|
+
end
|
1126
|
+
|
1127
|
+
private
|
1128
|
+
|
1129
|
+
def screen_data(value)
|
1130
|
+
super
|
1131
|
+
# TODO: check lexical space and convert to a value
|
1132
|
+
value
|
1133
|
+
end
|
1134
|
+
end
|
1135
|
+
|
1136
|
+
class XSDIDREF < XSDNCName
|
1137
|
+
Type = QName.new(Namespace, IDREFLiteral)
|
1138
|
+
|
1139
|
+
def initialize(value = nil)
|
1140
|
+
init(Type, value)
|
1141
|
+
end
|
1142
|
+
|
1143
|
+
private
|
1144
|
+
|
1145
|
+
def screen_data(value)
|
1146
|
+
super
|
1147
|
+
# TODO: check lexical space and convert to a value
|
1148
|
+
value
|
1149
|
+
end
|
1150
|
+
end
|
1151
|
+
|
1152
|
+
class XSDIDREFS < XSDIDREF
|
1153
|
+
Type = QName.new(Namespace, IDREFSLiteral)
|
1154
|
+
|
1155
|
+
def initialize(value = nil)
|
1156
|
+
init(Type, value)
|
1157
|
+
end
|
1158
|
+
|
1159
|
+
private
|
1160
|
+
|
1161
|
+
def screen_data(value)
|
1162
|
+
# derived by list
|
1163
|
+
# TODO: check lexical space and convert to a value
|
1164
|
+
value
|
1165
|
+
end
|
1166
|
+
end
|
1167
|
+
|
1168
|
+
class XSDENTITY < XSDNCName
|
1169
|
+
Type = QName.new(Namespace, ENTITYLiteral)
|
1170
|
+
|
1171
|
+
def initialize(value = nil)
|
1172
|
+
init(Type, value)
|
1173
|
+
end
|
1174
|
+
|
1175
|
+
private
|
1176
|
+
|
1177
|
+
def screen_data(value)
|
1178
|
+
super
|
1179
|
+
# TODO: check lexical space and convert to a value
|
1180
|
+
value
|
1181
|
+
end
|
1182
|
+
end
|
1183
|
+
|
1184
|
+
class XSDENTITIES < XSDENTITY
|
1185
|
+
Type = QName.new(Namespace, ENTITIESLiteral)
|
1186
|
+
|
1187
|
+
def initialize(value = nil)
|
1188
|
+
init(Type, value)
|
1189
|
+
end
|
1190
|
+
|
1191
|
+
private
|
1192
|
+
|
1193
|
+
def screen_data(value)
|
1194
|
+
# derived by list
|
1195
|
+
# TODO: check lexical space and convert to a value
|
1196
|
+
value
|
1197
|
+
end
|
1198
|
+
end
|
1199
|
+
|
1055
1200
|
class XSDInteger < XSDDecimal
|
1056
1201
|
Type = QName.new(Namespace, IntegerLiteral)
|
1057
1202
|
|
@@ -1065,7 +1210,7 @@ private
|
|
1065
1210
|
begin
|
1066
1211
|
data = Integer(str)
|
1067
1212
|
rescue ArgumentError
|
1068
|
-
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
|
1213
|
+
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.", $!)
|
1069
1214
|
end
|
1070
1215
|
unless validate(data)
|
1071
1216
|
raise ValueSpaceError.new("#{ type }: cannot accept '#{ str }'.")
|