Maybe down to: "Important Context Changes" dated 29/07/2008


"- the Context instance given to an application (or any Restlet actually) will be the one effectively used. If parameters are set, they will be directly and permanently accessible. If none is given, a null context will be returned by getContext(), no default context will be returned anymore."

Tim Peierls wrote:
Chris,

I managed to get some slightly less limited connectivity out here in the Maine woods.

When you do discover what changes between m4 and m5 caused Context.getContext() to return null in m5, I think it might be a good idea to change FinderFactoryModule so that subclasses can override the default Provider<Request>, Provider<Response>, and Provider<Context> definitions.

I won't be back to full connectivity until the 21st, but you could make this change in your local code by creating three protected methods in FinderFactoryModule and moving the "new Provider..." code in the configure() method to these new methods. I'll give the example for Context:

               // in configure()
               bind(Context.class)
                .toProvider(newContextProvider());

    // new method in FinderFactoryModule
    protected Provider<Context> newContextProvider() {
        return new Provider<Context>() {
            public Context get() { return Context.getCurrent(); }
        });
    }

Then whenever you need a non-standard Context provider, you can say:

    FinderFactoryModule ffm = new FinderFactoryModule() {
        protected Provider<Context> newContextProvider() {
            return ...; // your non-standard Context provision code here
        }
    };

This doesn't answer the most important question -- why does Context.getContext() return null -- but it might give you a workaround.

--tim


On Wed, Aug 13, 2008 at 4:54 PM, Chris Lee <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Hey guys, I followed Tim Peierls' excellent tutorial on using
    Guice in Restlets
    (found at
    http://tembrel.blogspot.com/2008/07/resource-dependency-injection-in.html)
    and
    found that, while it works quite well with 1.1m4, it does not work
    with 1.1m5.

    The error seems to be in the Guice Provider for the Context class;
    it relies on
    Context.getCurrent() which is returning null when called from
    within the custom
    Finder. I have downloaded the source for m4 and m5, and am looking
    into writing
    a patch for Tim's code to let it work with m5, but I am not
    optimistic if I
    cannot get the current context from within the Finder.

    If I get it to work, I will post the results here and on Tim's
    blog, but I was
    hoping someone here (Tim suggested Jerome) might be able to give
    me some advice
    on the matter.

    Thanks!

    Chris Lee



Reply via email to