Author: rich Date: Wed Jan 26 17:29:48 2005 New Revision: 126567 URL: http://svn.apache.org/viewcvs?view=rev&rev=126567 Log: Added an abstraction for reporting events like "FlowController Created", "Action Raised", etc. The EventReporter is determined by the ServletContainerAdapter, and the default implementation simply logs debug-level messages. This is a hook for allowing container-specific runtime monitoring (not implemented anywhere yet :)).
DRT/BVT: netui (WinXP) BB: self (linux) Added: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowEventReporter.java (contents, props changed) Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java&r1=126566&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java (original) +++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/ForwardModel.java Wed Jan 26 17:29:48 2005 @@ -54,8 +54,8 @@ public ForwardModel( String name, String path, StrutsApp parent ) { super( parent ); - this._name = name; - this._path = path; + _name = name; + _path = path; } public void writeToXMLBean( Forward xb ) @@ -186,7 +186,7 @@ public void setReturnToPage( boolean returnToPage ) { - this._returnToPage = returnToPage; + _returnToPage = returnToPage; } public boolean isReturnToAction() @@ -196,7 +196,7 @@ public void setReturnToAction( boolean returnToAction ) { - this._returnToAction = returnToAction; + _returnToAction = returnToAction; } public void setIsNestedReturn( boolean nestedReturn ) @@ -211,7 +211,7 @@ public void setReturnFormType( String returnFormType ) { - this._returnFormType = returnFormType; + _returnFormType = returnFormType; } public String getReturnFormMember() @@ -221,7 +221,7 @@ public void setReturnFormMember( String returnFormMember ) { - this._returnFormMember = returnFormMember; + _returnFormMember = returnFormMember; } public boolean getContextRelative() @@ -231,7 +231,7 @@ public void setContextRelative( boolean contextRelative ) { - this._contextRelative = contextRelative; + _contextRelative = contextRelative; } public String getName() @@ -241,7 +241,7 @@ public void setName( String name ) { - this._name = name; + _name = name; } public String getPath() @@ -251,7 +251,7 @@ public void setPath( String path ) { - this._path = path; + _path = path; } public boolean isRedirect() @@ -261,8 +261,8 @@ public void setRedirect( boolean redirect ) { - this._redirect = redirect; - this._hasExplicitRedirectValue = redirect; + _redirect = redirect; + _hasExplicitRedirectValue = redirect; } public boolean isExternalRedirect() @@ -272,8 +272,8 @@ public void setExternalRedirect( boolean externalRedirect ) { - this._externalRedirect = externalRedirect; - setRedirect( externalRedirect ); + _externalRedirect = externalRedirect; + if ( externalRedirect ) setRedirect( externalRedirect ); } public boolean isRestoreQueryString() Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DefaultServletContainerAdapter.java Wed Jan 26 17:29:48 2005 @@ -19,21 +19,30 @@ import org.apache.beehive.netui.pageflow.internal.PageFlowBeanContext; import org.apache.beehive.netui.pageflow.internal.AdapterContext; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.security.auth.login.LoginException; import org.apache.beehive.controls.api.context.ControlBeanContext; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; public abstract class DefaultServletContainerAdapter implements ServletContainerAdapter { + private static final Logger _log = Logger.getInstance( DefaultServletContainerAdapter.class ); + private static boolean _productionMode = true; - private ServletContext _servletContext = null; + private ServletContext _servletContext; + private PageFlowEventReporter _eventReporter; static { @@ -142,10 +151,191 @@ Object servletContext = context.getExternalContext(); assert servletContext instanceof ServletContext : servletContext; _servletContext = ( ServletContext ) servletContext; + _eventReporter = new DefaultEventReporter( _servletContext ); } public String getPlatformName() { return "generic"; + } + + public PageFlowEventReporter getEventReporter() + { + return _eventReporter; + } + + /** + * Default event reporter. Logs every event when the log level is set to "debug" or "trace". + */ + public static class DefaultEventReporter + extends PageFlowEventReporter + { + protected DefaultEventReporter( ServletContext servletContext ) + { + super( servletContext ); + } + + public void actionRaised( FlowController flowController, ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "actionRaised" ); + msg.addParam( "FlowController", flowController ); + msg.addParam( "ActionMapping", mapping ); + msg.addParam( "ActionForm", form ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void actionSuccess( FlowController flowController, ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response, ActionForward result ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "actionSuccess" ); + msg.addParam( "FlowController", flowController ); + msg.addParam( "ActionMapping", mapping ); + msg.addParam( "ActionForm", form ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + msg.addParam( "ActionForward", result ); + _log.debug( msg ); + } + } + + public void exceptionRaised( Throwable ex, ActionMapping actionMapping, ActionForm form, + FlowController flowController, HttpServletRequest request, + HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "exceptionRaised" ); + msg.addParam( "Throwable", ex ); + msg.addParam( "ActionMapping", actionMapping ); + msg.addParam( "ActionForm", form ); + msg.addParam( "FlowController", flowController ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void exceptionHandled( Throwable ex, ActionMapping actionMapping, ActionForm form, + FlowController flowController, HttpServletRequest request, + HttpServletResponse response, ActionForward result ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "exceptionHandled" ); + msg.addParam( "Throwable", ex ); + msg.addParam( "ActionMapping", actionMapping ); + msg.addParam( "ActionForm", form ); + msg.addParam( "FlowController", flowController ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + msg.addParam( "ActionForward", result ); + _log.debug( msg ); + } + } + + public void flowControllerCreated( FlowController flowController, HttpServletRequest request, + HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "flowControllerCreated" ); + msg.addParam( "FlowController", flowController ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void flowControllerDestroyed( FlowController flowController ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "flowControllerDestroyed" ); + msg.addParam( "FlowController", flowController ); + _log.debug( msg ); + } + } + + public void beginActionRequest( HttpServletRequest request, HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "beginActionRequest" ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void endActionRequest( HttpServletRequest request, HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "endActionRequest" ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void beginPageRequest( HttpServletRequest request, HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "beginPageRequest" ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + public void endPageRequest( HttpServletRequest request, HttpServletResponse response ) + { + if ( _log.isDebugEnabled() ) + { + LogMsg msg = new LogMsg( "endPageRequest" ); + msg.addParam( "Request", request != null ? request.getRequestURI() : null ); + msg.addParam( "Response", response ); + _log.debug( msg ); + } + } + + private static class LogMsg + { + private String _eventName; + private StringBuilder _logMessage; + + public LogMsg( String eventName ) + { + _eventName = eventName; + } + + public void addParam( String name, Object value ) + { + if ( _logMessage == null ) + { + _logMessage = new StringBuilder( _eventName ).append( ": " ); + } + else + { + _logMessage.append( ", " ); + } + + _logMessage.append( name ).append( '=' ).append( value ); + } + + public String toString() + { + return _logMessage == null ? _eventName : _logMessage.toString(); + } + } } } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java Wed Jan 26 17:29:48 2005 @@ -23,6 +23,7 @@ import org.apache.beehive.netui.pageflow.internal.ContextCache; import org.apache.beehive.netui.pageflow.internal.InternalUtils; import org.apache.beehive.netui.pageflow.internal.InternalExpressionUtils; +import org.apache.beehive.netui.pageflow.internal.AdapterManager; import org.apache.beehive.netui.pageflow.handler.LoginHandler; import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler; import org.apache.beehive.netui.pageflow.scoping.ScopedRequest; @@ -329,6 +330,10 @@ HttpServletResponse response ) throws Exception { + ServletContainerAdapter sca = AdapterManager.getServletContainerAdapter( getServletContext() ); + PageFlowEventReporter eventReporter = sca.getEventReporter(); + eventReporter.actionRaised( this, mapping, form, request, response ); + // // If we handled an exception in onCreate, just forward to the result of that. // @@ -425,7 +430,9 @@ retVal = getActionMethodForward( actionName, unwrappedForm, request, response, mapping ); } - return forwardTo( retVal, mapping, request, response, actionName, null, form, servletContext ); + ActionForward ret = forwardTo( retVal, mapping, request, response, actionName, null, form, servletContext ); + eventReporter.actionSuccess( this, mapping, form, request, response, ret ); + return ret; } catch ( Exception e ) { @@ -530,12 +537,18 @@ { setPerRequestState( prevState ); } + + PageFlowEventReporter er = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter(); + er.flowControllerCreated( this, request, response ); } void destroy( HttpSession session ) { onDestroy(); // for backwards compatiblity super.destroy( session ); + + PageFlowEventReporter er = AdapterManager.getServletContainerAdapter( getServletContext() ).getEventReporter(); + er.flowControllerDestroyed( this ); } /** Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java Wed Jan 26 17:29:48 2005 @@ -771,14 +771,21 @@ return _returnToType == RETURN_TO_PREVIOUS_ACTION || _returnToType == RETURN_TO_ACTION_INTERNAL; } + /** + * Tell whether this is a redirect to a URI outside of the current web application. + */ public boolean isExternalRedirect() { return _externalRedirect; } - public void setExternalRedirect(boolean externalRedirect) + /** + * Specify that this is a redirect to a URI outside of the current web application. + */ + public void setExternalRedirect( boolean externalRedirect ) { _externalRedirect = externalRedirect; + if ( externalRedirect ) setRedirect( true ); } boolean restoreQueryString() Added: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowEventReporter.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowEventReporter.java?view=auto&rev=126567 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowEventReporter.java Wed Jan 26 17:29:48 2005 @@ -0,0 +1,70 @@ +/* + * Copyright 2004 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. + * + * $Header:$ + */ +package org.apache.beehive.netui.pageflow; + +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public abstract class PageFlowEventReporter +{ + private ServletContext _servletContext; + + protected PageFlowEventReporter( ServletContext servletContext ) + { + _servletContext = servletContext; + } + + public abstract void actionRaised( FlowController flowController, ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response ); + + public abstract void actionSuccess( FlowController flowController, ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response, + ActionForward result ); + + public abstract void exceptionRaised( Throwable ex, ActionMapping actionMapping, ActionForm form, + FlowController flowController, HttpServletRequest request, + HttpServletResponse response ); + + public abstract void exceptionHandled( Throwable ex, ActionMapping actionMapping, ActionForm form, + FlowController flowController, HttpServletRequest request, + HttpServletResponse response, ActionForward result ); + + public abstract void flowControllerCreated( FlowController flowController, HttpServletRequest request, + HttpServletResponse response ); + + public abstract void flowControllerDestroyed( FlowController flowController ); + + public abstract void beginActionRequest( HttpServletRequest request, HttpServletResponse response ); + + public abstract void endActionRequest( HttpServletRequest request, HttpServletResponse response ); + + public abstract void beginPageRequest( HttpServletRequest request, HttpServletResponse response ); + + public abstract void endPageRequest( HttpServletRequest request, HttpServletResponse response ); + + protected ServletContext getServletContext() + { + return _servletContext; + } +} Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java Wed Jan 26 17:29:48 2005 @@ -150,7 +150,9 @@ // // Callback to the server adapter. // + PageFlowEventReporter er = _servletContainerAdapter.getEventReporter(); _servletContainerAdapter.beginRequest( httpRequest, httpResponse ); + er.beginPageRequest( httpRequest, httpResponse ); // // Initialize the ControlBeanContext in the session. @@ -212,6 +214,7 @@ // Callback to the server adapter. // _servletContainerAdapter.endRequest( httpRequest, httpResponse ); + er.endPageRequest( httpRequest, httpResponse ); } } else Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java Wed Jan 26 17:29:48 2005 @@ -761,7 +761,9 @@ // // Callback to the server adapter. // + PageFlowEventReporter er = _servletContainerAdapter.getEventReporter(); _servletContainerAdapter.beginRequest( request, response ); + er.beginActionRequest( request, response ); // // Initialize the ControlBeanContext in the session. @@ -788,6 +790,7 @@ // Callback to the server adapter. // _servletContainerAdapter.endRequest( request, response ); + er.endActionRequest( request, response ); } if ( _log.isTraceEnabled() ) Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServletContainerAdapter.java Wed Jan 26 17:29:48 2005 @@ -20,16 +20,15 @@ import org.apache.beehive.controls.api.context.ControlBeanContext; import org.apache.beehive.netui.pageflow.internal.Adapter; -import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.security.auth.login.LoginException; -import java.io.File; /** * @exclude */ +// TODO: comment this and make it public public interface ServletContainerAdapter extends Adapter { @@ -167,4 +166,9 @@ * @return the name of the platform */ public String getPlatformName(); + + /** + * Get an event reporter, which will be notified of events like "page flow created", "action raised", etc. + */ + public PageFlowEventReporter getEventReporter(); } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnyBeanActionForm.java Wed Jan 26 17:29:48 2005 @@ -103,4 +103,8 @@ return errors; } + public String toString() + { + return "[AnyBeanActionForm wrapper for " + _bean + ']'; + } } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java?view=diff&rev=126567&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java&r1=126566&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java&r2=126567 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java Wed Jan 26 17:29:48 2005 @@ -45,6 +45,7 @@ import org.apache.beehive.netui.pageflow.PageFlowController; import org.apache.beehive.netui.pageflow.SharedFlowController; import org.apache.beehive.netui.pageflow.PageFlowManagedObjectException; +import org.apache.beehive.netui.pageflow.PageFlowEventReporter; import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler; import org.apache.beehive.netui.util.Bundle; import org.apache.beehive.netui.util.cache.ClassLevelCache; @@ -59,7 +60,21 @@ private static final String CACHEID_EXCEPTION_HANDLER_METHODS = "_netui:exceptionHandlers"; + private transient PageFlowEventReporter _eventReporter; + + public void init( ServletContext servletContext ) + { + super.init( servletContext ); + _eventReporter = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter(); + } + + public void reinit( ServletContext servletContext ) + { + super.reinit( servletContext ); + _eventReporter = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter(); + } + public ActionForward handleException( Throwable ex, ActionMapping actionMapping, ActionForm form, FlowController flowController, HttpServletRequest request, HttpServletResponse response, ServletContext servletContext ) @@ -69,6 +84,9 @@ { _log.info( "Handling uncaught Throwable " + ex.getClass().getName() ); } + + // Callback to the event reporter. + _eventReporter.exceptionRaised( ex, actionMapping, form, flowController, request, response ); // // Look up the ExceptionConfig that's associated with this Throwable. @@ -81,10 +99,8 @@ } else { - // // If the mapping was null (i.e., the exception happened before we got the action mapping), look for the // exception only in the module config. - // exceptionConfig = getExceptionConfig( exClass, flowController.getModuleConfig() ); } @@ -127,7 +143,12 @@ } } - return invokeExceptionHandlerClass( ex, exceptionConfig, actionMapping, form, request, response ); + ActionForward ret = + invokeExceptionHandlerClass( ex, exceptionConfig, actionMapping, form, request, response ); + // Callback to the event reporter. + _eventReporter.exceptionHandled( ex, actionMapping, form, flowController, request, response, ret ); + + return ret; } if ( _log.isErrorEnabled() )
