r2corba 1.6.1-x64-mingw-ucrt

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 (237) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +173 -0
  3. data/LICENSE +59 -0
  4. data/README.rdoc +62 -0
  5. data/THANKS +54 -0
  6. data/bin/r2corba +8 -0
  7. data/bin/r2corba.bat +20 -0
  8. data/bin/ridlc +11 -0
  9. data/bin/ridlc.bat +23 -0
  10. data/bin/rins +7 -0
  11. data/bin/rins.bat +19 -0
  12. data/ext/.keep +0 -0
  13. data/lib/corba/cbase/IORMap.rb +32 -0
  14. data/lib/corba/cbase/ORB.rb +239 -0
  15. data/lib/corba/cbase/Request.rb +133 -0
  16. data/lib/corba/cbase/Streams.rb +128 -0
  17. data/lib/corba/cbase/Stub.rb +18 -0
  18. data/lib/corba/cbase/Typecode.rb +440 -0
  19. data/lib/corba/cbase/Values.rb +130 -0
  20. data/lib/corba/cbase/exception.rb +67 -0
  21. data/lib/corba/cbase/poa.rb +22 -0
  22. data/lib/corba/cbase/policies.rb +77 -0
  23. data/lib/corba/cbase/post_require.rb +13 -0
  24. data/lib/corba/cbase/require.rb +36 -0
  25. data/lib/corba/cmds/base.rb +84 -0
  26. data/lib/corba/cmds/test.rb +29 -0
  27. data/lib/corba/common/Any.rb +91 -0
  28. data/lib/corba/common/IDL.rb +100 -0
  29. data/lib/corba/common/ORB.rb +367 -0
  30. data/lib/corba/common/Object.rb +211 -0
  31. data/lib/corba/common/Request.rb +19 -0
  32. data/lib/corba/common/Servant.rb +107 -0
  33. data/lib/corba/common/Struct.rb +21 -0
  34. data/lib/corba/common/Stub.rb +78 -0
  35. data/lib/corba/common/Typecode.rb +1147 -0
  36. data/lib/corba/common/Union.rb +60 -0
  37. data/lib/corba/common/Values.rb +92 -0
  38. data/lib/corba/common/const.rb +21 -0
  39. data/lib/corba/common/exception.rb +68 -0
  40. data/lib/corba/common/require.rb +34 -0
  41. data/lib/corba/common/version.rb +21 -0
  42. data/lib/corba/idl/BiDirPolicyC.rb +62 -0
  43. data/lib/corba/idl/CosNamingC.rb +460 -0
  44. data/lib/corba/idl/CosNamingS.rb +308 -0
  45. data/lib/corba/idl/IDL.rb +20 -0
  46. data/lib/corba/idl/IORTable.pidl +61 -0
  47. data/lib/corba/idl/IORTableC.rb +116 -0
  48. data/lib/corba/idl/MessagingC.rb +903 -0
  49. data/lib/corba/idl/POAC.rb +929 -0
  50. data/lib/corba/idl/TAO_Ext.pidl +45 -0
  51. data/lib/corba/idl/TAO_ExtC.rb +178 -0
  52. data/lib/corba/idl/r2c_orb.rb +571 -0
  53. data/lib/corba/idl/require.rb +19 -0
  54. data/lib/corba/jbase/Any.rb +274 -0
  55. data/lib/corba/jbase/IORMap.rb +35 -0
  56. data/lib/corba/jbase/ORB.rb +111 -0
  57. data/lib/corba/jbase/Object.rb +98 -0
  58. data/lib/corba/jbase/Request.rb +225 -0
  59. data/lib/corba/jbase/Servant.rb +247 -0
  60. data/lib/corba/jbase/ServerRequest.rb +127 -0
  61. data/lib/corba/jbase/Streams.rb +734 -0
  62. data/lib/corba/jbase/Stub.rb +37 -0
  63. data/lib/corba/jbase/Typecode.rb +520 -0
  64. data/lib/corba/jbase/Values.rb +174 -0
  65. data/lib/corba/jbase/exception.rb +106 -0
  66. data/lib/corba/jbase/poa.rb +228 -0
  67. data/lib/corba/jbase/policies.rb +299 -0
  68. data/lib/corba/jbase/post_require.rb +13 -0
  69. data/lib/corba/jbase/require.rb +92 -0
  70. data/lib/corba/naming.rb +13 -0
  71. data/lib/corba/naming_service.rb +14 -0
  72. data/lib/corba/poa.rb +14 -0
  73. data/lib/corba/policies.rb +17 -0
  74. data/lib/corba/require.rb +16 -0
  75. data/lib/corba/svcs/ins/cos_naming.rb +432 -0
  76. data/lib/corba/svcs/ins/ins.rb +525 -0
  77. data/lib/corba/svcs/ins/naming_service.rb +118 -0
  78. data/lib/corba.rb +15 -0
  79. data/lib/ridlbe/ruby/config.rb +340 -0
  80. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  81. data/lib/ridlbe/ruby/require.rb +15 -0
  82. data/lib/ridlbe/ruby/walker.rb +1605 -0
  83. data/mkrf_conf_bingem.rb +149 -0
  84. data/rakelib/bin.rake +79 -0
  85. data/rakelib/bin.rb +145 -0
  86. data/rakelib/build.rake +87 -0
  87. data/rakelib/config.rake +51 -0
  88. data/rakelib/config.rb +542 -0
  89. data/rakelib/ext.rake +183 -0
  90. data/rakelib/ext.rb +277 -0
  91. data/rakelib/ext_r2tao.rb +208 -0
  92. data/rakelib/gem.rake +251 -0
  93. data/rakelib/gem.rb +145 -0
  94. data/rakelib/package.rake +25 -0
  95. data/rakelib/test.rake +22 -0
  96. data/test/BiDirectional/Test.idl +33 -0
  97. data/test/BiDirectional/client.rb +131 -0
  98. data/test/BiDirectional/run_test.rb +67 -0
  99. data/test/BiDirectional/server.rb +167 -0
  100. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +26 -0
  101. data/test/CORBA_Services/Naming/BindingIterator/client.rb +120 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +81 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/server.rb +108 -0
  104. data/test/CORBA_Services/Naming/Corbaname/Test.idl +26 -0
  105. data/test/CORBA_Services/Naming/Corbaname/client.rb +84 -0
  106. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +87 -0
  107. data/test/CORBA_Services/Naming/Corbaname/server.rb +134 -0
  108. data/test/CORBA_Services/Naming/Simple/Test.idl +26 -0
  109. data/test/CORBA_Services/Naming/Simple/client.rb +83 -0
  110. data/test/CORBA_Services/Naming/Simple/run_test.rb +81 -0
  111. data/test/CORBA_Services/Naming/Simple/server.rb +108 -0
  112. data/test/Collocation/Diamond.idl +38 -0
  113. data/test/Collocation/run_test.rb +51 -0
  114. data/test/Collocation/test.rb +201 -0
  115. data/test/Connect_Timeout/Test.idl +26 -0
  116. data/test/Connect_Timeout/client.rb +109 -0
  117. data/test/Connect_Timeout/run_test.rb +51 -0
  118. data/test/DII/Test.idl +26 -0
  119. data/test/DII/client.rb +114 -0
  120. data/test/DII/run_test.rb +68 -0
  121. data/test/DII/server.rb +94 -0
  122. data/test/DSI/Test.idl +26 -0
  123. data/test/DSI/client.rb +65 -0
  124. data/test/DSI/run_test.rb +68 -0
  125. data/test/DSI/server.rb +105 -0
  126. data/test/Exceptions/Test.idl +47 -0
  127. data/test/Exceptions/client.rb +117 -0
  128. data/test/Exceptions/run_test.rb +68 -0
  129. data/test/Exceptions/server.rb +130 -0
  130. data/test/Hello/Test.idl +26 -0
  131. data/test/Hello/client.rb +77 -0
  132. data/test/Hello/run_test.rb +70 -0
  133. data/test/Hello/server.rb +94 -0
  134. data/test/IDL_Test/Test.idl +116 -0
  135. data/test/IDL_Test/Test_inc.idl +17 -0
  136. data/test/IDL_Test/client.rb +103 -0
  137. data/test/IDL_Test/run_test.rb +68 -0
  138. data/test/IDL_Test/server.rb +103 -0
  139. data/test/IORMap/Test.idl +26 -0
  140. data/test/IORMap/client.rb +72 -0
  141. data/test/IORMap/run_test.rb +68 -0
  142. data/test/IORMap/server.rb +113 -0
  143. data/test/IORTable/Test.idl +26 -0
  144. data/test/IORTable/client.rb +74 -0
  145. data/test/IORTable/run_test.rb +68 -0
  146. data/test/IORTable/server.rb +129 -0
  147. data/test/Implicit_Conversion/Test.idl +30 -0
  148. data/test/Implicit_Conversion/client.rb +112 -0
  149. data/test/Implicit_Conversion/run_test.rb +68 -0
  150. data/test/Implicit_Conversion/server.rb +98 -0
  151. data/test/Multi_Threading/Multiple_ORB/Test.idl +26 -0
  152. data/test/Multi_Threading/Multiple_ORB/client.rb +81 -0
  153. data/test/Multi_Threading/Multiple_ORB/run_test.rb +70 -0
  154. data/test/Multi_Threading/Multiple_ORB/server.rb +107 -0
  155. data/test/Multi_Threading/Simple/Test.idl +26 -0
  156. data/test/Multi_Threading/Simple/client.rb +92 -0
  157. data/test/Multi_Threading/Simple/run_test.rb +68 -0
  158. data/test/Multi_Threading/Simple/server.rb +117 -0
  159. data/test/Multi_Threading/Threads/Test.idl +27 -0
  160. data/test/Multi_Threading/Threads/client.rb +77 -0
  161. data/test/Multi_Threading/Threads/run_test.rb +75 -0
  162. data/test/Multi_Threading/Threads/server.rb +116 -0
  163. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  164. data/test/Multiple_Servant_Interfaces/Test.idl +33 -0
  165. data/test/Multiple_Servant_Interfaces/client.rb +69 -0
  166. data/test/Multiple_Servant_Interfaces/run_test.rb +68 -0
  167. data/test/Multiple_Servant_Interfaces/server.rb +101 -0
  168. data/test/Nil/Test.idl +26 -0
  169. data/test/Nil/run_test.rb +51 -0
  170. data/test/Nil/test.rb +80 -0
  171. data/test/OBV/AbstractInterface/client.rb +178 -0
  172. data/test/OBV/AbstractInterface/run_test.rb +68 -0
  173. data/test/OBV/AbstractInterface/server.rb +149 -0
  174. data/test/OBV/AbstractInterface/test.idl +52 -0
  175. data/test/OBV/Custom/OBV.idl +18 -0
  176. data/test/OBV/Custom/OBV_impl.rb +41 -0
  177. data/test/OBV/Custom/client.rb +85 -0
  178. data/test/OBV/Custom/run_test.rb +68 -0
  179. data/test/OBV/Custom/server.rb +99 -0
  180. data/test/OBV/Simple/OBV.idl +15 -0
  181. data/test/OBV/Simple/OBV_impl.rb +26 -0
  182. data/test/OBV/Simple/client.rb +85 -0
  183. data/test/OBV/Simple/run_test.rb +68 -0
  184. data/test/OBV/Simple/server.rb +99 -0
  185. data/test/OBV/Simple_Event/Event.idl +15 -0
  186. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  187. data/test/OBV/Simple_Event/client.rb +85 -0
  188. data/test/OBV/Simple_Event/run_test.rb +68 -0
  189. data/test/OBV/Simple_Event/server.rb +99 -0
  190. data/test/OBV/Supports/client.rb +115 -0
  191. data/test/OBV/Supports/run_test.rb +68 -0
  192. data/test/OBV/Supports/server.rb +102 -0
  193. data/test/OBV/Supports/supports.idl +32 -0
  194. data/test/OBV/Supports/supports_impl.rb +59 -0
  195. data/test/OBV/Tree/client.rb +115 -0
  196. data/test/OBV/Tree/run_test.rb +68 -0
  197. data/test/OBV/Tree/server.rb +116 -0
  198. data/test/OBV/Tree/test.idl +31 -0
  199. data/test/OBV/Truncatable/Extra.idl +26 -0
  200. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  201. data/test/OBV/Truncatable/Truncatable_impl.rb +85 -0
  202. data/test/OBV/Truncatable/client.rb +278 -0
  203. data/test/OBV/Truncatable/run_test.rb +68 -0
  204. data/test/OBV/Truncatable/server.rb +88 -0
  205. data/test/OBV/ValueBox/client.rb +497 -0
  206. data/test/OBV/ValueBox/run_test.rb +68 -0
  207. data/test/OBV/ValueBox/server.rb +271 -0
  208. data/test/OBV/ValueBox/valuebox.idl +101 -0
  209. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  210. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  211. data/test/OBV/ValueBox/vb_union.idl +21 -0
  212. data/test/Object/Test.idl +26 -0
  213. data/test/Object/client.rb +111 -0
  214. data/test/Object/run_test.rb +68 -0
  215. data/test/Object/server.rb +125 -0
  216. data/test/POA/Test.idl +27 -0
  217. data/test/POA/run_test.rb +51 -0
  218. data/test/POA/test.rb +111 -0
  219. data/test/Param_Test/Test.idl +182 -0
  220. data/test/Param_Test/client.rb +276 -0
  221. data/test/Param_Test/run_test.rb +68 -0
  222. data/test/Param_Test/server.rb +295 -0
  223. data/test/Performance/Simple/Test.idl +26 -0
  224. data/test/Performance/Simple/client.rb +89 -0
  225. data/test/Performance/Simple/run_test.rb +68 -0
  226. data/test/Performance/Simple/server.rb +94 -0
  227. data/test/Policies/Test.idl +26 -0
  228. data/test/Policies/run_test.rb +51 -0
  229. data/test/Policies/test.rb +142 -0
  230. data/test/Timeout/client.rb +206 -0
  231. data/test/Timeout/run_test.rb +68 -0
  232. data/test/Timeout/server.rb +108 -0
  233. data/test/Timeout/test.idl +18 -0
  234. data/test/lib/assert.rb +41 -0
  235. data/test/lib/test.rb +546 -0
  236. data/test/test_runner.rb +191 -0
  237. metadata +318 -0
