I'm loading applications directly from jar files and constructing
their context.  I ran into a problem where an application that
uses the Directory restlet would generate a null pointer exception.

That is, if I construct the context as:

         Context appContext = new Context(getLogger());

then I get this stack trace:

java.lang.NullPointerException
        at 
com.noelios.restlet.application.ApplicationClientDispatcher.parentHandle(ApplicationClientDispatcher.java:105)
        at 
com.noelios.restlet.application.ApplicationClientDispatcher.doHandle(ApplicationClientDispatcher.java:90)
        at 
com.noelios.restlet.TemplateDispatcher.handle(TemplateDispatcher.java:101)
        at org.restlet.Uniform.handle(Uniform.java:95)
        at org.restlet.Uniform.get(Uniform.java:83)
        at 
com.noelios.restlet.local.DirectoryResource.<init>(DirectoryResource.java:170)
        at com.noelios.restlet.Engine.createDirectoryResource(Engine.java:292)
        at org.restlet.Directory.findTarget(Directory.java:159)
        at org.restlet.Finder.handle(Finder.java:316)
        at org.restlet.Filter.doHandle(Filter.java:137)
        at org.restlet.Filter.handle(Filter.java:180)
        at org.restlet.Filter.doHandle(Filter.java:137)
        at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:117)
        at org.restlet.Filter.handle(Filter.java:180)
        at org.restlet.Filter.doHandle(Filter.java:137)
        at org.restlet.Filter.handle(Filter.java:180)
        at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:140)
        at 
com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:103)
        at org.restlet.Application.handle(Application.java:305)


I can solve this by constructing the application context from the component as:

         Context appContext =
Engine.getInstance().createHelper(MyComponent.this).createContext(getLogger().getName());

This seems rather non-obvious.... :(

--Alex Milowski

Reply via email to