soybean 1.0.0
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/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +38 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/bin/soybean +22 -0
- data/bin/xsd2ruby +90 -0
- data/lib/soybean.rb +11 -0
- data/lib/soybean/actions/generate_classes.rb +33 -0
- data/soybean.gemspec +236 -0
- data/spec/soybean_spec.rb +5 -0
- data/spec/spec_helper.rb +12 -0
- data/vendor/soap4r/soap/attachment.rb +109 -0
- data/vendor/soap4r/soap/attrproxy.rb +35 -0
- data/vendor/soap4r/soap/base_data.rb +1095 -0
- data/vendor/soap4r/soap/element.rb +278 -0
- data/vendor/soap4r/soap/encodingstyle/asp_dot_net_handler.rb +208 -0
- data/vendor/soap4r/soap/encodingstyle/handler.rb +121 -0
- data/vendor/soap4r/soap/encodingstyle/literal_handler.rb +196 -0
- data/vendor/soap4r/soap/encodingstyle/soap_handler.rb +560 -0
- data/vendor/soap4r/soap/filter.rb +14 -0
- data/vendor/soap4r/soap/filter/filterchain.rb +52 -0
- data/vendor/soap4r/soap/filter/handler.rb +32 -0
- data/vendor/soap4r/soap/filter/streamhandler.rb +30 -0
- data/vendor/soap4r/soap/generator.rb +299 -0
- data/vendor/soap4r/soap/header/handler.rb +62 -0
- data/vendor/soap4r/soap/header/handlerset.rb +71 -0
- data/vendor/soap4r/soap/header/mappinghandler.rb +48 -0
- data/vendor/soap4r/soap/header/simplehandler.rb +45 -0
- data/vendor/soap4r/soap/httpconfigloader.rb +140 -0
- data/vendor/soap4r/soap/mapping.rb +13 -0
- data/vendor/soap4r/soap/mapping/encodedregistry.rb +539 -0
- data/vendor/soap4r/soap/mapping/factory.rb +389 -0
- data/vendor/soap4r/soap/mapping/literalregistry.rb +392 -0
- data/vendor/soap4r/soap/mapping/mapping.rb +577 -0
- data/vendor/soap4r/soap/mapping/registry.rb +296 -0
- data/vendor/soap4r/soap/mapping/rubytype_factory.rb +446 -0
- data/vendor/soap4r/soap/mapping/schemadefinition.rb +171 -0
- data/vendor/soap4r/soap/mapping/type_map.rb +107 -0
- data/vendor/soap4r/soap/mapping/wsdlencodedregistry.rb +212 -0
- data/vendor/soap4r/soap/mapping/wsdlliteralregistry.rb +249 -0
- data/vendor/soap4r/soap/marshal.rb +60 -0
- data/vendor/soap4r/soap/mimemessage.rb +243 -0
- data/vendor/soap4r/soap/nestedexception.rb +43 -0
- data/vendor/soap4r/soap/net_http_client.rb +242 -0
- data/vendor/soap4r/soap/ns.rb +39 -0
- data/vendor/soap4r/soap/parser.rb +253 -0
- data/vendor/soap4r/soap/processor.rb +67 -0
- data/vendor/soap4r/soap/property.rb +340 -0
- data/vendor/soap4r/soap/proxy.rb +15 -0
- data/vendor/soap4r/soap/rpc/cgistub.rb +248 -0
- data/vendor/soap4r/soap/rpc/driver.rb +222 -0
- data/vendor/soap4r/soap/rpc/element.rb +375 -0
- data/vendor/soap4r/soap/rpc/httpserver.rb +143 -0
- data/vendor/soap4r/soap/rpc/method_def.rb +69 -0
- data/vendor/soap4r/soap/rpc/proxy.rb +573 -0
- data/vendor/soap4r/soap/rpc/router.rb +663 -0
- data/vendor/soap4r/soap/rpc/rpc.rb +26 -0
- data/vendor/soap4r/soap/rpc/soaplet.rb +201 -0
- data/vendor/soap4r/soap/rpc/standalone_server.rb +44 -0
- data/vendor/soap4r/soap/soap.rb +154 -0
- data/vendor/soap4r/soap/stream_handler.rb +302 -0
- data/vendor/soap4r/soap/version.rb +9 -0
- data/vendor/soap4r/soap/wsdl_driver.rb +165 -0
- data/vendor/soap4r/wsdl/binding.rb +66 -0
- data/vendor/soap4r/wsdl/data.rb +65 -0
- data/vendor/soap4r/wsdl/definitions.rb +237 -0
- data/vendor/soap4r/wsdl/documentation.rb +33 -0
- data/vendor/soap4r/wsdl/import.rb +81 -0
- data/vendor/soap4r/wsdl/importer.rb +39 -0
- data/vendor/soap4r/wsdl/info.rb +51 -0
- data/vendor/soap4r/wsdl/message.rb +55 -0
- data/vendor/soap4r/wsdl/operation.rb +152 -0
- data/vendor/soap4r/wsdl/operation_binding.rb +241 -0
- data/vendor/soap4r/wsdl/param.rb +94 -0
- data/vendor/soap4r/wsdl/parser.rb +165 -0
- data/vendor/soap4r/wsdl/part.rb +53 -0
- data/vendor/soap4r/wsdl/port.rb +67 -0
- data/vendor/soap4r/wsdl/port_type.rb +76 -0
- data/vendor/soap4r/wsdl/service.rb +62 -0
- data/vendor/soap4r/wsdl/soap/address.rb +41 -0
- data/vendor/soap4r/wsdl/soap/binding.rb +50 -0
- data/vendor/soap4r/wsdl/soap/body.rb +59 -0
- data/vendor/soap4r/wsdl/soap/cgi_stub_creator.rb +93 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator.rb +437 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator_support.rb +241 -0
- data/vendor/soap4r/wsdl/soap/class_name_creator.rb +55 -0
- data/vendor/soap4r/wsdl/soap/client_skelton_creator.rb +107 -0
- data/vendor/soap4r/wsdl/soap/complex_type.rb +174 -0
- data/vendor/soap4r/wsdl/soap/data.rb +43 -0
- data/vendor/soap4r/wsdl/soap/definitions.rb +201 -0
- data/vendor/soap4r/wsdl/soap/driver_creator.rb +121 -0
- data/vendor/soap4r/wsdl/soap/element.rb +34 -0
- data/vendor/soap4r/wsdl/soap/encoded_mapping_registry_creator.rb +74 -0
- data/vendor/soap4r/wsdl/soap/fault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/header.rb +87 -0
- data/vendor/soap4r/wsdl/soap/headerfault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/literal_mapping_registry_creator.rb +116 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator.rb +59 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator_support.rb +377 -0
- data/vendor/soap4r/wsdl/soap/method_def_creator.rb +200 -0
- data/vendor/soap4r/wsdl/soap/operation.rb +113 -0
- data/vendor/soap4r/wsdl/soap/servant_skelton_creator.rb +92 -0
- data/vendor/soap4r/wsdl/soap/servlet_stub_creator.rb +105 -0
- data/vendor/soap4r/wsdl/soap/standalone_server_stub_creator.rb +101 -0
- data/vendor/soap4r/wsdl/soap/wsdl2ruby.rb +226 -0
- data/vendor/soap4r/wsdl/types.rb +45 -0
- data/vendor/soap4r/wsdl/wsdl.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/all.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/annotation.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/any.rb +62 -0
- data/vendor/soap4r/wsdl/xml_schema/any_attribute.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute_group.rb +69 -0
- data/vendor/soap4r/wsdl/xml_schema/choice.rb +59 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_content.rb +98 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_extension.rb +120 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_restriction.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_type.rb +194 -0
- data/vendor/soap4r/wsdl/xml_schema/content.rb +96 -0
- data/vendor/soap4r/wsdl/xml_schema/data.rb +117 -0
- data/vendor/soap4r/wsdl/xml_schema/element.rb +154 -0
- data/vendor/soap4r/wsdl/xml_schema/enumeration.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/fractiondigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/group.rb +101 -0
- data/vendor/soap4r/wsdl/xml_schema/import.rb +54 -0
- data/vendor/soap4r/wsdl/xml_schema/import_handler.rb +46 -0
- data/vendor/soap4r/wsdl/xml_schema/importer.rb +103 -0
- data/vendor/soap4r/wsdl/xml_schema/include.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/length.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/list.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/maxexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxinclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/mininclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/parser.rb +168 -0
- data/vendor/soap4r/wsdl/xml_schema/pattern.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/ref.rb +34 -0
- data/vendor/soap4r/wsdl/xml_schema/schema.rb +179 -0
- data/vendor/soap4r/wsdl/xml_schema/sequence.rb +55 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_content.rb +70 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_extension.rb +63 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_restriction.rb +133 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_type.rb +88 -0
- data/vendor/soap4r/wsdl/xml_schema/totaldigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/union.rb +36 -0
- data/vendor/soap4r/wsdl/xml_schema/unique.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/whitespace.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/xsd2ruby.rb +176 -0
- data/vendor/soap4r/xsd/charset.rb +190 -0
- data/vendor/soap4r/xsd/codegen.rb +13 -0
- data/vendor/soap4r/xsd/codegen/classdef.rb +209 -0
- data/vendor/soap4r/xsd/codegen/commentdef.rb +35 -0
- data/vendor/soap4r/xsd/codegen/gensupport.rb +277 -0
- data/vendor/soap4r/xsd/codegen/methoddef.rb +71 -0
- data/vendor/soap4r/xsd/codegen/moduledef.rb +209 -0
- data/vendor/soap4r/xsd/datatypes.rb +1466 -0
- data/vendor/soap4r/xsd/datatypes1999.rb +21 -0
- data/vendor/soap4r/xsd/iconvcharset.rb +34 -0
- data/vendor/soap4r/xsd/mapping.rb +69 -0
- data/vendor/soap4r/xsd/namedelements.rb +133 -0
- data/vendor/soap4r/xsd/ns.rb +183 -0
- data/vendor/soap4r/xsd/qname.rb +80 -0
- data/vendor/soap4r/xsd/xmlparser.rb +77 -0
- data/vendor/soap4r/xsd/xmlparser/libxmlparser.rb +116 -0
- data/vendor/soap4r/xsd/xmlparser/parser.rb +101 -0
- data/vendor/soap4r/xsd/xmlparser/rexmlparser.rb +59 -0
- data/vendor/soap4r/xsd/xmlparser/xmlparser.rb +51 -0
- data/vendor/soap4r/xsd/xmlparser/xmlscanner.rb +150 -0
- metadata +316 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# SOAP4R - SOAP WSDL driver
|
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
|
4
|
+
|
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
|
7
|
+
# either the dual license version in 2003, or any later version.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require 'wsdl/parser'
|
|
11
|
+
require 'wsdl/importer'
|
|
12
|
+
require 'xsd/qname'
|
|
13
|
+
require 'xsd/codegen/gensupport'
|
|
14
|
+
require 'soap/attrproxy'
|
|
15
|
+
require 'soap/mapping/wsdlencodedregistry'
|
|
16
|
+
require 'soap/mapping/wsdlliteralregistry'
|
|
17
|
+
require 'soap/rpc/driver'
|
|
18
|
+
require 'wsdl/soap/methodDefCreator'
|
|
19
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
|
20
|
+
require 'wsdl/soap/classNameCreator'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
module SOAP
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class WSDLDriverFactory
|
|
27
|
+
include WSDL::SOAP::ClassDefCreatorSupport
|
|
28
|
+
|
|
29
|
+
class FactoryError < StandardError; end
|
|
30
|
+
|
|
31
|
+
attr_reader :wsdl
|
|
32
|
+
|
|
33
|
+
def initialize(wsdl)
|
|
34
|
+
@wsdl = import(wsdl)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def inspect
|
|
38
|
+
sprintf("#<%s:%s:0x%x\n\n%s>", self.class.name, @wsdl.name, __id__, dump_method_signatures)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def create_rpc_driver(servicename = nil, portname = nil)
|
|
42
|
+
port = find_port(servicename, portname)
|
|
43
|
+
drv = SOAP::RPC::Driver.new(port.soap_address.location)
|
|
44
|
+
if binding = port.find_binding
|
|
45
|
+
init_driver(drv, binding)
|
|
46
|
+
add_operation(drv, binding)
|
|
47
|
+
end
|
|
48
|
+
drv
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def dump_method_signatures(servicename = nil, portname = nil)
|
|
52
|
+
targetservice = XSD::QName.new(@wsdl.targetnamespace, servicename) if servicename
|
|
53
|
+
targetport = XSD::QName.new(@wsdl.targetnamespace, portname) if portname
|
|
54
|
+
sig = []
|
|
55
|
+
element_definitions = @wsdl.collect_elements
|
|
56
|
+
@wsdl.services.each do |service|
|
|
57
|
+
next if targetservice and service.name != targetservice
|
|
58
|
+
service.ports.each do |port|
|
|
59
|
+
next if targetport and port.name != targetport
|
|
60
|
+
if porttype = port.porttype
|
|
61
|
+
assigned_method = collect_assigned_method(porttype.name)
|
|
62
|
+
if binding = port.porttype.find_binding
|
|
63
|
+
sig << binding.operations.collect { |op_bind|
|
|
64
|
+
operation = op_bind.find_operation
|
|
65
|
+
name = assigned_method[op_bind.boundid] || op_bind.name
|
|
66
|
+
str = "= #{safemethodname(name)}\n\n"
|
|
67
|
+
str << dump_method_signature(name, operation, element_definitions)
|
|
68
|
+
str.gsub(/^#/, " ")
|
|
69
|
+
}.join("\n")
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
sig.join("\n")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
private
|
|
78
|
+
|
|
79
|
+
def collect_assigned_method(porttypename)
|
|
80
|
+
name_creator = WSDL::SOAP::ClassNameCreator.new
|
|
81
|
+
methoddefcreator =
|
|
82
|
+
WSDL::SOAP::MethodDefCreator.new(@wsdl, name_creator, nil, {})
|
|
83
|
+
methoddefcreator.dump(porttypename)
|
|
84
|
+
methoddefcreator.assigned_method
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def find_port(servicename = nil, portname = nil)
|
|
88
|
+
service = port = nil
|
|
89
|
+
if servicename
|
|
90
|
+
service = @wsdl.service(
|
|
91
|
+
XSD::QName.new(@wsdl.targetnamespace, servicename))
|
|
92
|
+
else
|
|
93
|
+
service = @wsdl.services[0]
|
|
94
|
+
end
|
|
95
|
+
if service.nil?
|
|
96
|
+
raise FactoryError.new("service #{servicename} not found in WSDL")
|
|
97
|
+
end
|
|
98
|
+
if portname
|
|
99
|
+
port = service.ports[XSD::QName.new(@wsdl.targetnamespace, portname)]
|
|
100
|
+
if port.nil?
|
|
101
|
+
raise FactoryError.new("port #{portname} not found in WSDL")
|
|
102
|
+
end
|
|
103
|
+
else
|
|
104
|
+
port = service.ports.find { |port| !port.soap_address.nil? }
|
|
105
|
+
if port.nil?
|
|
106
|
+
raise FactoryError.new("no ports have soap:address")
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
if port.soap_address.nil?
|
|
110
|
+
raise FactoryError.new("soap:address element not found in WSDL")
|
|
111
|
+
end
|
|
112
|
+
port
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def init_driver(drv, binding)
|
|
116
|
+
wsdl_elements = @wsdl.collect_elements
|
|
117
|
+
wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
|
|
118
|
+
rpc_decode_typemap = wsdl_types +
|
|
119
|
+
@wsdl.soap_rpc_complextypes(binding)
|
|
120
|
+
drv.proxy.mapping_registry =
|
|
121
|
+
Mapping::WSDLEncodedRegistry.new(rpc_decode_typemap)
|
|
122
|
+
drv.proxy.literal_mapping_registry =
|
|
123
|
+
Mapping::WSDLLiteralRegistry.new(wsdl_types, wsdl_elements)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def add_operation(drv, binding)
|
|
127
|
+
name_creator = WSDL::SOAP::ClassNameCreator.new
|
|
128
|
+
modulepath = 'WSDLDriverFactory'
|
|
129
|
+
methoddefcreator =
|
|
130
|
+
WSDL::SOAP::MethodDefCreator.new(@wsdl, name_creator, modulepath, {})
|
|
131
|
+
mdefs = methoddefcreator.create(binding.name)
|
|
132
|
+
if mdefs.nil?
|
|
133
|
+
raise FactoryError.new("no method definition found in WSDL")
|
|
134
|
+
end
|
|
135
|
+
mdefs.each do |mdef|
|
|
136
|
+
opt = {
|
|
137
|
+
:request_style => mdef.style,
|
|
138
|
+
:response_style => mdef.style,
|
|
139
|
+
:request_use => mdef.inputuse,
|
|
140
|
+
:response_use => mdef.outputuse
|
|
141
|
+
}
|
|
142
|
+
qname = mdef.qname
|
|
143
|
+
soapaction = mdef.soapaction
|
|
144
|
+
name = mdef.name
|
|
145
|
+
if mdef.style == :rpc
|
|
146
|
+
drv.add_rpc_operation(qname, soapaction, name, mdef.parameters, opt)
|
|
147
|
+
else
|
|
148
|
+
drv.add_document_operation(soapaction, name, mdef.parameters, opt)
|
|
149
|
+
end
|
|
150
|
+
orgname = mdef.qname.name
|
|
151
|
+
if orgname != name and orgname.capitalize == name.capitalize
|
|
152
|
+
::SOAP::Mapping.define_singleton_method(drv, orgname) do |*arg|
|
|
153
|
+
__send__(name, *arg)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def import(location)
|
|
160
|
+
WSDL::Importer.import(location)
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL binding definition.
|
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
|
4
|
+
|
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
|
7
|
+
# either the dual license version in 2003, or any later version.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require 'wsdl/info'
|
|
11
|
+
require 'xsd/namedelements'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Binding < Info
|
|
18
|
+
attr_reader :name # required
|
|
19
|
+
attr_reader :type # required
|
|
20
|
+
attr_reader :operations
|
|
21
|
+
attr_reader :soapbinding
|
|
22
|
+
|
|
23
|
+
def initialize
|
|
24
|
+
super
|
|
25
|
+
@name = nil
|
|
26
|
+
@type = nil
|
|
27
|
+
@operations = XSD::NamedElements.new
|
|
28
|
+
@soapbinding = nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def targetnamespace
|
|
32
|
+
parent.targetnamespace
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def parse_element(element)
|
|
36
|
+
case element
|
|
37
|
+
when OperationName
|
|
38
|
+
o = OperationBinding.new
|
|
39
|
+
@operations << o
|
|
40
|
+
o
|
|
41
|
+
when SOAPBindingName
|
|
42
|
+
o = WSDL::SOAP::Binding.new
|
|
43
|
+
@soapbinding = o
|
|
44
|
+
o
|
|
45
|
+
when DocumentationName
|
|
46
|
+
o = Documentation.new
|
|
47
|
+
o
|
|
48
|
+
else
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def parse_attr(attr, value)
|
|
54
|
+
case attr
|
|
55
|
+
when NameAttrName
|
|
56
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
|
57
|
+
when TypeAttrName
|
|
58
|
+
@type = value
|
|
59
|
+
else
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL data definitions.
|
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
|
4
|
+
|
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
|
7
|
+
# either the dual license version in 2003, or any later version.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require 'xsd/qname'
|
|
11
|
+
require 'wsdl/documentation'
|
|
12
|
+
require 'wsdl/definitions'
|
|
13
|
+
require 'wsdl/types'
|
|
14
|
+
require 'wsdl/message'
|
|
15
|
+
require 'wsdl/part'
|
|
16
|
+
require 'wsdl/port_type'
|
|
17
|
+
require 'wsdl/operation'
|
|
18
|
+
require 'wsdl/param'
|
|
19
|
+
require 'wsdl/binding'
|
|
20
|
+
require 'wsdl/operation_binding'
|
|
21
|
+
require 'wsdl/service'
|
|
22
|
+
require 'wsdl/port'
|
|
23
|
+
require 'wsdl/import'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
module WSDL
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
ArrayTypeAttrName = XSD::QName.new(Namespace, 'arrayType')
|
|
30
|
+
BindingName = XSD::QName.new(Namespace, 'binding')
|
|
31
|
+
DefinitionsName = XSD::QName.new(Namespace, 'definitions')
|
|
32
|
+
DocumentationName = XSD::QName.new(Namespace, 'documentation')
|
|
33
|
+
FaultName = XSD::QName.new(Namespace, 'fault')
|
|
34
|
+
ImportName = XSD::QName.new(Namespace, 'import')
|
|
35
|
+
InputName = XSD::QName.new(Namespace, 'input')
|
|
36
|
+
MessageName = XSD::QName.new(Namespace, 'message')
|
|
37
|
+
OperationName = XSD::QName.new(Namespace, 'operation')
|
|
38
|
+
OutputName = XSD::QName.new(Namespace, 'output')
|
|
39
|
+
PartName = XSD::QName.new(Namespace, 'part')
|
|
40
|
+
PortName = XSD::QName.new(Namespace, 'port')
|
|
41
|
+
PortTypeName = XSD::QName.new(Namespace, 'portType')
|
|
42
|
+
ServiceName = XSD::QName.new(Namespace, 'service')
|
|
43
|
+
TypesName = XSD::QName.new(Namespace, 'types')
|
|
44
|
+
|
|
45
|
+
SchemaName = XSD::QName.new(XSD::Namespace, 'schema')
|
|
46
|
+
|
|
47
|
+
SOAPAddressName = XSD::QName.new(SOAPBindingNamespace, 'address')
|
|
48
|
+
SOAPBindingName = XSD::QName.new(SOAPBindingNamespace, 'binding')
|
|
49
|
+
SOAPHeaderName = XSD::QName.new(SOAPBindingNamespace, 'header')
|
|
50
|
+
SOAPBodyName = XSD::QName.new(SOAPBindingNamespace, 'body')
|
|
51
|
+
SOAPFaultName = XSD::QName.new(SOAPBindingNamespace, 'fault')
|
|
52
|
+
SOAPOperationName = XSD::QName.new(SOAPBindingNamespace, 'operation')
|
|
53
|
+
|
|
54
|
+
BindingAttrName = XSD::QName.new(nil, 'binding')
|
|
55
|
+
ElementAttrName = XSD::QName.new(nil, 'element')
|
|
56
|
+
LocationAttrName = XSD::QName.new(nil, 'location')
|
|
57
|
+
MessageAttrName = XSD::QName.new(nil, 'message')
|
|
58
|
+
NameAttrName = XSD::QName.new(nil, 'name')
|
|
59
|
+
NamespaceAttrName = XSD::QName.new(nil, 'namespace')
|
|
60
|
+
ParameterOrderAttrName = XSD::QName.new(nil, 'parameterOrder')
|
|
61
|
+
TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace')
|
|
62
|
+
TypeAttrName = XSD::QName.new(nil, 'type')
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
end
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL definitions.
|
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
|
4
|
+
|
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
|
7
|
+
# either the dual license version in 2003, or any later version.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require 'wsdl/info'
|
|
11
|
+
require 'xsd/namedelements'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Definitions < Info
|
|
18
|
+
attr_reader :name
|
|
19
|
+
attr_reader :targetnamespace
|
|
20
|
+
attr_reader :imports
|
|
21
|
+
|
|
22
|
+
attr_accessor :location
|
|
23
|
+
attr_reader :importedschema
|
|
24
|
+
|
|
25
|
+
def initialize
|
|
26
|
+
super
|
|
27
|
+
@name = nil
|
|
28
|
+
@targetnamespace = nil
|
|
29
|
+
@location = nil
|
|
30
|
+
@importedschema = {}
|
|
31
|
+
|
|
32
|
+
@types = nil
|
|
33
|
+
@imports = []
|
|
34
|
+
@messages = XSD::NamedElements.new
|
|
35
|
+
@porttypes = XSD::NamedElements.new
|
|
36
|
+
@bindings = XSD::NamedElements.new
|
|
37
|
+
@services = XSD::NamedElements.new
|
|
38
|
+
|
|
39
|
+
@anontypes = XSD::NamedElements.new
|
|
40
|
+
@root = self
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def inspect
|
|
44
|
+
sprintf("#<%s:0x%x %s>", self.class.name, __id__, @name || '(unnamed)')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def targetnamespace=(targetnamespace)
|
|
48
|
+
@targetnamespace = targetnamespace
|
|
49
|
+
if @name
|
|
50
|
+
@name = XSD::QName.new(@targetnamespace, @name.name)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def collect_attributes
|
|
55
|
+
collect_imports(:collect_attributes)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def collect_modelgroups
|
|
59
|
+
collect_imports(:collect_modelgroups)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def collect_attributegroups
|
|
63
|
+
collect_imports(:collect_attributegroups)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def collect_elements
|
|
67
|
+
collect_imports(:collect_elements)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def collect_complextypes
|
|
71
|
+
result = collect_imports(:collect_complextypes)
|
|
72
|
+
@anontypes.dup.concat(result)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def collect_simpletypes
|
|
76
|
+
collect_imports(:collect_simpletypes)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# ToDo: simpletype must be accepted...
|
|
80
|
+
def add_type(complextype)
|
|
81
|
+
@anontypes << complextype
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def messages
|
|
85
|
+
result = @messages.dup
|
|
86
|
+
@imports.each do |import|
|
|
87
|
+
result.concat(import.content.messages) if self.class === import.content
|
|
88
|
+
end
|
|
89
|
+
result
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def porttypes
|
|
93
|
+
result = @porttypes.dup
|
|
94
|
+
@imports.each do |import|
|
|
95
|
+
result.concat(import.content.porttypes) if self.class === import.content
|
|
96
|
+
end
|
|
97
|
+
result
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def bindings
|
|
101
|
+
result = @bindings.dup
|
|
102
|
+
@imports.each do |import|
|
|
103
|
+
result.concat(import.content.bindings) if self.class === import.content
|
|
104
|
+
end
|
|
105
|
+
result
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def services
|
|
109
|
+
result = @services.dup
|
|
110
|
+
@imports.each do |import|
|
|
111
|
+
result.concat(import.content.services) if self.class === import.content
|
|
112
|
+
end
|
|
113
|
+
result
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def message(name)
|
|
117
|
+
message = @messages[name]
|
|
118
|
+
return message if message
|
|
119
|
+
@imports.each do |import|
|
|
120
|
+
message = import.content.message(name) if self.class === import.content
|
|
121
|
+
return message if message
|
|
122
|
+
end
|
|
123
|
+
nil
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def porttype(name)
|
|
127
|
+
porttype = @porttypes[name]
|
|
128
|
+
return porttype if porttype
|
|
129
|
+
@imports.each do |import|
|
|
130
|
+
porttype = import.content.porttype(name) if self.class === import.content
|
|
131
|
+
return porttype if porttype
|
|
132
|
+
end
|
|
133
|
+
nil
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def binding(name)
|
|
137
|
+
binding = @bindings[name]
|
|
138
|
+
return binding if binding
|
|
139
|
+
@imports.each do |import|
|
|
140
|
+
binding = import.content.binding(name) if self.class === import.content
|
|
141
|
+
return binding if binding
|
|
142
|
+
end
|
|
143
|
+
nil
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def service(name)
|
|
147
|
+
service = @services[name]
|
|
148
|
+
return service if service
|
|
149
|
+
@imports.each do |import|
|
|
150
|
+
service = import.content.service(name) if self.class === import.content
|
|
151
|
+
return service if service
|
|
152
|
+
end
|
|
153
|
+
nil
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def porttype_binding(name)
|
|
157
|
+
binding = @bindings.find { |item| item.type == name }
|
|
158
|
+
return binding if binding
|
|
159
|
+
@imports.each do |import|
|
|
160
|
+
binding = import.content.porttype_binding(name) if self.class === import.content
|
|
161
|
+
return binding if binding
|
|
162
|
+
end
|
|
163
|
+
nil
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def parse_element(element)
|
|
167
|
+
case element
|
|
168
|
+
when ImportName
|
|
169
|
+
o = Import.new
|
|
170
|
+
@imports << o
|
|
171
|
+
o
|
|
172
|
+
when TypesName
|
|
173
|
+
o = Types.new
|
|
174
|
+
@types = o
|
|
175
|
+
o
|
|
176
|
+
when MessageName
|
|
177
|
+
o = Message.new
|
|
178
|
+
@messages << o
|
|
179
|
+
o
|
|
180
|
+
when PortTypeName
|
|
181
|
+
o = PortType.new
|
|
182
|
+
@porttypes << o
|
|
183
|
+
o
|
|
184
|
+
when BindingName
|
|
185
|
+
o = Binding.new
|
|
186
|
+
@bindings << o
|
|
187
|
+
o
|
|
188
|
+
when ServiceName
|
|
189
|
+
o = Service.new
|
|
190
|
+
@services << o
|
|
191
|
+
o
|
|
192
|
+
when DocumentationName
|
|
193
|
+
o = Documentation.new
|
|
194
|
+
o
|
|
195
|
+
else
|
|
196
|
+
nil
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def parse_attr(attr, value)
|
|
201
|
+
case attr
|
|
202
|
+
when NameAttrName
|
|
203
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
|
204
|
+
when TargetNamespaceAttrName
|
|
205
|
+
self.targetnamespace = value.source
|
|
206
|
+
else
|
|
207
|
+
nil
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def self.parse_element(element)
|
|
212
|
+
if element == DefinitionsName
|
|
213
|
+
Definitions.new
|
|
214
|
+
else
|
|
215
|
+
nil
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
private
|
|
220
|
+
|
|
221
|
+
def collect_imports(method)
|
|
222
|
+
result = XSD::NamedElements.new
|
|
223
|
+
if @types
|
|
224
|
+
@types.schemas.each do |schema|
|
|
225
|
+
result.concat(schema.send(method))
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
@imports.each do |import|
|
|
229
|
+
result.concat(import.content.send(method))
|
|
230
|
+
end
|
|
231
|
+
result
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
end
|