You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Joe Baldwin <jf...@earthlink.net> on 2010/04/22 16:46:25 UTC

Re: cayenne wicket unit test => Current thread has no bound ObjectContext

Arnaud,

I read right past the "Wicket" reference; it appears that you are creating a webapp.  Michael is correct.  The cayenne filter creates and binds the ObjectContext for you in this case.

Sorry for the confusion,
Joe


On Apr 22, 2010, at 10:13 AM, Michael Gentry wrote:

> Did you configure your web.xml file to use the Cayenne web filter?  In
> my application (which is Tapestry, but should apply to Wicket, I
> think) I have:
> 
>    <filter>
>        <filter-name>Cayenne Filter</filter-name>
>        <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
>    </filter>
>    <filter-mapping>
>        <filter-name>Cayenne Filter</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
> 
> mrg
> 
> 
> On Thu, Apr 22, 2010 at 10:00 AM, Arnaud Garcia <ar...@imagemed-87.com> wrote:
>> Hello,
>> 
>> I am working on a Wicket Cayenne application and when I launch the tests I
>> have an error when the DataContext is initialized:
>> 
>> This line, DataContext ctxt = (DataContext)
>> DataContext.getThreadObjectContext();  throws an
>> 
>> java.lang.IllegalStateException: Current thread has no bound ObjectContext
>> 
>> 
>> Well, any ideas to set up correctly the tests ?
>> 
>> thanks
>> 
>> 
>> Arnaud
>> 


Re: cayenne wicket unit test => Current thread has no bound ObjectContext

Posted by Joe Baldwin <jf...@earthlink.net>.
Arnaud,

Michael is the expert. But my understanding is that the current recommended procedure is to message the BaseContext. Example:

	ObjectContext oc = BaseContext.getThreadObjectContext();
	... create a query
	List list = oc.performQuery(query);

Joe

On Apr 22, 2010, at 11:59 AM, Arnaud Garcia wrote:

