cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Child Contexts
Date Thu, 05 Sep 2013 16:23:12 GMT
Here is how you create a child context in 3.2 (in 3.1 'newContext' was called 'getContext',
otherwise it is similar) :

ObjectContext context = runtime.newContext();
ObjectContext childContext = runtime.newContext((DataChannel) context);

I.e. the parent context is a channel of the child. The cast above is possible since DataContext
implements DataChannel.

Andrus


On Sep 5, 2013, at 5:04 PM, John Huss <johnthuss@gmail.com> wrote:

> You aren't creating the child context correctly.  I don't recall the proper
> way to do it in 3.1+
> 
> 
> On Thu, Sep 5, 2013 at 8:11 AM, Markus Reich <markus.reich@markusreich.at>wrote:
> 
>> ah ok, thx!
>> 
>> But I still don't understand the whole thing :-(
>> 
>> No the test reacts like this
>> 
>>  @Test
>>  public void testChildContext() {
>>    // create test instance
>>    MiiPickingcontainer container =
>> MiiPickingcontainer.createInstance(context, "9999", "9999", "JUNIT");
>>    context.commitChanges();
>> 
>>    Assert.assertEquals(0, context.modifiedObjects().size());
>>    ObjectContext childContext = runtime.newContext(context.getChannel());
>>    // move object to child context
>>    container = childContext.localObject(container);
>>    container.setStatusid(330);
>>    Assert.assertEquals(0, context.modifiedObjects().size());
>>    Assert.assertEquals(1, childContext.modifiedObjects().size());
>>    // commit childcontext
>>    childContext.commitChangesToParent();
>>    Assert.assertEquals(0, context.modifiedObjects().size());
>>    Assert.assertEquals(0, childContext.modifiedObjects().size());
>> }
>> 
>> and I thought the commitChangesToParent() moves the object from child to
>> parent context? So after the commitToParent() the data is written and
>> committed to db?
>> 
>> regards
>> Meex
>> 
>> 
>> 
>> 2013/9/5 John Huss <johnthuss@gmail.com>
>> 
>>> You have to assign the result of localObject.
>>> 
>>> John
>>> On Sep 5, 2013 12:59 AM, "Markus Reich" <markus.reich@markusreich.at>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I've a question concering child contexts, when I add an object to a
>> child
>>>> context with method localObject, I thought the object is really from
>>> parent
>>>> to child context?
>>>> 
>>>> But when I run the following JUnit Test, it doesn't fail, although it
>>>> should?
>>>> 
>>>>  @Test
>>>>  public void testChildContext() {
>>>>    // create test instance
>>>>    MiiPickingcontainer container =
>>>> MiiPickingcontainer.createInstance(context, "9999", "9999", "JUNIT");
>>>>    context.commitChanges();
>>>> 
>>>>    Assert.assertEquals(0, context.modifiedObjects().size());
>>>>    ObjectContext childContext =
>>> runtime.newContext(context.getChannel());
>>>>    // move object to child context
>>>>    childContext.localObject(container);
>>>>    container.setStatusid(330);
>>>>    Assert.assertEquals(1, context.modifiedObjects().size());
>>>>    Assert.assertEquals(0, childContext.modifiedObjects().size());
>>>>    // commit childcontext
>>>>    childContext.commitChangesToParent();
>>>>    Assert.assertEquals(1, context.modifiedObjects().size());
>>>>    Assert.assertEquals(0, childContext.modifiedObjects().size());
>>>> 
>>>>    // clean up
>>>>    context.deleteObjects(container);
>>>>    context.commitChanges();
>>>>  }
>>>> 
>>>> I'm using Cayenne 3.2M1
>>>> 
>>>> kind regards
>>>> 
>>>> Meex
>>>> 
>>> 
>> 
>> 
>> 
>> --
>> *Markus Reich*
>> Moosbach 28/2
>> 6392 St. Jakob i.H.
>> www.markusreich.at / www.meeximum.at
>> markus.reich@markusreich.at
>> 


Mime
View raw message