reidiculous-actionwebservice-client 3.0.4
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/CHANGELOG +320 -0
- data/MIT-LICENSE +21 -0
- data/README +381 -0
- data/Rakefile +180 -0
- data/TODO +32 -0
- data/lib/action_web_service.rb +71 -0
- data/lib/action_web_service/api.rb +297 -0
- data/lib/action_web_service/base.rb +38 -0
- data/lib/action_web_service/casting.rb +149 -0
- data/lib/action_web_service/client.rb +3 -0
- data/lib/action_web_service/client/base.rb +28 -0
- data/lib/action_web_service/client/soap_client.rb +113 -0
- data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
- data/lib/action_web_service/container.rb +3 -0
- data/lib/action_web_service/container/action_controller_container.rb +93 -0
- data/lib/action_web_service/container/delegated_container.rb +86 -0
- data/lib/action_web_service/container/direct_container.rb +69 -0
- data/lib/action_web_service/dispatcher.rb +2 -0
- data/lib/action_web_service/dispatcher/abstract.rb +207 -0
- data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
- data/lib/action_web_service/invocation.rb +202 -0
- data/lib/action_web_service/protocol.rb +4 -0
- data/lib/action_web_service/protocol/abstract.rb +115 -0
- data/lib/action_web_service/protocol/discovery.rb +37 -0
- data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
- data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
- data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
- data/lib/action_web_service/scaffolding.rb +281 -0
- data/lib/action_web_service/soap/attachment.rb +107 -0
- data/lib/action_web_service/soap/baseData.rb +942 -0
- data/lib/action_web_service/soap/element.rb +258 -0
- data/lib/action_web_service/soap/encodingstyle/aspDotNetHandler.rb +213 -0
- data/lib/action_web_service/soap/encodingstyle/handler.rb +100 -0
- data/lib/action_web_service/soap/encodingstyle/literalHandler.rb +226 -0
- data/lib/action_web_service/soap/encodingstyle/soapHandler.rb +582 -0
- data/lib/action_web_service/soap/generator.rb +268 -0
- data/lib/action_web_service/soap/header/handler.rb +57 -0
- data/lib/action_web_service/soap/header/handlerset.rb +70 -0
- data/lib/action_web_service/soap/header/simplehandler.rb +44 -0
- data/lib/action_web_service/soap/httpconfigloader.rb +119 -0
- data/lib/action_web_service/soap/mapping.rb +10 -0
- data/lib/action_web_service/soap/mapping/factory.rb +355 -0
- data/lib/action_web_service/soap/mapping/mapping.rb +381 -0
- data/lib/action_web_service/soap/mapping/registry.rb +541 -0
- data/lib/action_web_service/soap/mapping/rubytypeFactory.rb +475 -0
- data/lib/action_web_service/soap/mapping/typeMap.rb +50 -0
- data/lib/action_web_service/soap/mapping/wsdlencodedregistry.rb +280 -0
- data/lib/action_web_service/soap/mapping/wsdlliteralregistry.rb +418 -0
- data/lib/action_web_service/soap/marshal.rb +59 -0
- data/lib/action_web_service/soap/mimemessage.rb +240 -0
- data/lib/action_web_service/soap/netHttpClient.rb +190 -0
- data/lib/action_web_service/soap/parser.rb +251 -0
- data/lib/action_web_service/soap/processor.rb +66 -0
- data/lib/action_web_service/soap/property.rb +333 -0
- data/lib/action_web_service/soap/rpc/cgistub.rb +206 -0
- data/lib/action_web_service/soap/rpc/driver.rb +254 -0
- data/lib/action_web_service/soap/rpc/element.rb +325 -0
- data/lib/action_web_service/soap/rpc/httpserver.rb +129 -0
- data/lib/action_web_service/soap/rpc/proxy.rb +497 -0
- data/lib/action_web_service/soap/rpc/router.rb +594 -0
- data/lib/action_web_service/soap/rpc/rpc.rb +25 -0
- data/lib/action_web_service/soap/rpc/soaplet.rb +162 -0
- data/lib/action_web_service/soap/rpc/standaloneServer.rb +43 -0
- data/lib/action_web_service/soap/soap.rb +140 -0
- data/lib/action_web_service/soap/streamHandler.rb +229 -0
- data/lib/action_web_service/soap/wsdlDriver.rb +575 -0
- data/lib/action_web_service/struct.rb +64 -0
- data/lib/action_web_service/support/class_inheritable_options.rb +28 -0
- data/lib/action_web_service/support/signature_types.rb +227 -0
- data/lib/action_web_service/test_invoke.rb +110 -0
- data/lib/action_web_service/version.rb +9 -0
- data/lib/action_web_service/wsdl/binding.rb +65 -0
- data/lib/action_web_service/wsdl/data.rb +64 -0
- data/lib/action_web_service/wsdl/definitions.rb +250 -0
- data/lib/action_web_service/wsdl/documentation.rb +32 -0
- data/lib/action_web_service/wsdl/import.rb +80 -0
- data/lib/action_web_service/wsdl/importer.rb +38 -0
- data/lib/action_web_service/wsdl/info.rb +39 -0
- data/lib/action_web_service/wsdl/message.rb +54 -0
- data/lib/action_web_service/wsdl/operation.rb +130 -0
- data/lib/action_web_service/wsdl/operationBinding.rb +108 -0
- data/lib/action_web_service/wsdl/param.rb +85 -0
- data/lib/action_web_service/wsdl/parser.rb +163 -0
- data/lib/action_web_service/wsdl/part.rb +52 -0
- data/lib/action_web_service/wsdl/port.rb +84 -0
- data/lib/action_web_service/wsdl/portType.rb +73 -0
- data/lib/action_web_service/wsdl/service.rb +61 -0
- data/lib/action_web_service/wsdl/soap/address.rb +40 -0
- data/lib/action_web_service/wsdl/soap/binding.rb +49 -0
- data/lib/action_web_service/wsdl/soap/body.rb +56 -0
- data/lib/action_web_service/wsdl/soap/cgiStubCreator.rb +76 -0
- data/lib/action_web_service/wsdl/soap/classDefCreator.rb +314 -0
- data/lib/action_web_service/wsdl/soap/classDefCreatorSupport.rb +126 -0
- data/lib/action_web_service/wsdl/soap/clientSkeltonCreator.rb +78 -0
- data/lib/action_web_service/wsdl/soap/complexType.rb +161 -0
- data/lib/action_web_service/wsdl/soap/data.rb +42 -0
- data/lib/action_web_service/wsdl/soap/definitions.rb +149 -0
- data/lib/action_web_service/wsdl/soap/driverCreator.rb +95 -0
- data/lib/action_web_service/wsdl/soap/element.rb +28 -0
- data/lib/action_web_service/wsdl/soap/fault.rb +56 -0
- data/lib/action_web_service/wsdl/soap/header.rb +86 -0
- data/lib/action_web_service/wsdl/soap/headerfault.rb +56 -0
- data/lib/action_web_service/wsdl/soap/mappingRegistryCreator.rb +92 -0
- data/lib/action_web_service/wsdl/soap/methodDefCreator.rb +228 -0
- data/lib/action_web_service/wsdl/soap/operation.rb +122 -0
- data/lib/action_web_service/wsdl/soap/servantSkeltonCreator.rb +67 -0
- data/lib/action_web_service/wsdl/soap/standaloneServerStubCreator.rb +85 -0
- data/lib/action_web_service/wsdl/soap/wsdl2ruby.rb +176 -0
- data/lib/action_web_service/wsdl/types.rb +43 -0
- data/lib/action_web_service/wsdl/wsdl.rb +23 -0
- data/lib/action_web_service/wsdl/xmlSchema/all.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/annotation.rb +34 -0
- data/lib/action_web_service/wsdl/xmlSchema/any.rb +56 -0
- data/lib/action_web_service/wsdl/xmlSchema/attribute.rb +127 -0
- data/lib/action_web_service/wsdl/xmlSchema/choice.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/complexContent.rb +92 -0
- data/lib/action_web_service/wsdl/xmlSchema/complexType.rb +139 -0
- data/lib/action_web_service/wsdl/xmlSchema/content.rb +96 -0
- data/lib/action_web_service/wsdl/xmlSchema/data.rb +80 -0
- data/lib/action_web_service/wsdl/xmlSchema/element.rb +154 -0
- data/lib/action_web_service/wsdl/xmlSchema/enumeration.rb +36 -0
- data/lib/action_web_service/wsdl/xmlSchema/import.rb +65 -0
- data/lib/action_web_service/wsdl/xmlSchema/importer.rb +87 -0
- data/lib/action_web_service/wsdl/xmlSchema/include.rb +54 -0
- data/lib/action_web_service/wsdl/xmlSchema/length.rb +35 -0
- data/lib/action_web_service/wsdl/xmlSchema/parser.rb +166 -0
- data/lib/action_web_service/wsdl/xmlSchema/pattern.rb +36 -0
- data/lib/action_web_service/wsdl/xmlSchema/schema.rb +143 -0
- data/lib/action_web_service/wsdl/xmlSchema/sequence.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleContent.rb +65 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleExtension.rb +54 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleRestriction.rb +73 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleType.rb +73 -0
- data/lib/action_web_service/wsdl/xmlSchema/unique.rb +34 -0
- data/lib/action_web_service/wsdl/xmlSchema/xsd2ruby.rb +107 -0
- data/lib/action_web_service/xsd/charset.rb +187 -0
- data/lib/action_web_service/xsd/codegen.rb +12 -0
- data/lib/action_web_service/xsd/codegen/classdef.rb +203 -0
- data/lib/action_web_service/xsd/codegen/commentdef.rb +34 -0
- data/lib/action_web_service/xsd/codegen/gensupport.rb +166 -0
- data/lib/action_web_service/xsd/codegen/methoddef.rb +63 -0
- data/lib/action_web_service/xsd/codegen/moduledef.rb +191 -0
- data/lib/action_web_service/xsd/datatypes.rb +1269 -0
- data/lib/action_web_service/xsd/datatypes1999.rb +20 -0
- data/lib/action_web_service/xsd/iconvcharset.rb +33 -0
- data/lib/action_web_service/xsd/mapping.rb +42 -0
- data/lib/action_web_service/xsd/namedelements.rb +95 -0
- data/lib/action_web_service/xsd/ns.rb +140 -0
- data/lib/action_web_service/xsd/qname.rb +78 -0
- data/lib/action_web_service/xsd/xmlparser.rb +61 -0
- data/lib/action_web_service/xsd/xmlparser/parser.rb +96 -0
- data/lib/action_web_service/xsd/xmlparser/rexmlparser.rb +54 -0
- data/lib/action_web_service/xsd/xmlparser/xmlparser.rb +50 -0
- data/lib/action_web_service/xsd/xmlparser/xmlscanner.rb +147 -0
- data/lib/actionwebservice.rb +1 -0
- data/setup.rb +1379 -0
- data/test/abstract_client.rb +183 -0
- data/test/abstract_dispatcher.rb +548 -0
- data/test/abstract_unit.rb +45 -0
- data/test/api_test.rb +103 -0
- data/test/apis/auto_load_api.rb +3 -0
- data/test/apis/broken_auto_load_api.rb +2 -0
- data/test/base_test.rb +42 -0
- data/test/casting_test.rb +95 -0
- data/test/client_soap_test.rb +156 -0
- data/test/client_xmlrpc_test.rb +153 -0
- data/test/container_test.rb +73 -0
- data/test/dispatcher_action_controller_soap_test.rb +139 -0
- data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
- data/test/fixtures/db_definitions/mysql.sql +8 -0
- data/test/fixtures/db_definitions/sqlite3.sql +8 -0
- data/test/fixtures/users.yml +12 -0
- data/test/gencov +3 -0
- data/test/invocation_test.rb +185 -0
- data/test/run +6 -0
- data/test/scaffolded_controller_test.rb +146 -0
- data/test/struct_test.rb +52 -0
- data/test/test_invoke_test.rb +112 -0
- metadata +265 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
# WSDL4R - XMLSchema pattern definition for WSDL.
|
2
|
+
# Copyright (C) 2005 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 'action_web_service/wsdl/info'
|
10
|
+
|
11
|
+
|
12
|
+
module WSDL
|
13
|
+
module XMLSchema
|
14
|
+
|
15
|
+
|
16
|
+
class Pattern < 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 ValueAttrName
|
28
|
+
parent.pattern = /\A#{value.source}\z/n
|
29
|
+
value.source
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# WSDL4R - XMLSchema schema definition for WSDL.
|
2
|
+
# Copyright (C) 2002, 2003-2005 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 'action_web_service/wsdl/info'
|
10
|
+
require 'action_web_service/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module XMLSchema
|
15
|
+
|
16
|
+
|
17
|
+
class Schema < Info
|
18
|
+
attr_reader :targetnamespace # required
|
19
|
+
attr_reader :complextypes
|
20
|
+
attr_reader :simpletypes
|
21
|
+
attr_reader :elements
|
22
|
+
attr_reader :attributes
|
23
|
+
attr_reader :imports
|
24
|
+
attr_accessor :attributeformdefault
|
25
|
+
attr_accessor :elementformdefault
|
26
|
+
|
27
|
+
attr_reader :importedschema
|
28
|
+
|
29
|
+
def initialize
|
30
|
+
super
|
31
|
+
@targetnamespace = nil
|
32
|
+
@complextypes = XSD::NamedElements.new
|
33
|
+
@simpletypes = XSD::NamedElements.new
|
34
|
+
@elements = XSD::NamedElements.new
|
35
|
+
@attributes = XSD::NamedElements.new
|
36
|
+
@imports = []
|
37
|
+
@attributeformdefault = "unqualified"
|
38
|
+
@elementformdefault = "unqualified"
|
39
|
+
@importedschema = {}
|
40
|
+
@location = nil
|
41
|
+
@root = self
|
42
|
+
end
|
43
|
+
|
44
|
+
def location
|
45
|
+
@location || (root.nil? ? nil : root.location)
|
46
|
+
end
|
47
|
+
|
48
|
+
def location=(location)
|
49
|
+
@location = location
|
50
|
+
end
|
51
|
+
|
52
|
+
def parse_element(element)
|
53
|
+
case element
|
54
|
+
when ImportName
|
55
|
+
o = Import.new
|
56
|
+
@imports << o
|
57
|
+
o
|
58
|
+
when IncludeName
|
59
|
+
o = Include.new
|
60
|
+
@imports << o
|
61
|
+
o
|
62
|
+
when ComplexTypeName
|
63
|
+
o = ComplexType.new
|
64
|
+
@complextypes << o
|
65
|
+
o
|
66
|
+
when SimpleTypeName
|
67
|
+
o = SimpleType.new
|
68
|
+
@simpletypes << o
|
69
|
+
o
|
70
|
+
when ElementName
|
71
|
+
o = Element.new
|
72
|
+
@elements << o
|
73
|
+
o
|
74
|
+
when AttributeName
|
75
|
+
o = Attribute.new
|
76
|
+
@attributes << o
|
77
|
+
o
|
78
|
+
else
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def parse_attr(attr, value)
|
84
|
+
case attr
|
85
|
+
when TargetNamespaceAttrName
|
86
|
+
@targetnamespace = value.source
|
87
|
+
when AttributeFormDefaultAttrName
|
88
|
+
@attributeformdefault = value.source
|
89
|
+
when ElementFormDefaultAttrName
|
90
|
+
@elementformdefault = value.source
|
91
|
+
else
|
92
|
+
nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def collect_attributes
|
97
|
+
result = XSD::NamedElements.new
|
98
|
+
result.concat(@attributes)
|
99
|
+
@imports.each do |import|
|
100
|
+
result.concat(import.content.collect_attributes) if import.content
|
101
|
+
end
|
102
|
+
result
|
103
|
+
end
|
104
|
+
|
105
|
+
def collect_elements
|
106
|
+
result = XSD::NamedElements.new
|
107
|
+
result.concat(@elements)
|
108
|
+
@imports.each do |import|
|
109
|
+
result.concat(import.content.collect_elements) if import.content
|
110
|
+
end
|
111
|
+
result
|
112
|
+
end
|
113
|
+
|
114
|
+
def collect_complextypes
|
115
|
+
result = XSD::NamedElements.new
|
116
|
+
result.concat(@complextypes)
|
117
|
+
@imports.each do |import|
|
118
|
+
result.concat(import.content.collect_complextypes) if import.content
|
119
|
+
end
|
120
|
+
result
|
121
|
+
end
|
122
|
+
|
123
|
+
def collect_simpletypes
|
124
|
+
result = XSD::NamedElements.new
|
125
|
+
result.concat(@simpletypes)
|
126
|
+
@imports.each do |import|
|
127
|
+
result.concat(import.content.collect_simpletypes) if import.content
|
128
|
+
end
|
129
|
+
result
|
130
|
+
end
|
131
|
+
|
132
|
+
def self.parse_element(element)
|
133
|
+
if element == SchemaName
|
134
|
+
Schema.new
|
135
|
+
else
|
136
|
+
nil
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# WSDL4R - XMLSchema complexType definition for WSDL.
|
2
|
+
# Copyright (C) 2002, 2003 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 'action_web_service/wsdl/info'
|
10
|
+
|
11
|
+
|
12
|
+
module WSDL
|
13
|
+
module XMLSchema
|
14
|
+
|
15
|
+
|
16
|
+
class Sequence < Info
|
17
|
+
attr_reader :minoccurs
|
18
|
+
attr_reader :maxoccurs
|
19
|
+
attr_reader :elements
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super()
|
23
|
+
@minoccurs = '1'
|
24
|
+
@maxoccurs = '1'
|
25
|
+
@elements = []
|
26
|
+
end
|
27
|
+
|
28
|
+
def targetnamespace
|
29
|
+
parent.targetnamespace
|
30
|
+
end
|
31
|
+
|
32
|
+
def elementformdefault
|
33
|
+
parent.elementformdefault
|
34
|
+
end
|
35
|
+
|
36
|
+
def <<(element)
|
37
|
+
@elements << element
|
38
|
+
end
|
39
|
+
|
40
|
+
def parse_element(element)
|
41
|
+
case element
|
42
|
+
when AnyName
|
43
|
+
o = Any.new
|
44
|
+
@elements << o
|
45
|
+
o
|
46
|
+
when ElementName
|
47
|
+
o = Element.new
|
48
|
+
@elements << o
|
49
|
+
o
|
50
|
+
else
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def parse_attr(attr, value)
|
56
|
+
case attr
|
57
|
+
when MaxOccursAttrName
|
58
|
+
@maxoccurs = value.source
|
59
|
+
when MinOccursAttrName
|
60
|
+
@minoccurs = value.source
|
61
|
+
else
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# WSDL4R - XMLSchema simpleContent definition for WSDL.
|
2
|
+
# Copyright (C) 2004, 2005 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 'action_web_service/wsdl/info'
|
10
|
+
require 'action_web_service/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module XMLSchema
|
15
|
+
|
16
|
+
|
17
|
+
class SimpleContent < Info
|
18
|
+
attr_reader :restriction
|
19
|
+
attr_reader :extension
|
20
|
+
|
21
|
+
def check_lexical_format(value)
|
22
|
+
check(value)
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
super
|
27
|
+
@restriction = nil
|
28
|
+
@extension = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def base
|
32
|
+
content.base
|
33
|
+
end
|
34
|
+
|
35
|
+
def targetnamespace
|
36
|
+
parent.targetnamespace
|
37
|
+
end
|
38
|
+
|
39
|
+
def parse_element(element)
|
40
|
+
case element
|
41
|
+
when RestrictionName
|
42
|
+
@restriction = SimpleRestriction.new
|
43
|
+
@restriction
|
44
|
+
when ExtensionName
|
45
|
+
@extension = SimpleExtension.new
|
46
|
+
@extension
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def content
|
53
|
+
@restriction || @extension
|
54
|
+
end
|
55
|
+
|
56
|
+
def check(value)
|
57
|
+
unless content.valid?(value)
|
58
|
+
raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# WSDL4R - XMLSchema simpleType extension definition for WSDL.
|
2
|
+
# Copyright (C) 2005 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 'action_web_service/wsdl/info'
|
10
|
+
require 'action_web_service/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module XMLSchema
|
15
|
+
|
16
|
+
|
17
|
+
class SimpleExtension < Info
|
18
|
+
attr_reader :base
|
19
|
+
attr_reader :attributes
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super
|
23
|
+
@base = nil
|
24
|
+
@attributes = XSD::NamedElements.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def targetnamespace
|
28
|
+
parent.targetnamespace
|
29
|
+
end
|
30
|
+
|
31
|
+
def valid?(value)
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse_element(element)
|
36
|
+
case element
|
37
|
+
when AttributeName
|
38
|
+
o = Attribute.new
|
39
|
+
@attributes << o
|
40
|
+
o
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def parse_attr(attr, value)
|
45
|
+
case attr
|
46
|
+
when BaseAttrName
|
47
|
+
@base = value
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# WSDL4R - XMLSchema simpleContent restriction definition for WSDL.
|
2
|
+
# Copyright (C) 2004 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 'action_web_service/wsdl/info'
|
10
|
+
require 'action_web_service/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module XMLSchema
|
15
|
+
|
16
|
+
|
17
|
+
class SimpleRestriction < Info
|
18
|
+
attr_reader :base
|
19
|
+
attr_reader :enumeration
|
20
|
+
attr_accessor :length
|
21
|
+
attr_accessor :pattern
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
super
|
25
|
+
@base = nil
|
26
|
+
@enumeration = [] # NamedElements?
|
27
|
+
@length = nil
|
28
|
+
@pattern = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def valid?(value)
|
32
|
+
return false unless check_restriction(value)
|
33
|
+
return false unless check_length(value)
|
34
|
+
return false unless check_pattern(value)
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
def parse_element(element)
|
39
|
+
case element
|
40
|
+
when EnumerationName
|
41
|
+
Enumeration.new # just a parsing handler
|
42
|
+
when LengthName
|
43
|
+
Length.new # just a parsing handler
|
44
|
+
when PatternName
|
45
|
+
Pattern.new # just a parsing handler
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def parse_attr(attr, value)
|
50
|
+
case attr
|
51
|
+
when BaseAttrName
|
52
|
+
@base = value
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def check_restriction(value)
|
59
|
+
@enumeration.empty? or @enumeration.include?(value)
|
60
|
+
end
|
61
|
+
|
62
|
+
def check_length(value)
|
63
|
+
@length.nil? or value.size == @length
|
64
|
+
end
|
65
|
+
|
66
|
+
def check_pattern(value)
|
67
|
+
@pattern.nil? or @pattern =~ value
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# WSDL4R - XMLSchema simpleType definition for WSDL.
|
2
|
+
# Copyright (C) 2004, 2005 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 'action_web_service/wsdl/info'
|
10
|
+
require 'action_web_service/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module XMLSchema
|
15
|
+
|
16
|
+
|
17
|
+
class SimpleType < Info
|
18
|
+
attr_accessor :name
|
19
|
+
attr_reader :restriction
|
20
|
+
|
21
|
+
def check_lexical_format(value)
|
22
|
+
if @restriction
|
23
|
+
check_restriction(value)
|
24
|
+
else
|
25
|
+
raise ArgumentError.new("incomplete simpleType")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def base
|
30
|
+
if @restriction
|
31
|
+
@restriction.base
|
32
|
+
else
|
33
|
+
raise ArgumentError.new("incomplete simpleType")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(name = nil)
|
38
|
+
super()
|
39
|
+
@name = name
|
40
|
+
@restriction = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def targetnamespace
|
44
|
+
parent.targetnamespace
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse_element(element)
|
48
|
+
case element
|
49
|
+
when RestrictionName
|
50
|
+
@restriction = SimpleRestriction.new
|
51
|
+
@restriction
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def parse_attr(attr, value)
|
56
|
+
case attr
|
57
|
+
when NameAttrName
|
58
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def check_restriction(value)
|
65
|
+
unless @restriction.valid?(value)
|
66
|
+
raise XSD::ValueSpaceError.new("#{@name}: cannot accept '#{value}'")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|