soap4r 1.5.7 → 1.5.8
Sign up to get free protection for your applications and to get access to all the features.
- 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 }'.")
|