The feature (with patches) is for a Java agent which supports the encoding and decoding of complex object types. The patches provided are based off of patches provided by Ted Ross (pythonConsole.pactch) and Rafael Schloming (javaAgent.patch).
The Java agent is an IOC friendly class which can be configured to connect to an AMQP broker. It allows for classes to be bound to QMF either by registering a managed object, or by directly registering the classes. Complex input and output types (including custom objects, lists, enumerations) are marshalled into and out of QMF Object types (type 20). Annotations can be used to control the class and package naming of the objects.
The python console has been extended to work with the java agent. The supplied test program (muppet.py) exercises much of the functionality of the Java Agent and complex object marshalling.
Open issues right now with this initial patch include:
- Type Inheritance: How to show in the schema that one type extends another (See Pikelet and Crumpet)?
- Do we allow operator overloading? (currently we do not). Right now a managed object can only have a single method with a single name
- Enumerations: Do we should the value values in the schema?
- Do we show in the schema that one type is unmanaged?
- If the Qpid deamon dies, the agent does not reconnect
- Maps: The current ftables type only passes Native QPID types. Should a new map be created which sends complex objects?