package org.jboss.seam.exception;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.faces.FacesManager;
import org.jboss.seam.faces.RedirectException;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
/**
* Implements automagic redirection to the Seam debug page.
*
* @author Gavin King
*
*/
public class DebugPageHandler extends ExceptionHandler
{
private static final LogProvider log = Logging.getLogProvider(DebugPageHandler.class);
@Override
public void handle(Exception e) throws Exception
{
log.debug("redirecting to debug page", e); //no need to be noisy, ExceptionFilter already logs it
org.jboss.seam.faces.Redirect redirect = org.jboss.seam.faces.Redirect.instance();
redirect.setViewId("/debug.xhtml");
FacesManager manager = FacesManager.instance();
manager.beforeRedirect("/debug.xhtml");
redirect.setParameter( manager.getConversationIdParameter(), manager.getCurrentConversationId() );
try
{
redirect.execute();
}
catch (RedirectException re)
{
//do nothing
log.debug("could not redirect", re);
}
Contexts.getConversationContext().flush();
}
@Override
public boolean isHandler(Exception e)
{
return true;
}
@Override
public String toString()
{
return "DebugPageHandler";
}
}