package org.jboss.seam.examples.booking.exceptioncontrol; import java.io.IOException; import javax.enterprise.context.NonexistentConversationException; import javax.faces.context.FacesContext; import javax.inject.Inject; import org.jboss.solder.logging.Logger; import org.jboss.solder.exception.control.CaughtException; import org.jboss.solder.exception.control.Handles; import org.jboss.solder.exception.control.HandlesExceptions; /** * handler those exceptions generated by conversations management * * @author <a href="http://community.jboss.org/people/spinner">Jose Freitas</a> */ @HandlesExceptions public class ConversationExceptionHandler { @Inject private FacesContext facesContext; /** * Handles the exception thrown at the end of a conversation redirecting * the flow to a pretty page instead of printing a stacktrace on the screen. * * @param event * @param log */ public void conversationEndedExceptionHandler(@Handles CaughtException<NonexistentConversationException> event, Logger log) { log.info("Conversation ended: " + event.getException().getMessage()); try { facesContext.getExternalContext().redirect("conversation_ended"); } catch (IOException e) { e.printStackTrace(); } } }