Author: craigmcc Date: Fri Jun 30 23:03:41 2006 New Revision: 418443 URL: http://svn.apache.org/viewvc?rev=418443&view=rev Log: Contribute to SHALE-125 (consistent exception handling strategy) by wrapping the call to the user's action method in a common exception handler.
Added: struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java (with props) Modified: struts/shale/trunk/shale-core/src/main/resources/META-INF/faces-config.xml Added: struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java URL: http://svn.apache.org/viewvc/struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java?rev=418443&view=auto ============================================================================== --- struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java (added) +++ struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java Fri Jun 30 23:03:41 2006 @@ -0,0 +1,95 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $Id$ + */ + +package org.apache.shale.view.faces; + +import javax.faces.event.ActionEvent; +import javax.faces.event.ActionListener; + +/** + * <p>Replacement for the default <code>ActionListener</code> implementation + * used during the <em>Invoke Application</em> phase of the request processing + * lifecycle.</p> + * + * @since 1.0.3 + */ +public final class ViewActionListener implements ActionListener { + + + // ------------------------------------------------------------- Constructor + + + /** + * <p>Create a new action listener instance.</p> + * + * @param original The original action listener instance we are wrapping + */ + public ViewActionListener(ActionListener original) { + this.original = original; + } + + + // ------------------------------------------------------ Instance Variables + + + /** + * <p>The original <code>ActionListener</code> instance we are wrapping.</p> + */ + private ActionListener original = null; + + + // -------------------------------------------------- ActionListener Methods + + + /** + * <p>Handle a default action event.</p> + * + * @param event The <code>ActionEvent</code> to be handled + */ + public void processAction(ActionEvent event) { + + // FIXME - this is probably not the final answer, but gives + // us a starting point to deal with application event handlers + // throwing exceptions in a way consistent with elsewhere + try { + original.processAction(event); + } catch (Exception e) { + handleException(e); + } + + } + + + // --------------------------------------------------------- Private Methods + + + /** + * <p>Handle the specified exception according to the strategy + * defined by our current [EMAIL PROTECTED] ExceptionHandler}.</p> + * + * @param exception Exception to be handled + */ + private void handleException(Exception exception) { + + ExceptionHandlerFactory.getInstance().getExceptionHandler(). + handleException(exception); + + } + + +} Propchange: struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewActionListener.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: struts/shale/trunk/shale-core/src/main/resources/META-INF/faces-config.xml URL: http://svn.apache.org/viewvc/struts/shale/trunk/shale-core/src/main/resources/META-INF/faces-config.xml?rev=418443&r1=418442&r2=418443&view=diff ============================================================================== --- struts/shale/trunk/shale-core/src/main/resources/META-INF/faces-config.xml (original) +++ struts/shale/trunk/shale-core/src/main/resources/META-INF/faces-config.xml Fri Jun 30 23:03:41 2006 @@ -34,6 +34,9 @@ <!-- Custom JSF Application Objects --> <application> + <action-listener> + org.apache.shale.view.faces.ViewActionListener + </action-listener> <navigation-handler> org.apache.shale.dialog.faces.DialogNavigationHandler </navigation-handler>