Check for null for each property you are setting inside of onPostAdd(),
like:

public void onPostAdd() {
    if (getProperty() == null) {
        setProperty(defaultValue);
    }
}

On Tue, Sep 1, 2015 at 2:59 PM Lon Varscsak <lon.varsc...@gmail.com> wrote:

> I thought of that and tried it, but it's a new uninitialized object.
> Basically the code I find in Cayenne is creating a new object in the parent
> ec, then merging in changes.  So when onPostAdd is called the object is
> brand new (no relationships set).
>
> -Lon
>
> On Tue, Sep 1, 2015 at 3:40 AM, Andrus Adamchik <and...@objectstyle.org>
> wrote:
>
> > Yeah, I must admit it is a bit messy. We may need to redesign callback
> > logic in respect to the nested contexts. For now your most obvious
> solution
> > is to check for the object state within 'onPostAdd' before changing it
> > again.
> >
> > if(getSomeProperty() == null) {
> >   // we haven't been called yet, so init the property
> >   setSomeProperty(..);
> > }
> >
> > Andrus
> >
> > > On Sep 1, 2015, at 1:04 AM, Lon Varscsak <lon.varsc...@gmail.com>
> wrote:
> > >
> > > So I am having trouble because when I call commitChangesToParent on one
> > of
> > > my nested ECs, I'm getting onPostAdd called.  So in my case, I'm using
> > > onPostAdd to "setup" my object by creating relationships and setting
> > > default values.  However, it's getting called twice.  Once when I
> create
> > > the object in the child context and once on the parent context (during
> > > commit).
> > >
> > > Any ideas on how to combat this?
> > >
> > > -Lon
> >
> >
>

Reply via email to