r2corba 1.5.1-universal-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +173 -0
  3. data/LICENSE +59 -0
  4. data/LICENSE.jacorb +660 -0
  5. data/README +62 -0
  6. data/THANKS +54 -0
  7. data/bin/r2corba +8 -0
  8. data/bin/r2corba.bat +20 -0
  9. data/bin/ridlc +11 -0
  10. data/bin/ridlc.bat +23 -0
  11. data/bin/rins +7 -0
  12. data/bin/rins.bat +19 -0
  13. data/jacorb/lib/antlr-2.7.2.jar +0 -0
  14. data/jacorb/lib/jacorb-3.5.jar +0 -0
  15. data/jacorb/lib/jacorb-omgapi-3.5.jar +0 -0
  16. data/jacorb/lib/jacorb-services-3.5.jar +0 -0
  17. data/jacorb/lib/slf4j-api-1.7.6.jar +0 -0
  18. data/jacorb/lib/slf4j-jdk14-1.7.6.jar +0 -0
  19. data/lib/corba.rb +16 -0
  20. data/lib/corba/cbase/IORMap.rb +33 -0
  21. data/lib/corba/cbase/ORB.rb +237 -0
  22. data/lib/corba/cbase/Request.rb +134 -0
  23. data/lib/corba/cbase/Streams.rb +129 -0
  24. data/lib/corba/cbase/Stub.rb +19 -0
  25. data/lib/corba/cbase/Typecode.rb +441 -0
  26. data/lib/corba/cbase/Values.rb +129 -0
  27. data/lib/corba/cbase/exception.rb +66 -0
  28. data/lib/corba/cbase/poa.rb +23 -0
  29. data/lib/corba/cbase/policies.rb +78 -0
  30. data/lib/corba/cbase/post_require.rb +14 -0
  31. data/lib/corba/cbase/require.rb +28 -0
  32. data/lib/corba/cmds/base.rb +85 -0
  33. data/lib/corba/cmds/test.rb +30 -0
  34. data/lib/corba/common/Any.rb +91 -0
  35. data/lib/corba/common/IDL.rb +104 -0
  36. data/lib/corba/common/ORB.rb +368 -0
  37. data/lib/corba/common/Object.rb +208 -0
  38. data/lib/corba/common/Request.rb +20 -0
  39. data/lib/corba/common/Servant.rb +108 -0
  40. data/lib/corba/common/Struct.rb +22 -0
  41. data/lib/corba/common/Stub.rb +79 -0
  42. data/lib/corba/common/Typecode.rb +1121 -0
  43. data/lib/corba/common/Union.rb +56 -0
  44. data/lib/corba/common/Values.rb +92 -0
  45. data/lib/corba/common/const.rb +22 -0
  46. data/lib/corba/common/exception.rb +68 -0
  47. data/lib/corba/common/require.rb +27 -0
  48. data/lib/corba/common/version.rb +22 -0
  49. data/lib/corba/idl/BiDirPolicyC.rb +63 -0
  50. data/lib/corba/idl/CosNamingC.rb +461 -0
  51. data/lib/corba/idl/CosNamingS.rb +309 -0
  52. data/lib/corba/idl/IDL.rb +21 -0
  53. data/lib/corba/idl/IORTable.pidl +62 -0
  54. data/lib/corba/idl/MessagingC.rb +904 -0
  55. data/lib/corba/idl/POAC.rb +930 -0
  56. data/lib/corba/idl/TAO_Ext.pidl +46 -0
  57. data/lib/corba/idl/r2c_orb.rb +572 -0
  58. data/lib/corba/idl/require.rb +20 -0
  59. data/lib/corba/jbase/Any.rb +273 -0
  60. data/lib/corba/jbase/IORMap.rb +36 -0
  61. data/lib/corba/jbase/ORB.rb +112 -0
  62. data/lib/corba/jbase/Object.rb +99 -0
  63. data/lib/corba/jbase/Request.rb +226 -0
  64. data/lib/corba/jbase/Servant.rb +248 -0
  65. data/lib/corba/jbase/ServerRequest.rb +128 -0
  66. data/lib/corba/jbase/Streams.rb +671 -0
  67. data/lib/corba/jbase/Stub.rb +38 -0
  68. data/lib/corba/jbase/Typecode.rb +520 -0
  69. data/lib/corba/jbase/Values.rb +173 -0
  70. data/lib/corba/jbase/exception.rb +106 -0
  71. data/lib/corba/jbase/poa.rb +229 -0
  72. data/lib/corba/jbase/policies.rb +300 -0
  73. data/lib/corba/jbase/post_require.rb +14 -0
  74. data/lib/corba/jbase/require.rb +89 -0
  75. data/lib/corba/naming.rb +14 -0
  76. data/lib/corba/naming_service.rb +15 -0
  77. data/lib/corba/poa.rb +15 -0
  78. data/lib/corba/policies.rb +18 -0
  79. data/lib/corba/require.rb +17 -0
  80. data/lib/corba/svcs/ins/cos_naming.rb +426 -0
  81. data/lib/corba/svcs/ins/ins.rb +526 -0
  82. data/lib/corba/svcs/ins/naming_service.rb +119 -0
  83. data/lib/ridlbe/ruby/config.rb +336 -0
  84. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  85. data/lib/ridlbe/ruby/require.rb +16 -0
  86. data/lib/ridlbe/ruby/walker.rb +1582 -0
  87. data/mkrf_conf_bingem.rb +151 -0
  88. data/rakelib/bin.rake +80 -0
  89. data/rakelib/bin.rb +146 -0
  90. data/rakelib/build.rake +87 -0
  91. data/rakelib/config.rake +52 -0
  92. data/rakelib/config.rb +544 -0
  93. data/rakelib/gem.rake +236 -0
  94. data/rakelib/gem.rb +146 -0
  95. data/rakelib/package.rake +26 -0
  96. data/rakelib/test.rake +23 -0
  97. data/test/BiDirectional/Test.idl +34 -0
  98. data/test/BiDirectional/client.rb +132 -0
  99. data/test/BiDirectional/run_test.rb +68 -0
  100. data/test/BiDirectional/server.ior +1 -0
  101. data/test/BiDirectional/server.rb +169 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
  104. data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -0
  105. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
  106. data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
  107. data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
  108. data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
  109. data/test/CORBA_Services/Naming/Corbaname/corbaname.ior +1 -0
  110. data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -0
  111. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
  112. data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
  113. data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
  114. data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
  115. data/test/CORBA_Services/Naming/Simple/ins.ior +1 -0
  116. data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
  117. data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
  118. data/test/Collocation/Diamond.idl +39 -0
  119. data/test/Collocation/run_test.rb +52 -0
  120. data/test/Collocation/test.rb +195 -0
  121. data/test/Connect_Timeout/Test.idl +27 -0
  122. data/test/Connect_Timeout/client.rb +111 -0
  123. data/test/Connect_Timeout/run_test.rb +52 -0
  124. data/test/DII/Test.idl +27 -0
  125. data/test/DII/client.rb +115 -0
  126. data/test/DII/run_test.rb +69 -0
  127. data/test/DII/server.ior +1 -0
  128. data/test/DII/server.rb +95 -0
  129. data/test/DSI/Test.idl +27 -0
  130. data/test/DSI/client.rb +66 -0
  131. data/test/DSI/run_test.rb +69 -0
  132. data/test/DSI/server.ior +1 -0
  133. data/test/DSI/server.rb +106 -0
  134. data/test/Exceptions/Test.idl +48 -0
  135. data/test/Exceptions/client.rb +118 -0
  136. data/test/Exceptions/run_test.rb +69 -0
  137. data/test/Exceptions/server.ior +1 -0
  138. data/test/Exceptions/server.rb +131 -0
  139. data/test/Hello/Test.idl +27 -0
  140. data/test/Hello/client.rb +78 -0
  141. data/test/Hello/gateway.ior +1 -0
  142. data/test/Hello/run_test.rb +71 -0
  143. data/test/Hello/server.rb +95 -0
  144. data/test/IDL_Test/Test.idl +113 -0
  145. data/test/IDL_Test/Test_inc.idl +17 -0
  146. data/test/IDL_Test/client.rb +102 -0
  147. data/test/IDL_Test/run_test.rb +69 -0
  148. data/test/IDL_Test/server.ior +1 -0
  149. data/test/IDL_Test/server.rb +99 -0
  150. data/test/IORMap/Test.idl +27 -0
  151. data/test/IORMap/client.rb +73 -0
  152. data/test/IORMap/run_test.rb +69 -0
  153. data/test/IORMap/server.ior +1 -0
  154. data/test/IORMap/server.rb +114 -0
  155. data/test/IORTable/Test.idl +27 -0
  156. data/test/IORTable/client.rb +75 -0
  157. data/test/IORTable/run_test.rb +69 -0
  158. data/test/IORTable/server.ior +0 -0
  159. data/test/IORTable/server.rb +130 -0
  160. data/test/Implicit_Conversion/Test.idl +31 -0
  161. data/test/Implicit_Conversion/client.rb +110 -0
  162. data/test/Implicit_Conversion/run_test.rb +69 -0
  163. data/test/Implicit_Conversion/server.ior +1 -0
  164. data/test/Implicit_Conversion/server.rb +99 -0
  165. data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
  166. data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
  167. data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
  168. data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
  169. data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -0
  170. data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -0
  171. data/test/Multi_Threading/Simple/Test.idl +27 -0
  172. data/test/Multi_Threading/Simple/client.rb +93 -0
  173. data/test/Multi_Threading/Simple/run_test.rb +69 -0
  174. data/test/Multi_Threading/Simple/server.ior +1 -0
  175. data/test/Multi_Threading/Simple/server.rb +118 -0
  176. data/test/Multi_Threading/Threads/Test.idl +31 -0
  177. data/test/Multi_Threading/Threads/client.rb +80 -0
  178. data/test/Multi_Threading/Threads/run_test.rb +76 -0
  179. data/test/Multi_Threading/Threads/server.ior +1 -0
  180. data/test/Multi_Threading/Threads/server.rb +119 -0
  181. data/test/Multi_Threading/Threads/watchdog.ior +1 -0
  182. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  183. data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
  184. data/test/Multiple_Servant_Interfaces/client.rb +70 -0
  185. data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
  186. data/test/Multiple_Servant_Interfaces/server.ior +1 -0
  187. data/test/Multiple_Servant_Interfaces/server.rb +102 -0
  188. data/test/Nil/Test.idl +27 -0
  189. data/test/Nil/run_test.rb +52 -0
  190. data/test/Nil/test.rb +78 -0
  191. data/test/OBV/AbstractInterface/client.rb +179 -0
  192. data/test/OBV/AbstractInterface/run_test.rb +69 -0
  193. data/test/OBV/AbstractInterface/server.ior +1 -0
  194. data/test/OBV/AbstractInterface/server.rb +149 -0
  195. data/test/OBV/AbstractInterface/test.idl +53 -0
  196. data/test/OBV/Custom/OBV.idl +18 -0
  197. data/test/OBV/Custom/OBV_impl.rb +40 -0
  198. data/test/OBV/Custom/client.rb +86 -0
  199. data/test/OBV/Custom/run_test.rb +69 -0
  200. data/test/OBV/Custom/server.ior +1 -0
  201. data/test/OBV/Custom/server.rb +100 -0
  202. data/test/OBV/Simple/OBV.idl +15 -0
  203. data/test/OBV/Simple/OBV_impl.rb +26 -0
  204. data/test/OBV/Simple/client.rb +86 -0
  205. data/test/OBV/Simple/run_test.rb +69 -0
  206. data/test/OBV/Simple/server.ior +1 -0
  207. data/test/OBV/Simple/server.rb +100 -0
  208. data/test/OBV/Simple_Event/Event.idl +15 -0
  209. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  210. data/test/OBV/Simple_Event/client.rb +86 -0
  211. data/test/OBV/Simple_Event/run_test.rb +69 -0
  212. data/test/OBV/Simple_Event/server.ior +1 -0
  213. data/test/OBV/Simple_Event/server.rb +100 -0
  214. data/test/OBV/Supports/client.rb +116 -0
  215. data/test/OBV/Supports/run_test.rb +69 -0
  216. data/test/OBV/Supports/server.ior +1 -0
  217. data/test/OBV/Supports/server.rb +103 -0
  218. data/test/OBV/Supports/supports.idl +33 -0
  219. data/test/OBV/Supports/supports_impl.rb +57 -0
  220. data/test/OBV/Tree/client.rb +116 -0
  221. data/test/OBV/Tree/run_test.rb +69 -0
  222. data/test/OBV/Tree/server.ior +1 -0
  223. data/test/OBV/Tree/server.rb +117 -0
  224. data/test/OBV/Tree/test.idl +32 -0
  225. data/test/OBV/Truncatable/Extra.idl +27 -0
  226. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  227. data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
  228. data/test/OBV/Truncatable/client.rb +279 -0
  229. data/test/OBV/Truncatable/run_test.rb +69 -0
  230. data/test/OBV/Truncatable/server.ior +1 -0
  231. data/test/OBV/Truncatable/server.rb +89 -0
  232. data/test/OBV/ValueBox/client.rb +497 -0
  233. data/test/OBV/ValueBox/run_test.rb +69 -0
  234. data/test/OBV/ValueBox/server.ior +1 -0
  235. data/test/OBV/ValueBox/server.rb +271 -0
  236. data/test/OBV/ValueBox/valuebox.idl +101 -0
  237. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  238. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  239. data/test/OBV/ValueBox/vb_union.idl +21 -0
  240. data/test/Object/Test.idl +27 -0
  241. data/test/Object/client.rb +112 -0
  242. data/test/Object/run_test.rb +69 -0
  243. data/test/Object/server.ior +1 -0
  244. data/test/Object/server.rb +126 -0
  245. data/test/POA/Test.idl +27 -0
  246. data/test/POA/run_test.rb +52 -0
  247. data/test/POA/test.rb +112 -0
  248. data/test/Param_Test/Test.idl +182 -0
  249. data/test/Param_Test/client.rb +277 -0
  250. data/test/Param_Test/run_test.rb +69 -0
  251. data/test/Param_Test/server.ior +1 -0
  252. data/test/Param_Test/server.rb +296 -0
  253. data/test/Performance/Simple/Test.idl +27 -0
  254. data/test/Performance/Simple/client.rb +90 -0
  255. data/test/Performance/Simple/run_test.rb +69 -0
  256. data/test/Performance/Simple/server.ior +1 -0
  257. data/test/Performance/Simple/server.rb +95 -0
  258. data/test/Policies/Test.idl +27 -0
  259. data/test/Policies/run_test.rb +52 -0
  260. data/test/Policies/test.rb +144 -0
  261. data/test/Timeout/client.rb +207 -0
  262. data/test/Timeout/run_test.rb +69 -0
  263. data/test/Timeout/server.ior +1 -0
  264. data/test/Timeout/server.rb +109 -0
  265. data/test/Timeout/test.idl +19 -0
  266. data/test/lib/assert.rb +43 -0
  267. data/test/lib/test.rb +542 -0
  268. data/test/test.log +20 -0
  269. data/test/test2.log +5000 -0
  270. data/test/test_runner.rb +193 -0
  271. metadata +349 -0
