JPO Macros

Java Program Objects have two macros available.

JPO Macros
Macro Meaning

CLASSNAME

Refers to the JPO name in the Java class definition.

CLASS:jpo_name

Refers to other JPO classes inside the code of a JPO, for example when extending a base class or newing up an object. jpo_name is the name of the JPO holding the class of interest

There are two problems with using schema object names for the JPO class. The first problem is that schema object names are allowed to contain spaces and other non-alpha characters that would cause errors in the Java compiler. The second problem is dynamic changes to the schema object names would not be automatically made to the code within JPOs.

Special macros are used to map the schema object names to legal Java-compliant names (a process know as name mangling). These macros are also appropriately modified automatically when a schema object name is changed.

Use of these parameterized class names allows both dynamic loading of classes after the source has been changed without restarting the system and automatic generation of dependencies between multiple Java Program Objects.

For example, if there is JPO named "RADProject" and its corresponding Business Type RADProject derives from Project, then the Java code defining the class for RADProject would look something like:

public class ${CLASSNAME} extends ${CLASS:Project}{:}

During compilation, the macro ${CLASSNAME} is mangled into a name that includes the JPO name "RADProject" (plus a suffix of "_mxJPO" followed by a hashed encoding). The macro ${CLASS:Project} is mangled into the exact same name as it was for ${CLASSNAME} appearing in the Project JPO. In other words, the system does all the appropriate name mangling and the JPO programmer needs to be concerned only with the higher-level macros.

For example, the "Hello World" JPO ends up with a class name something like "Hello_World_mxJPOtAXMTwEAAAAFAAAA" (the hashed encoding at the end will vary).