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,139 @@
|
|
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
|
+
require 'action_web_service/wsdl/xmlSchema/content'
|
11
|
+
require 'action_web_service/wsdl/xmlSchema/element'
|
12
|
+
require 'action_web_service/xsd/namedelements'
|
13
|
+
|
14
|
+
|
15
|
+
module WSDL
|
16
|
+
module XMLSchema
|
17
|
+
|
18
|
+
|
19
|
+
class ComplexType < Info
|
20
|
+
attr_accessor :name
|
21
|
+
attr_accessor :complexcontent
|
22
|
+
attr_accessor :simplecontent
|
23
|
+
attr_reader :content
|
24
|
+
attr_accessor :final
|
25
|
+
attr_accessor :mixed
|
26
|
+
attr_reader :attributes
|
27
|
+
|
28
|
+
def initialize(name = nil)
|
29
|
+
super()
|
30
|
+
@name = name
|
31
|
+
@complexcontent = nil
|
32
|
+
@simplecontent = nil
|
33
|
+
@content = nil
|
34
|
+
@final = nil
|
35
|
+
@mixed = false
|
36
|
+
@attributes = XSD::NamedElements.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def targetnamespace
|
40
|
+
# inner elements can be qualified
|
41
|
+
# parent.is_a?(WSDL::XMLSchema::Element) ? nil : parent.targetnamespace
|
42
|
+
parent.targetnamespace
|
43
|
+
end
|
44
|
+
|
45
|
+
def elementformdefault
|
46
|
+
parent.elementformdefault
|
47
|
+
end
|
48
|
+
|
49
|
+
AnyAsElement = Element.new(XSD::QName.new(nil, 'any'), XSD::AnyTypeName)
|
50
|
+
def each_element
|
51
|
+
if content
|
52
|
+
content.elements.each do |element|
|
53
|
+
if element.is_a?(Any)
|
54
|
+
yield(AnyAsElement)
|
55
|
+
else
|
56
|
+
yield(element)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def find_element(name)
|
63
|
+
if content
|
64
|
+
content.elements.each do |element|
|
65
|
+
if element.is_a?(Any)
|
66
|
+
return AnyAsElement if name == AnyAsElement.name
|
67
|
+
else
|
68
|
+
return element if name == element.name
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
|
75
|
+
def find_element_by_name(name)
|
76
|
+
if content
|
77
|
+
content.elements.each do |element|
|
78
|
+
if element.is_a?(Any)
|
79
|
+
return AnyAsElement if name == AnyAsElement.name.name
|
80
|
+
else
|
81
|
+
return element if name == element.name.name
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
nil
|
86
|
+
end
|
87
|
+
|
88
|
+
def sequence_elements=(elements)
|
89
|
+
@content = Sequence.new
|
90
|
+
elements.each do |element|
|
91
|
+
@content << element
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def all_elements=(elements)
|
96
|
+
@content = All.new
|
97
|
+
elements.each do |element|
|
98
|
+
@content << element
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def parse_element(element)
|
103
|
+
case element
|
104
|
+
when AllName
|
105
|
+
@content = All.new
|
106
|
+
when SequenceName
|
107
|
+
@content = Sequence.new
|
108
|
+
when ChoiceName
|
109
|
+
@content = Choice.new
|
110
|
+
when ComplexContentName
|
111
|
+
@complexcontent = ComplexContent.new
|
112
|
+
when SimpleContentName
|
113
|
+
@simplecontent = SimpleContent.new
|
114
|
+
when AttributeName
|
115
|
+
o = Attribute.new
|
116
|
+
@attributes << o
|
117
|
+
o
|
118
|
+
else
|
119
|
+
nil
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def parse_attr(attr, value)
|
124
|
+
case attr
|
125
|
+
when FinalAttrName
|
126
|
+
@final = value.source
|
127
|
+
when MixedAttrName
|
128
|
+
@mixed = (value.source == 'true')
|
129
|
+
when NameAttrName
|
130
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
131
|
+
else
|
132
|
+
nil
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,96 @@
|
|
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 Content < Info
|
17
|
+
attr_accessor :final
|
18
|
+
attr_accessor :mixed
|
19
|
+
attr_accessor :type
|
20
|
+
attr_reader :contents
|
21
|
+
attr_reader :elements
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
super()
|
25
|
+
@final = nil
|
26
|
+
@mixed = false
|
27
|
+
@type = nil
|
28
|
+
@contents = []
|
29
|
+
@elements = []
|
30
|
+
end
|
31
|
+
|
32
|
+
def targetnamespace
|
33
|
+
parent.targetnamespace
|
34
|
+
end
|
35
|
+
|
36
|
+
def <<(content)
|
37
|
+
@contents << content
|
38
|
+
update_elements
|
39
|
+
end
|
40
|
+
|
41
|
+
def each
|
42
|
+
@contents.each do |content|
|
43
|
+
yield content
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse_element(element)
|
48
|
+
case element
|
49
|
+
when AllName, SequenceName, ChoiceName
|
50
|
+
o = Content.new
|
51
|
+
o.type = element.name
|
52
|
+
@contents << o
|
53
|
+
o
|
54
|
+
when AnyName
|
55
|
+
o = Any.new
|
56
|
+
@contents << o
|
57
|
+
o
|
58
|
+
when ElementName
|
59
|
+
o = Element.new
|
60
|
+
@contents << o
|
61
|
+
o
|
62
|
+
else
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def parse_attr(attr, value)
|
68
|
+
case attr
|
69
|
+
when FinalAttrName
|
70
|
+
@final = value.source
|
71
|
+
when MixedAttrName
|
72
|
+
@mixed = (value.source == 'true')
|
73
|
+
else
|
74
|
+
nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def parse_epilogue
|
79
|
+
update_elements
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def update_elements
|
85
|
+
@elements = []
|
86
|
+
@contents.each do |content|
|
87
|
+
if content.is_a?(Element)
|
88
|
+
@elements << [content.name, content]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# WSDL4R - XMLSchema data definitions.
|
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/xsd/datatypes'
|
10
|
+
require 'action_web_service/wsdl/xmlSchema/annotation'
|
11
|
+
require 'action_web_service/wsdl/xmlSchema/schema'
|
12
|
+
require 'action_web_service/wsdl/xmlSchema/import'
|
13
|
+
require 'action_web_service/wsdl/xmlSchema/include'
|
14
|
+
require 'action_web_service/wsdl/xmlSchema/simpleType'
|
15
|
+
require 'action_web_service/wsdl/xmlSchema/simpleRestriction'
|
16
|
+
require 'action_web_service/wsdl/xmlSchema/simpleExtension'
|
17
|
+
require 'action_web_service/wsdl/xmlSchema/complexType'
|
18
|
+
require 'action_web_service/wsdl/xmlSchema/complexContent'
|
19
|
+
require 'action_web_service/wsdl/xmlSchema/simpleContent'
|
20
|
+
require 'action_web_service/wsdl/xmlSchema/any'
|
21
|
+
require 'action_web_service/wsdl/xmlSchema/element'
|
22
|
+
require 'action_web_service/wsdl/xmlSchema/all'
|
23
|
+
require 'action_web_service/wsdl/xmlSchema/choice'
|
24
|
+
require 'action_web_service/wsdl/xmlSchema/sequence'
|
25
|
+
require 'action_web_service/wsdl/xmlSchema/attribute'
|
26
|
+
require 'action_web_service/wsdl/xmlSchema/unique'
|
27
|
+
require 'action_web_service/wsdl/xmlSchema/enumeration'
|
28
|
+
require 'action_web_service/wsdl/xmlSchema/length'
|
29
|
+
require 'action_web_service/wsdl/xmlSchema/pattern'
|
30
|
+
|
31
|
+
module WSDL
|
32
|
+
module XMLSchema
|
33
|
+
|
34
|
+
|
35
|
+
AllName = XSD::QName.new(XSD::Namespace, 'all')
|
36
|
+
AnnotationName = XSD::QName.new(XSD::Namespace, 'annotation')
|
37
|
+
AnyName = XSD::QName.new(XSD::Namespace, 'any')
|
38
|
+
AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
|
39
|
+
ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
|
40
|
+
ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent')
|
41
|
+
ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType')
|
42
|
+
ElementName = XSD::QName.new(XSD::Namespace, 'element')
|
43
|
+
EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration')
|
44
|
+
ExtensionName = XSD::QName.new(XSD::Namespace, 'extension')
|
45
|
+
ImportName = XSD::QName.new(XSD::Namespace, 'import')
|
46
|
+
IncludeName = XSD::QName.new(XSD::Namespace, 'include')
|
47
|
+
LengthName = XSD::QName.new(XSD::Namespace, 'length')
|
48
|
+
PatternName = XSD::QName.new(XSD::Namespace, 'pattern')
|
49
|
+
RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction')
|
50
|
+
SequenceName = XSD::QName.new(XSD::Namespace, 'sequence')
|
51
|
+
SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
|
52
|
+
SimpleContentName = XSD::QName.new(XSD::Namespace, 'simpleContent')
|
53
|
+
SimpleTypeName = XSD::QName.new(XSD::Namespace, 'simpleType')
|
54
|
+
UniqueName = XSD::QName.new(XSD::Namespace, 'unique')
|
55
|
+
|
56
|
+
AttributeFormDefaultAttrName = XSD::QName.new(nil, 'attributeFormDefault')
|
57
|
+
BaseAttrName = XSD::QName.new(nil, 'base')
|
58
|
+
DefaultAttrName = XSD::QName.new(nil, 'default')
|
59
|
+
ElementFormDefaultAttrName = XSD::QName.new(nil, 'elementFormDefault')
|
60
|
+
FinalAttrName = XSD::QName.new(nil, 'final')
|
61
|
+
FixedAttrName = XSD::QName.new(nil, 'fixed')
|
62
|
+
FormAttrName = XSD::QName.new(nil, 'form')
|
63
|
+
IdAttrName = XSD::QName.new(nil, 'id')
|
64
|
+
MaxOccursAttrName = XSD::QName.new(nil, 'maxOccurs')
|
65
|
+
MinOccursAttrName = XSD::QName.new(nil, 'minOccurs')
|
66
|
+
MixedAttrName = XSD::QName.new(nil, 'mixed')
|
67
|
+
NameAttrName = XSD::QName.new(nil, 'name')
|
68
|
+
NamespaceAttrName = XSD::QName.new(nil, 'namespace')
|
69
|
+
NillableAttrName = XSD::QName.new(nil, 'nillable')
|
70
|
+
ProcessContentsAttrName = XSD::QName.new(nil, 'processContents')
|
71
|
+
RefAttrName = XSD::QName.new(nil, 'ref')
|
72
|
+
SchemaLocationAttrName = XSD::QName.new(nil, 'schemaLocation')
|
73
|
+
TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
|
74
|
+
TypeAttrName = XSD::QName.new(nil, 'type')
|
75
|
+
UseAttrName = XSD::QName.new(nil, 'use')
|
76
|
+
ValueAttrName = XSD::QName.new(nil, 'value')
|
77
|
+
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# WSDL4R - XMLSchema element 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
|
+
|
11
|
+
|
12
|
+
module WSDL
|
13
|
+
module XMLSchema
|
14
|
+
|
15
|
+
|
16
|
+
class Element < 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_writer :form
|
40
|
+
attr_writer :type
|
41
|
+
attr_writer :local_simpletype
|
42
|
+
attr_writer :local_complextype
|
43
|
+
attr_writer :constraint
|
44
|
+
attr_writer :maxoccurs
|
45
|
+
attr_writer :minoccurs
|
46
|
+
attr_writer :nillable
|
47
|
+
|
48
|
+
attr_reader_ref :name
|
49
|
+
attr_reader_ref :form
|
50
|
+
attr_reader_ref :type
|
51
|
+
attr_reader_ref :local_simpletype
|
52
|
+
attr_reader_ref :local_complextype
|
53
|
+
attr_reader_ref :constraint
|
54
|
+
attr_reader_ref :maxoccurs
|
55
|
+
attr_reader_ref :minoccurs
|
56
|
+
attr_reader_ref :nillable
|
57
|
+
|
58
|
+
attr_accessor :ref
|
59
|
+
|
60
|
+
def initialize(name = nil, type = nil)
|
61
|
+
super()
|
62
|
+
@name = name
|
63
|
+
@form = nil
|
64
|
+
@type = type
|
65
|
+
@local_simpletype = @local_complextype = nil
|
66
|
+
@constraint = nil
|
67
|
+
@maxoccurs = '1'
|
68
|
+
@minoccurs = '1'
|
69
|
+
@nillable = nil
|
70
|
+
@ref = nil
|
71
|
+
@refelement = nil
|
72
|
+
end
|
73
|
+
|
74
|
+
def refelement
|
75
|
+
@refelement ||= (@ref ? root.collect_elements[@ref] : nil)
|
76
|
+
end
|
77
|
+
|
78
|
+
def targetnamespace
|
79
|
+
parent.targetnamespace
|
80
|
+
end
|
81
|
+
|
82
|
+
def elementformdefault
|
83
|
+
parent.elementformdefault
|
84
|
+
end
|
85
|
+
|
86
|
+
def elementform
|
87
|
+
self.form.nil? ? parent.elementformdefault : self.form
|
88
|
+
end
|
89
|
+
|
90
|
+
def parse_element(element)
|
91
|
+
case element
|
92
|
+
when SimpleTypeName
|
93
|
+
@local_simpletype = SimpleType.new
|
94
|
+
@local_simpletype
|
95
|
+
when ComplexTypeName
|
96
|
+
@type = nil
|
97
|
+
@local_complextype = ComplexType.new
|
98
|
+
@local_complextype
|
99
|
+
when UniqueName
|
100
|
+
@constraint = Unique.new
|
101
|
+
@constraint
|
102
|
+
else
|
103
|
+
nil
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def parse_attr(attr, value)
|
108
|
+
case attr
|
109
|
+
when NameAttrName
|
110
|
+
# namespace may be nil
|
111
|
+
if directelement? or elementform == 'qualified'
|
112
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
113
|
+
else
|
114
|
+
@name = XSD::QName.new(nil, value.source)
|
115
|
+
end
|
116
|
+
when FormAttrName
|
117
|
+
@form = value.source
|
118
|
+
when TypeAttrName
|
119
|
+
@type = value
|
120
|
+
when RefAttrName
|
121
|
+
@ref = value
|
122
|
+
when MaxOccursAttrName
|
123
|
+
if parent.is_a?(All)
|
124
|
+
if value.source != '1'
|
125
|
+
raise Parser::AttrConstraintError.new(
|
126
|
+
"cannot parse #{value} for #{attr}")
|
127
|
+
end
|
128
|
+
end
|
129
|
+
@maxoccurs = value.source
|
130
|
+
when MinOccursAttrName
|
131
|
+
if parent.is_a?(All)
|
132
|
+
unless ['0', '1'].include?(value.source)
|
133
|
+
raise Parser::AttrConstraintError.new(
|
134
|
+
"cannot parse #{value} for #{attr}")
|
135
|
+
end
|
136
|
+
end
|
137
|
+
@minoccurs = value.source
|
138
|
+
when NillableAttrName
|
139
|
+
@nillable = (value.source == 'true')
|
140
|
+
else
|
141
|
+
nil
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
def directelement?
|
148
|
+
parent.is_a?(Schema)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
end
|
154
|
+
end
|