Example usage for org.apache.wicket.request IExceptionMapper IExceptionMapper

List of usage examples for org.apache.wicket.request IExceptionMapper IExceptionMapper

Introduction

In this page you can find the example usage for org.apache.wicket.request IExceptionMapper IExceptionMapper.

Prototype

IExceptionMapper

Source Link

Usage

From source file:gr.abiss.calipso.wicket.CalipsoApplication.java

License:Open Source License

/**
 * Maps exceptions to pages.//ww w. j a  va  2 s . c om
 */
@Override
public IProvider<IExceptionMapper> getExceptionMapperProvider() {
    return new IProvider<IExceptionMapper>() {
        @Override
        public IExceptionMapper get() {
            return new IExceptionMapper() {
                final DefaultExceptionMapper def = new DefaultExceptionMapper();

                @Override
                public IRequestHandler map(Exception ex) {
                    PageParameters par = new PageParameters().add("ex", ex);
                    boolean couldNotLock = false;
                    if (ex.getClass().equals(CouldNotLockPageException.class)) {
                        couldNotLock = true;
                    } else if (ex.getCause() != null
                            && (ex.getCause().getClass().equals(CouldNotLockPageException.class)
                                    || (ex.getCause().getCause() != null && ex.getCause().getCause().getClass()
                                            .equals(CouldNotLockPageException.class)))) {
                        couldNotLock = true;

                    }

                    if (couldNotLock) {
                        Request request = RequestCycle.get().getRequest();
                        HttpServletRequest httpRequest = ((ServletWebRequest) request).getContainerRequest();
                        logger.error("Page lock timed out, invalidating session");
                        if (httpRequest.getSession(false) != null) {
                            httpRequest.getSession().invalidate();
                        }
                        return new RenderPageRequestHandler(new PageProvider(LoginPage.class, par));
                    }
                    return def.map(ex);
                }
            };
        }
    };
}