| Class | WSDL::SOAP::WSDL2Ruby |
| In: |
lib/wsdl/soap/wsdl2ruby.rb
|
| Parent: | Object |
| basedir | [RW] | |
| location | [RW] | |
| logger | [RW] | |
| opt | [R] |
# File lib/wsdl/soap/wsdl2ruby.rb, line 41
41: def initialize
42: @location = nil
43: @opt = {}
44: @logger = Logger.new(STDERR)
45: @basedir = nil
46: @wsdl = nil
47: @name = nil
48: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 30
30: def run
31: unless @location
32: raise RuntimeError, "WSDL location not given"
33: end
34: @wsdl = import(@location)
35: @name = @wsdl.name ? @wsdl.name.name : 'default'
36: create_file
37: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 139
139: def check_file(filename)
140: if @basedir
141: filename = File.join(basedir, filename)
142: end
143: if FileTest.exist?(filename)
144: if @opt.key?('force')
145: @logger.warn {
146: "File '#{filename}' exists but overrides it."
147: }
148: true
149: else
150: @logger.warn {
151: "File '#{filename}' exists. #{$0} did not override it."
152: }
153: false
154: end
155: else
156: @logger.info { "Creates file '#{filename}'." }
157: true
158: end
159: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 92
92: def create_cgi_stub(servicename)
93: @logger.info { "Creating CGI stub." }
94: servicename ||= @wsdl.services[0].name.name
95: @cgi_stubFilename = servicename + '.cgi'
96: check_file(@cgi_stubFilename) or return
97: write_file(@cgi_stubFilename) do |f|
98: f << shbang << "\n"
99: if @servant_skelton_filename
100: f << "require '#{@servant_skelton_filename}'\n\n"
101: end
102: f << WSDL::SOAP::CGIStubCreator.new(@wsdl).dump(create_name(servicename))
103: end
104: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 59
59: def create_classdef
60: @logger.info { "Creating class definition." }
61: @classdef_filename = @name + '.rb'
62: check_file(@classdef_filename) or return
63: write_file(@classdef_filename) do |f|
64: f << WSDL::SOAP::ClassDefCreator.new(@wsdl).dump
65: end
66: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 68
68: def create_client_skelton(servicename)
69: @logger.info { "Creating client skelton." }
70: servicename ||= @wsdl.services[0].name.name
71: @client_skelton_filename = servicename + 'Client.rb'
72: check_file(@client_skelton_filename) or return
73: write_file(@client_skelton_filename) do |f|
74: f << shbang << "\n"
75: f << "require '#{@driver_filename}'\n\n" if @driver_filename
76: f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl).dump(
77: create_name(servicename))
78: end
79: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 119
119: def create_driver(porttypename)
120: @logger.info { "Creating driver." }
121: @driver_filename = (porttypename || @name) + 'Driver.rb'
122: check_file(@driver_filename) or return
123: write_file(@driver_filename) do |f|
124: f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
125: f << WSDL::SOAP::DriverCreator.new(@wsdl).dump(
126: create_name(porttypename))
127: end
128: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 50
50: def create_file
51: create_classdef if @opt.key?('classdef')
52: create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton')
53: create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub')
54: create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub')
55: create_driver(@opt['driver']) if @opt.key?('driver')
56: create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton')
57: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 165
165: def create_name(name)
166: name ? XSD::QName.new(@wsdl.targetnamespace, name) : nil
167: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 81
81: def create_servant_skelton(porttypename)
82: @logger.info { "Creating servant skelton." }
83: @servant_skelton_filename = (porttypename || @name + 'Servant') + '.rb'
84: check_file(@servant_skelton_filename) or return
85: write_file(@servant_skelton_filename) do |f|
86: f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
87: f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl).dump(
88: create_name(porttypename))
89: end
90: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 106
106: def create_standalone_server_stub(servicename)
107: @logger.info { "Creating standalone stub." }
108: servicename ||= @wsdl.services[0].name.name
109: @standalone_server_stub_filename = servicename + '.rb'
110: check_file(@standalone_server_stub_filename) or return
111: write_file(@standalone_server_stub_filename) do |f|
112: f << shbang << "\n"
113: f << "require '#{@servant_skelton_filename}'\n\n" if @servant_skelton_filename
114: f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl).dump(
115: create_name(servicename))
116: end
117: end
# File lib/wsdl/soap/wsdl2ruby.rb, line 169
169: def import(location)
170: WSDL::Importer.import(location)
171: end