soap4r 1.5.7 → 1.5.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|