[ https://issues.apache.org/jira/browse/GRFT-106?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christophe Lombart reassigned GRFT-106: --------------------------------------- Assignee: Christophe Lombart > Avoid INFINITE RECURSION when Object Model has cycles. > ------------------------------------------------------ > > Key: GRFT-106 > URL: https://issues.apache.org/jira/browse/GRFT-106 > Project: Graffito > Issue Type: Improvement > Components: JCR-Mapping > Reporter: Dan Connelly > Assigned To: Christophe Lombart > Priority: Critical > > The default ObjectConverterImpl is restricted to acyclic graphs in the object > model. > Many Java object models are NOT acyclic. For instance, I am on your Friends > list. Yoar are on my Friends list. Java encourages such structures. > Almost any large object model in Java will have hidden cycles. > Saving an Object Model that contains cycles using Graffito causes an infinite > recursion. > Clearly, it is important to maintain a 1-to-1 correspondence between Nodes > and Objects to prevent this. In the absence of Multiple Parent Nodes, it > will be necessary to use REFERENCE or UNDEFINED Items in place of the 2nd (or > greater) Node representing a given Object. My preference si that the > default ObjectConverterImpl should support REFERENCE., Failing this, use > of UNDEFINED also solves this problem and would acceptable (as default). > Whether or not REFERENCE is used, both insertion and retrieval must provide a > reasonable result. A custom ojbect converter should be available to switch > UNDEFINED to REFERENCE, or vice versa. > Also, it is probably best to keep the targeted, well-defined Nodes close to > the Root Node. This implies that the default ObjectConverterImpl should > implement a Breadth-First, rather than a Depth-First, traversal of the Object > Model on both insertion and retrieval. Again, if the default is > Depth-First, a custom object converter should be available that implements > Breadth-First. > Admittedly, support for (2 representations) X (2 traversals) implies a > drastic refactoring and/or rewriting of the ObjectConverterImpl class. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.