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

From: Michael Gentry (mgentr..asslight.net)
Date: Thu Apr 22 2010 - 12:20:12 EDT

  • Next message: Arnaud Garcia: "different ObjectContext..."

    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 <arnau..magemed-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 <jfbaldwi..arthlink.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 <arnau..magemed-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
    >> >>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Thu Apr 22 2010 - 12:21:15 EDT