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

Changeset 1572

Show
Ignore:
Timestamp:
07/14/05 21:37:25 (3 years ago)
Author:
nahi
Message:

SOAP Data which is defined as a simpletype was not mapped correctly to Ruby obj when wsdl2ruby.rb generated classdef file. closes #123.

Files:

Legend:

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

    r1556 r1572  
    247247            child = Mapping._soap2obj(value, self, klass) 
    248248          end 
     249        elsif klass = Mapping.module_from_name(class_name) 
     250          # simpletype 
     251          if value.respond_to?(:data) 
     252            child = value.data 
     253          else 
     254            raise MappingError.new( 
     255              "cannot map to a module value: #{class_name}") 
     256          end 
    249257        else 
    250258          raise MappingError.new("unknown class: #{class_name}") 
  • trunk/lib/soap/mapping/wsdlliteralregistry.rb

    r1556 r1572  
    7070      end 
    7171    end 
    72     raise MappingError.new("cannot map #{node.type.name} to Ruby object") 
     72    if node.respond_to?(:type) 
     73      raise MappingError.new("cannot map #{node.type.name} to Ruby object") 
     74    else 
     75      raise MappingError.new("cannot map #{node.elename.name} to Ruby object") 
     76    end 
    7377  end 
    7478 
     
    280284      if class_name = elements[name] 
    281285        if klass = Mapping.class_from_name(class_name) 
     286          # klass must be a SOAPBasetype or a class 
    282287          if klass.ancestors.include?(::SOAP::SOAPBasetype) 
    283288            if value.respond_to?(:data) 
     
    289294            child = any2obj(value, klass) 
    290295          end 
     296        elsif klass = Mapping.module_from_name(class_name) 
     297          # simpletype 
     298          if value.respond_to?(:data) 
     299            child = value.data 
     300          else 
     301            raise MappingError.new( 
     302              "cannot map to a module value: #{class_name}") 
     303          end 
    291304        else 
    292           raise MappingError.new("unknown class: #{class_name}") 
     305          raise MappingError.new("unknown class/module: #{class_name}") 
    293306        end 
    294307      else      # untyped element is treated as anyType.