Lesson 4 | Primitive data types |
Objective | Describe the mapping of IDL primitive types to Java types. |
IDL Primitive Data Types
All complex types are built from a set of primitive types. Before we build up a mapping of more complex types, we need to look at how the primitive
types in IDL translate to types in Java.
Primitive types
The conversion of primitive types is summed up in the table below:
IDL | Java type |
short | short |
long | int |
long long | long |
unsigned short | short |
unsigned long | int |
unsigned long long | long |
float | float |
double | double |
char | char |
wchar | char |
string | java.lang.String |
wstring | java.lang.String |
boolean | boolean |
octet | byte |
object | org.omg.CORBA.Object |
Shorts and longs
An IDL short
is defined as a 16-bit value, whereas an IDL long
is defined as 32-bit. In Java, a short
is defined as 16 bits, int
as 32 bits, and long
as 64 bits.
Therefore an IDL long
maps to a Java int
and an IDLlong long
maps to a Java long
.
Because Java characters are always Unicode, the IDL types wchar
and wstring
(wide char and wide string) map directly to Java char
and java.lang.String
.
Even though char
and string
in IDL use only bytes for character values, for usability it makes sense that char
and string
map to Java char
and
java.lang.String
as well.
Appearance of the Propagation Context in Messages
The appearance of the PropagationContext in messages is defined by the CORBA interoperability specification (see the General Inter-ORB Protocol chapter of the Common Object Request Broker: Architecture and Specification). The Transaction
Service passes the PropagationContext to the ORB via the TSPortability interface.
- When exporting a transaction, the ORB sets the PropagationContext into the ServiceContext::context_data field and marshals the PropagationContext as defined by the GIOP message format and marshalling rules.
- When importing a transaction, the ORB demarshalls the ServiceContext::context_data according to the GIOP formatting rules and extracts the PropagationContext to be presented to the Transaction Service.
A
marshalling[1] exception can occur when converting the Unicode to bytes if the Unicode is something other than then a basic Latin-1 (ISO 8859.1) character set.
In the next lesson, you will learn how to describe the mapping of IDL constants and typedefs in Java.
[1]Marshalling: Conversion of language-specific data types to values, which can be put onto a byte stream.