Describe the mapping of IDL constants and typedefs in Java.
Corba Constants and Typedefs
Constants and typedefs are probably the simplest constructs in IDL. A constant is a primitive value bound to a name. A typedef is an aliasing of a type name to allow better semantic description in the IDL definition as well as to provide a little bit of change management functionality.
const within an IDL interface
If you define a constant (const) within an IDL interface, it is mapped as a public static final variable in the generated Java interface. However, constants are more often defined within a module scope rather than within an interface. In this case, there is no Java class or interface in which a static variable can be defined. If you define a constant in a module, a class is generated for that variable in the package generated for that module. Each constant defined gets its very own class, and the name of that class is the name of the constant.
The value is assigned to a public static final variable named value. The following series of images below shows the IDL interface const mapping to the value public static final variable in Java:
Mapped Constant and Typedef code using Corba
typedef Declaration
The design philosophy with which Java was created specifically excludes type aliasing. Under Java, IDL typedefs mostly disappear.
You are expected to use the underlying element type rather than the alias name. A typedef declaration does not completely disappear, though. The helper classes are still created for the type name even though a new class is not created for it. In the next lesson,
you will learn how to describe the mapping of methods in IDL interfaces in Java and how to execute remote methods.
pseudo object types that ORB implementations
CORBA defines a set of pseudo object types that ORB implementations use when mapping IDL to a programming language. These object types have interfaces defined in IDL but do not have to follow the normal IDL mapping for interfaces and are not generally available in your IDL specifications. You can use only the following pseudo object types as attribute or operation parameter types in an IDL specification:
CORBA::NamedValue
CORBA::TypeCode
To use these types in an IDL specification, include the file orb.idl in the IDL file as follows:
#include <orb.idl>
//...
This statement tells the IDL compiler to allow types NamedValue and TypeCode.