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

Changeset 1478

Show
Ignore:
Timestamp:
04/15/05 16:40:17 (4 years ago)
Author:
nahi
Message:

length and pattern restriction support. closes #90.

Files:

Legend:

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

    r1469 r1478  
    106106  def simple2soap(obj, type) 
    107107    o = base2soap(obj, TypeMap[type.base]) 
    108     if type.restriction.enumeration.empty? 
    109       STDERR.puts( 
    110         "#{type.name}: simpleType which is not enum type not supported") 
    111       return o 
    112     end 
    113108    type.check_lexical_format(obj) 
    114109    o 
  • trunk/lib/wsdl/xmlSchema/data.rb

    r1439 r1478  
    2525require 'wsdl/xmlSchema/unique' 
    2626require 'wsdl/xmlSchema/enumeration' 
     27require 'wsdl/xmlSchema/length' 
     28require 'wsdl/xmlSchema/pattern' 
    2729 
    2830module WSDL 
     
    4143ExtensionName = XSD::QName.new(XSD::Namespace, 'extension') 
    4244ImportName = XSD::QName.new(XSD::Namespace, 'import') 
     45LengthName = XSD::QName.new(XSD::Namespace, 'length') 
     46PatternName = XSD::QName.new(XSD::Namespace, 'pattern') 
    4347RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction') 
    4448SequenceName = XSD::QName.new(XSD::Namespace, 'sequence') 
  • trunk/lib/wsdl/xmlSchema/simpleRestriction.rb

    r1439 r1478  
    1818  attr_reader :base 
    1919  attr_reader :enumeration 
     20  attr_accessor :length 
     21  attr_accessor :pattern 
    2022 
    2123  def initialize 
     
    2325    @base = nil 
    2426    @enumeration = []   # NamedElements? 
     27    @length = nil 
     28    @pattern = nil 
    2529  end 
    2630   
    2731  def valid?(value) 
    28     @enumeration.include?(value) 
     32    return false unless check_restriction(value) 
     33    return false unless check_length(value) 
     34    return false unless check_pattern(value) 
     35    true 
    2936  end 
    3037 
     
    3340    when EnumerationName 
    3441      Enumeration.new   # just a parsing handler 
     42    when LengthName 
     43      Length.new   # just a parsing handler 
     44    when PatternName 
     45      Pattern.new   # just a parsing handler 
    3546    end 
    3647  end 
     
    4253    end 
    4354  end 
     55 
     56private 
     57 
     58  def check_restriction(value) 
     59    @enumeration.empty? or @enumeration.include?(value) 
     60  end 
     61 
     62  def check_length(value) 
     63    @length.nil? or value.size == @length 
     64  end 
     65 
     66  def check_pattern(value) 
     67    @pattern.nil? or @pattern =~ value 
     68  end 
    4469end 
    4570 
  • trunk/test/wsdl/simpletype/test_simpletype.rb

    r1477 r1478  
    8484    ret = @client.ping_id("012345678901234567") 
    8585    assert_equal("012345678901234567", ret) 
     86    # length 
    8687    assert_raise(XSD::ValueSpaceError) do 
    8788      @client.ping_id("0123456789012345678") 
    8889    end 
     90    # pattern 
    8991    assert_raise(XSD::ValueSpaceError) do 
    9092      @client.ping_id("01234567890123456;")