Re: lifecycle callbacks not always fired

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Fri Mar 16 2007 - 07:48:17 EDT

  • Next message: Frank: "How do I filter on mysql date?"

    Yeah, migrating to ObjectContext is now a prerequisite.

    Won't comment on the specifics now, but the design direction with
    this was to minimize the number of methods in the ObjectContext
    interface, so a few DataContext methods didn't make it there. I guess
    we need to pull to DataObjectUtils any remaining "derived"
    DataContext methods that can be executed on a generic ObjectContext.

    Andrus

    On Mar 16, 2007, at 2:27 AM, Lachlan Deck wrote:
    > Hello again,
    >
    > On 15/03/2007, at 12:15 AM, Andrus Adamchik wrote:
    >
    >> One last try at guessing it. On the server you have to do some
    >> magic to enable callbacks (hopefully eventually this will be more
    >> transparent). See "Enabling Callbacks" chapter at the bottom of
    >> this page:
    >>
    >> http://cayenne.apache.org/doc/lifecycle-callbacks.html
    >>
    >> if this doesn't help, please file a bug with code samples.
    >
    > You were right. I'd not read far enough down the page. It is
    > somewhat convoluted to implement I must say. I'm now subclassing
    > ObjectContextCallbackInterceptor to add a couple of methods to it
    > (e.g., like hasChanges() etc from DataContext).
    >
    > There's one other problem that this now imposes: previously using a
    > DataContext we could do:
    > Object someInstance = dc.objectFromDataRow( entityClass,
    > someDataRow, refreshes );
    >
    > Would this now be the best solution?
    >
    > public class ObjectContext extends ObjectContextCallbackInterceptor
    > {
    > private DataContext _dataContext;
    > <...>
    > public DataObject objectFromDataRow( Class entityClass, DataRow
    > paymentRow, boolean refresh )
    > {
    > DataObject anObject;
    >
    > anObject = _dataContext.objectFromDataRow( entityClass,
    > paymentRow, refresh );
    > if ( anObject != null )
    > return ( DataObject )localObject( anObject.getObjectId(),
    > anObject );
    > return null;
    > }
    > }
    >
    > Otherwise it seems to return an object that seems to be in the
    > wrong context so far as addToOneRelationship etc is concerned...
    >
    > Be nice if ObjectContext, DataContext et al were better unified. Or
    > that DataObjectUtils could return an object for a DataRow to
    > abstract all this.
    >
    > with regards,
    > --
    >
    > Lachlan Deck
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Mar 16 2007 - 07:48:54 EDT