I need help understanding the underlying LCDS mechanisms when a complex object hierarchy is managed in LCDS. I have a custom Assembler because I have specialized persistence requirements. My object hierarchy is basically the following:
Document
Chapter
Page
Text
Document is the [Managed] class. When a new Document is created, it is initialized with a Chapter. Pages and Text are created when the document is edited. I create new instance of Document and initialize it with an instance of Chapter. On the client, I invoke the DataService using the createItem method. My custom Assembler is called, I do the necessary persistence operation and return. Back on the client I receive the ItemReference containing the AS Document. This all works ok. I am now faced with the runtime operations when the user starts creating Chapters, Pages and entering text.
Given that I start the editing session with a single ItemReference, I don't understand how to handle the Document sub-tree. The LCDS documentation says the purpose of the [Managed] class tag is so the entire object tree does not need to be transmitted when a property changes on a child object. Its the responsibility of the sub class to keep the remote object in sync. But, I don't know the best way to go about doing this.
The [Managed] annotation makes the properties of the managed class bindable. I can add an event listener to the ItemReference to handle property changes on the Document, but what about the rest of the object tree? Do I explicitly make the properties of the child objects bindable? Do I make each parent object an event listener for its child object properties and propagate the event up the tree?
Any suggestions or patterns to make this a little more understandable would be greatly appreciated.