[
https://issues.apache.org/jira/browse/JCR-918?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christophe Lombart reopened JCR-918:
------------------------------------
Seems that more unit tests are required. I will continue to work on it
> Avoid INFINITE RECURSION when Object Model has cycles.
> ------------------------------------------------------
>
> Key: JCR-918
> URL: https://issues.apache.org/jira/browse/JCR-918
> Project: Jackrabbit
> Issue Type: Test
> 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.