@@ -0,0 +1,226 @@
1
+ #--------------------------------------------------------------------
2
+ # Request.rb - Java/JacORB CORBA Request definitions
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+ module R2CORBA
14
+ module CORBA
15
+
16
+ module Request
17
+ @@wrapper_klass = Class.new do
18
+ include CORBA::Request
19
+ def initialize(nreq, target)
20
+ @req_ = nreq
21
+ @target = target
22
+ end
23
+ attr_reader :req_
24
+ attr_reader :target
25
+ end
26
+
27
+ def self._wrap_native(nreq, target)
28
+ raise ArgumentError, 'Expected org.omg.CORBA.Request' unless nreq.nil? || nreq.is_a?(Native::Request)
29
+ nreq.nil?() ? nreq : @@wrapper_klass.new(nreq, target)
30
+ end
31
+
32
+ def operation
33
+ begin
34
+ self.req_.operation()
35
+ rescue ::NativeException
36
+ CORBA::Exception.native2r($!)
37
+ end
38
+ end
39
+
40
+ def add_in_arg(tc, val, nm='')
41
+ begin
42
+ self.req_.arguments.add_value(nm, Any.to_any(val, tc).to_java(self.req_.target._orb), CORBA::ARG_IN)
43
+ rescue ::NativeException
44
+ CORBA::Exception.native2r($!)
45
+ end
46
+ self.req_.arguments.count
47
+ end
48
+
49
+ def add_out_arg(tc, nm='')
50
+ begin
51
+ self.req_.arguments.add_value(nm, Any.to_any(nil, tc).to_java(self.req_.target._orb), CORBA::ARG_OUT)
52
+ rescue ::NativeException
53
+ CORBA::Exception.native2r($!)
54
+ end
55
+ self.req_.arguments.count
56
+ end
57
+
58
+ def add_inout_arg(tc, val, nm='')
59
+ begin
60
+ self.req_.arguments.add_value(nm, Any.to_any(val, tc).to_java(self.req_.target._orb), CORBA::ARG_INOUT)
61
+ rescue ::NativeException
62
+ CORBA::Exception.native2r($!)
63
+ end
64
+ self.req_.arguments.count
65
+ end
66
+
67
+ def arguments
68
+ begin
69
+ nvl = self.req_.arguments
70
+ (0..nvl.count).to_a.collect do |i|
71
+ nv = nvl.item(i)
72
+ [nv.name,
73
+ nv.flags,
74
+ CORBA::TypeCode.from_java(nv.value.type),
75
+ Any.from_java(nv.value, self.req_.target._orb)]
76
+ end
77
+ rescue
78
+ CORBA::Exception.native2r($!)
79
+ end
80
+ end
81
+
82
+ def arguments=(*args)
83
+ if args.size == 1
84
+ raise ArgumentError, 'invalid argument list' unless ::Array === args.first && args.first.all? {|a| ::Array === a }
85
+ args = args.first
86
+ else
87
+ raise ArgumentError, 'invalid argument list' unless args.all? {|a| ::Array === a }
88
+ end
89
+ # clear current arguments
90
+ begin
91
+ nvl = self.req_.arguments
92
+ nvl.remove(0) while nvl.count>0
93
+ rescue
94
+ CORBA::Exception.native2r($!)
95
+ end
96
+ # add new arguments
97
+ args.each do |nm, flag, tc, val|
98
+ case flag
99
+ when CORBA::ARG_IN
100
+ self.add_in_arg(tc, val, nm)
101
+ when CORBA::ARG_OUT
102
+ self.add_out_arg(tc, nm)
103
+ when CORBA::ARG_INOUT
104
+ self.add_inout_arg(tc, val, nm)
105
+ end
106
+ end
107
+ end
108
+
109
+ def exceptions
110
+ begin
111
+ exl = self.req_.exceptions
112
+ (0..exl.count).to_a.collect do |i|
113
+ CORBA::TypeCode.from_java(exl.item(i))
114
+ end
115
+ rescue
116
+ CORBA::Exception.native2r($!)
117
+ end
118
+ end
119
+
120
+ def exceptions=(exl)
121
+ begin
122
+ # clear current exceptions
123
+ jexl = self.req_.exceptions
124
+ jexl.remove(0) while jexl.count>0
125
+ # add new exceptions
126
+ exl.each do |extc|
127
+ jexl.add(extc.tc_)
128
+ end
129
+ rescue
130
+ CORBA::Exception.native2r($!)
131
+ end
132
+ end
133
+
134
+ def set_return_type(tc)
135
+ @return_type = tc
136
+ begin
137
+ self.req_.set_return_type(tc.tc_)
138
+ rescue ::NativeException
139
+ CORBA::Exception.native2r($!)
140
+ end
141
+ end
142
+
143
+ def return_value
144
+ begin
145
+ Any.from_java(self.req_.return_value, self.req_.target._orb, @return_type)
146
+ rescue ::NativeException
147
+ CORBA::Exception.native2r($!)
148
+ end
149
+ end
150
+
151
+ def invoke
152
+ begin
153
+ self.req_.invoke
154
+ rescue ::NativeException
155
+ CORBA::Exception.native2r($!)
156
+ end
157
+ jex = self.req_.env().exception()
158
+ unless jex.nil?
159
+ STDERR.puts "#{jex}\n#{jex.backtrace.join("\n")}" if $VERBOSE
160
+ if jex.is_a?(CORBA::Native::SystemException)
161
+ CORBA::SystemException._raise(jex)
162
+ elsif jex.is_a?(CORBA::Native::UnknownUserException)
163
+ CORBA::UserException._raise(jex)
164
+ else
165
+ raise CORBA::UNKNOWN.new(jex.getMessage(),0,CORBA::COMPLETED_MAYBE)
166
+ end
167
+ end
168
+ self.result
169
+ end
170
+
171
+ def send_oneway
172
+ begin
173
+ self.req_.send_oneway
174
+ rescue ::NativeException
175
+ CORBA::Exception.native2r($!)
176
+ end
177
+ end
178
+
179
+ def send_deferred
180
+ begin
181
+ self.req_.send_deferred
182
+ rescue ::NativeException
183
+ CORBA::Exception.native2r($!)
184
+ end
185
+ end
186
+
187
+ def poll_response
188
+ begin
189
+ self.req_.poll_response
190
+ rescue ::NativeException
191
+ CORBA::Exception.native2r($!)
192
+ end
193
+ end
194
+
195
+ def get_response
196
+ begin
197
+ self.req_.get_response
198
+ rescue ::NativeException
199
+ CORBA::Exception.native2r($!)
200
+ end
201
+ end
202
+
203
+ protected
204
+
205
+ def result
206
+ rc = self.req_.return_value.type.kind.value == CORBA::TK_VOID ? [] : [self.return_value]
207
+ begin
208
+ nvl = self.req_.arguments
209
+ nvl.count.times do |i|
210
+ nv = nvl.item(i)
211
+ rc << Any.from_java(nv.value,self.req_.target._orb) unless nv.flags == CORBA::ARG_IN
212
+ end
213
+ rescue
214
+ CORBA::Exception.native2r($!)
215
+ end
216
+ if rc.size<2
217
+ return rc.shift
218
+ else
219
+ return *rc
220
+ end
221
+ end
222
+
223
+ end
224
+
225
+ end # CORBA
226
+ end # R2CORBA
@@ -0,0 +1,248 @@
1
+ #--------------------------------------------------------------------
2
+ # Servant.rb - R2TAO CORBA Servant support
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+
14
+ module R2CORBA
15
+
16
+ module PortableServer
17
+
18
+ module DSI
19
+
20
+ class Servant < PortableServer::Native::DynamicImplementation
21
+ def self.new_instance(rsrv)
22
+ srv = PortableServer::DSI::Servant.new
23
+ srv.__send__(:init, rsrv)
24
+ srv
25
+ end
26
+
27
+ private
28
+ def init(rsrv)
29
+ @rsrv = rsrv
30
+ end
31
+
32
+ public
33
+ def rbServant
34
+ @rsrv
35
+ end
36
+
37
+ def detach_rbServant()
38
+ @rsrv = nil
39
+ end
40
+
41
+ def invoke(jsrvreq)
42
+ begin
43
+ raise CORBA::NO_IMPLEMENT.new('',0,CORBA::COMPLETED_NO) unless @rsrv
44
+ rsrvreq = CORBA::ServerRequest._wrap_native(jsrvreq, self._orb())
45
+ begin
46
+ case rsrvreq.srvreq_.operation()
47
+ when '_is_a'
48
+ rsrvreq.describe({:arg_list => [['', CORBA::ARG_IN, CORBA._tc_string]], :result_type => CORBA._tc_boolean})
49
+ rc = self._is_a(*rsrvreq.arguments)
50
+ jany = rsrvreq.orb_.create_any()
51
+ jany.insert_boolean(rc == true)
52
+ jsrvreq.set_result(jany)
53
+ when '_non_existent'
54
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_boolean})
55
+ rc = self._non_existent(*rsrvreq.arguments)
56
+ jany = rsrvreq.orb_.create_any()
57
+ jany.insert_boolean(rc == true)
58
+ jsrvreq.set_result(jany)
59
+ when '_repository_id'
60
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_string})
61
+ rc = self._repository_id(*rsrvreq.arguments)
62
+ jany = rsrvreq.orb_.create_any()
63
+ jany.insert_string(rc)
64
+ jsrvreq.set_result(jany)
65
+ when '_component'
66
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_Object})
67
+ rc = self._get_component(*rsrvreq.arguments)
68
+ jany = rsrvreq.orb_.create_any()
69
+ jany.insert_Object(rc)
70
+ jsrvreq.set_result(jany)
71
+ else
72
+ @rsrv.is_a?(PortableServer::DynamicImplementation) ? self.invoke_DSI(rsrvreq) : self.invoke_SI(rsrvreq)
73
+ end
74
+ rescue NativeException => ex_
75
+ CORBA::Exception.native2r(ex_)
76
+ end
77
+ rescue CORBA::UserException => ex_
78
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
79
+ if rsrvreq.exc_list_.nil? || rsrvreq.exc_list_.any? {|extc| extc.id == ex_.class._tc.id }
80
+ jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb()))
81
+ else
82
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" unless $VERBOSE
83
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
84
+ jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}",0,CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
85
+ else
86
+ jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}",0,CORBA::COMPLETED_MAYBE)).to_java(self._orb()))
87
+ end
88
+ end
89
+ rescue CORBA::SystemException => ex_
90
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
91
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
92
+ jex_klass = CORBA::Native.const_get(ex_.class::Name)
93
+ jsrvreq.setSystemException(jex_klass.new(ex_.reason, ex_.minor, CORBA::Native::CompletionStatus.from_int(ex_.completed)))
94
+ else
95
+ jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb()))
96
+ end
97
+ rescue Exception => ex_
98
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}"
99
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
100
+ jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}",0,CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
101
+ else
102
+ jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}",0,CORBA::COMPLETED_MAYBE)).to_java(self._orb()))
103
+ end
104
+ end
105
+ end
106
+
107
+ def _all_interfaces(poa, oid)
108
+ if @rsrv.nil?
109
+ return [].to_java(:string)
110
+ elsif @rsrv.respond_to?(:_ids)
111
+ return @rsrv._ids.to_java(:string)
112
+ elsif @rsrv.class.constants.any? {|c| c.to_sym == :Ids }
113
+ return @rsrv.class::Ids.to_java(:string)
114
+ elsif @rsrv.respond_to?(:_primary_interface)
115
+ return [@rsrv._primary_interface(oid, poa)].to_java(:string)
116
+ else
117
+ return [].to_java(:string)
118
+ end
119
+ end
120
+
121
+ def _is_a(repo_id)
122
+ if @rsrv.nil?
123
+ return false
124
+ elsif @rsrv.respond_to?('_is_a?'.to_sym)
125
+ return @rsrv._is_a?(repo_id)
126
+ else
127
+ begin
128
+ return @rsrv.class::Ids.include?(repo_id)
129
+ rescue
130
+ return super
131
+ end
132
+ end
133
+ end
134
+
135
+ def _repository_id
136
+ if @rsrv.nil?
137
+ return ''
138
+ elsif @rsrv.respond_to?(:_repository_id)
139
+ return @rsrv._repository_id
140
+ else
141
+ return (@rsrv.class.const_get(:Id) rescue '')
142
+ end
143
+ end
144
+
145
+ def _non_existent()
146
+ if @rsrv.nil?
147
+ return true
148
+ elsif @rsrv.respond_to?(:_non_existent)
149
+ return @rsrv._non_existent
150
+ else
151
+ return super
152
+ end
153
+ end
154
+
155
+ def _get_component()
156
+ if @rsrv.nil?
157
+ return nil
158
+ elsif @rsrv.respond_to?(:_get_component)
159
+ obj = @rsrv._get_component
160
+ return obj ? obj.objref_ : nil
161
+ else
162
+ return super
163
+ end
164
+ end
165
+ protected
166
+ def invoke_SI(rsrvreq)
167
+ opsym = rsrvreq.srvreq_.operation().to_sym
168
+ opsig = @rsrv.get_operation_signature(opsym)
169
+ # explicitly define empty (but not nil) exceptionlist if not yet specified
170
+ opsig[:exc_list] = [] if (Hash === opsig) && !opsig.has_key?(:exc_list)
171
+ rsrvreq.describe(opsig)
172
+ alt_opsym = opsig[:op_sym]
173
+ opsym = alt_opsym if alt_opsym && alt_opsym.is_a?(Symbol)
174
+ results = @rsrv.__send__(opsym, *rsrvreq.arguments)
175
+ unless rsrvreq.result_type_.nil?
176
+ result_value = (rsrvreq.arg_out_>0 ? results.shift : results) unless rsrvreq.result_type_.kind == CORBA::TK_VOID
177
+ if rsrvreq.arg_out_>0
178
+ rsrvreq.nvlist_.count().times do |i|
179
+ jnv = rsrvreq.nvlist_.item(i)
180
+ if [CORBA::ARG_OUT, CORBA::ARG_INOUT].include?(jnv.flags)
181
+ rval = results.shift
182
+ rtc = rsrvreq.arg_list_[i][2]
183
+ CORBA::Any.to_any(rval, rtc).to_java(self._orb(), jnv.value())
184
+ end
185
+ end
186
+ end
187
+ unless rsrvreq.result_type_.kind == CORBA::TK_VOID
188
+ rsrvreq.srvreq_.set_result(CORBA::Any.to_any(result_value, rsrvreq.result_type_).to_java(self._orb()))
189
+ end
190
+ end
191
+ end
192
+
193
+ def invoke_DSI(rsrvreq)
194
+ results = @rsrv.invoke(rsrvreq)
195
+ unless rsrvreq.result_type_.nil?
196
+ result_value = (rsrvreq.arg_out_>0 ? results.shift : results) unless rsrvreq.result_type_.kind == CORBA::TK_VOID
197
+ if rsrvreq.arg_out_>0
198
+ rsrvreq.nvlist_.count().times do |i|
199
+ jnv = rsrvreq.nvlist_.item(i)
200
+ if [CORBA::ARG_OUT, CORBA::ARG_INOUT].include?(jnv.flags)
201
+ rval = results.shift
202
+ rtc = rsrvreq.arg_list_[i][2]
203
+ CORBA::Any.to_any(rval, rtc).to_java(self._orb(), jnv.value())
204
+ end
205
+ end
206
+ end
207
+ unless rsrvreq.result_type_.kind == CORBA::TK_VOID
208
+ rsrvreq.srvreq_.set_result(CORBA::Any.to_any(result_value, rsrvreq.result_type_).to_java(self._orb()))
209
+ end
210
+ end
211
+ end
212
+ end # Servant
213
+
214
+ end # DSI
215
+
216
+ class Servant
217
+ def srvref_
218
+ @srvref_ ||= PortableServer::DSI::Servant.new_instance(self)
219
+ end
220
+
221
+ def _default_POA()
222
+ begin
223
+ return PortableServer::POA._narrow(CORBA::Object._wrap_native(self.srvref_._default_POA()))
224
+ rescue ::NativeException
225
+ CORBA::Exception.native2r($!)
226
+ end
227
+ end
228
+
229
+ def _this()
230
+ unless @srvref_.nil?
231
+ begin
232
+ return CORBA::Object._wrap_native(self.srvref_._this_object())
233
+ rescue NativeException
234
+ # not in call context or not associated with ORB yet
235
+ end
236
+ end
237
+ raise CORBA::BAD_INV_ORDER.new('no ORB initialized',0,CORBA::COMPLETED_NO) if CORBA::ORB._orb.nil?
238
+ begin
239
+ return CORBA::Object._wrap_native(self.srvref_._this_object(CORBA::ORB._orb))
240
+ rescue ::NativeException
241
+ CORBA::Exception.native2r($!)
242
+ end
243
+ end
244
+ end # Servant
245
+
246
+ end # PortableServer
247
+
248
+ end # R2CORBA