Mostly historical reasons - nesting support evolved over time and IIRC ROP 
version didn't have it initially. I think we can make this change now in 3.2. 

Andrus


On Sep 5, 2013, at 9:42 PM, John Huss <johnth...@gmail.com> wrote:
> So why not make ObjectContext extend DataChannel?  BaseContext already
> implements both anyway.  Having to cast it is not really intuitive /
> friendly.
> 
> John
> 
> ---------- Forwarded message ----------
> From: Andrus Adamchik <and...@objectstyle.org>
> Date: Thu, Sep 5, 2013 at 11:23 AM
> Subject: Re: Child Contexts
> To: u...@cayenne.apache.org
> 
> 
> 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 <johnth...@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.re...@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 <johnth...@gmail.com>
>>> 
>>>> You have to assign the result of localObject.
>>>> 
>>>> John
>>>> On Sep 5, 2013 12:59 AM, "Markus Reich" <markus.re...@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.re...@markusreich.at
>>> 

Reply via email to