Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

Changeset 1437

Show
Ignore:
Timestamp:
02/08/05 23:35:36 (4 years ago)
Author:
nahi
Message:

let wsdl2ruby.rb and xsd2ruby.rb be a library. bin/wsdl2ruby.rb and bin/xsd2ruby.rb use these libraries. let tests use the libraries. fixes #69.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bin/wsdl2ruby.rb

    r1365 r1437  
    33require 'getoptlong' 
    44require 'logger' 
    5 require 'xsd/qname' 
    6 require 'wsdl/parser' 
    7 require 'wsdl/importer' 
    8 require 'wsdl/soap/classDefCreator' 
    9 require 'wsdl/soap/servantSkeltonCreator' 
    10 require 'wsdl/soap/driverCreator' 
    11 require 'wsdl/soap/clientSkeltonCreator' 
    12 require 'wsdl/soap/standaloneServerStubCreator' 
    13 require 'wsdl/soap/cgiStubCreator' 
     5require 'wsdl/soap/wsdl2ruby' 
     6 
    147 
    158class WSDL2RubyApp < Logger::Application 
     
    3225    super('app') 
    3326    STDERR.sync = true 
    34     @wsdl_location = nil 
    35     @opt = nil 
    36     @wsdl = nil 
    37     @name = nil 
    3827    self.level = Logger::FATAL 
    3928  end 
    4029 
    4130  def run 
    42     @wsdl_location, @opt = parse_opt(GetoptLong.new(*OptSet)) 
    43     if @opt['quiet'] 
     31    @worker = WSDL::SOAP::WSDL2Ruby.new 
     32    @worker.logger = @log 
     33    location, opt = parse_opt(GetoptLong.new(*OptSet)) 
     34    usage_exit unless location 
     35    @worker.location = location 
     36    if opt['quiet'] 
    4437      self.level = Logger::FATAL 
    4538    else 
    4639      self.level = Logger::INFO 
    4740    end 
    48     usage_exit unless @wsdl_location 
    49     @wsdl = import(@wsdl_location) 
    50     @name = @wsdl.name ? @wsdl.name.name : 'default' 
    51     create_file 
     41    @worker.opt.update(opt) 
     42    @worker.run 
    5243    0 
    53   end 
    54  
    55   def create_file 
    56     create_classdef if @opt.key?('classdef') 
    57     create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton') 
    58     create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub') 
    59     create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub') 
    60     create_driver(@opt['driver']) if @opt.key?('driver') 
    61     create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton') 
    6244  end 
    6345 
     
    139121    return wsdl, opt 
    140122  end 
    141  
    142   def create_classdef 
    143     log(INFO) { "Creating class definition." } 
    144     @classdef_filename = @name + '.rb' 
    145     check_file(@classdef_filename) or return 
    146     File.open(@classdef_filename, "w") do |f| 
    147       f << WSDL::SOAP::ClassDefCreator.new(@wsdl).dump 
    148     end 
    149   end 
    150  
    151   def create_client_skelton(servicename) 
    152     log(INFO) { "Creating client skelton." } 
    153     servicename ||= @wsdl.services[0].name.name 
    154     @client_skelton_filename = servicename + 'Client.rb' 
    155     check_file(@client_skelton_filename) or return 
    156     File.open(@client_skelton_filename, "w") do |f| 
    157       f << shbang << "\n" 
    158       f << "require '#{ @driver_filename }'\n\n" if @driver_filename 
    159       f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl).dump( 
    160         create_name(servicename)) 
    161     end 
    162   end 
    163  
    164   def create_servant_skelton(porttypename) 
    165     log(INFO) { "Creating servant skelton." } 
    166     @servant_skelton_filename = (porttypename || @name + 'Servant') + '.rb' 
    167     check_file(@servant_skelton_filename) or return 
    168     File.open(@servant_skelton_filename, "w") do |f| 
    169       f << "require '#{ @classdef_filename }'\n\n" if @classdef_filename 
    170       f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl).dump( 
    171         create_name(porttypename)) 
    172     end 
    173   end 
    174  
    175   def create_cgi_stub(servicename) 
    176     log(INFO) { "Creating CGI stub." } 
    177     servicename ||= @wsdl.services[0].name.name 
    178     @cgi_stubFilename = servicename + '.cgi' 
    179     check_file(@cgi_stubFilename) or return 
    180     File.open(@cgi_stubFilename, "w") do |f| 
    181       f << shbang << "\n" 
    182       if @servant_skelton_filename 
    183         f << "require '#{ @servant_skelton_filename }'\n\n" 
    184       end 
    185       f << WSDL::SOAP::CGIStubCreator.new(@wsdl).dump(create_name(servicename)) 
    186     end 
    187   end 
    188  
    189   def create_standalone_server_stub(servicename) 
    190     log(INFO) { "Creating standalone stub." } 
    191     servicename ||= @wsdl.services[0].name.name 
    192     @standalone_server_stub_filename = servicename + '.rb' 
    193     check_file(@standalone_server_stub_filename) or return 
    194     File.open(@standalone_server_stub_filename, "w") do |f| 
    195       f << shbang << "\n" 
    196       f << "require '#{ @servant_skelton_filename }'\n\n" if @servant_skelton_filename 
    197       f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl).dump( 
    198         create_name(servicename)) 
    199     end 
    200   end 
    201  
    202   def create_driver(porttypename) 
    203     log(INFO) { "Creating driver." } 
    204     @driver_filename = (porttypename || @name) + 'Driver.rb' 
    205     check_file(@driver_filename) or return 
    206     File.open(@driver_filename, "w") do |f| 
    207       f << "require '#{ @classdef_filename }'\n\n" if @classdef_filename 
    208       f << WSDL::SOAP::DriverCreator.new(@wsdl).dump( 
    209         create_name(porttypename)) 
    210     end 
    211   end 
    212  
    213   def check_file(filename) 
    214     if FileTest.exist?(filename) 
    215       if @opt.key?('force') 
    216         log(WARN) { 
    217           "File '#{ filename }' exists but overrides it." 
    218         } 
    219         true 
    220       else 
    221         log(WARN) { 
    222           "File '#{ filename }' exists.  #{ $0 } did not override it." 
    223         } 
    224         false 
    225       end 
    226     else 
    227       log(INFO) { "Creates file '#{ filename }'." } 
    228       true 
    229     end 
    230   end 
    231  
    232   def shbang 
    233     "#!/usr/bin/env ruby" 
    234   end 
    235  
    236   def create_name(name) 
    237     name ? XSD::QName.new(@wsdl.targetnamespace, name) : nil 
    238   end 
    239  
    240   def import(location) 
    241     WSDL::Importer.import(location) 
    242   end 
    243123end 
    244124 
  • trunk/bin/xsd2ruby.rb

    r1425 r1437  
    33require 'getoptlong' 
    44require 'logger' 
    5 require 'xsd/qname' 
    6 require 'xsd/codegen/gensupport' 
    7 require 'wsdl/xmlSchema/parser' 
    8 require 'wsdl/xmlSchema/importer' 
    9 require 'wsdl/soap/classDefCreator' 
     5require 'wsdl/xmlSchema/xsd2ruby' 
     6 
    107 
    118class XSD2RubyApp < Logger::Application 
     
    2118  def initialize 
    2219    super('app') 
    23     @xsd_location = nil 
    24     @opt = nil 
    25     @xsd = nil 
    26     @name = nil 
     20    STDERR.sync = true 
    2721    self.level = Logger::FATAL 
    2822  end 
    2923 
    3024  def run 
    31     @xsd_location, @opt = parse_opt(GetoptLong.new(*OptSet)) 
    32     if @opt['quiet'] 
     25    @worker = WSDL::XMLSchema::XSD2Ruby.new 
     26    @worker.logger = @log 
     27    location, opt = parse_opt(GetoptLong.new(*OptSet)) 
     28    usage_exit unless location 
     29    @worker.location = location 
     30    if opt['quiet'] 
    3331      self.level = Logger::FATAL 
    3432    else 
    3533      self.level = Logger::INFO 
    3634    end 
    37     usage_exit unless @xsd_location 
    38     @xsd = import(@xsd_location) 
    39     @name = create_classname(@xsd) 
    40     create_file 
     35    @worker.opt.update(opt) 
     36    @worker.run 
    4137    0 
    42   end 
    43  
    44   def create_file 
    45     create_classdef 
    4638  end 
    4739 
     
    8678    return xsd, opt 
    8779  end 
    88  
    89   def create_classdef 
    90     log(INFO) { "Creating class definition." } 
    91     @classdef_filename = @name + '.rb' 
    92     check_file(@classdef_filename) or return 
    93     File.open(@classdef_filename, "w") do |f| 
    94       f << WSDL::SOAP::ClassDefCreator.new(@xsd).dump 
    95     end 
    96   end 
    97  
    98   def check_file(filename) 
    99     if FileTest.exist?(filename) 
    100       if @opt.key?('force') 
    101         log(WARN) { 
    102           "File '#{ filename }' exists but overrides it." 
    103         } 
    104         true 
    105       else 
    106         log(WARN) { 
    107           "File '#{ filename }' exists.  #{ $0 } did not override it." 
    108         } 
    109         false 
    110       end 
    111     else 
    112       log(INFO) { "Creates file '#{ filename }'." } 
    113       true 
    114     end 
    115   end 
    116  
    117   def create_classname(xsd) 
    118     name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0] 
    119     if name.nil? 
    120       'default' 
    121     else 
    122       XSD::CodeGen::GenSupport.safevarname(name) 
    123     end 
    124   end 
    125  
    126   def import(location) 
    127     WSDL::XMLSchema::Importer.import(location) 
    128   end 
    12980end 
    13081 
  • trunk/test/wsdl/any/test_any.rb

    r1313 r1437  
    1111 
    1212  def test_any 
    13     system("cd #{DIR} && ruby #{pathname("../../../bin/wsdl2ruby.rb")} --classdef --wsdl #{pathname("any.wsdl")} --type client --type server --force --quiet") 
     13    gen = WSDL::SOAP::WSDL2Ruby.new 
     14    gen.location = pathname("any.wsdl") 
     15    gen.basedir = DIR 
     16    gen.logger.level = Logger::FATAL 
     17    gen.opt['classdef'] = nil 
     18    gen.opt['driver'] = nil 
     19    gen.opt['client_skelton'] = nil 
     20    gen.opt['servant_skelton'] = nil 
     21    gen.opt['standalone_server_stub'] = nil 
     22    gen.opt['force'] = true 
     23    gen.run 
    1424    compare("expectedDriver.rb", "echoDriver.rb") 
    1525    compare("expectedEcho.rb", "echo.rb") 
  • trunk/test/wsdl/marshal/test_wsdlmarshal.rb

    r1313 r1437  
    33require 'soap/mapping/wsdlencodedregistry' 
    44require 'soap/marshal' 
     5require 'wsdl/soap/wsdl2ruby' 
    56 
    67class WSDLMarshaller 
     
    5556 
    5657  def test_classdef 
    57     system("cd #{DIR} && ruby #{pathname("../../../bin/wsdl2ruby.rb")} --classdef --wsdl #{pathname("person.wsdl")} --force --quiet") 
     58    gen = WSDL::SOAP::WSDL2Ruby.new 
     59    gen.location = pathname("person.wsdl") 
     60    gen.basedir = DIR 
     61    gen.logger.level = Logger::FATAL 
     62    gen.opt['classdef'] = nil 
     63    gen.opt['force'] = true 
     64    gen.run 
    5865    compare("person_org.rb", "Person.rb") 
    5966    File.unlink(pathname('Person.rb')) 
  • trunk/test/wsdl/ref/test_ref.rb

    r1431 r1437  
    7676 
    7777  def test_classdef 
    78     system("cd #{DIR} && ruby #{pathname("../../../bin/wsdl2ruby.rb")} --classdef --wsdl #{pathname("product.wsdl")} --force --quiet") 
     78    gen = WSDL::SOAP::WSDL2Ruby.new 
     79    gen.location = pathname("product.wsdl") 
     80    gen.basedir = DIR 
     81    gen.logger.level = Logger::FATAL 
     82    gen.opt['classdef'] = nil 
     83    gen.opt['force'] = true 
     84    gen.run 
    7985    compare("expectedProduct.rb", "product.rb") 
    8086    File.unlink(pathname('product.rb')) 
  • trunk/test/wsdl/simpletype/rpc/test_rpc.rb

    r1329 r1437  
    11require 'test/unit' 
    22require 'wsdl/parser' 
     3require 'wsdl/soap/wsdl2ruby' 
     4 
     5 
    36module WSDL; module SimpleType 
    47 
     
    1114 
    1215  def test_rpc 
    13     system("cd #{DIR} && ruby #{pathname("../../../../bin/wsdl2ruby.rb")} --classdef --wsdl #{pathname("rpc.wsdl")} --type client --type server --force --quiet") 
     16    gen = WSDL::SOAP::WSDL2Ruby.new 
     17    gen.location = pathname("rpc.wsdl") 
     18    gen.basedir = DIR 
     19    gen.logger.level = Logger::FATAL 
     20    gen.opt['classdef'] = nil 
     21    gen.opt['driver'] = nil 
     22    gen.opt['client_skelton'] = nil 
     23    gen.opt['servant_skelton'] = nil 
     24    gen.opt['standalone_server_stub'] = nil 
     25    gen.opt['force'] = true 
     26    gen.run 
    1427    compare("expectedEchoVersion.rb", "echo_version.rb") 
    1528    compare("expectedDriver.rb", "echo_versionDriver.rb") 
  • trunk/test/wsdl/soap/wsdl2ruby/section/test_section.rb

    r1436 r1437  
    11require 'test/unit' 
    22require 'soap/marshal' 
    3 module WSDL; module SOAP; module WSDL2Ruby 
     3module WSDL; module SOAP 
    44 
    55 
     
    4646 
    4747 
    48 end; end; end 
     48end; end 
  • trunk/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb

    r1313 r1437  
    11require 'test/unit' 
    22require 'wsdl/parser' 
    3 module WSDL; module SOAP; module WSDL2Ruby 
     3module WSDL; module SOAP 
    44 
    55 
     
    4747 
    4848 
    49 end; end; end 
     49end; end