define the content and structure of the entity objects that are passed between subsystems
automatically generate the classes needed to access the data contained in these entity objects, optionally validating changes to a data value by an explicit call to validate() or implicit validation during (un-)marshalling;
serialize these objects for network transmission;
facilitate the storage of these.
ACS provides the generator framework,
HLA maintains the UML model and defines what code gets generated from it
ACS provides generic mechanisms to generate Java binding classes from XML schema, and to present instances of these classes to application software, thus removing the need to explicitly deal with XML data. See below on details.
XML Schema as described in the previous paragraphs
Binding classes for Java (based on Castor), C++ and Python (custom made)
IDL interface definition files
HTML documentation
any other format needed, by implementing custom generators
Given the IDL description of a Component, a code generator is used to generate a <Component>Interface class. In this class, every EntityDataXML parameter has been replaced by the corresponding EntityData binding class.
Java introspection is used to dynamically generate a <Component>DynamicProxy and a <Component>DynamicSkeleton class.
<Component>DynamicProxy is used by clients and converts client side calls from the EntityDataXML to the EntityData (un)-marshalled calls and forwards the messages to the <Component>Stub class generated by the IDL compiler.
<Component>DynamicSkeleton is a delegation class that converts servant side calls from the EntityDataXML to the EntityData (un)-marshalled calls and forwards the message to the user defined <Componet>Impl real implementation class.
Clients and the servant implementation of the component will therefore only see the interface of the <Component>Interface class, that does not use XML strings but binding classes.
Figure
3.16: Example of class diagram showing transparent Entity Data
serialization
Shortcut local calls (i.e. calls inside the same Container), so that no XML serialization is needed and the binding class is passed directly (not implemented yet).
Intercept calls to Components, allowing the implementation of the Tight Container pattern (see ACS Container section).