package de.flower.rmt.ui.page.error;
import de.flower.rmt.ui.page.base.AbstractBaseLayoutPage;
import de.flower.rmt.ui.page.base.AnonymousNavigationPanel;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.IFeedbackMessageFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* @author flowerrrr
*/
public class InternalError500Page extends AbstractBaseLayoutPage {
private final static Logger log = LoggerFactory.getLogger(InternalError500Page.class);
public InternalError500Page() {
setHeading("error.500.heading", "error.500.heading.sub");
add(new AnonymousNavigationPanel());
addMainPanel(new InternalError500Panel(getException()));
}
@Override
protected boolean showAlertMessages() {
// not nice to see alert messages on error pages. confuses the user.
return false;
}
private Exception getException() {
List<FeedbackMessage> messages = getSession().getFeedbackMessages().messages(new IFeedbackMessageFilter() {
@Override
public boolean accept(final FeedbackMessage message) {
return message.getMessage() instanceof Exception;
}
});
if (messages.isEmpty()) {
log.warn("Could not extract exception from session");
return null;
} else if (messages.size() > 1) {
log.warn("More than one exception found in sesion. Did you cleanup feedbackmessages properly?");
}
FeedbackMessage message = messages.get(messages.size() - 1);
message.markRendered();
return (Exception) message.getMessage();
}
}