package hu.sch.web.error;
import hu.sch.domain.user.User;
import hu.sch.services.SystemManagerLocal;
import hu.sch.web.PhoenixApplication;
import hu.sch.web.authz.UserAuthorization;
import hu.sch.web.kp.KorokPage;
import java.util.EnumMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.core.request.handler.IPageRequestHandler;
import org.apache.wicket.extensions.markup.html.basic.SmartLinkLabel;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.Strings;
/**
*
* @author aldaris
*/
public final class InternalServerError extends KorokPage {
@Override
protected void onInitialize() {
super.onInitialize();
setHeaderLabelText("Hiba!");
final SmartLinkLabel mailtoLink = new SmartLinkLabel("support", "https://support.sch.bme.hu");
add(mailtoLink);
}
public InternalServerError() {
}
public InternalServerError(final RequestCycle cycle, final IPageRequestHandler handler,
final Exception ex) {
final Class<? extends IRequestablePage> pageClass = handler.getPageClass();
final PageParameters pageParameters = handler.getPageParameters();
final Request request = cycle.getRequest();
final HttpServletRequest servletRequest =
(HttpServletRequest) request.getContainerRequest();
final UserAuthorization authComponent =
((PhoenixApplication) getApplication()).getAuthorizationComponent();
final User userAttributes = authComponent.getUserAttributes(request);
final Map<SystemManagerLocal.EXC_REPORT_KEYS, String> exceptionParams =
new EnumMap(SystemManagerLocal.EXC_REPORT_KEYS.class);
if (pageClass != null) {
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_NAME,
pageClass.getName());
}
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_PATH,
request.getClientUrl().toString());
if (pageParameters != null) {
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_PARAMS,
pageParameters.toString());
}
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.REMOTE_USER,
authComponent.getRemoteUser(request));
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.REMOTE_ADDRESS,
servletRequest.getRemoteAddr());
if (userAttributes != null) { //null with dummyauth
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.EMAIL,
userAttributes.getEmailAddress());
}
final Long userId = authComponent.getUserid(request);
if (userId != null) {
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.VIRID,
userId.toString());
}
exceptionParams.put(SystemManagerLocal.EXC_REPORT_KEYS.EXCEPTION,
Strings.toString(ex));
systemManager.sendExceptionReportMail(exceptionParams);
}
@Override
public boolean isVersioned() {
return false;
}
@Override
public boolean isErrorPage() {
return true;
}
}