Skip to main content

Module corba_java

Module corba_java 

Source
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

IDLJavaconsequence here
octetbyte, signedwhich is exactly what int8 wants, and what uint8 has to mask
char, wcharcharone UTF-16 code unit either way
string, wstringjava.lang.String
sequence<T>, T[N]a Java arrayso a sequence is allocated, not lengthened
enuma final class with one constant per enumeratorColour.RED, and value() for the ordinal
uniona 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 sample as canonical JSON.
fill_corba_java
Emit the Java statements that fill sample with values.
fill_corba_java_recording
As fill_corba_java, recording which scalars of the value were read.