soap4r 1.5.7 → 1.5.8
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/bin/wsdl2ruby.rb +8 -2
- data/lib/soap/baseData.rb +93 -43
- data/lib/soap/element.rb +11 -8
- data/lib/soap/encodingstyle/handler.rb +15 -4
- data/lib/soap/encodingstyle/literalHandler.rb +18 -24
- data/lib/soap/encodingstyle/soapHandler.rb +34 -77
- data/lib/soap/generator.rb +74 -48
- data/lib/soap/header/handler.rb +1 -1
- data/lib/soap/header/mappinghandler.rb +47 -0
- data/lib/soap/mapping/encodedregistry.rb +19 -13
- data/lib/soap/mapping/factory.rb +19 -3
- data/lib/soap/mapping/literalregistry.rb +47 -35
- data/lib/soap/mapping/mapping.rb +92 -24
- data/lib/soap/mapping/registry.rb +34 -18
- data/lib/soap/mapping/schemadefinition.rb +8 -1
- data/lib/soap/mapping/typeMap.rb +18 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +8 -50
- data/lib/soap/mapping/wsdlliteralregistry.rb +45 -39
- data/lib/soap/nestedexception.rb +42 -0
- data/lib/soap/netHttpClient.rb +1 -0
- data/lib/soap/ns.rb +34 -0
- data/lib/soap/parser.rb +32 -29
- data/lib/soap/processor.rb +1 -1
- data/lib/soap/rpc/driver.rb +1 -0
- data/lib/soap/rpc/element.rb +18 -6
- data/lib/soap/rpc/httpserver.rb +38 -24
- data/lib/soap/rpc/proxy.rb +14 -11
- data/lib/soap/rpc/router.rb +4 -1
- data/lib/soap/soap.rb +7 -6
- data/lib/soap/wsdlDriver.rb +29 -8
- data/lib/tags +5690 -0
- data/lib/wsdl/definitions.rb +26 -40
- data/lib/wsdl/info.rb +11 -0
- data/lib/wsdl/parser.rb +2 -2
- data/lib/wsdl/soap/cgiStubCreator.rb +10 -5
- data/lib/wsdl/soap/classDefCreator.rb +140 -113
- data/lib/wsdl/soap/classDefCreatorSupport.rb +94 -12
- data/lib/wsdl/soap/classNameCreator.rb +54 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +6 -5
- data/lib/wsdl/soap/complexType.rb +10 -1
- data/lib/wsdl/soap/definitions.rb +4 -0
- data/lib/wsdl/soap/driverCreator.rb +14 -6
- data/lib/wsdl/soap/element.rb +4 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +11 -55
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +28 -126
- data/lib/wsdl/soap/mappingRegistryCreator.rb +9 -3
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +209 -94
- data/lib/wsdl/soap/methodDefCreator.rb +12 -16
- data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
- data/lib/wsdl/soap/servletStubCreator.rb +107 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +10 -5
- data/lib/wsdl/soap/wsdl2ruby.rb +28 -13
- data/lib/wsdl/wsdl.rb +2 -1
- data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
- data/lib/wsdl/xmlSchema/attributeGroup.rb +86 -0
- data/lib/wsdl/xmlSchema/choice.rb +4 -1
- data/lib/wsdl/xmlSchema/complexContent.rb +1 -1
- data/lib/wsdl/xmlSchema/complexExtension.rb +9 -1
- data/lib/wsdl/xmlSchema/complexRestriction.rb +8 -0
- data/lib/wsdl/xmlSchema/complexType.rb +38 -5
- data/lib/wsdl/xmlSchema/data.rb +30 -7
- data/lib/wsdl/xmlSchema/element.rb +10 -2
- data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
- data/lib/wsdl/xmlSchema/group.rb +118 -0
- data/lib/wsdl/xmlSchema/import.rb +11 -23
- data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
- data/lib/wsdl/xmlSchema/include.rb +11 -17
- data/lib/wsdl/xmlSchema/length.rb +3 -1
- data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +3 -1
- data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
- data/lib/wsdl/xmlSchema/minlength.rb +3 -1
- data/lib/wsdl/xmlSchema/schema.rb +34 -0
- data/lib/wsdl/xmlSchema/sequence.rb +4 -1
- data/lib/wsdl/xmlSchema/simpleExtension.rb +8 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +49 -8
- data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
- data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +13 -4
- data/lib/xsd/charset.rb +8 -6
- data/lib/xsd/codegen/classdef.rb +5 -0
- data/lib/xsd/codegen/moduledef.rb +17 -0
- data/lib/xsd/datatypes.rb +165 -20
- data/lib/xsd/mapping.rb +13 -5
- data/lib/xsd/namedelements.rb +8 -0
- data/lib/xsd/ns.rb +50 -14
- data/lib/xsd/qname.rb +3 -2
- data/lib/xsd/xmlparser.rb +4 -3
- data/test/soap/asp.net/test_aspdotnet.rb +1 -1
- data/test/soap/auth/test_basic.rb +4 -3
- data/test/soap/auth/test_digest.rb +4 -3
- data/test/soap/calc/test_calc.rb +6 -4
- data/test/soap/calc/test_calc2.rb +6 -4
- data/test/soap/calc/test_calc_cgi.rb +6 -4
- data/test/soap/fault/test_customfault.rb +6 -4
- data/test/soap/fault/test_soaparray.rb +35 -0
- data/test/soap/filter/test_filter.rb +2 -2
- data/test/soap/header/test_authheader.rb +2 -2
- data/test/soap/header/test_authheader_cgi.rb +3 -3
- data/test/soap/header/test_simplehandler.rb +2 -2
- data/test/soap/helloworld/test_helloworld.rb +6 -4
- data/test/soap/ssl/test_ssl.rb +1 -1
- data/test/soap/struct/test_struct.rb +2 -2
- data/test/soap/swa/test_file.rb +6 -4
- data/test/soap/test_basetype.rb +4 -4
- data/test/soap/test_cookie.rb +2 -2
- data/test/soap/test_custom_ns.rb +50 -8
- data/test/soap/test_custommap.rb +6 -4
- data/test/soap/test_empty.rb +6 -4
- data/test/soap/test_envelopenamespace.rb +2 -2
- data/test/soap/test_extraattr.rb +6 -7
- data/test/soap/test_generator.rb +27 -0
- data/test/soap/test_mapping.rb +10 -0
- data/test/soap/test_nestedexception.rb +56 -0
- data/test/soap/test_nil.rb +6 -4
- data/test/soap/test_no_indent.rb +6 -4
- data/test/soap/test_response_as_xml.rb +2 -2
- data/test/soap/test_streamhandler.rb +6 -3
- data/test/soap/test_styleuse.rb +2 -2
- data/test/soap/wsdlDriver/test_calc.rb +2 -2
- data/test/soap/wsdlDriver/test_document.rb +2 -2
- data/test/soap/wsdlDriver/test_simpletype.rb +2 -2
- data/test/wsdl/abstract/test_abstract.rb +1 -1
- data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
- data/test/wsdl/anonymous/expectedDriver.rb +59 -0
- data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
- data/test/wsdl/anonymous/lp.wsdl +147 -0
- data/test/wsdl/anonymous/test_anonymous.rb +130 -0
- data/test/wsdl/any/expectedDriver.rb +3 -2
- data/test/wsdl/any/expectedEcho.rb +22 -2
- data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
- data/test/wsdl/any/expectedService.rb +3 -1
- data/test/wsdl/any/test_any.rb +2 -7
- data/test/wsdl/axisArray/axisArray.wsdl +31 -4
- data/test/wsdl/axisArray/test_axisarray.rb +58 -3
- data/test/wsdl/choice/choice.wsdl +39 -0
- data/test/wsdl/choice/test_choice.rb +134 -7
- data/test/wsdl/complexcontent/test_echo.rb +1 -1
- data/test/wsdl/datetime/test_datetime.rb +2 -2
- data/test/wsdl/document/array/double.wsdl +45 -6
- data/test/wsdl/document/array/test_array.rb +68 -1
- data/test/wsdl/document/document.wsdl +2 -0
- data/test/wsdl/document/test_nosoapaction.rb +1 -1
- data/test/wsdl/document/test_number.rb +1 -1
- data/test/wsdl/document/test_rpc.rb +78 -9
- data/test/wsdl/fault/test_fault.rb +1 -1
- data/test/wsdl/fault/test_multifault.rb +1 -1
- data/test/wsdl/group/expectedClassdef.rb +58 -0
- data/test/wsdl/group/expectedDriver.rb +51 -0
- data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
- data/test/wsdl/group/group.wsdl +88 -0
- data/test/wsdl/group/test_rpc.rb +145 -0
- data/test/wsdl/list/test_list.rb +1 -1
- data/test/wsdl/map/test_map.rb +2 -2
- data/test/wsdl/marshal/person_org.rb +5 -0
- data/test/wsdl/multiplefault.wsdl +11 -4
- data/test/wsdl/oneway/test_oneway.rb +1 -1
- data/test/wsdl/overload/test_overload.rb +1 -1
- data/test/wsdl/qualified/test_qualified.rb +1 -1
- data/test/wsdl/qualified/test_unqualified.rb +1 -1
- data/test/wsdl/raa/RAAService.rb +62 -57
- data/test/wsdl/raa/expectedClassDef.rb +100 -0
- data/test/wsdl/raa/expectedDriver.rb +96 -0
- data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
- data/test/wsdl/raa/test_raa.rb +54 -19
- data/test/wsdl/ref/expectedDriver.rb +1 -1
- data/test/wsdl/ref/expectedProduct.rb +101 -16
- data/test/wsdl/ref/test_ref.rb +2 -1
- data/test/wsdl/rpc/test_rpc.rb +1 -2
- data/test/wsdl/rpc/test_rpc_lit.rb +13 -13
- data/test/wsdl/simplecontent/test_simplecontent.rb +5 -5
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +3 -2
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +2 -0
- data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +10 -17
- data/test/wsdl/simpletype/rpc/expectedService.rb +4 -2
- data/test/wsdl/simpletype/test_simpletype.rb +2 -2
- data/test/wsdl/soap/test_soapbodyparts.rb +2 -2
- data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +2 -0
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +3 -2
- data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +5 -9
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +4 -2
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +4 -2
- data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +6 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +1 -1
- data/test/wsdl/soaptype/test_soaptype.rb +1 -1
- data/test/wsdl/test_multiplefault.rb +3 -1
- data/test/xsd/codegen/test_classdef.rb +30 -0
- data/test/xsd/test_ns.rb +21 -0
- data/test/xsd/test_xsd.rb +5 -4
- data/test/xsd/xsd2ruby/expected_mysample.rb +13 -2
- data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +5 -11
- data/test/xsd/xsd2ruby/section.xsd +8 -0
- metadata +40 -8
- data/test/wsdl/axisArray/itemList.rb +0 -14
- data/test/wsdl/raa/RAA.rb +0 -120
- data/test/wsdl/raa/RAAServant.rb +0 -107
- data/test/wsdl/raa/server.rb +0 -103
@@ -21,8 +21,9 @@ class ServantSkeltonCreator
|
|
21
21
|
|
22
22
|
attr_reader :definitions
|
23
23
|
|
24
|
-
def initialize(definitions, modulepath = nil)
|
24
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
25
25
|
@definitions = definitions
|
26
|
+
@name_creator = name_creator
|
26
27
|
@modulepath = modulepath
|
27
28
|
end
|
28
29
|
|
@@ -52,7 +53,7 @@ class ServantSkeltonCreator
|
|
52
53
|
private
|
53
54
|
|
54
55
|
def dump_porttype(name)
|
55
|
-
class_name =
|
56
|
+
class_name = mapped_class_basename(name, @modulepath)
|
56
57
|
c = XSD::CodeGen::ClassDef.new(class_name)
|
57
58
|
element_definitions = @definitions.collect_elements
|
58
59
|
operations = @definitions.porttype(name).operations
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# WSDL4R - Creating servlet stub code from WSDL.
|
2
|
+
# Copyright (C) 2000-2007 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 'wsdl/info'
|
10
|
+
require 'wsdl/soap/mappingRegistryCreator'
|
11
|
+
require 'wsdl/soap/methodDefCreator'
|
12
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
13
|
+
|
14
|
+
|
15
|
+
module WSDL
|
16
|
+
module SOAP
|
17
|
+
|
18
|
+
|
19
|
+
class ServletStubCreator
|
20
|
+
include ClassDefCreatorSupport
|
21
|
+
|
22
|
+
attr_reader :definitions
|
23
|
+
|
24
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
25
|
+
@definitions = definitions
|
26
|
+
@name_creator = name_creator
|
27
|
+
@modulepath = modulepath
|
28
|
+
end
|
29
|
+
|
30
|
+
def dump(service_name)
|
31
|
+
warn("- Servlet stub can have only 1 port for now. So creating stub for the first port and rests are ignored.")
|
32
|
+
services = @definitions.service(service_name)
|
33
|
+
unless services
|
34
|
+
raise RuntimeError.new("service not defined: #{service_name}")
|
35
|
+
end
|
36
|
+
ports = services.ports
|
37
|
+
if ports.empty?
|
38
|
+
raise RuntimeError.new("ports not found for #{service_name}")
|
39
|
+
end
|
40
|
+
port = ports[0]
|
41
|
+
if port.porttype.nil?
|
42
|
+
raise RuntimeError.new("porttype not found for #{port}")
|
43
|
+
end
|
44
|
+
dump_porttype(port.porttype)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def dump_porttype(porttype)
|
50
|
+
class_name = mapped_class_name(porttype.name, @modulepath)
|
51
|
+
defined_const = {}
|
52
|
+
result = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const).dump(porttype.name)
|
53
|
+
methoddef = result[:methoddef]
|
54
|
+
|
55
|
+
wsdl_name = @definitions.name ? @definitions.name.name : 'default'
|
56
|
+
mrname = safeconstname(wsdl_name + 'MappingRegistry')
|
57
|
+
|
58
|
+
c1 = XSD::CodeGen::ClassDef.new(class_name)
|
59
|
+
c1.def_require("soap/rpc/soaplet")
|
60
|
+
c1.def_code <<-EOD
|
61
|
+
Methods = [
|
62
|
+
#{methoddef.gsub(/^/, " ")}
|
63
|
+
]
|
64
|
+
EOD
|
65
|
+
defined_const.each do |ns, tag|
|
66
|
+
c1.def_const(tag, dq(ns))
|
67
|
+
end
|
68
|
+
c2 = XSD::CodeGen::ClassDef.new(class_name + "Servlet",
|
69
|
+
"::SOAP::RPC::SOAPlet")
|
70
|
+
c2.def_method("initialize", "router = nil") do
|
71
|
+
<<-EOD
|
72
|
+
super(router)
|
73
|
+
servant = #{class_name}.new
|
74
|
+
#{class_name}::Methods.each do |definitions|
|
75
|
+
opt = definitions.last
|
76
|
+
if opt[:request_style] == :document
|
77
|
+
@router.add_document_operation(servant, *definitions)
|
78
|
+
else
|
79
|
+
@router.add_rpc_operation(servant, *definitions)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
@router.mapping_registry = #{mrname}::EncodedRegistry
|
83
|
+
@router.literal_mapping_registry = #{mrname}::LiteralRegistry
|
84
|
+
EOD
|
85
|
+
end
|
86
|
+
c1.dump + "\n" + c2.dump + format(<<-EOD)
|
87
|
+
|
88
|
+
if $0 == __FILE__
|
89
|
+
require 'webrick'
|
90
|
+
server = WEBrick::HTTPServer.new(
|
91
|
+
:BindAddress => "0.0.0.0",
|
92
|
+
:Port => 10080,
|
93
|
+
:DocumentRoot => "."
|
94
|
+
)
|
95
|
+
server.mount("/", #{c2.name}.new)
|
96
|
+
trap(:INT) do
|
97
|
+
server.shutdown
|
98
|
+
end
|
99
|
+
server.start
|
100
|
+
end
|
101
|
+
EOD
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
@@ -21,8 +21,9 @@ class StandaloneServerStubCreator
|
|
21
21
|
|
22
22
|
attr_reader :definitions
|
23
23
|
|
24
|
-
def initialize(definitions, modulepath = nil)
|
24
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
25
25
|
@definitions = definitions
|
26
|
+
@name_creator = name_creator
|
26
27
|
@modulepath = modulepath
|
27
28
|
end
|
28
29
|
|
@@ -41,14 +42,15 @@ class StandaloneServerStubCreator
|
|
41
42
|
if port.porttype.nil?
|
42
43
|
raise RuntimeError.new("porttype not found for #{port}")
|
43
44
|
end
|
44
|
-
dump_porttype(port.porttype
|
45
|
+
dump_porttype(port.porttype)
|
45
46
|
end
|
46
47
|
|
47
48
|
private
|
48
49
|
|
49
|
-
def dump_porttype(
|
50
|
-
class_name =
|
51
|
-
|
50
|
+
def dump_porttype(porttype)
|
51
|
+
class_name = mapped_class_name(porttype.name, @modulepath)
|
52
|
+
defined_const = {}
|
53
|
+
result = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const).dump(porttype.name)
|
52
54
|
methoddef = result[:methoddef]
|
53
55
|
|
54
56
|
wsdl_name = @definitions.name ? @definitions.name.name : 'default'
|
@@ -61,6 +63,9 @@ Methods = [
|
|
61
63
|
#{methoddef.gsub(/^/, " ")}
|
62
64
|
]
|
63
65
|
EOD
|
66
|
+
defined_const.each do |ns, tag|
|
67
|
+
c1.def_const(tag, dq(ns))
|
68
|
+
end
|
64
69
|
c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
|
65
70
|
"::SOAP::RPC::StandaloneServer")
|
66
71
|
c2.def_method("initialize", "*arg") do
|
data/lib/wsdl/soap/wsdl2ruby.rb
CHANGED
@@ -14,7 +14,9 @@ require 'wsdl/soap/servantSkeltonCreator'
|
|
14
14
|
require 'wsdl/soap/driverCreator'
|
15
15
|
require 'wsdl/soap/clientSkeltonCreator'
|
16
16
|
require 'wsdl/soap/standaloneServerStubCreator'
|
17
|
+
require 'wsdl/soap/servletStubCreator'
|
17
18
|
require 'wsdl/soap/cgiStubCreator'
|
19
|
+
require 'wsdl/soap/classNameCreator'
|
18
20
|
|
19
21
|
|
20
22
|
module WSDL
|
@@ -52,6 +54,7 @@ private
|
|
52
54
|
@name = nil
|
53
55
|
@classdef_filename = nil
|
54
56
|
@mr_filename = nil
|
57
|
+
@name_creator = ClassNameCreator.new
|
55
58
|
end
|
56
59
|
|
57
60
|
def create_file
|
@@ -61,7 +64,8 @@ private
|
|
61
64
|
create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton')
|
62
65
|
create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub')
|
63
66
|
create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub')
|
64
|
-
|
67
|
+
create_servlet_stub(@opt['servlet_stub']) if @opt.key?('servlet_stub')
|
68
|
+
create_driver(@opt['driver'], @opt['drivername_postfix'] || '') if @opt.key?('driver')
|
65
69
|
create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton')
|
66
70
|
end
|
67
71
|
|
@@ -70,7 +74,7 @@ private
|
|
70
74
|
@classdef_filename = @name + '.rb'
|
71
75
|
check_file(@classdef_filename) or return
|
72
76
|
write_file(@classdef_filename) do |f|
|
73
|
-
f << WSDL::SOAP::ClassDefCreator.new(@wsdl, @modulepath).dump
|
77
|
+
f << WSDL::SOAP::ClassDefCreator.new(@wsdl, @name_creator, @modulepath).dump
|
74
78
|
end
|
75
79
|
end
|
76
80
|
|
@@ -80,7 +84,7 @@ private
|
|
80
84
|
check_file(@mr_filename) or return
|
81
85
|
write_file(@mr_filename) do |f|
|
82
86
|
f << "require '#{@classdef_filename}'\n" if @classdef_filename
|
83
|
-
f << WSDL::SOAP::MappingRegistryCreator.new(@wsdl, @modulepath).dump
|
87
|
+
f << WSDL::SOAP::MappingRegistryCreator.new(@wsdl, @name_creator, @modulepath).dump
|
84
88
|
end
|
85
89
|
end
|
86
90
|
|
@@ -93,8 +97,7 @@ private
|
|
93
97
|
write_file(@client_skelton_filename) do |f|
|
94
98
|
f << shbang << "\n"
|
95
99
|
f << "require '#{@driver_filename}'\n\n" if @driver_filename
|
96
|
-
f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl, @modulepath).dump(
|
97
|
-
create_name(servicename))
|
100
|
+
f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
|
98
101
|
end
|
99
102
|
end
|
100
103
|
|
@@ -104,8 +107,7 @@ private
|
|
104
107
|
check_file(@servant_skelton_filename) or return
|
105
108
|
write_file(@servant_skelton_filename) do |f|
|
106
109
|
f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
|
107
|
-
f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl, @modulepath).dump(
|
108
|
-
create_name(porttypename))
|
110
|
+
f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(porttypename))
|
109
111
|
end
|
110
112
|
end
|
111
113
|
|
@@ -118,7 +120,7 @@ private
|
|
118
120
|
f << shbang << "\n"
|
119
121
|
f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
|
120
122
|
f << "require '#{@mr_filename}'\n" if @mr_filename
|
121
|
-
f << WSDL::SOAP::CGIStubCreator.new(@wsdl, @modulepath).dump(create_name(servicename))
|
123
|
+
f << WSDL::SOAP::CGIStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
@@ -131,20 +133,33 @@ private
|
|
131
133
|
f << shbang << "\n"
|
132
134
|
f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
|
133
135
|
f << "require '#{@mr_filename}'\n" if @mr_filename
|
134
|
-
f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl, @modulepath).dump(
|
135
|
-
create_name(servicename))
|
136
|
+
f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
|
136
137
|
end
|
137
138
|
end
|
138
139
|
|
139
|
-
def
|
140
|
+
def create_servlet_stub(servicename)
|
141
|
+
@logger.info { "Creating servlet stub." }
|
142
|
+
servicename ||= @wsdl.services[0].name.name
|
143
|
+
@servlet_stub_filename = servicename + 'Servlet.rb'
|
144
|
+
check_file(@servlet_stub_filename) or return
|
145
|
+
write_file(@servlet_stub_filename) do |f|
|
146
|
+
f << shbang << "\n"
|
147
|
+
f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
|
148
|
+
f << "require '#{@mr_filename}'\n" if @mr_filename
|
149
|
+
f << WSDL::SOAP::ServletStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def create_driver(porttypename, drivername_postfix)
|
140
154
|
@logger.info { "Creating driver." }
|
141
155
|
@driver_filename = (porttypename || @name) + 'Driver.rb'
|
156
|
+
creator = WSDL::SOAP::DriverCreator.new(@wsdl, @name_creator, @modulepath)
|
157
|
+
creator.drivername_postfix = drivername_postfix
|
142
158
|
check_file(@driver_filename) or return
|
143
159
|
write_file(@driver_filename) do |f|
|
144
160
|
f << "require '#{@classdef_filename}'\n" if @classdef_filename
|
145
161
|
f << "require '#{@mr_filename}'\n" if @mr_filename
|
146
|
-
f <<
|
147
|
-
create_name(porttypename))
|
162
|
+
f << creator.dump(create_name(porttypename))
|
148
163
|
end
|
149
164
|
end
|
150
165
|
|
data/lib/wsdl/wsdl.rb
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
require 'xsd/qname'
|
10
|
+
require 'soap/nestedexception'
|
10
11
|
|
11
12
|
|
12
13
|
module WSDL
|
@@ -17,7 +18,7 @@ Version = '0.0.2'
|
|
17
18
|
Namespace = 'http://schemas.xmlsoap.org/wsdl/'
|
18
19
|
SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/'
|
19
20
|
|
20
|
-
class Error < StandardError; end
|
21
|
+
class Error < StandardError; include ::SOAP::NestedException; end
|
21
22
|
|
22
23
|
|
23
24
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# WSDL4R - XMLSchema anyAttribute definition for WSDL.
|
2
|
+
# Copyright (C) 2000-2007 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 'wsdl/info'
|
10
|
+
|
11
|
+
|
12
|
+
module WSDL
|
13
|
+
module XMLSchema
|
14
|
+
|
15
|
+
|
16
|
+
class AnyAttribute < Info
|
17
|
+
attr_accessor :namespace
|
18
|
+
attr_accessor :processcontents
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super()
|
22
|
+
@namespace = '##any'
|
23
|
+
@processcontents = 'strict'
|
24
|
+
end
|
25
|
+
|
26
|
+
def targetnamespace
|
27
|
+
parent.targetnamespace
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_element(element)
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def parse_attr(attr, value)
|
35
|
+
case attr
|
36
|
+
when NamespaceAttrName
|
37
|
+
@namespace = value.source
|
38
|
+
when ProcessContentsAttrName
|
39
|
+
@processcontents = value.source
|
40
|
+
else
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# WSDL4R - XMLSchema attributeGroup definition for WSDL.
|
2
|
+
# Copyright (C) 2000-2007 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 'wsdl/info'
|
10
|
+
|
11
|
+
|
12
|
+
module WSDL
|
13
|
+
module XMLSchema
|
14
|
+
|
15
|
+
|
16
|
+
class AttributeGroup < 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 :attributes
|
40
|
+
|
41
|
+
attr_reader_ref :name
|
42
|
+
attr_reader_ref :attributes
|
43
|
+
|
44
|
+
attr_accessor :ref
|
45
|
+
|
46
|
+
def initialize
|
47
|
+
super
|
48
|
+
@name = nil
|
49
|
+
@attributes = nil
|
50
|
+
@ref = nil
|
51
|
+
@refelement = nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def refelement
|
55
|
+
@refelement ||= root.collect_attributegroups[@ref]
|
56
|
+
end
|
57
|
+
|
58
|
+
def targetnamespace
|
59
|
+
parent.targetnamespace
|
60
|
+
end
|
61
|
+
|
62
|
+
def parse_element(element)
|
63
|
+
case element
|
64
|
+
when AttributeName
|
65
|
+
@attributes ||= XSD::NamedElements.new
|
66
|
+
o = Attribute.new
|
67
|
+
@attributes << o
|
68
|
+
o
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def parse_attr(attr, value)
|
73
|
+
case attr
|
74
|
+
when NameAttrName
|
75
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
76
|
+
when RefAttrName
|
77
|
+
@ref = value
|
78
|
+
else
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
@@ -39,8 +39,11 @@ class Choice < Content
|
|
39
39
|
o = Choice.new
|
40
40
|
@elements << o
|
41
41
|
o
|
42
|
+
when GroupName
|
43
|
+
o = Group.new
|
44
|
+
@elements << o
|
45
|
+
o
|
42
46
|
when AnyName
|
43
|
-
raise ElementConstraintError.new("duplicated element: any") if @any
|
44
47
|
@any = Any.new
|
45
48
|
@elements << @any
|
46
49
|
@any
|