Changeset 1776
- Timestamp:
- 05/15/07 22:34:45 (1 year ago)
- Files:
-
- trunk/lib/soap/baseData.rb (modified) (1 diff)
- trunk/lib/soap/mapping/encodedregistry.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/typeMap.rb (modified) (2 diffs)
- trunk/lib/xsd/datatypes.rb (modified) (3 diffs)
- trunk/test/xsd/test_xsd.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/baseData.rb
r1767 r1776 238 238 extend SOAPModuleUtils 239 239 SOAPENCType = QName.new(EncodingNamespace, StringLiteral) 240 end 241 242 class SOAPNormalizedString < XSD::XSDNormalizedString 243 include SOAPBasetype 244 extend SOAPModuleUtils 245 SOAPENCType = QName.new(EncodingNamespace, NormalizedStringLiteral) 246 end 247 248 class SOAPToken < XSD::XSDToken 249 include SOAPBasetype 250 extend SOAPModuleUtils 251 SOAPENCType = QName.new(EncodingNamespace, TokenLiteral) 252 end 253 254 class SOAPLanguage < XSD::XSDLanguage 255 include SOAPBasetype 256 extend SOAPModuleUtils 257 SOAPENCType = QName.new(EncodingNamespace, LanguageLiteral) 240 258 end 241 259 trunk/lib/soap/mapping/encodedregistry.rb
r1775 r1776 188 188 [::String, ::SOAP::SOAPGMonth, BasetypeFactory], 189 189 [::String, ::SOAP::SOAPQName, BasetypeFactory], 190 [::String, ::SOAP::SOAPNormalizedString, BasetypeFactory], 191 [::String, ::SOAP::SOAPToken, BasetypeFactory], 192 [::String, ::SOAP::SOAPLanguage, BasetypeFactory], 190 193 191 194 [::Hash, ::SOAP::SOAPArray, HashFactory], … … 251 254 [::String, ::SOAP::SOAPGMonth, BasetypeFactory], 252 255 [::String, ::SOAP::SOAPQName, BasetypeFactory], 256 [::String, ::SOAP::SOAPNormalizedString, BasetypeFactory], 257 [::String, ::SOAP::SOAPToken, BasetypeFactory], 258 [::String, ::SOAP::SOAPLanguage, BasetypeFactory], 253 259 254 260 [::Hash, ::SOAP::SOAPArray, HashFactory], trunk/lib/soap/mapping/typeMap.rb
r1652 r1776 14 14 15 15 XSD::XSDString::Type => SOAPString, 16 XSD::XSDNormalizedString::Type => SOAPNormalizedString, 17 XSD::XSDToken::Type => SOAPToken, 18 XSD::XSDLanguage::Type => SOAPLanguage, 16 19 XSD::XSDBoolean::Type => SOAPBoolean, 17 20 XSD::XSDDecimal::Type => SOAPDecimal, … … 47 50 # soap4r does not use soapenc types actively but it should be accepted. 48 51 SOAP::SOAPString::SOAPENCType => SOAPString, 52 SOAP::SOAPNormalizedString::SOAPENCType => SOAPNormalizedString, 53 SOAP::SOAPToken::SOAPENCType => SOAPToken, 54 SOAP::SOAPLanguage::SOAPENCType => SOAPLanguage, 49 55 SOAP::SOAPBoolean::SOAPENCType => SOAPBoolean, 50 56 SOAP::SOAPDecimal::SOAPENCType => SOAPDecimal, trunk/lib/xsd/datatypes.rb
r1749 r1776 47 47 48 48 NormalizedStringLiteral = 'normalizedString' 49 #3.3.2 token 50 #3.3.3 language 49 TokenLiteral = 'token' 50 LanguageLiteral = 'language' 51 51 #3.3.4 NMTOKEN 52 52 #3.3.5 NMTOKENS … … 256 256 if d.is_a?(String) 257 257 # Integer("00012") => 10 in Ruby. 258 d .sub!(/^([+\-]?)0*(?=\d)/, "\\1")258 d = d.sub(/^([+\-]?)0*(?=\d)/, "\\1") 259 259 end 260 260 screen_data_str(d) … … 1014 1014 end 1015 1015 1016 class XSDToken < XSDNormalizedString 1017 Type = QName.new(Namespace, TokenLiteral) 1018 1019 def initialize(value = nil) 1020 init(Type, value) 1021 end 1022 1023 private 1024 1025 def screen_data(value) 1026 if /[\t\n]|\A | \z| / =~ value 1027 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.") 1028 end 1029 super 1030 end 1031 end 1032 1033 class XSDLanguage < XSDToken 1034 Type = QName.new(Namespace, LanguageLiteral) 1035 1036 def initialize(value = nil) 1037 init(Type, value) 1038 end 1039 1040 private 1041 1042 def screen_data(value) 1043 if /\A(aa|ab|ae|af|ak|am|an|ar|as|av|ay|az|ba|be|bg|bh|bi|bm|bn|bo|br|bs|ca|ce|ch|co|cr|cs|cu|cv|cy|da|de|dv|dz|ee|el|en|eo|es|et|eu|fa|ff|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|gv|ha|he|hi|ho|hr|ht|hu|hy|hz|ia|id|ie|ig|ii|ik|io|is|it|iu|ja|jv|ka|kg|ki|kj|kk|kl|km|kn|ko|kr|ks|ku|kv|kw|ky|la|lb|lg|li|ln|lo|lt|lu|lv|mg|mh|mi|mk|ml|mn|mo|mr|ms|mt|my|na|nb|nd|ne|ng|nl|nn|no|nr|nv|ny|oc|oj|om|or|os|pa|pi|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sc|sd|se|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|ty|ug|uk|ur|uz|ve|vi|vo|wa|wo|xh|yi|yo|za|zh|zu)\z/ =~ value 1044 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }', see ISO 639 for more information.") 1045 end 1046 super 1047 end 1048 end 1049 1016 1050 class XSDInteger < XSDDecimal 1017 1051 Type = QName.new(Namespace, IntegerLiteral) trunk/test/xsd/test_xsd.rb
r1738 r1776 92 92 end 93 93 assert_raises(XSD::ValueSpaceError) do 94 pXSD::XSDString.new("\xC0\xC0").to_s94 XSD::XSDString.new("\xC0\xC0").to_s 95 95 end 96 96 ensure … … 99 99 ensure 100 100 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 101 end 102 end 103 104 def test_XSDNormalizedString 105 XSD::Charset.module_eval { @encoding_backup = @internal_encoding; @internal_encoding = "NONE" } 106 begin 107 o = XSD::XSDNormalizedString.new 108 assert_equal(XSD::Namespace, o.type.namespace) 109 assert_equal(XSD::NormalizedStringLiteral, o.type.name) 110 assert_equal(nil, o.data) 111 assert_equal(true, o.is_nil) 112 113 str = "abc" 114 assert_equal(str, XSD::XSDNormalizedString.new(str).data) 115 assert_equal(str, XSD::XSDNormalizedString.new(str).to_s) 116 back = XSD::XSDString.strict_ces_validation 117 XSD::XSDString.strict_ces_validation = true 118 begin 119 assert_raises(XSD::ValueSpaceError) do 120 XSD::XSDNormalizedString.new("\0") 121 end 122 assert_raises(XSD::ValueSpaceError) do 123 XSD::XSDNormalizedString.new("\xC0\xC0").to_s 124 end 125 assert_raises(XSD::ValueSpaceError) do 126 XSD::XSDNormalizedString.new("a\tb").to_s 127 end 128 assert_raises(XSD::ValueSpaceError) do 129 XSD::XSDNormalizedString.new("a\r").to_s 130 end 131 assert_raises(XSD::ValueSpaceError) do 132 XSD::XSDNormalizedString.new("\nb").to_s 133 end 134 ensure 135 XSD::XSDString.strict_ces_validation = back 136 end 137 ensure 138 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 139 end 140 end 141 142 def test_XSDToken 143 XSD::Charset.module_eval { @encoding_backup = @internal_encoding; @internal_encoding = "NONE" } 144 begin 145 o = XSD::XSDToken.new 146 assert_equal(XSD::Namespace, o.type.namespace) 147 assert_equal(XSD::TokenLiteral, o.type.name) 148 assert_equal(nil, o.data) 149 assert_equal(true, o.is_nil) 150 151 str = "abc" 152 assert_equal(str, XSD::XSDToken.new(str).data) 153 assert_equal(str, XSD::XSDToken.new(str).to_s) 154 back = XSD::XSDString.strict_ces_validation 155 XSD::XSDString.strict_ces_validation = true 156 begin 157 assert_raises(XSD::ValueSpaceError) do 158 XSD::XSDToken.new("\0") 159 end 160 assert_raises(XSD::ValueSpaceError) do 161 XSD::XSDToken.new("\xC0\xC0").to_s 162 end 163 assert_raises(XSD::ValueSpaceError) do 164 XSD::XSDToken.new("a\tb").to_s 165 end 166 assert_raises(XSD::ValueSpaceError) do 167 XSD::XSDToken.new("a\r").to_s 168 end 169 assert_raises(XSD::ValueSpaceError) do 170 XSD::XSDToken.new("\nb").to_s 171 end 172 assert_raises(XSD::ValueSpaceError) do 173 XSD::XSDToken.new(" a").to_s 174 end 175 assert_raises(XSD::ValueSpaceError) do 176 XSD::XSDToken.new("b ").to_s 177 end 178 assert_raises(XSD::ValueSpaceError) do 179 XSD::XSDToken.new("a b").to_s 180 end 181 assert_equal("a b", XSD::XSDToken.new("a b").data) 182 ensure 183 XSD::XSDString.strict_ces_validation = back 184 end 185 ensure 186 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 187 end 188 189 def test_XSDLanguage 190 o = XSD::XSDLanguage.new 191 assert_equal(XSD::Namespace, o.type.namespace) 192 assert_equal(XSD::LanguageLiteral, o.type.name) 193 assert_equal(nil, o.data) 194 assert_equal(true, o.is_nil) 195 196 str = "ja" 197 assert_equal(str, XSD::XSDLanguage.new(str).data) 198 assert_equal(str, XSD::XSDLanguage.new(str).to_s) 199 assert_raises(XSD::ValueSpaceError) do 200 XSD::XSDLanguage.new("jb") 201 end 101 202 end 102 203 end