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

Changeset 1679

Show
Ignore:
Timestamp:
12/04/05 11:35:26 (3 years ago)
Author:
nahi
Message:

changed classdef generation handling of WSDL simpleType enumeration: it was converted to String constants in a module. now it generates constants of a class as follows.

module Foo

ITEM_1 = "item1"

end

=>

class Foo < ::String

ITEM_1 = Foo.new("item1"

end

Amazon EC sample did not work. element definition in an Array definition wrongly defined as a type. fixed.
closes #187, #188.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/soap/mapping/wsdlencodedregistry.rb

    r1663 r1679  
    126126    return SOAPNil.new if obj.nil?      # ToDo: check nillable. 
    127127    if type.base 
    128       base2soap(obj, TypeMap[type.base]) 
     128      soap_obj = base2soap(obj, TypeMap[type.base]) 
     129      soap_obj.type = type.name 
     130      soap_obj 
    129131    elsif type.list 
    130132      base2soap(obj.join(" "), SOAP::SOAPString) 
  • trunk/lib/wsdl/soap/classDefCreator.rb

    r1664 r1679  
    114114      return nil 
    115115    end 
    116     c = ModuleDef.new(create_class_name(qname)) 
     116    classname = create_class_name(qname) 
     117    c = ClassDef.new(classname, '::String') 
    117118    c.comment = "#{qname}" 
    118     define_enum_restriction(c, restriction.enumeration) 
     119    c.def_classvar('schema_type', ndq(qname.name)) 
     120    c.def_classvar('schema_ns', ndq(qname.namespace)) 
     121    define_classenum_restriction(c, classname, restriction.enumeration) 
    119122    c.dump 
    120123  end 
     
    128131          "unknown kind of simpletype: #{simpletype}") 
    129132      end 
    130       define_enum_restriction(c, simpletype.restriction.enumeration) 
     133      define_stringenum_restriction(c, simpletype.restriction.enumeration) 
    131134      c.comment << "\n  contains list of #{create_class_name(qname)}::*" 
    132135    elsif list.itemtype 
     
    138141  end 
    139142 
    140   def define_enum_restriction(c, enumeration) 
     143  def define_stringenum_restriction(c, enumeration) 
    141144    const = {} 
    142145    enumeration.each do |value| 
     
    147150      end 
    148151      c.def_const(constname, ndq(value)) 
     152    end 
     153  end 
     154 
     155  def define_classenum_restriction(c, classname, enumeration) 
     156    const = {} 
     157    enumeration.each do |value| 
     158      constname = safeconstname(value) 
     159      const[constname] ||= 0 
     160      if (const[constname] += 1) > 1 
     161        constname += "_#{const[constname]}" 
     162      end 
     163      c.def_const(constname, "#{classname}.new(#{ndq(value)})") 
    149164    end 
    150165  end 
     
    398413    c.comment = "#{qname}" 
    399414    child_type = complextype.child_type 
    400     c.def_classvar('schema_type', ndq(child_type.name)) 
    401     c.def_classvar('schema_ns', ndq(child_type.namespace)) 
    402415    child_element = complextype.find_aryelement 
    403416    schema_element = [] 
  • trunk/lib/wsdl/soap/complexType.rb

    r1669 r1679  
    135135      else 
    136136        # element definition 
    137         element.name 
     137        nil 
    138138      end 
    139139    when XMLSchema::Any 
  • trunk/test/wsdl/ref/expectedProduct.rb

    r1664 r1679  
    22 
    33# {urn:ref}Rating 
    4 module Rating 
    5   C_0 = "0" 
    6   C_1 = "+1" 
    7   C_1_2 = "-1" 
     4class Rating < ::String 
     5  @@schema_type = "Rating" 
     6  @@schema_ns = "urn:ref" 
     7 
     8  C_0 = Rating.new("0") 
     9  C_1 = Rating.new("+1") 
     10  C_1_2 = Rating.new("-1") 
    811end 
    912 
     
    8588 
    8689# {urn:ref}yesno 
    87 module Yesno 
    88   N = "N" 
    89   Y = "Y" 
     90class Yesno < ::String 
     91  @@schema_type = "yesno" 
     92  @@schema_ns = "urn:ref" 
     93 
     94  N = Yesno.new("N") 
     95  Y = Yesno.new("Y") 
    9096end 
    9197 
  • trunk/test/wsdl/rpc/rpc.wsdl

    r1515 r1679  
    1414          <xsd:element name="given_name" type="xsd:string" /> 
    1515          <xsd:element name="age" type="xsd:int" /> 
     16          <xsd:element name="gender" type="txd:gender" /> 
    1617          <xsd:element name="link" type="txd:person" /> 
    1718        </xsd:all> 
    1819      </xsd:complexType> 
     20 
     21      <xsd:simpleType name="gender"> 
     22        <xsd:restriction base="xsd:string"> 
     23          <xsd:enumeration value="F"/> 
     24          <xsd:enumeration value="M"/> 
     25        </xsd:restriction> 
     26      </xsd:simpleType> 
    1927    </xsd:schema> 
    2028  </types> 
  • trunk/test/wsdl/rpc/test_rpc.rb

    r1515 r1679  
    5050  def teardown 
    5151    teardown_server 
    52     File.unlink(pathname('echo.rb')) 
     52    File.unlink(pathname('echo.rb')) unless $DEBUG 
    5353    @client.reset_stream if @client 
    5454  end 
     
    9595    @client.wiredump_dev = STDOUT if $DEBUG 
    9696 
    97     ret = @client.echo(Person.new("normal", "", 12), Person.new("Hi", "Na", 21)) 
     97    ret = @client.echo(Person.new("normal", "", 12, Gender::F), Person.new("Hi", "Na", 21, Gender::M)) 
    9898    assert_equal(Person, ret.class) 
    9999    assert_equal("Hi", ret.family_name) 
     
    101101    assert_equal(21, ret.age) 
    102102 
    103     ret = @client.echo(Person.new("dummy", "", 12), Person.new("Hi", "Na", 21)) 
     103    ret = @client.echo(Person.new("dummy", "", 12, Gender::F), Person.new("Hi", "Na", 21, Gender::M)) 
    104104    assert_equal(Person, ret.class) 
    105105    assert_equal("family-name", ret.family_name) 
     
    107107    assert_equal(nil, ret.age) 
    108108 
    109     ret = @client.echo_err(Person.new("Na", "Hi"), Person.new("Hi", "Na")) 
     109    ret = @client.echo_err(Person.new("Na", "Hi", nil, Gender::F), Person.new("Hi", "Na", nil, Gender::M)) 
    110110    assert_equal(Person, ret.class) 
    111111    assert_equal("58", ret.given_name) 
  • trunk/test/wsdl/simpletype/rpc/expectedEchoVersion.rb

    r1664 r1679  
    2020 
    2121# {urn:example.com:simpletype-rpc-type}version 
    22 module Version 
    23   C_16 = "1.6" 
    24   C_18 = "1.8" 
    25   C_19 = "1.9" 
     22class Version < ::String 
     23  @@schema_type = "version" 
     24  @@schema_ns = "urn:example.com:simpletype-rpc-type" 
     25 
     26  C_16 = Version.new("1.6") 
     27  C_18 = Version.new("1.8") 
     28  C_19 = Version.new("1.9") 
    2629end 
  • trunk/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb

    r1664 r1679  
    2020 
    2121# {urn:example.com:simpletype-rpc-type}version 
    22 module Version 
    23   C_16 = "1.6" 
    24   C_18 = "1.8" 
    25   C_19 = "1.9" 
     22class Version < ::String 
     23  @@schema_type = "version" 
     24  @@schema_ns = "urn:example.com:simpletype-rpc-type" 
     25 
     26  C_16 = Version.new("1.6") 
     27  C_18 = Version.new("1.8") 
     28  C_19 = Version.new("1.9") 
    2629end 
  • trunk/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb

    r1664 r1679  
    4545# {urn:mysample}sectionArray 
    4646class SectionArray < ::Array 
    47   @@schema_type = "section" 
    48   @@schema_ns = "urn:mysample" 
    4947  @@schema_element = [ 
    5048    ["item", ["Section", XSD::QName.new(nil, "item")]]