@@ -0,0 +1,274 @@
1
+ #--------------------------------------------------------------------
2
+ # Any.rb - CORBA Any 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
+ #--------------------------------------------------------------------
12
+ module R2CORBA
13
+ module CORBA
14
+ module Native
15
+ module Dynamic
16
+ include_package 'org.omg.DynamicAny'
17
+ end
18
+
19
+ module Reflect
20
+ java_import java.lang.reflect.Array
21
+ end
22
+ end
23
+
24
+ class Any
25
+ def to_java(jorb = nil, jany = nil)
26
+ rtc = self._tc
27
+ rval = self._value.nil? ? self._value : rtc.validate(self._value)
28
+ restc = rtc.resolved_tc
29
+ begin
30
+ if [TK_VALUE, TK_VALUE_BOX, TK_ABSTRACT_INTERFACE].include?(restc.kind) ||
31
+ (!rval.nil? && [TK_NULL, TK_ANY, TK_BOOLEAN, TK_SHORT, TK_LONG, TK_USHORT,
32
+ TK_WCHAR, TK_ULONG, TK_LONGLONG, TK_ULONGLONG, TK_OCTET,
33
+ TK_FLOAT, TK_DOUBLE, TK_LONGDOUBLE, TK_CHAR, TK_STRING, TK_WSTRING,
34
+ TK_VALUE, TK_VALUE_BOX, TK_TYPECODE, TK_OBJREF, TK_PRINCIPAL].include?(restc.kind))
35
+ jorb ||= CORBA::ORB._orb
36
+ jany ||= jorb.create_any()
37
+ case restc.kind
38
+ when TK_NULL
39
+ # leave any as is
40
+ when TK_ANY
41
+ jany.insert_any(rval.to_java(jorb))
42
+ when TK_BOOLEAN
43
+ jany.insert_boolean(rval)
44
+ when TK_SHORT
45
+ jany.insert_short(rval)
46
+ when TK_LONG
47
+ jany.insert_long(rval)
48
+ when TK_USHORT
49
+ jany.insert_ushort([rval].pack('S').unpack('s').first)
50
+ when TK_WCHAR
51
+ jany.insert_wchar(rval)
52
+ when TK_ULONG
53
+ jany.insert_ulong([rval].pack('L').unpack('l').first)
54
+ when TK_LONGLONG
55
+ jany.insert_longlong(rval)
56
+ when TK_ULONGLONG
57
+ jany.insert_ulonglong([rval].pack('Q').unpack('q').first)
58
+ when TK_OCTET
59
+ jany.insert_octet([rval].pack('C').unpack('c').first)
60
+ when TK_FLOAT
61
+ jany.insert_float(rval)
62
+ when TK_DOUBLE
63
+ jany.insert_double(rval)
64
+ when TK_LONGDOUBLE
65
+ raise CORBA::NO_IMPLEMENT.new('LongDouble not supported', 0, CORBA::COMPLETED_NO)
66
+ when TK_FIXED
67
+ jany.insert_fixed(java.math.BigDecimal.new(rval.to_s))
68
+ when TK_CHAR
69
+ jany.insert_char(rval[0])
70
+ when TK_STRING
71
+ jany.insert_string(rval)
72
+ when TK_WSTRING
73
+ jany.insert_wstring(rval.inject('') {|s, b| s << b.chr})
74
+ when TK_VALUE
75
+ jany.insert_Value(rval, rtc.tc_)
76
+ when TK_VALUE_BOX
77
+ rtc.get_type::Factory._check_factory(jorb) # make sure valuebox factory has been registered
78
+ rval = rtc.get_type.new(rval) unless rval.nil? || rval.is_a?(CORBA::Portable::BoxedValueBase)
79
+ jany.insert_Value(rval, rtc.tc_)
80
+ when TK_TYPECODE
81
+ jany.insert_TypeCode(rtc.tc_)
82
+ when TK_OBJREF
83
+ jany.insert_Object(rval.objref_)
84
+ when TK_ABSTRACT_INTERFACE
85
+ if rval.is_a?(CORBA::Object)
86
+ # since we know what we're doing use this convenience method provided
87
+ # by JacORB so we only make a shallow copy of the object ref
88
+ # insert_Object() will throw an exception because the typecode is not
89
+ # an objref tc but rather an abstract interface tc
90
+ if CORBA::Native::Jacorb::MAJOR_VERSION < 3
91
+ jany.insert_object(rtc.tc_, rval.objref_)
92
+ else
93
+ jany.insert(rtc.tc_, rval.objref_)
94
+ end
95
+ else
96
+ jany.insert_Value(rval, rtc.tc_)
97
+ end
98
+ when TK_PRINCIPAL
99
+ raise CORBA::NO_IMPLEMENT.new('Principal not supported', 0, CORBA::COMPLETED_NO)
100
+ ## TODO: TK_NATIVE
101
+ else
102
+ raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]", 0, CORBA::COMPLETED_NO)
103
+ end
104
+ return jany
105
+ else
106
+ dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
107
+ (jorb || CORBA::ORB._orb).resolve_initial_references('DynAnyFactory'))
108
+ jdynany = dynFactory.create_dyn_any_from_type_code(rtc.tc_)
109
+ begin
110
+ unless rval.nil?
111
+ restc = rtc.resolved_tc
112
+ case restc.kind
113
+ when TK_ENUM
114
+ jdynany.set_as_ulong(rval)
115
+ when TK_ARRAY
116
+ jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
117
+ rval.each_with_index {|e, i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
118
+ jdynany.set_elements(jelems)
119
+ when TK_SEQUENCE
120
+ jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
121
+ rval.each_with_index {|e, i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
122
+ jdynany.set_elements(jelems)
123
+ when TK_STRUCT, TK_EXCEPT
124
+ jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Dynamic::NameValuePair.java_class, restc.members.size)
125
+ rtc.members.each_with_index {|(mn, mt), i| jmembers[i] = CORBA::Native::Dynamic::NameValuePair.new(mn, Any.to_any(rval.__send__(mn.intern), mt).to_java(jorb)) }
126
+ jdynany.set_members(jmembers)
127
+ when TK_UNION
128
+ if rval._is_at_default?
129
+ jdynany.set_to_default_member
130
+ elsif rval._disc.nil?
131
+ jdynany.set_to_no_active_member
132
+ else
133
+ jdynany.set_discriminator(dynFactory.create_dyn_any(Any.to_any(rval._disc, restc.discriminator_type).to_java(jorb)))
134
+ end
135
+ unless rval._disc.nil? || rval._value.nil?
136
+ jdynany.member.from_any(Any.to_any(rval._value, rval._value_tc).to_java(jorb))
137
+ end
138
+ else
139
+ raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]", 0, CORBA::COMPLETED_NO)
140
+ end
141
+ end
142
+ if jany.nil?
143
+ jany = jdynany.to_any
144
+ else
145
+ jany.read_value(jdynany.to_any.create_input_stream(), rtc.tc_)
146
+ end
147
+ ensure
148
+ jdynany.destroy
149
+ end
150
+ return jany
151
+ end
152
+ rescue ::NativeException
153
+ CORBA::Exception.native2r($!)
154
+ end
155
+ end # to_java
156
+
157
+ def Any.from_java(jany, jorb = nil, rtc = nil)
158
+ rtc ||= CORBA::TypeCode.from_native(jany.type)
159
+ rval = nil
160
+ begin
161
+ if [TK_NULL, TK_VOID, TK_ANY, TK_BOOLEAN, TK_SHORT, TK_LONG, TK_USHORT,
162
+ TK_WCHAR, TK_ULONG, TK_LONGLONG, TK_ULONGLONG, TK_OCTET,
163
+ TK_FLOAT, TK_DOUBLE, TK_LONGDOUBLE, TK_CHAR, TK_STRING, TK_WSTRING,
164
+ TK_VALUE, TK_VALUE_BOX, TK_TYPECODE, TK_OBJREF,
165
+ TK_ABSTRACT_INTERFACE, TK_PRINCIPAL].include?(rtc.resolved_tc.kind)
166
+ case rtc.resolved_tc.kind
167
+ when TK_NULL, TK_VOID
168
+ # leave as is
169
+ when TK_ANY
170
+ rval = Any.from_java(jany.extract_any(), jorb)
171
+ when TK_BOOLEAN
172
+ rval = jany.extract_boolean()
173
+ when TK_SHORT
174
+ rval = jany.extract_short()
175
+ when TK_LONG
176
+ rval = jany.extract_long()
177
+ when TK_USHORT
178
+ rval = [jany.extract_ushort()].pack('s').unpack('S').first
179
+ when TK_WCHAR
180
+ rval = jany.extract_wchar()
181
+ when TK_ULONG
182
+ rval = [jany.extract_ulong()].pack('l').unpack('L').first
183
+ when TK_LONGLONG
184
+ rval = jany.extract_longlong()
185
+ when TK_ULONGLONG
186
+ rval = [jany.extract_ulonglong()].pack('q').unpack('Q').first
187
+ when TK_OCTET
188
+ rval = [jany.extract_octet()].pack('c').unpack('C').first
189
+ when TK_FLOAT
190
+ rval = jany.extract_float()
191
+ when TK_DOUBLE
192
+ rval = jany.extract_double()
193
+ when TK_LONGDOUBLE
194
+ raise CORBA::NO_IMPLEMENT.new('LongDouble not supported', 0, CORBA::COMPLETED_NO)
195
+ when TK_FIXED
196
+ rval = BigDecimal(jany.extract_fixed().toString())
197
+ when TK_CHAR
198
+ rval = jany.extract_char().chr
199
+ when TK_STRING
200
+ rval = jany.extract_string()
201
+ when TK_WSTRING
202
+ rval = jany.extract_wstring()
203
+ when TK_VALUE
204
+ rval = jany.extract_Value()
205
+ when TK_VALUE_BOX
206
+ rtc.get_type::Factory._check_factory(jorb || CORBA::ORB._orb) # make sure valuebox factory has been registered
207
+ rval = jany.extract_Value()
208
+ rval = rval.value unless rval.nil?
209
+ when TK_TYPECODE
210
+ rval = CORBA::TypeCode.from_native(jany.extract_TypeCode())
211
+ when TK_OBJREF
212
+ rval = CORBA::Object._wrap_native(jany.extract_Object())
213
+ rval = rtc.get_type._narrow(rval) if rval
214
+ when TK_ABSTRACT_INTERFACE
215
+ jobj = jany.create_input_stream().read_abstract_interface()
216
+ rval = if jobj.is_a?(CORBA::Native::Object)
217
+ rtc.get_type._narrow(CORBA::Object._wrap_native(jobj))
218
+ else
219
+ jobj
220
+ end
221
+ when TK_PRINCIPAL
222
+ raise CORBA::NO_IMPLEMENT.new('Principal not supported', 0, CORBA::COMPLETED_NO)
223
+ ## TODO: TK_NATIVE
224
+ else
225
+ raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]", 0, CORBA::COMPLETED_NO)
226
+ end
227
+ else
228
+ dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
229
+ (jorb || CORBA::ORB._orb).resolve_initial_references('DynAnyFactory'))
230
+ jdynany = dynFactory.create_dyn_any(jany)
231
+ begin
232
+ restc = rtc.resolved_tc
233
+ case restc.kind
234
+ when TK_ENUM
235
+ rval = jdynany.get_as_ulong()
236
+ when TK_ARRAY
237
+ rval = rtc.get_type.new
238
+ jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
239
+ when TK_SEQUENCE
240
+ rval = rtc.get_type.new
241
+ jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
242
+ when TK_STRUCT, TK_EXCEPT
243
+ rval = rtc.get_type.new
244
+ jdynany.get_members().each_with_index {|nvp, i| rval.__send__("#{nvp.id}=".intern, Any.from_java(nvp.value, jorb, restc.member_type(i))) }
245
+ when TK_UNION
246
+ rval = rtc.get_type.new
247
+ if jdynany.get_discriminator().type().kind().value() == CORBA::TK_OCTET
248
+ rdisc = jdynany.get_discriminator().get_octet()
249
+ # Octet 0 designates default member
250
+ rdisc = rdisc == 0 ? :default : rdisc
251
+ else
252
+ rdisc = Any.from_java(jdynany.get_discriminator().to_any(), jorb, restc.discriminator_type)
253
+ end
254
+ rval.instance_variable_set('@discriminator', rdisc)
255
+ unless jdynany.has_no_active_member
256
+ minx = rtc.label_index(rdisc)
257
+ rval.instance_variable_set('@value', Any.from_java(jdynany.member.to_any, jorb, restc.member_type(minx)))
258
+ end
259
+ else
260
+ raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]", 0, CORBA::COMPLETED_NO)
261
+ end
262
+ ensure
263
+ jdynany.destroy
264
+ end
265
+ end
266
+ rescue ::NativeException
267
+ CORBA::Exception.native2r($!)
268
+ end
269
+ return rval
270
+ end # from_java
271
+
272
+ end # Any
273
+ end # CORBA
274
+ end # R2CORBA
@@ -0,0 +1,35 @@
1
+ #--------------------------------------------------------------------
2
+ # iormap.rb - Java/JacORB IORMap 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
+ #--------------------------------------------------------------------
12
+
13
+ module R2CORBA
14
+ class IORMap
15
+ def initialize(orb)
16
+ @orb = orb
17
+ end
18
+
19
+ def map_ior(object_key, ior)
20
+ begin
21
+ @orb.orb_.addObjectKey(object_key, ior)
22
+ rescue ::NativeException
23
+ CORBA::Exception.native2r($!)
24
+ end
25
+ end
26
+
27
+ def unmap_ior(object_key)
28
+ begin
29
+ @orb.orb_.addObjectKey(object_key, nil)
30
+ rescue ::NativeException
31
+ CORBA::Exception.native2r($!)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,111 @@
1
+ #--------------------------------------------------------------------
2
+ # ORB.rb - Java/JacORB CORBA ORB 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
+ #--------------------------------------------------------------------
12
+
13
+ module R2CORBA
14
+ module CORBA
15
+
16
+ module ORB
17
+
18
+ class << self
19
+ protected
20
+ def _singleton_orb_init
21
+ begin
22
+ CORBA::Native::ORB.init
23
+ rescue ArgumentError
24
+ # this will happen if java.endorsed.dirs is used with JacORB
25
+ # in that case just directly init on the singleton class itself
26
+ CORBA::Native::ORBSingleton.init
27
+ end
28
+ end
29
+ end
30
+
31
+ ## init() or init(arg1, arg2[, ...]) or init(orb_id, prop = {}) or init(argv, orb_id, prop={}) or init(argv, prop={})
32
+ def self.init(*args)
33
+ n_orb = if args.empty?
34
+ _singleton_orb_init
35
+ else
36
+ argv = []
37
+ orb_id = nil
38
+ prop = nil
39
+ a1, a2, a3 = args
40
+ if Array === a1
41
+ raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size > 3
42
+ argv = a1
43
+ orb_id = (Hash === a2 ? nil : a2)
44
+ prop = (Hash === a2 ? a2 : a3)
45
+ elsif args.size == 1 || Hash === a2
46
+ raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size > 2
47
+ orb_id = a1
48
+ prop = a2
49
+ else
50
+ argv = args
51
+ end
52
+ raise ArgumentError, "Invalid argument #{prop.class}; expected Hash" unless prop.nil? || Hash === prop
53
+ jprop = Java::JavaUtil::Properties.new
54
+ jprop.setProperty('ORBid', orb_id) if orb_id
55
+ prop.each { |k, v| jprop.setProperty(k.to_s, v.to_s) } if prop
56
+ @@cached_orb = CORBA::Native::ORB.init(argv.collect {|a| a.to_s }.to_java(:string), jprop)
57
+ end
58
+ @@wrapper_klass.new(n_orb)
59
+ end
60
+
61
+ # str ::String
62
+ # ret ::CORBA::Object
63
+ def string_to_object(str)
64
+ begin
65
+ begin
66
+ Object._wrap_native(self.orb_.string_to_object(str))
67
+ rescue ::NativeException
68
+ CORBA::Exception.native2r($!)
69
+ end
70
+ rescue CORBA::BAD_PARAM ## JacORB throws MARSHAL exception on invalid IORs which is not spec compliant
71
+ return nil
72
+ end
73
+ end
74
+
75
+ # boolean wait_for_completion
76
+ # ret void
77
+ def shutdown(wait_for_completion = false)
78
+ if wait_for_completion
79
+ # need to start this in separate thread otherwise this will lead to deadlock
80
+ # (JacORB problem)
81
+ (Thread.new do
82
+ begin
83
+ self.orb_.shutdown(wait_for_completion)
84
+ rescue ::NativeException
85
+ CORBA::Exception.native2r($!)
86
+ end
87
+ end).join()
88
+ else
89
+ # need to start a shutdown *with* waiting in a thread because JacORB
90
+ # occasionally fails with a comm error when #shutdown(false) is called
91
+ # from within a servant callback
92
+ Thread.new do
93
+ begin
94
+ self.orb_.shutdown(true)
95
+ rescue ::NativeException
96
+ CORBA::Exception.native2r($!)
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ # custom R2CORBA extension : IORMap
103
+
104
+ def ior_map
105
+ @iormap ||= R2CORBA::IORMap.new(self)
106
+ end
107
+
108
+ end
109
+
110
+ end # CORBA
111
+ end # R2CORBA
@@ -0,0 +1,98 @@
1
+ #--------------------------------------------------------------------
2
+ # Object.rb - Java/JacORB CORBA Object 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
+ #--------------------------------------------------------------------
12
+ module R2CORBA
13
+ module CORBA
14
+
15
+ module Object
16
+
17
+ # ret InterfaceDef
18
+ def _get_interface()
19
+ raise ::CORBA::NO_IMPLEMENT
20
+ # ifdef_obj = self.objref_._get_interface_def rescue CORBA::Exception.native2r($!)
21
+ # (ifdef_obj = CORBA::Native::InterfaceDefHelper.narrow(ifdef_obj) rescue CORBA::Exception.native2r($!)) unless ifdef_obj.nil?
22
+ end
23
+
24
+ # ::String logical_type_id
25
+ # ret boolean
26
+ def _is_a?(logical_type_id)
27
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
28
+ ## JacORB's LocalObjects throw NO_IMPLEMENT on _is_a?() and _ids() is also not always defined
29
+ return true if self.objref_.is_a?(CORBA::Native::LocalObject) &&
30
+ (!self.objref_.respond_to?(:_ids) || self.objref_._ids().include?(logical_type_id))
31
+ begin
32
+ self.objref_._is_a(logical_type_id)
33
+ rescue ::NativeException
34
+ CORBA::Exception.native2r($!)
35
+ end
36
+ end
37
+
38
+ # ret ::String
39
+ def _repository_id()
40
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
41
+ ## if this object ref has already been narrowed
42
+ return self._interface_repository_id if self.respond_to?(:_interface_repository_id)
43
+ ## ask the remote side
44
+ ## have to do this ourselves since JacORB only resolves this locally (never calling remote)
45
+ req = self._request('_repository_id')
46
+ req.set_return_type(CORBA._tc_string)
47
+ return req.invoke
48
+ end
49
+
50
+ unless CORBA::Native::Portable::ObjectImpl.public_instance_methods.include?(:_get_component)
51
+ # ret ::CORBA::Object
52
+ def _get_component()
53
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
54
+ ## ask the remote side
55
+ ## have to do this ourselves since JacORB does not support this remote method on Object
56
+ ## and we can't use #invoke since this should work without narrowing
57
+ req = self._request('_component')
58
+ req.set_return_type(CORBA._tc_Object)
59
+ return req.invoke
60
+ end
61
+ end
62
+
63
+ # def PolicyType policy_type
64
+ # ret Policy
65
+ def _get_policy(policy_type)
66
+ raise ::CORBA::NO_IMPLEMENT
67
+ end
68
+
69
+ # PolicyList policies
70
+ # SetOverrideType set_add
71
+ # ret ::CORBA::Object
72
+ def _set_policy_overrides(policies, set_add)
73
+ raise ::CORBA::NO_IMPLEMENT
74
+ end
75
+
76
+ # int[] types
77
+ # ret PolicyList
78
+ def _get_policy_overrides(types)
79
+ raise ::CORBA::NO_IMPLEMENT
80
+ end
81
+
82
+ # PolicyList inconsistent_policies
83
+ # ret bool
84
+ def _validate_connection(inconsistent_policies)
85
+ raise ::CORBA::NO_IMPLEMENT
86
+ end
87
+
88
+ def _request(operation)
89
+ begin
90
+ CORBA::Request._wrap_native(self.objref_._request(operation.to_s), self)
91
+ rescue ::NativeException
92
+ CORBA::Exception.native2r($!)
93
+ end
94
+ end
95
+
96
+ end # Object
97
+ end # CORBA
98
+ end # R2CORBA