> thanks for answers...
> so,
> 
> Yes I am doing a Webapp and I have in my web.xml the cayenne filter....
> 
> I am not sure to understand what is the good way to retrieve the
> DataContext... Each time I need it I thought I just need to do
> (DataContext) DataContext.getThreadObjectContext();
> 
> So now I just have to do change the DataContext by the BaseContext
> BaseContext.getThreadObjectContext();
> 
> since the filter correctly initialized and bind it  to the Thread ....
> 
> is it ok ?
> 
> 
> 
> 
> 2010/4/22 Joe Baldwin <jf...@earthlink.net>
> 
>> Arnaud,
>> 
>> I read right past the "Wicket" reference; it appears that you are creating
>> a webapp.  Michael is correct.  The cayenne filter creates and binds the
>> ObjectContext for you in this case.
>> 
>> Sorry for the confusion,
>> Joe
>> 
>> 
>> On Apr 22, 2010, at 10:13 AM, Michael Gentry wrote:
>> 
>>> Did you configure your web.xml file to use the Cayenne web filter?  In
>>> my application (which is Tapestry, but should apply to Wicket, I
>>> think) I have:
>>> 
>>>   <filter>
>>>       <filter-name>Cayenne Filter</filter-name>
>>> 
>> <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
>>>   </filter>
>>>   <filter-mapping>
>>>       <filter-name>Cayenne Filter</filter-name>
>>>       <url-pattern>/*</url-pattern>
>>>   </filter-mapping>
>>> 
>>> mrg
>>> 
>>> 
>>> On Thu, Apr 22, 2010 at 10:00 AM, Arnaud Garcia <ar...@imagemed-87.com>
>> wrote:
>>>> Hello,
>>>> 
>>>> I am working on a Wicket Cayenne application and when I launch the tests
>> I
>>>> have an error when the DataContext is initialized:
>>>> 
>>>> This line, DataContext ctxt = (DataContext)
>>>> DataContext.getThreadObjectContext();  throws an
>>>> 
>>>> java.lang.IllegalStateException: Current thread has no bound
>> ObjectContext
>>>> 
>>>> 
>>>> Well, any ideas to set up correctly the tests ?
>>>> 
>>>> thanks
>>>> 
>>>> 
>>>> Arnaud
>>>> 
>> 
>> 


Re: cayenne wicket unit test => Current thread has no bound ObjectContext

Posted by Michael Gentry <mg...@masslight.net>.
In my case I had a common superclass with a getDataContext() method
which would retrieve the one stored/bound to the current thread by the
filter.  Here is the relevant code I used:


private DataContext dataContext;

public DataContext getDataContext()
{
    if (dataContext == null)
        dataContext = (DataContext) BaseContext.getThreadObjectContext();

    return dataContext;
}


The only reason I cache the dataContext is to save a slight amount of
processing time.  Probably overkill for my purposes.

Hope that helps,

mrg


On Thu, Apr 22, 2010 at 11:59 AM, Arnaud Garcia <ar...@imagemed-87.com> wrote:
> thanks for answers...
> so,
>
> Yes I am doing a Webapp and I have in my web.xml the cayenne filter....
>
> I am not sure to understand what is the good way to retrieve the
> DataContext... Each time I need it I thought I just need to do
> (DataContext) DataContext.getThreadObjectContext();
>
> So now I just have to do change the DataContext by the BaseContext
> BaseContext.getThreadObjectContext();
>
> since the filter correctly initialized and bind it  to the Thread ....
>
> is it ok ?
>
>
>
>
> 2010/4/22 Joe Baldwin <jf...@earthlink.net>
>
>> Arnaud,
>>
>> I read right past the "Wicket" reference; it appears that you are creating
>> a webapp.  Michael is correct.  The cayenne filter creates and binds the
>> ObjectContext for you in this case.
>>
>> Sorry for the confusion,
>> Joe
>>
>>
>> On Apr 22, 2010, at 10:13 AM, Michael Gentry wrote:
>>
>> > Did you configure your web.xml file to use the Cayenne web filter?  In
>> > my application (which is Tapestry, but should apply to Wicket, I
>> > think) I have:
>> >
>> >    <filter>
>> >        <filter-name>Cayenne Filter</filter-name>
>> >
>>  <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
>> >    </filter>
>> >    <filter-mapping>
>> >        <filter-name>Cayenne Filter</filter-name>
>> >        <url-pattern>/*</url-pattern>
>> >    </filter-mapping>
>> >
>> > mrg
>> >
>> >
>> > On Thu, Apr 22, 2010 at 10:00 AM, Arnaud Garcia <ar...@imagemed-87.com>
>> wrote:
>> >> Hello,
>> >>
>> >> I am working on a Wicket Cayenne application and when I launch the tests
>> I
>> >> have an error when the DataContext is initialized:
>> >>
>> >> This line, DataContext ctxt = (DataContext)
>> >> DataContext.getThreadObjectContext();  throws an
>> >>
>> >> java.lang.IllegalStateException: Current thread has no bound
>> ObjectContext
>> >>
>> >>
>> >> Well, any ideas to set up correctly the tests ?
>> >>
>> >> thanks
>> >>
>> >>
>> >> Arnaud
>> >>
>>
>>
>

Re: cayenne wicket unit test => Current thread has no bound ObjectContext

Posted by Arnaud Garcia <ar...@imagemed-87.com>.
thanks for answers...
so,

Yes I am doing a Webapp and I have in my web.xml the cayenne filter....

I am not sure to understand what is the good way to retrieve the
DataContext... Each time I need it I thought I just need to do
(DataContext) DataContext.getThreadObjectContext();

So now I just have to do change the DataContext by the BaseContext
BaseContext.getThreadObjectContext();

since the filter correctly initialized and bind it  to the Thread ....

is it ok ?




2010/4/22 Joe Baldwin <jf...@earthlink.net>

> Arnaud,
>
> I read right past the "Wicket" reference; it appears that you are creating
> a webapp.  Michael is correct.  The cayenne filter creates and binds the
> ObjectContext for you in this case.
>
> Sorry for the confusion,
> Joe
>
>
> On Apr 22, 2010, at 10:13 AM, Michael Gentry wrote:
>
> > Did you configure your web.xml file to use the Cayenne web filter?  In
> > my application (which is Tapestry, but should apply to Wicket, I
> > think) I have:
> >
> >    <filter>
> >        <filter-name>Cayenne Filter</filter-name>
> >
>  <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
> >    </filter>
> >    <filter-mapping>
> >        <filter-name>Cayenne Filter</filter-name>
> >        <url-pattern>/*</url-pattern>
> >    </filter-mapping>
> >
> > mrg
> >
> >
> > On Thu, Apr 22, 2010 at 10:00 AM, Arnaud Garcia <ar...@imagemed-87.com>
> wrote:
> >> Hello,
> >>
> >> I am working on a Wicket Cayenne application and when I launch the tests
> I
> >> have an error when the DataContext is initialized:
> >>
> >> This line, DataContext ctxt = (DataContext)
> >> DataContext.getThreadObjectContext();  throws an
> >>
> >> java.lang.IllegalStateException: Current thread has no bound
> ObjectContext
> >>
> >>
> >> Well, any ideas to set up correctly the tests ?
> >>
> >> thanks
> >>
> >>
> >> Arnaud
> >>
>
>