37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/corba/jbase/Servant.rb', line 37
def invoke(jsrvreq)
begin
raise CORBA::NO_IMPLEMENT.new('', 0, CORBA::COMPLETED_NO) unless @rsrv
rsrvreq = CORBA::ServerRequest._wrap_native(jsrvreq, self._orb)
begin
case rsrvreq.srvreq_.operation
when '_is_a'
rsrvreq.describe({arg_list: [['', CORBA::ARG_IN, CORBA._tc_string]], result_type: CORBA._tc_boolean})
rc = self._is_a(*rsrvreq.arguments)
jany = rsrvreq.orb_.create_any
jany.insert_boolean(rc == true)
jsrvreq.set_result(jany)
when '_non_existent'
rsrvreq.describe({arg_list: [], result_type: CORBA._tc_boolean})
rc = self._non_existent(*rsrvreq.arguments)
jany = rsrvreq.orb_.create_any
jany.insert_boolean(rc == true)
jsrvreq.set_result(jany)
when '_repository_id'
rsrvreq.describe({arg_list: [], result_type: CORBA._tc_string})
rc = self._repository_id(*rsrvreq.arguments)
jany = rsrvreq.orb_.create_any
jany.insert_string(rc)
jsrvreq.set_result(jany)
when '_component'
rsrvreq.describe({arg_list: [], result_type: CORBA._tc_Object})
rc = self._get_component(*rsrvreq.arguments)
jany = rsrvreq.orb_.create_any
jany.insert_Object(rc)
jsrvreq.set_result(jany)
else
@rsrv.is_a?(PortableServer::DynamicImplementation) ? self.invoke_DSI(rsrvreq) : self.invoke_SI(rsrvreq)
end
rescue NativeException => ex_
CORBA::Exception.native2r(ex_)
end
rescue CORBA::UserException => ex_
STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
if rsrvreq.exc_list_.nil? || rsrvreq.exc_list_.any? { |extc| extc.id == ex_.class._tc.id }
jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb))
else
STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" unless $VERBOSE
if jsrvreq.respond_to?(:setSystemException) jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}", 0, CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
else
jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}", 0, CORBA::COMPLETED_MAYBE)).to_java(self._orb))
end
end
rescue CORBA::SystemException => ex_
STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
if jsrvreq.respond_to?(:setSystemException) jex_klass = CORBA::Native.const_get(ex_.class::Name)
jsrvreq.setSystemException(jex_klass.new(ex_.reason, ex_.minor, CORBA::Native::CompletionStatus.from_int(ex_.completed)))
else
jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb))
end
rescue Exception => ex_
STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}"
if jsrvreq.respond_to?(:setSystemException) jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}", 0, CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
else
jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}", 0, CORBA::COMPLETED_MAYBE)).to_java(self._orb))
end
end
end
|