Expand description
The fill and the dump for the OMG IDL-to-Java mapping.
JacORB 3.9 generates against CORBA 3.3 part 3 §1.5. It is the third ORB and the only one of the three that is not C++, which is the reason it is worth having: where omniORB and TAO could share a mistake through the C++ mapping, a Java witness cannot.
sample.x = 1; // struct member — §1.5.10, public fields
sample.picked.whole(1); // union case member — §1.5.11
sample.rows = new int[3]; // sequence and array are both Java arrays§Why this is not a self-oracle
The statements place values into JacORB’s own generated classes and
read them back out; the bytes come from JacORB’s CDROutputStream
through the generated Helper.write. Nothing here decides a wire
question.
§What the Java mapping makes of each construct
| IDL | Java | consequence here |
|---|---|---|
octet | byte, signed | which is exactly what int8 wants, and what uint8 has to mask |
char, wchar | char | one UTF-16 code unit either way |
string, wstring | java.lang.String | |
sequence<T>, T[N] | a Java array | so a sequence is allocated, not lengthened |
enum | a final class with one constant per enumerator | Colour.RED, and value() for the ordinal |
union | a class with a modifier per case and discriminator() | §1.5.11 |
fixed<P,S> | java.math.BigDecimal | §1.5.6 |
§The one thing the Java mapping cannot express
There is no long double. §1.5.2 maps every other primitive and
stops there, so a case with one is refused rather than approximated
into a double — which would put eight bytes on the wire where the
type says sixteen.
§Identifiers JacORB renames
An IDL module called package is not a Java package declaration, so
JacORB emits _package instead; the enumeration class becomes the
class _class. Measured 2026-08-11 over
tests/interop-corpus/identifier-target-keywords. Every identifier
this file pastes into an identifier position therefore goes through
crate::target_keywords::java — and only a Java keyword moves, so
the enumerators template, virtual and friend, which the two C++
front ends do rename, keep their spelling here. The JSON keys the
dump prints and the paths in a ProbeError stay as the IDL wrote
them.
Functions§
- dump_
corba_ java - Emit the Java statements that print
sampleas canonical JSON. - fill_
corba_ java - Emit the Java statements that fill
samplewithvalues. - fill_
corba_ java_ recording - As
fill_corba_java, recording which scalars of the value were read.