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
103
104
105
|
# File 'lib/corba/jbase/Servant.rb', line 41
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
|