COM-103 - Fix error handling
diff --git a/src/main/java/org/openldap/commander/ApplicationContext.java b/src/main/java/org/openldap/commander/ApplicationContext.java
index 9b4afe0..fce73dd 100644
--- a/src/main/java/org/openldap/commander/ApplicationContext.java
+++ b/src/main/java/org/openldap/commander/ApplicationContext.java
@@ -17,11 +17,15 @@
import org.apache.wicket.Page;
import org.apache.wicket.Session;
+import org.apache.wicket.core.request.handler.PageProvider;
+import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
+import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
-import org.openldap.fortress.cfg.Config;
/**
* @author Shawn McKinney
@@ -30,26 +34,27 @@
public class ApplicationContext extends WebApplication
{
@Override
- public Session newSession(Request request, Response response)
+ public Session newSession( Request request, Response response )
{
- return new RbacSession(request);
+ return new RbacSession( request );
}
@Override
public void init()
{
super.init();
- getComponentInstantiationListeners().add(new SpringComponentInjector(this));
- getRequestCycleListeners().add(new CommanderRequestCycleListener());
- getMarkupSettings().setStripWicketTags(true);
+ getComponentInstantiationListeners().add( new SpringComponentInjector( this ) );
- //getApplicationSettings().setPageExpiredErrorPage(LaunchPage.class);
- //IResourceSettings.setThrowExceptionOnMissingResource(true);
- // mounting login page so that it can be referred to in the security constraint
- //mountPage( "/login", LoginPage.class );
- //mountPage( "/login", LoginPage.class );
- //mountPage( "/app/login", LoginPage.class );
- //mountBookmarkablePage( "/login", LoginPage.class );
+ // Catch runtime exceptions this way:
+ getRequestCycleListeners().add( new AbstractRequestCycleListener()
+ {
+ @Override
+ public IRequestHandler onException( RequestCycle cycle, Exception e )
+ {
+ return new RenderPageRequestHandler( new PageProvider( new ErrorPage( e ) ) );
+ }
+ } );
+ getMarkupSettings().setStripWicketTags( true );
}
public Class<? extends Page> getHomePage()
diff --git a/src/main/java/org/openldap/commander/CommanderRequestCycleListener.java b/src/main/java/org/openldap/commander/CommanderRequestCycleListener.java
index 1508d70..7a86ccb 100644
--- a/src/main/java/org/openldap/commander/CommanderRequestCycleListener.java
+++ b/src/main/java/org/openldap/commander/CommanderRequestCycleListener.java
@@ -31,6 +31,7 @@
* @author Shawn McKinney
* @version $Rev$
*/
+@Deprecated
public class CommanderRequestCycleListener extends AbstractRequestCycleListener
{
private static final Logger LOG = Logger.getLogger( CommanderRequestCycleListener.class.getName() );
diff --git a/src/main/java/org/openldap/commander/ErrorPage.java b/src/main/java/org/openldap/commander/ErrorPage.java
index 8fd1159..5a545e5 100644
--- a/src/main/java/org/openldap/commander/ErrorPage.java
+++ b/src/main/java/org/openldap/commander/ErrorPage.java
@@ -26,6 +26,14 @@
*/
public class ErrorPage extends CommanderBasePage
{
+ public ErrorPage( Exception e )
+ {
+ add( new Label( "title", new Model<String>( "Runtime Exception Occurred" ) ) );
+ add( new Label( "message", new Model<String>( e.getLocalizedMessage() ) ) );
+ add( new BookmarkablePageLink( "homePage", getApplication().getHomePage() ) );
+ }
+
+ @Deprecated
public ErrorPage( final PageParameters parameters )
{
add( new Label( "title", new Model<String>( parameters.get( "title" ).toString() ) ) );
diff --git a/src/main/resources/org/openldap/commander/ErrorPage.html b/src/main/resources/org/openldap/commander/ErrorPage.html
index 60f42e5..4c6fb1a 100644
--- a/src/main/resources/org/openldap/commander/ErrorPage.html
+++ b/src/main/resources/org/openldap/commander/ErrorPage.html
@@ -12,7 +12,7 @@
~ top-level directory of the distribution or, alternatively, at
~ <http://www.OpenLDAP.org/license.html>.
-->
-<html>
+<html xmlns:wicket="http://www.w3.org/1999/XSL/Transform">
<head></head>
<body>
<wicket:extend>