Class: SOAP::Mapping::SOAPException

Inherits:
Object
  • Object
show all
Includes:
SOAP::Marshallable
Defined in:
lib/action_web_service/soap/mapping/registry.rb

Overview

Inner class to pass an exception.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(e) ⇒ SOAPException

Returns a new instance of SOAPException.



38
39
40
41
# File 'lib/action_web_service/soap/mapping/registry.rb', line 38

def initialize(e)
  @excn_type_name = Mapping.name2elename(e.class.to_s)
  @cause = e
end

Instance Attribute Details

#causeObject (readonly)

Returns the value of attribute cause.



37
38
39
# File 'lib/action_web_service/soap/mapping/registry.rb', line 37

def cause
  @cause
end

#excn_type_nameObject (readonly)

Returns the value of attribute excn_type_name.



37
38
39
# File 'lib/action_web_service/soap/mapping/registry.rb', line 37

def excn_type_name
  @excn_type_name
end

Instance Method Details

#to_eObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/action_web_service/soap/mapping/registry.rb', line 43

def to_e
  if @cause.is_a?(::Exception)
    @cause.extend(::SOAP::Mapping::MappedException)
    return @cause
  elsif @cause.respond_to?(:message) and @cause.respond_to?(:backtrace)
    e = RuntimeError.new(@cause.message)
    e.set_backtrace(@cause.backtrace)
    return e
  end
  klass = Mapping.class_from_name(Mapping.elename2name(@excn_type_name.to_s))
  if klass.nil? or not klass <= ::Exception
    return RuntimeError.new(@cause.inspect)
  end
  obj = klass.new(@cause.message)
  obj.extend(::SOAP::Mapping::MappedException)
  obj
end