Class WSDL::SOAP::WSDL2Ruby
In: lib/wsdl/soap/wsdl2ruby.rb
Parent: Object

Methods

Attributes

basedir  [RW] 
location  [RW] 
logger  [RW] 
opt  [R] 

Public Class methods

[Source]

    # 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

Public Instance methods

[Source]

    # 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

Private Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

     # 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

[Source]

    # 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

[Source]

     # File lib/wsdl/soap/wsdl2ruby.rb, line 165
165:   def create_name(name)
166:     name ? XSD::QName.new(@wsdl.targetnamespace, name) : nil
167:   end

[Source]

    # 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

[Source]

     # 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

[Source]

     # File lib/wsdl/soap/wsdl2ruby.rb, line 169
169:   def import(location)
170:     WSDL::Importer.import(location)
171:   end

[Source]

     # File lib/wsdl/soap/wsdl2ruby.rb, line 161
161:   def shbang
162:     "#!/usr/bin/env ruby"
163:   end

[Source]

     # File lib/wsdl/soap/wsdl2ruby.rb, line 130
130:   def write_file(filename)
131:     if @basedir
132:       filename = File.join(basedir, filename)
133:     end
134:     File.open(filename, "w") do |f|
135:       yield f
136:     end
137:   end

[Validate]