Re: Nested ROP contexts and relationships

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Apr 05 2009 - 12:52:30 EDT

  • Next message: Andrus Adamchik: "JPA crossroads"

    I committed the fix per CAY-1204. I encourage everybody using nested
    contexts in ROP to test it and report any problems.

    The essence of the fix was to set a thread-local state for whatever
    complex sequence of events is going on when a relationship is changed,
    determining how the context should handle graph changes. Per new non-
    public PropertyChangeProcessingStrategy enum, it is either of IGNORE,
    RECORD, RECORD_AND_PROCESS_REVERSE_ARCS (default). This allows to
    handle 3 common scenarios:

    "update from the DataChannel"
    "update from the child context"
    "update by the user"

    While this particular commit diverges client and server contexts
    further from each other, contrary to our stated goal of merging them
    together, I think the approach has a potential to become *the* way to
    do things throughout the stack. Ideally this will eliminate the method
    pairs of "doSomthing / doSomethingDirectly" from the API, which was a
    cornerstone of the graph management since Cayenne 1.0.

    Andrus

    On Apr 5, 2009, at 11:31 AM, Andrus Adamchik wrote:

    > Cool. I got a further along in my investigation. I will put the
    > details in a Jira and work on fixing it.
    >
    > Andrus
    >
    >
    > On Apr 4, 2009, at 8:31 AM, Andrey Razumovsky wrote:
    >
    >> Hi Andrus,
    >>
    >> I'm afraid I don't remember if it was done intentionally. I only
    >> know that
    >> the code is different from normal contexts' diff processing (that's
    >> why I
    >> feel a large refactoring is needed). Feel free to change the code, of
    >> course. Alternatively, if you open a JIRA and post you JUnit there,
    >> I'll
    >> have a look.
    >>
    >> Andrey
    >>
    >> 2009/4/3 Andrus Adamchik <andru..bjectstyle.org>
    >>
    >>> I am in the middle of debugging a problem with nested ROP contexts
    >>> losing
    >>> arc changes when committing to a parent context. Since I was not
    >>> involved in
    >>> the ROP nested context work, I figured I'd post my thoughts here
    >>> before I
    >>> start changing the code.
    >>>
    >>> I noticed that per CAY-1119, there is a special subclass of
    >>> ChildDiffLoader
    >>> called CayenneContextChildDiffLoader that calls 'propertyChanged'
    >>> on the
    >>> parent context after syncing a simple property change. It seems
    >>> like we need
    >>> to do the same for relationships as well, to record arc changes in
    >>> the
    >>> parent diff list.
    >>>
    >>> Andrey, do you have any comments on that? I wonder if it was omitted
    >>> intentionally. I will open a Jira (I think we don't have one for
    >>> this), and
    >>> add some tests with various relationships, but before I dig any
    >>> deeper
    >>> figured I'll need a sanity check.
    >>>
    >>> Thanks,
    >>> Andrus
    >>>
    >
    >



    This archive was generated by hypermail 2.0.0 : Sun Apr 05 2009 - 12:53:05 EDT