package org.jboss.seam.exception;
import javax.faces.application.FacesMessage.Severity;
import org.jboss.seam.core.Expressions;
import org.jboss.seam.core.Expressions.ValueExpression;
/**
* Implements <redirect/> for pages.xml
*
* @author Gavin King
*
*/
public final class ConfigRedirectHandler extends RedirectHandler
{
private final ValueExpression<String> id;
private final Class clazz;
private final boolean conversation;
private final String message;
private final Severity messageSeverity;
/**
* Construct a ConfigRedirectHandler.
*
*/
public ConfigRedirectHandler(ValueExpression<String> id, Class clazz, boolean conversation, String message, Severity messageSeverity)
{
this.id = id;
this.clazz = clazz;
this.conversation = conversation;
this.message = message;
this.messageSeverity = messageSeverity;
}
@Deprecated
public ConfigRedirectHandler(String id, Class clazz, boolean conversation, String message, Severity messageSeverity)
{
this(Expressions.instance().createValueExpression(id, String.class), clazz, conversation, message, messageSeverity);
}
@Override
protected String getMessage(Exception e)
{
return message;
}
@Override
protected String getViewId(Exception e)
{
if (id != null)
{
return id.getValue();
}
else
{
return null;
}
}
@Override
public boolean isHandler(Exception e)
{
return clazz.isInstance(e);
}
@Override
protected boolean isEnd(Exception e)
{
return conversation;
}
@Override
public Severity getMessageSeverity(Exception e)
{
return messageSeverity;
}
}