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() )

Reply via email to