Details
Description
This is a proposed implementation to add cycle reference support to Avro. It basically introduce a new type named Cycle. Cycles contains a string representing the path to the other reference.
For example if we have an object of type Message that have a member named previous with type Message too. If we have have this hierarchy:
message
previous : message2
message2
previous : message2
When serializing the cycle path for "message2.previous" will be "previous".
The implementation depend on ANTLR to evaluate those cycle at read time to resolve them. I used ANTLR 3.2. This dependency is not mandated; I just used ANTLR to speed thing up. I kept in this implementation the generated code from ANTLR though this should not be the case as this should be generated during the build. I only updated the Java code.
I did not make full unit testing but you can find "avrotest.Main" class that can be used a preliminary test.
Please do not hesitate to contact me for further clarification if this seems interresting.
Best regards,
Moustapha Cherri