Hi,
Perhaps I haven't phrased this question quite right since I didn't get a
response... Let me try it again.
What I have is two contributions, a RequestFilter and a Dispatcher (the
code is just about identicle) both services have a dependancy on the
ApplicationStateManager, so I wire it by injecting it via the constructor:
//contribution
public void
contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration,
@InjectService("AccessController") Dispatcher
accessController) {
configuration.add("AccessController", accessController,
"before:PageRender");
}
//constructor
public AccessController(ApplicationStateManager asm){
this.asm_ = asm;
}
The Dispatcher seems to work perfectly, this simple test:
if(asm_.exists(UserAsoObject.class))
returns true/false, my state manager is working, however for the
RequestFilter, with virtually identical code, the same test returns a
NPE instead. I just wan't to understand where I am going wrong.
Thanks again,
Peter
Peter Stavrinides wrote:
Hi All,
I can get hold of the ApplicationStateManager using the Dispatcher
interface without a problem, however the same code fails using the
Tapestry RequestFilter interface? specifically
*if(asm_.exists(**UserAsoObject.class)**)) *returns a NPE. Would this
be a bug or shouldn't I be using it here in this way?
public class AccessController implements RequestFilter {
/* Our state manager. */
private ApplicationStateManager asm_;
public AccessController(ApplicationStateManager asm){
this.asm_ = asm;
}
@Override
public boolean service(Request request, Response response,
RequestHandler handler)
throws IOException {
*if(asm_.exists(UserAsoObject.class)) {*
UserAsoObject userObject =
asm_.get(UserAsoObject.class);
}
return handler.service(request,response);
}
produced the following stack trace:
java.lang.NullPointerException
at $Request_116a49796f3.getContextPath($Request_116a49796f3.java)
at $Request_116a49796d5.getContextPath($Request_116a49796d5.java)
at
org.apache.tapestry.internal.services.ClasspathAssetAliasManagerImpl.toClientURL(ClasspathAssetAliasManagerImpl.java:90)
at
$ClasspathAssetAliasManager_116a4979724.toClientURL($ClasspathAssetAliasManager_116a4979724.java)
at
org.apache.tapestry.internal.services.ClasspathAssetFactory.buildClientURL(ClasspathAssetFactory.java:84)
at
org.apache.tapestry.internal.services.ClasspathAssetFactory.clientURL(ClasspathAssetFactory.java:59)
at
org.apache.tapestry.internal.services.ClasspathAssetFactory.access$000(ClasspathAssetFactory.java:33)
at
org.apache.tapestry.internal.services.ClasspathAssetFactory$1.toClientURL(ClasspathAssetFactory.java:102)
at
org.apache.tapestry.internal.services.PageRenderSupportImpl.addStylesheetLink(PageRenderSupportImpl.java:109)
at
org.apache.tapestry.services.TapestryModule$17.renderMarkup(TapestryModule.java:1322)
at
$MarkupRenderer_116a4979727.renderMarkup($MarkupRenderer_116a4979727.java)
at
org.apache.tapestry.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
at
$PageMarkupRenderer_116a497971d.renderPageMarkup($PageMarkupRenderer_116a497971d.java)
at
org.apache.tapestry.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:56)
at
$PageResponseRenderer_116a49796f4.renderPageResponse($PageResponseRenderer_116a49796f4.java)
at
org.apache.tapestry.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:60)
at
$RequestExceptionHandler_116a49796e7.handleRequestException($RequestExceptionHandler_116a49796e7.java)
at
org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.java:536)
at
$RequestHandler_116a49796ec.service($RequestHandler_116a49796ec.java)
at
org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
at
$RequestHandler_116a49796ec.service($RequestHandler_116a49796ec.java)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:94)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:85)
at
org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:107)
at
$RequestHandler_116a49796ec.service($RequestHandler_116a49796ec.java)
at
$RequestHandler_116a49796e4.service($RequestHandler_116a49796e4.java)
at
org.apache.tapestry.services.TapestryModule$11.service(TapestryModule.java:921)
at
$HttpServletRequestHandler_116a49796e3.service($HttpServletRequestHandler_116a49796e3.java)
at
org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:164)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:406)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:295)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:827)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:361)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Here is the contribution:
/**
public void
contributeRequestHandler(OrderedConfiguration<RequestFilter>
configuration,
@InjectService("TimingFilter") RequestFilter filter,
@InjectService("AccessController") RequestFilter accessController) {
configuration.add("Timing", filter);
configuration.add("AccessController", accessController,
"before:PageRender");
}
Kind regards,
Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]