Hello,

I'm using the Layout component for authentication purposes. The general auth 
process is happening outside of the application via SSO, but all my pages have 
the Layout component.
Every time I request a page, The Layout component looks if a session user has 
been created, and if not, creates the user using a service and stores him in 
the session.
Now, at the end of the creation process, back in the Layout component, I want 
to redirect based on the roles a user has.
So I decide which page to redirect to based on the role, and do the following:

response and pageRenderLinkSource are both injected in the component.

response.sendRedirect(pageRenderLinkSource.createPageRenderLink(getPageForRole()));

But when redirecting, my Tomcat logs an exception:

java.lang.NullPointerException
                at 
org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl.isCompressable(CompressionAnalyzerImpl.java:34)
                at $CompressionAnalyzer_aae9007a21a5.isCompressable(Unknown 
Source)
                at 
org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl.isCompressable(ResponseCompressionAnalyzerImpl.java:78)
                at 
$ResponseCompressionAnalyzer_aae9007a219d.isCompressable(Unknown Source)
                at 
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:77)
                at 
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
                at 
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
                at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
                at sun.nio.cs.StreamEncoder.implClose(Unknown Source)
                at sun.nio.cs.StreamEncoder.close(Unknown Source)
                at java.io.OutputStreamWriter.close(Unknown Source)
                at java.io.BufferedWriter.close(Unknown Source)
                at java.io.PrintWriter.close(Unknown Source)
                at 
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:85)
                at 
$PageResponseRenderer_aae9007a2226.renderPageResponse(Unknown Source)
                at 
org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:85)
                at 
$RequestExceptionHandler_aae9007a21a9.handleRequestException(Unknown Source)
                at 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at 
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at 
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
                at $RequestHandler_aae9007a21ac.service(Unknown Source)
                at $RequestHandler_aae9007a21a0.service(Unknown Source)
                at 
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
                at 
org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown 
Source)
                at 
org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:27)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown 
Source)
                at 
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown 
Source)
                at 
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
                at $HttpServletRequestFilter_aae9007a219c.service(Unknown 
Source)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown 
Source)
                at 
org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
                at $HttpServletRequestHandler_aae9007a21a2.service(Unknown 
Source)
                at $HttpServletRequestHandler_aae9007a219b.service(Unknown 
Source)
                at 
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
                at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
                at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
                at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
                at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
                at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
                at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
                at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
Source)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
Source)
                at java.lang.Thread.run(Unknown Source)

What is the problem here? Can't I send a redirect from a component?

Or is there a better way to do this? Something that intercepts all requests, 
creates the session user and redirects if necessary?

Regards,
Daniel P.

Reply via email to