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,52 @@
|
|
1
|
+
# WSDL4R - WSDL part definition.
|
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
|
+
|
14
|
+
|
15
|
+
class Part < Info
|
16
|
+
attr_reader :name # required
|
17
|
+
attr_reader :element # optional
|
18
|
+
attr_reader :type # optional
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super
|
22
|
+
@name = nil
|
23
|
+
@element = nil
|
24
|
+
@type = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse_element(element)
|
28
|
+
case element
|
29
|
+
when DocumentationName
|
30
|
+
o = Documentation.new
|
31
|
+
o
|
32
|
+
else
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def parse_attr(attr, value)
|
38
|
+
case attr
|
39
|
+
when NameAttrName
|
40
|
+
@name = value.source
|
41
|
+
when ElementAttrName
|
42
|
+
@element = value
|
43
|
+
when TypeAttrName
|
44
|
+
@type = value
|
45
|
+
else
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# WSDL4R - WSDL port definition.
|
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
|
+
|
14
|
+
|
15
|
+
class Port < Info
|
16
|
+
attr_reader :name # required
|
17
|
+
attr_reader :binding # required
|
18
|
+
attr_reader :soap_address
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super
|
22
|
+
@name = nil
|
23
|
+
@binding = nil
|
24
|
+
@soap_address = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def targetnamespace
|
28
|
+
parent.targetnamespace
|
29
|
+
end
|
30
|
+
|
31
|
+
def porttype
|
32
|
+
root.porttype(find_binding.type)
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_binding
|
36
|
+
root.binding(@binding) or raise RuntimeError.new("#{@binding} not found")
|
37
|
+
end
|
38
|
+
|
39
|
+
def inputoperation_map
|
40
|
+
result = {}
|
41
|
+
find_binding.operations.each do |op_bind|
|
42
|
+
op_info = op_bind.soapoperation.input_info
|
43
|
+
result[op_info.op_name] = op_info
|
44
|
+
end
|
45
|
+
result
|
46
|
+
end
|
47
|
+
|
48
|
+
def outputoperation_map
|
49
|
+
result = {}
|
50
|
+
find_binding.operations.each do |op_bind|
|
51
|
+
op_info = op_bind.soapoperation.output_info
|
52
|
+
result[op_info.op_name] = op_info
|
53
|
+
end
|
54
|
+
result
|
55
|
+
end
|
56
|
+
|
57
|
+
def parse_element(element)
|
58
|
+
case element
|
59
|
+
when SOAPAddressName
|
60
|
+
o = WSDL::SOAP::Address.new
|
61
|
+
@soap_address = o
|
62
|
+
o
|
63
|
+
when DocumentationName
|
64
|
+
o = Documentation.new
|
65
|
+
o
|
66
|
+
else
|
67
|
+
nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def parse_attr(attr, value)
|
72
|
+
case attr
|
73
|
+
when NameAttrName
|
74
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
75
|
+
when BindingAttrName
|
76
|
+
@binding = value
|
77
|
+
else
|
78
|
+
nil
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# WSDL4R - WSDL portType definition.
|
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/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
|
15
|
+
|
16
|
+
class PortType < Info
|
17
|
+
attr_reader :name # required
|
18
|
+
attr_reader :operations
|
19
|
+
|
20
|
+
def targetnamespace
|
21
|
+
parent.targetnamespace
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize
|
25
|
+
super
|
26
|
+
@name = nil
|
27
|
+
@operations = XSD::NamedElements.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def find_binding
|
31
|
+
root.bindings.find { |item| item.type == @name } or
|
32
|
+
raise RuntimeError.new("#{@name} not found")
|
33
|
+
end
|
34
|
+
|
35
|
+
def locations
|
36
|
+
bind_name = find_binding.name
|
37
|
+
result = []
|
38
|
+
root.services.each do |service|
|
39
|
+
service.ports.each do |port|
|
40
|
+
if port.binding == bind_name
|
41
|
+
result << port.soap_address.location if port.soap_address
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
result
|
46
|
+
end
|
47
|
+
|
48
|
+
def parse_element(element)
|
49
|
+
case element
|
50
|
+
when OperationName
|
51
|
+
o = Operation.new
|
52
|
+
@operations << o
|
53
|
+
o
|
54
|
+
when DocumentationName
|
55
|
+
o = Documentation.new
|
56
|
+
o
|
57
|
+
else
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def parse_attr(attr, value)
|
63
|
+
case attr
|
64
|
+
when NameAttrName
|
65
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
66
|
+
else
|
67
|
+
nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# WSDL4R - WSDL service definition.
|
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/xsd/namedelements'
|
11
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
|
15
|
+
|
16
|
+
class Service < Info
|
17
|
+
attr_reader :name # required
|
18
|
+
attr_reader :ports
|
19
|
+
attr_reader :soap_address
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super
|
23
|
+
@name = nil
|
24
|
+
@ports = XSD::NamedElements.new
|
25
|
+
@soap_address = nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def targetnamespace
|
29
|
+
parent.targetnamespace
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_element(element)
|
33
|
+
case element
|
34
|
+
when PortName
|
35
|
+
o = Port.new
|
36
|
+
@ports << o
|
37
|
+
o
|
38
|
+
when SOAPAddressName
|
39
|
+
o = WSDL::SOAP::Address.new
|
40
|
+
@soap_address = o
|
41
|
+
o
|
42
|
+
when DocumentationName
|
43
|
+
o = Documentation.new
|
44
|
+
o
|
45
|
+
else
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def parse_attr(attr, value)
|
51
|
+
case attr
|
52
|
+
when NameAttrName
|
53
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
54
|
+
else
|
55
|
+
nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# WSDL4R - WSDL SOAP address definition.
|
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 SOAP
|
14
|
+
|
15
|
+
|
16
|
+
class Address < Info
|
17
|
+
attr_reader :location
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
super
|
21
|
+
@location = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse_element(element)
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_attr(attr, value)
|
29
|
+
case attr
|
30
|
+
when LocationAttrName
|
31
|
+
@location = value.source
|
32
|
+
else
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# WSDL4R - WSDL SOAP binding definition.
|
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 SOAP
|
14
|
+
|
15
|
+
|
16
|
+
class Binding < Info
|
17
|
+
attr_reader :style
|
18
|
+
attr_reader :transport
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super
|
22
|
+
@style = nil
|
23
|
+
@transport = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse_element(element)
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_attr(attr, value)
|
31
|
+
case attr
|
32
|
+
when StyleAttrName
|
33
|
+
if ["document", "rpc"].include?(value.source)
|
34
|
+
@style = value.source.intern
|
35
|
+
else
|
36
|
+
raise Parser::AttributeConstraintError.new(
|
37
|
+
"Unexpected value #{ value }.")
|
38
|
+
end
|
39
|
+
when TransportAttrName
|
40
|
+
@transport = value.source
|
41
|
+
else
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# WSDL4R - WSDL SOAP body definition.
|
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 SOAP
|
14
|
+
|
15
|
+
|
16
|
+
class Body < Info
|
17
|
+
attr_reader :parts
|
18
|
+
attr_reader :use # required
|
19
|
+
attr_reader :encodingstyle
|
20
|
+
attr_reader :namespace
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
super
|
24
|
+
@parts = nil
|
25
|
+
@use = nil
|
26
|
+
@encodingstyle = nil
|
27
|
+
@namespace = nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_element(element)
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def parse_attr(attr, value)
|
35
|
+
case attr
|
36
|
+
when PartsAttrName
|
37
|
+
@parts = value.source
|
38
|
+
when UseAttrName
|
39
|
+
if ['literal', 'encoded'].include?(value.source)
|
40
|
+
@use = value.source.intern
|
41
|
+
else
|
42
|
+
raise RuntimeError.new("unknown use of soap:body: #{value.source}")
|
43
|
+
end
|
44
|
+
when EncodingStyleAttrName
|
45
|
+
@encodingstyle = value.source
|
46
|
+
when NamespaceAttrName
|
47
|
+
@namespace = value.source
|
48
|
+
else
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# WSDL4R - Creating CGI stub code from 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/wsdl/soap/mappingRegistryCreator'
|
11
|
+
require 'action_web_service/wsdl/soap/methodDefCreator'
|
12
|
+
require 'action_web_service/wsdl/soap/classDefCreatorSupport'
|
13
|
+
|
14
|
+
|
15
|
+
module WSDL
|
16
|
+
module SOAP
|
17
|
+
|
18
|
+
|
19
|
+
class CGIStubCreator
|
20
|
+
include ClassDefCreatorSupport
|
21
|
+
|
22
|
+
attr_reader :definitions
|
23
|
+
|
24
|
+
def initialize(definitions)
|
25
|
+
@definitions = definitions
|
26
|
+
end
|
27
|
+
|
28
|
+
def dump(service_name)
|
29
|
+
warn("CGI stub can have only 1 port. Creating stub for the first port... Rests are ignored.")
|
30
|
+
port = @definitions.service(service_name).ports[0]
|
31
|
+
dump_porttype(port.porttype.name)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def dump_porttype(name)
|
37
|
+
class_name = create_class_name(name)
|
38
|
+
methoddef, types = MethodDefCreator.new(@definitions).dump(name)
|
39
|
+
mr_creator = MappingRegistryCreator.new(@definitions)
|
40
|
+
c1 = XSD::CodeGen::ClassDef.new(class_name)
|
41
|
+
c1.def_require("soap/rpc/cgistub")
|
42
|
+
c1.def_require("soap/mapping/registry")
|
43
|
+
c1.def_const("MappingRegistry", "::SOAP::Mapping::Registry.new")
|
44
|
+
c1.def_code(mr_creator.dump(types))
|
45
|
+
c1.def_code <<-EOD
|
46
|
+
Methods = [
|
47
|
+
#{methoddef.gsub(/^/, " ")}
|
48
|
+
]
|
49
|
+
EOD
|
50
|
+
c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
|
51
|
+
"::SOAP::RPC::CGIStub")
|
52
|
+
c2.def_method("initialize", "*arg") do
|
53
|
+
<<-EOD
|
54
|
+
super(*arg)
|
55
|
+
servant = #{class_name}.new
|
56
|
+
#{class_name}::Methods.each do |definitions|
|
57
|
+
opt = definitions.last
|
58
|
+
if opt[:request_style] == :document
|
59
|
+
@router.add_document_operation(servant, *definitions)
|
60
|
+
else
|
61
|
+
@router.add_rpc_operation(servant, *definitions)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
self.mapping_registry = #{class_name}::MappingRegistry
|
65
|
+
self.level = Logger::Severity::ERROR
|
66
|
+
EOD
|
67
|
+
end
|
68
|
+
c1.dump + "\n" + c2.dump + format(<<-EOD)
|
69
|
+
#{class_name}App.new('app', nil).start
|
70
|
+
EOD
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|