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&r1=149228&r2=149229 ============================================================================== --- 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 Sun Jan 30 22:58:37 2005 @@ -31,6 +31,8 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.UndeclaredThrowableException; import java.lang.reflect.Method; @@ -40,13 +42,14 @@ import org.apache.beehive.netui.pageflow.config.PageFlowExceptionConfig; import org.apache.beehive.netui.pageflow.FlowController; -import org.apache.beehive.netui.pageflow.PageFlowException; import org.apache.beehive.netui.pageflow.FormData; 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.pageflow.handler.FlowControllerHandlerContext; +import org.apache.beehive.netui.pageflow.handler.Handlers; import org.apache.beehive.netui.util.Bundle; import org.apache.beehive.netui.util.cache.ClassLevelCache; import org.apache.beehive.netui.util.logging.Logger; @@ -63,9 +66,9 @@ private transient PageFlowEventReporter _eventReporter; - public void init( ServletContext servletContext ) + public DefaultExceptionsHandler( ServletContext servletContext ) { - super.init( servletContext ); + init( null, null, servletContext ); _eventReporter = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter(); } @@ -75,11 +78,14 @@ _eventReporter = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter(); } - public ActionForward handleException( Throwable ex, ActionMapping actionMapping, ActionForm form, - FlowController flowController, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext ) + public ActionForward handleException( FlowControllerHandlerContext context, Throwable ex, + ActionMapping actionMapping, ActionForm form ) throws IOException, ServletException { + FlowController flowController = context.getFlowController(); + ServletRequest request = context.getRequest(); + ServletResponse response = context.getResponse(); + if ( _log.isInfoEnabled() ) { _log.info( "Handling uncaught Throwable " + ex.getClass().getName() ); @@ -110,11 +116,12 @@ if ( exceptionConfig == null ) { FlowController fallbackFC = - getFallbackFlowController( flowController, exClass, request, response, servletContext ); + getFallbackFlowController( flowController, exClass, request, response, getServletContext() ); if ( fallbackFC != null ) { flowController = fallbackFC; + context = new FlowControllerHandlerContext( request, response, flowController ); exceptionConfig = getExceptionConfig( exClass, fallbackFC.getModuleConfig() ); } @@ -138,13 +145,11 @@ if ( pfExceptionConfig.isHandlerMethod() ) { - return invokeExceptionHandlerMethod( ex, pfExceptionConfig, form, actionMapping, - flowController, request, response, servletContext ); + return invokeExceptionHandlerMethod( context, ex, pfExceptionConfig, form, actionMapping ); } } - ActionForward ret = - invokeExceptionHandlerClass( ex, exceptionConfig, actionMapping, form, request, response ); + ActionForward ret = invokeExceptionHandlerClass( context, ex, exceptionConfig, actionMapping, form ); // Callback to the event reporter. _eventReporter.exceptionHandled( ex, actionMapping, form, flowController, request, response, ret ); @@ -157,7 +162,7 @@ _log.error( msg.append( " unhandled by the current page flow (and any shared flow)" ).toString(), ex ); } - if ( ! eatUnhandledException( ex, request, response, servletContext ) ) + if ( ! getRegisteredHandler().eatUnhandledException( context, ex ) ) { if ( ex instanceof ServletException ) throw ( ServletException ) ex; if ( ex instanceof IOException ) throw ( IOException ) ex; @@ -167,7 +172,7 @@ return null; } - public Throwable unwrapException( Throwable ex ) + public Throwable unwrapException( FlowControllerHandlerContext context, Throwable ex ) { // // If the exception was thrown in a method we called through reflection, it will be an @@ -176,31 +181,30 @@ // if ( ex instanceof InvocationTargetException ) { - return unwrapException( ( ( InvocationTargetException ) ex ).getTargetException() ); + return unwrapException( context, ( ( InvocationTargetException ) ex ).getTargetException() ); } if ( ex instanceof UndeclaredThrowableException ) { - return unwrapException( ( ( UndeclaredThrowableException ) ex ).getUndeclaredThrowable() ); + return unwrapException( context, ( ( UndeclaredThrowableException ) ex ).getUndeclaredThrowable() ); } if ( ex instanceof ServletException ) { ServletException servletException = ( ServletException ) ex; Throwable rootCause = servletException.getRootCause(); - if ( rootCause != null ) return unwrapException( rootCause ); + if ( rootCause != null ) return unwrapException( context, rootCause ); } return ex; } - public void exposeException( Throwable ex, ActionMapping actionMapping, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext ) + public void exposeException( FlowControllerHandlerContext context, Throwable ex, ActionMapping actionMapping ) { // // Put the exception in a place where Struts/NetUI tags will find it. // - request.setAttribute( Globals.EXCEPTION_KEY, ex ); + context.getRequest().setAttribute( Globals.EXCEPTION_KEY, ex ); } protected ExceptionConfig getExceptionConfig( Class exceptionType, ModuleConfig moduleConfig ) @@ -222,7 +226,7 @@ } protected FlowController getFallbackFlowController( FlowController originalFlowController, Class exClass, - HttpServletRequest request, HttpServletResponse response, + ServletRequest request, ServletResponse response, ServletContext servletContext ) { if ( originalFlowController instanceof PageFlowController ) @@ -252,9 +256,9 @@ return null; } - protected ActionForward invokeExceptionHandlerClass( Throwable throwable, ExceptionConfig exceptionConfig, - ActionMapping actionMapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response ) + protected ActionForward invokeExceptionHandlerClass( FlowControllerHandlerContext context, Throwable throwable, + ExceptionConfig exceptionConfig, ActionMapping actionMapping, + ActionForm form ) throws IOException, ServletException { String handlerClassName = exceptionConfig.getHandler(); @@ -264,6 +268,10 @@ // // Get the exception-handler class and delegate to it. // + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + assert context.getResponse() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); ExceptionHandler handler = ( ExceptionHandler ) RequestUtils.applicationInstance( handlerClassName ); Exception ex = throwable instanceof Exception ? ( Exception ) throwable : new Exception( throwable ); ActionForward result = handler.execute( ex, exceptionConfig, actionMapping, form, request, response ); @@ -302,15 +310,19 @@ } } - protected ActionForward invokeExceptionHandlerMethod( Throwable ex, PageFlowExceptionConfig exceptionConfig, - ActionForm form, ActionMapping actionMapping, - FlowController flowController, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext ) + protected ActionForward invokeExceptionHandlerMethod( FlowControllerHandlerContext context, Throwable ex, + PageFlowExceptionConfig exceptionConfig, ActionForm form, + ActionMapping actionMapping ) throws IOException, ServletException { + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + assert context.getResponse() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); + FlowController flowController = context.getFlowController(); String methodName = exceptionConfig.getHandler(); Object unwrappedFormBean = InternalUtils.unwrapFormBean( form ); - Method method = getExceptionHandlerMethod( methodName, ex, unwrappedFormBean, flowController ); + Method method = getExceptionHandlerMethod( context, methodName, ex, unwrappedFormBean ); if ( method != null ) { @@ -319,7 +331,7 @@ if ( messageKey != null && messageKey.length() > 0 ) { - message = getMessage( messageKey, null, null, request, servletContext, flowController ); + message = getMessage( context, messageKey, null, null ); } return flowController.invokeExceptionHandler( method, ex, message, unwrappedFormBean, @@ -343,21 +355,21 @@ err = Bundle.getString( "PageFlow_MissingExceptionHandler", methodName ); } - InternalUtils.sendError( "PageFlow_Custom_Error", null, request, response, servletContext, + InternalUtils.sendError( "PageFlow_Custom_Error", null, request, response, getServletContext(), flowController.getDisplayName(), err ); return null; } } - protected String getMessage( String messageKey, String bundle, Object[] args, HttpServletRequest request, - ServletContext servletContext, FlowController flowController ) + protected String getMessage( FlowControllerHandlerContext context, String messageKey, String bundle, Object[] args ) { if ( bundle == null ) bundle = Globals.MESSAGES_KEY; + ServletRequest request = context.getRequest(); MessageResources resources = ( MessageResources ) request.getAttribute( bundle ); if ( resources == null ) { - resources = ( MessageResources ) servletContext.getAttribute( bundle ); + resources = ( MessageResources ) getServletContext().getAttribute( bundle ); } if ( resources == null ) @@ -366,7 +378,10 @@ return null; } - Locale userLocale = FlowController.retrieveUserLocale( request, null ); + Locale userLocale = + request instanceof HttpServletRequest + ? FlowController.retrieveUserLocale( ( HttpServletRequest ) request, null ) + : null; if ( args == null ) { @@ -378,8 +393,7 @@ } } - public boolean eatUnhandledException( Throwable ex, HttpServletRequest request, HttpServletResponse response, - ServletContext servletContext ) + public boolean eatUnhandledException( FlowControllerHandlerContext context, Throwable ex ) { _log.error( "Unhandled Page Flow Exception", ex ); @@ -388,11 +402,11 @@ // // PageFlowExceptions know what to do in the unhandled case. // - boolean prodMode = AdapterManager.getServletContainerAdapter( servletContext ).isInProductionMode(); + boolean prodMode = AdapterManager.getServletContainerAdapter( getServletContext() ).isInProductionMode(); if ( ! prodMode && ex instanceof PageFlowManagedObjectException ) { - ( ( PageFlowManagedObjectException ) ex ).sendError( request, response ); + ( ( PageFlowManagedObjectException ) ex ).sendError( context.getRequest(), context.getResponse() ); return true; } } @@ -411,11 +425,11 @@ * @param ex the Exception that is to be handled. * @return the Method with the given name that handles the given Exception, or <code>null</code> * if none matches. - * @exclude */ - protected Method getExceptionHandlerMethod( String methodName, Throwable ex, Object formBean, - FlowController flowController ) + protected Method getExceptionHandlerMethod( FlowControllerHandlerContext context, String methodName, Throwable ex, + Object formBean ) { + FlowController flowController = context.getFlowController(); String cacheKey = methodName + '/' + ex.getClass().getName(); ClassLevelCache cache = ClassLevelCache.getCache( flowController.getClass() ); Method method = ( Method ) cache.get( CACHEID_EXCEPTION_HANDLER_METHODS, cacheKey ); @@ -474,5 +488,10 @@ } return null; + } + + public ExceptionsHandler getRegisteredHandler() + { + return ( ExceptionsHandler ) super.getRegisteredHandler(); } }
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java Sun Jan 30 22:58:37 2005 @@ -18,7 +18,7 @@ package org.apache.beehive.netui.pageflow.internal; import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler; -import org.apache.beehive.netui.pageflow.PageFlowUtils; +import org.apache.beehive.netui.pageflow.handler.FlowControllerHandlerContext; import org.apache.beehive.netui.pageflow.PageFlowStack; import org.apache.beehive.netui.util.logging.Logger; @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; import java.io.IOException; import org.apache.struts.upload.MultipartRequestWrapper; @@ -41,22 +42,33 @@ private static final Logger _log = Logger.getInstance( DefaultForwardRedirectHandler.class ); - public void redirect( String uri, HttpServletRequest request, HttpServletResponse response ) + public DefaultForwardRedirectHandler( ServletContext servletContext ) + { + init( null, null, servletContext ); + } + + public void redirect( FlowControllerHandlerContext context, String uri ) throws IOException, ServletException { + assert context.getRequest() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); response.sendRedirect( response.encodeRedirectURL( uri ) ); } - public void forward( String uri, HttpServletRequest request, HttpServletResponse response ) + public void forward( FlowControllerHandlerContext context, String uri ) throws IOException, ServletException { - ContextCache contextCache = ContextCache.get( getServletContext() ); + LegacySettings settings = LegacySettings.get( getServletContext() ); + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + assert context.getResponse() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); int requestCount = RequestValues.getForwardedRequestCount( request ); // // See if we've exceeded the maximum number of forwards. // - int forwardOverflowCount = contextCache.getForwardOverflowCount(); + int forwardOverflowCount = settings.getForwardOverflowCount(); if ( requestCount > forwardOverflowCount ) { InternalUtils.sendDevTimeError( "PageFlow_Forward_Overflow", null, @@ -70,7 +82,7 @@ // PageFlowStack pfStack = PageFlowStack.get( request, false ); - int nestingOverflowCount = contextCache.getNestingOverflowCount(); + int nestingOverflowCount = settings.getNestingOverflowCount(); if ( pfStack != null && pfStack.size() > nestingOverflowCount ) { InternalUtils.sendDevTimeError( "PageFlow_Nesting_Overflow", null, @@ -107,6 +119,7 @@ { _log.error( "Could not get requestDispatcher for URI " + uri ); } + response.sendError( HttpServletResponse.SC_NOT_FOUND ); return; } Added: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java?view=auto&rev=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java (added) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java Sun Jan 30 22:58:37 2005 @@ -0,0 +1,37 @@ +/* + * 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.internal; + +import org.apache.beehive.netui.pageflow.handler.BaseHandler; +import org.apache.beehive.netui.pageflow.handler.Handler; + +public class DefaultHandler + extends BaseHandler +{ + private Handler _registeredHandler; + + public Handler getRegisteredHandler() + { + return _registeredHandler; + } + + public void setRegisteredHandler( Handler registeredHandler ) + { + _registeredHandler = registeredHandler; + } +} Propchange: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java Sun Jan 30 22:58:37 2005 @@ -18,8 +18,11 @@ package org.apache.beehive.netui.pageflow.internal; import org.apache.beehive.netui.pageflow.handler.LoginHandler; +import org.apache.beehive.netui.pageflow.handler.BaseHandler; +import org.apache.beehive.netui.pageflow.handler.FlowControllerHandlerContext; import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.security.auth.login.LoginException; @@ -32,30 +35,43 @@ */ public class DefaultLoginHandler extends DefaultHandler - implements LoginHandler, Serializable + implements LoginHandler { - public void init( ServletContext servletContext ) + public DefaultLoginHandler( ServletContext servletContext ) { + init( null, null, servletContext ); } - public void login( String username, String password, HttpServletRequest request, HttpServletResponse response ) + public void login( FlowControllerHandlerContext context, String username, String password ) throws LoginException { + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + assert context.getResponse() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); AdapterManager.getServletContainerAdapter( getServletContext() ).login( username, password, request, response ); } - public void logout( boolean invalidateSessions, HttpServletRequest request, HttpServletResponse response ) + public void logout( FlowControllerHandlerContext context, boolean invalidateSessions ) { + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + assert context.getResponse() instanceof HttpServletResponse : "don't support ServletResponse currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); + HttpServletResponse response = ( HttpServletResponse ) context.getResponse(); AdapterManager.getServletContainerAdapter( getServletContext() ).logout( invalidateSessions, request, response ); } - public boolean isUserInRole( String roleName, HttpServletRequest request ) + public boolean isUserInRole( FlowControllerHandlerContext context, String roleName ) { + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); return request.isUserInRole( roleName ); } - public Principal getUserPrincipal( HttpServletRequest request ) + public Principal getUserPrincipal( FlowControllerHandlerContext context ) { + assert context.getRequest() instanceof HttpServletRequest : "don't support ServletRequest currently."; + HttpServletRequest request = ( HttpServletRequest ) context.getRequest(); return request.getUserPrincipal(); } } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java Sun Jan 30 22:58:37 2005 @@ -19,13 +19,13 @@ import org.apache.beehive.netui.pageflow.AutoRegisterActionServlet; import org.apache.beehive.netui.pageflow.ServletContainerAdapter; +import org.apache.beehive.netui.pageflow.RequestContext; import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler; import org.apache.beehive.netui.util.classloader.BouncyClassLoader; import org.apache.beehive.netui.util.cache.ClassLevelCache; import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.util.DiscoveryUtils; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.ServletContext; import java.util.Enumeration; @@ -44,10 +44,9 @@ private BouncyClassLoader _pageFlowClassLoader = null; - - public void init( ServletContext servletContext ) + public DefaultReloadableClassHandler( ServletContext servletContext ) { - super.init( servletContext ); + init( null, null, servletContext ); // This feature is disabled for now. if ( false ) @@ -78,7 +77,7 @@ public Object newInstance( String className ) throws ClassNotFoundException, InstantiationException, IllegalAccessException { - return loadClass( className ).newInstance(); + return getRegisteredHandler().loadClass( className ).newInstance(); } private static Map< String, Class > _loadedClasses = new ConcurrentHashMap< String, Class >(); @@ -97,7 +96,7 @@ { try { - clazz = loadClass( className ); + clazz = getRegisteredHandler().loadClass( className ); _loadedClasses.put( className, clazz ); return clazz; } @@ -125,7 +124,7 @@ } } - public void reinit( HttpServletRequest request ) + public void reloadClasses( RequestContext context ) { if ( _pageFlowClassLoader == null ) { @@ -142,7 +141,7 @@ // First go through the session and remove any attributes whose classes were loaded by the stale // classloader. // - HttpSession session = request.getSession( false ); + HttpSession session = InternalUtils.getHttpSession( context.getRequest(), false ); if ( session != null ) { @@ -181,7 +180,7 @@ // // Bounce the classloader. // - init( getServletContext() ); + init( getConfig(), getPreviousHandler(), getServletContext() ); } } } @@ -202,5 +201,10 @@ public boolean isReloadEnabled() { return _pageFlowClassLoader != null; + } + + public ReloadableClassHandler getRegisteredHandler() + { + return ( ReloadableClassHandler ) super.getRegisteredHandler(); } } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java Sun Jan 30 22:58:37 2005 @@ -22,6 +22,7 @@ import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils; import org.apache.beehive.netui.pageflow.FacesBackingBean; import org.apache.beehive.netui.pageflow.PageFlowUtils; +import org.apache.beehive.netui.pageflow.handler.Handlers; import org.apache.beehive.netui.util.FileUtils; import org.apache.beehive.netui.util.logging.Logger; @@ -56,7 +57,7 @@ try { Class backingClass = - ContextCache.get( servletContext ).getReloadableClassHandler().loadCachedClass( backingClassName ); + Handlers.get( servletContext ).getReloadableClassHandler().loadCachedClass( backingClassName ); if ( backingClass == null ) { Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java Sun Jan 30 22:58:37 2005 @@ -20,6 +20,7 @@ import org.apache.beehive.netui.core.urls.URLRewriterService; import org.apache.beehive.netui.pageflow.*; import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler; +import org.apache.beehive.netui.pageflow.handler.Handlers; import org.apache.beehive.netui.pageflow.config.PageFlowControllerConfig; import org.apache.beehive.netui.pageflow.config.PageFlowActionMapping; import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils; @@ -35,6 +36,7 @@ import javax.servlet.ServletContext; import javax.servlet.ServletRequest; import javax.servlet.ServletException; +import javax.servlet.ServletResponse; import java.io.IOException; import java.io.PrintStream; import java.lang.reflect.Method; @@ -81,7 +83,7 @@ * If not in production mode, write an error to the response; otherwise, set a response error code. */ public static void sendDevTimeError( String messageKey, Throwable cause, int productionTimeErrorCode, - HttpServletRequest request, HttpServletResponse response, + ServletRequest request, ServletResponse response, ServletContext servletContext, Object ... messageArgs ) throws IOException { @@ -92,49 +94,54 @@ * If not in production mode, write an error to the response; otherwise, set a response error code. */ public static void sendDevTimeError( String messageKey, Object[] messageArgs, Throwable cause, - int productionTimeErrorCode, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext ) + int productionTimeErrorCode, ServletRequest request, + ServletResponse response, ServletContext servletContext ) throws IOException { boolean prodMode = AdapterManager.getServletContainerAdapter( servletContext ).isInProductionMode(); + boolean avoidDirectResponseOutput = RequestValues.avoidDirectResponseOutput( request ); - if ( prodMode && ! RequestValues.avoidDirectResponseOutput( request ) ) + if ( prodMode && ! avoidDirectResponseOutput && response instanceof HttpServletResponse ) { if ( _log.isErrorEnabled() ) { _log.error( "Error (message key " + messageKey + ") occurred. Response error was set to " + productionTimeErrorCode, cause ); } - response.sendError( productionTimeErrorCode ); + + ( ( HttpServletResponse ) response ).sendError( productionTimeErrorCode ); } else { - sendError( messageKey, messageArgs, request, response, cause ); + sendError( messageKey, messageArgs, request, response, cause, prodMode || avoidDirectResponseOutput ); } } /** * Write an error to the response. */ - public static void sendError( String messageKey, Throwable cause, HttpServletRequest request, + public static void sendError( String messageKey, Throwable cause, ServletRequest request, HttpServletResponse response, Object ... messageArgs ) throws IOException { - sendError( messageKey, messageArgs, request, response, cause ); + // TODO: the following null check will be unnecessary once the deprecated + // FlowController.sendError(String, HttpServletResponse) is removed. + boolean avoidDirectResponseOutput = request != null ? RequestValues.avoidDirectResponseOutput( request ) : false; + sendError( messageKey, messageArgs, request, response, cause, avoidDirectResponseOutput ); } /** * Write an error to the response. */ - public static void sendError( String messageKey, Object[] messageArgs, HttpServletRequest request, - HttpServletResponse response, Throwable cause ) + public static void sendError( String messageKey, Object[] messageArgs, ServletRequest request, + ServletResponse response, Throwable cause, boolean avoidDirectResponseOutput ) throws IOException { assert messageArgs.length == 0 || ! ( messageArgs[0] instanceof Object[] ) : "Object[] passed to sendError; this is probably a mistaken use of varargs"; // request may be null because of deprecated FlowController.sendError(). - if ( request != null && RequestValues.avoidDirectResponseOutput( request ) ) + if ( request != null && avoidDirectResponseOutput ) { String baseMessage = Bundle.getString( messageKey + "_Message", messageArgs ); throw new ResponseOutputException( baseMessage, cause ); @@ -287,12 +294,12 @@ public static String getDecodedURI( HttpServletRequest request ) { - return request.getContextPath() + request.getServletPath(); // TODO: is this always decoded? + return request.getContextPath() + request.getServletPath(); } public static String getDecodedServletPath( HttpServletRequest request ) { - return request.getServletPath(); // TODO: is this always decoded under all containers? + return request.getServletPath(); } public static void addActionOutputs( Map toAdd, ServletRequest request, boolean overwrite ) @@ -323,23 +330,23 @@ } } - public static void addActionMessage( String propertyName, ActionMessage error, ServletRequest request ) + public static void addActionError( String propertyName, ActionMessage error, ServletRequest request ) { ActionErrors errors = ( ActionErrors ) request.getAttribute( Globals.ERROR_KEY ); if ( errors == null ) request.setAttribute( Globals.ERROR_KEY, errors = new ActionErrors() ); errors.add( propertyName, error ); } - public static Object newReloadableInstance( String className, HttpServletRequest request, ServletContext servletContext ) + public static Object newReloadableInstance( String className, ServletContext servletContext ) throws ClassNotFoundException, InstantiationException, IllegalAccessException { - return getReloadableClass( className, request, servletContext ).newInstance(); + return getReloadableClass( className, servletContext ).newInstance(); } - public static Class getReloadableClass( String className, HttpServletRequest request, ServletContext servletContext ) + public static Class getReloadableClass( String className, ServletContext servletContext ) throws ClassNotFoundException { - ReloadableClassHandler handler = ContextCache.get( servletContext ).getReloadableClassHandler(); + ReloadableClassHandler handler = Handlers.get( servletContext ).getReloadableClassHandler(); return handler.loadClass( className ); } @@ -451,66 +458,13 @@ return ( Map ) request.getAttribute( BINDING_UPDATE_ERRORS_ATTR ); } - /** - * Print parameters and attributes in the given request. - * - * @param request the current HttpServletRequest. - * @param output a PrintStream to which to output request parameters and request/session - * attributes; if <code>null</null>, <code>System.err</code> is used. - * - */ - public static void dumpRequest( HttpServletRequest request, PrintStream output ) - { - if ( output == null ) output = System.err; - output.println( "*** HttpServletRequest " + request ); - output.println( " uri = " + request.getRequestURI() ); - - for ( Enumeration e = request.getParameterNames(); e.hasMoreElements(); ) - { - String name = ( String ) e.nextElement(); - output.println( " parameter " + name + " = " + request.getParameter( name ) ); - } - - for ( Enumeration e = request.getAttributeNames(); e.hasMoreElements(); ) - { - String name = ( String ) e.nextElement(); - output.println( " attribute " + name + " = " + request.getAttribute( name ) ); - } - - for ( Enumeration e = request.getSession().getAttributeNames(); e.hasMoreElements(); ) - { - String name = ( String ) e.nextElement(); - output.println( " session attribute " + name + " = " + request.getSession().getAttribute( name ) ); - } - } - - /** - * Print attributes in the given ServletContext. - * - * @param context the current ServletContext. - * @param output a PrintStream to which to output ServletContext attributes; if <code>null</null>, - * <code>System.err</code> is used. - */ - public static void dumpServletContext( ServletContext context, PrintStream output ) - { - if ( output == null ) output = System.err; - output.println( "*** ServletContext " + context ); - - for ( Enumeration e = context.getAttributeNames(); e.hasMoreElements(); ) - { - String name = ( String ) e.nextElement(); - output.println( " attribute " + name + " = " + context.getAttribute( name ) ); - } - } - public static void setCurrentModule( ModuleConfig mc, ServletRequest request ) { request.setAttribute( Globals.MODULE_KEY, mc ); } - public static ActionForm createActionForm( HttpServletRequest request, ActionMapping mapping, - ModuleConfig moduleConfig, ActionServlet actionServlet, - ServletContext servletContext ) + public static ActionForm createActionForm( ActionMapping mapping, ModuleConfig moduleConfig, + ActionServlet actionServlet, ServletContext servletContext ) { String formName = mapping.getName(); if ( formName == null ) return null; @@ -539,7 +493,7 @@ _log.debug( "Creating new ActionForm instance of type " + config.getType() ); } - bean = ( ActionForm ) newReloadableInstance( config.getType(), request, servletContext ); + bean = ( ActionForm ) newReloadableInstance( config.getType(), servletContext ); } bean.setServlet( actionServlet ); @@ -561,7 +515,7 @@ * tags will have access to it. */ public static void setFormInScope( String formName, ActionForm form, ActionMapping mapping, - HttpServletRequest request, boolean overwrite ) + HttpServletRequest request, boolean overwrite ) { if ( formName != null && form != null ) { @@ -589,7 +543,7 @@ return ( mapping.getScope() == null || mapping.getScope().equals( "session" ) ); } - public static ActionForm getFormBean( ActionMapping mapping, HttpServletRequest request ) + public static ActionForm getFormBean( ActionMapping mapping, ServletRequest request ) { String formBeanName = mapping.getName(); @@ -597,7 +551,8 @@ { if ( isSessionScope( mapping ) ) { - return ( ActionForm ) request.getSession().getAttribute( formBeanName ); + HttpSession session = getHttpSession( request, false ); + return session != null ? ( ActionForm ) session.getAttribute( formBeanName ) : null; } else { @@ -649,7 +604,7 @@ return getSharedFlowClassNameForRelativeURI( getDecodedServletPath( request ), request, servletContext ); } - public static String getSharedFlowClassNameForRelativeURI( String relativeURI, HttpServletRequest request, + public static String getSharedFlowClassNameForRelativeURI( String relativeURI, ServletRequest request, ServletContext servletContext ) { String cachedInRequest = ( String ) request.getAttribute( SHARED_FLOW_CLASSNAME_ATTR ); @@ -690,7 +645,7 @@ HttpServletResponse response, ServletContext servletContext ) throws ClassNotFoundException { - Class fcClass = getReloadableClass( fcClassName, request, servletContext ); + Class fcClass = getReloadableClass( fcClassName, servletContext ); return getFlowController( fcClass, request, response, servletContext ); } @@ -760,7 +715,7 @@ } } - public static boolean isMultipartHandlingEnabled( HttpServletRequest request ) + public static boolean isMultipartHandlingEnabled( ServletRequest request ) { ModuleConfig moduleConfig = ( ModuleConfig ) request.getAttribute( Globals.MODULE_KEY ); return moduleConfig.getControllerConfig().getMultipartClass() != null; @@ -772,17 +727,23 @@ return pfConfig != null ? pfConfig.getMultipartHandler() : null; } - public static void setServletContext( HttpServletRequest request, ServletContext servletContext ) + public static void setServletContext( ServletRequest request, ServletContext servletContext ) { - ScopedServletUtils.getOuterRequest( request ).setAttribute( SERVLET_CONTEXT_ATTR, servletContext ); + ScopedServletUtils.getOuterServletRequest( request ).setAttribute( SERVLET_CONTEXT_ATTR, servletContext ); } - public static ServletContext getServletContext( HttpServletRequest request ) + public static ServletContext getServletContext( ServletRequest req ) { - HttpSession session = request.getSession( false ); + HttpSession session = getHttpSession( req, false ); return session != null - ? session.getServletContext() - : ( ServletContext ) ScopedServletUtils.getOuterRequest( request ).getAttribute( SERVLET_CONTEXT_ATTR ); + ? session.getServletContext() + : ( ServletContext ) ScopedServletUtils.getOuterServletRequest( req ).getAttribute( SERVLET_CONTEXT_ATTR ); + } + + public static HttpSession getHttpSession( ServletRequest request, boolean create ) + { + if ( ! ( request instanceof HttpServletRequest ) ) return null; + return ( ( HttpServletRequest ) request ).getSession( create ); } public static String createActionURL( HttpServletRequest servletRequest, String qualifiedAction ) @@ -800,7 +761,7 @@ return qualifiedAction; } - public static String createActionPath( HttpServletRequest request, String qualifiedAction ) + public static String createActionPath( ServletRequest request, String qualifiedAction ) { ModuleConfig appConfig = ( ModuleConfig ) request.getAttribute( Globals.MODULE_KEY ); if ( appConfig != null ) @@ -943,12 +904,12 @@ return actionName; } - public static ActionMapping getCurrentActionMapping( HttpServletRequest request ) + public static ActionMapping getCurrentActionMapping( ServletRequest request ) { return ( ActionMapping ) request.getAttribute( Globals.MAPPING_KEY ); } - public static ActionForm getCurrentActionForm( HttpServletRequest request ) + public static ActionForm getCurrentActionForm( ServletRequest request ) { ActionMapping mapping = getCurrentActionMapping( request ); String attribute = mapping != null ? mapping.getAttribute() : null; @@ -960,19 +921,23 @@ } else { - HttpSession session = request.getSession( false ); + HttpSession session = getHttpSession( request, false ); return session != null ? ( ActionForm ) session.getAttribute( attribute ) : null; } } - public static boolean sessionExpired( HttpServletRequest request ) + public static boolean sessionExpired( ServletRequest servletRequest ) { - String requestedSessionID = request.getRequestedSessionId(); - - if ( requestedSessionID != null ) + if ( servletRequest instanceof HttpServletRequest ) { - HttpSession session = request.getSession( false ); - return session == null || ! requestedSessionID.equals( session.getId() ); + HttpServletRequest request = ( HttpServletRequest ) servletRequest; + String requestedSessionID = request.getRequestedSessionId(); + + if ( requestedSessionID != null ) + { + HttpSession session = request.getSession( false ); + return session == null || ! requestedSessionID.equals( session.getId() ); + } } return false; @@ -983,7 +948,7 @@ throwPageFlowException( ex, null ); } - public static void throwPageFlowException( PageFlowException effect, HttpServletRequest request ) + public static void throwPageFlowException( PageFlowException effect, ServletRequest request ) throws PageFlowException { if ( request != null && effect.causeMayBeSessionExpiration() && sessionExpired( request ) ) Copied: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/LegacySettings.java (from r148858, incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java) URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/LegacySettings.java?view=diff&rev=149229&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java&r1=148858&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/LegacySettings.java&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/LegacySettings.java Sun Jan 30 22:58:37 2005 @@ -19,16 +19,9 @@ import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.util.config.ConfigUtil; -import org.apache.beehive.netui.util.config.bean.NetuiConfigDocument; -import org.apache.beehive.netui.util.config.bean.PageflowHandlers; import org.apache.beehive.netui.util.config.bean.PageflowConfig; import org.apache.beehive.netui.pageflow.PageFlowActionServlet; import org.apache.beehive.netui.pageflow.PageFlowContextListener; -import org.apache.beehive.netui.pageflow.handler.LoginHandler; -import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler; -import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler; -import org.apache.beehive.netui.pageflow.handler.Handler; -import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler; import javax.servlet.ServletContext; import java.io.Serializable; @@ -36,15 +29,11 @@ import static org.apache.beehive.netui.pageflow.PageFlowConstants.*; -public class ContextCache implements Serializable +public class LegacySettings implements Serializable { - private static final Logger _log = Logger.getInstance( ContextCache.class ); + private static final Logger _log = Logger.getInstance( LegacySettings.class ); - private static final String CACHE_ATTR = InternalConstants.ATTR_PREFIX + "_cache"; - private static final String DEFAULT_LOGIN_HANDLER_CLASS = DefaultLoginHandler.class.getName(); - private static final String DEFAULT_FWD_REDIRECT_HANDLER_CLASS = DefaultForwardRedirectHandler.class.getName(); - private static final String DEFAULT_RELOADABLE_CLASS_HANDLER_CLASS = DefaultReloadableClassHandler.class.getName(); - private static final String DEFAULT_EXCEPTIONS_HANDLER_CLASS = DefaultExceptionsHandler.class.getName(); + private static final String CONTEXT_ATTR = InternalConstants.ATTR_PREFIX + "_cache"; private static final int DEFAULT_MAX_FORWARDS_PER_REQUEST = 25; private static final int DEFAULT_MAX_NESTING_STACK_DEPTH = 10; @@ -54,37 +43,12 @@ private int _forwardOverflowCount; private int _nestingOverflowCount; - private ForwardRedirectHandler _forwardRedirectHandler = null; - private LoginHandler _loginHandler = null; - private ReloadableClassHandler _reloadableClassHandler = null; - private ExceptionsHandler _exceptionsHandler = null; - - - public ForwardRedirectHandler getForwardRedirectHandler() - { - return _forwardRedirectHandler; - } - - public LoginHandler getLoginHandler() - { - return _loginHandler; - } - - public ReloadableClassHandler getReloadableClassHandler() - { - return _reloadableClassHandler; - } - - public ExceptionsHandler getExceptionsHandler() - { - return _exceptionsHandler; - } - public static ContextCache get( ServletContext servletContext ) + public static LegacySettings get( ServletContext servletContext ) { - ContextCache cache = ( ContextCache ) servletContext.getAttribute( CACHE_ATTR ); + LegacySettings ls = ( LegacySettings ) servletContext.getAttribute( CONTEXT_ATTR ); - if ( cache == null ) + if ( ls == null ) { if ( _log.isErrorEnabled() ) { @@ -100,22 +64,14 @@ return init( servletContext ); } - cache.reinit( servletContext ); - return cache; - } - - private void reinit( ServletContext servletContext ) - { - _exceptionsHandler.reinit( servletContext ); - _forwardRedirectHandler.reinit( servletContext ); - _loginHandler.reinit( servletContext ); - _reloadableClassHandler.reinit( servletContext ); + return ls; } - public static ContextCache init( ServletContext servletContext ) + public static LegacySettings init( ServletContext servletContext ) { - ContextCache cache = new ContextCache( servletContext ); - servletContext.setAttribute( CACHE_ATTR, cache ); + assert servletContext.getAttribute( CONTEXT_ATTR ) == null : LegacySettings.class.getName() + " already initialized."; + LegacySettings cache = new LegacySettings( servletContext ); + servletContext.setAttribute( CONTEXT_ATTR, cache ); return cache; } @@ -168,7 +124,7 @@ } - private ContextCache( ServletContext servletContext ) + private LegacySettings( ServletContext servletContext ) { // // Try loading some settings (max-forwards-per-requst, max-nesting-stack-depth, ensure-secure-forwards) from @@ -176,88 +132,6 @@ // loadLegacySettings( servletContext ); - // - // Load/create Handlers. - // - NetuiConfigDocument.NetuiConfig netuiConfig = ConfigUtil.getConfig(); - PageflowHandlers handlers = netuiConfig.getPageflowHandlers(); - - if ( handlers != null ) - { - _loginHandler = ( LoginHandler ) getHandlerInstance( - handlers.getLoginHandlerClass(), DEFAULT_LOGIN_HANDLER_CLASS, LoginHandler.class, servletContext ); - - _forwardRedirectHandler = ( ForwardRedirectHandler ) getHandlerInstance( - handlers.getForwardRedirectHandlerClass(), DEFAULT_FWD_REDIRECT_HANDLER_CLASS, - ForwardRedirectHandler.class, servletContext ); - - _reloadableClassHandler = ( ReloadableClassHandler ) getHandlerInstance( - handlers.getReloadableClassHandlerClass(), DEFAULT_RELOADABLE_CLASS_HANDLER_CLASS, - ReloadableClassHandler.class, servletContext ); - - _exceptionsHandler = ( ExceptionsHandler ) getHandlerInstance( - handlers.getExceptionsHandlerClass(), DEFAULT_EXCEPTIONS_HANDLER_CLASS, - ExceptionsHandler.class, servletContext ); - } - else - { - _loginHandler = ( LoginHandler ) getHandlerInstance( - DEFAULT_LOGIN_HANDLER_CLASS, null, LoginHandler.class, servletContext ); - - _forwardRedirectHandler = ( ForwardRedirectHandler ) getHandlerInstance( - DEFAULT_FWD_REDIRECT_HANDLER_CLASS, null, ForwardRedirectHandler.class, servletContext ); - - _reloadableClassHandler = ( ReloadableClassHandler ) getHandlerInstance( - DEFAULT_RELOADABLE_CLASS_HANDLER_CLASS, null, ReloadableClassHandler.class, servletContext ); - - _exceptionsHandler = ( ExceptionsHandler ) getHandlerInstance( - DEFAULT_EXCEPTIONS_HANDLER_CLASS, null, ExceptionsHandler.class, servletContext ); - } - } - - private Handler getHandlerInstance( String className, String alternateClassName, Class desiredClass, - ServletContext servletContext ) - { - if ( className != null ) - { - _log.info( "Loading handler class " + className ); - - try - { - Object instance = Class.forName( className ).newInstance(); - - if ( desiredClass.isInstance( instance ) ) - { - Handler handlerInstance = ( Handler ) instance; - handlerInstance.init( servletContext ); - return handlerInstance; - } - else - { - _log.error( "Handler instance is of wrong type; expected " + desiredClass.getName() - + ", got " + instance.getClass().getName() ); - } - } - catch ( ClassNotFoundException e ) - { - _log.error( "Could not find Handler class " + className, e ); - } - catch ( InstantiationException e ) - { - _log.error( "Could not instantiate Handler of type " + className, e ); - } - catch ( IllegalAccessException e ) - { - _log.error( "Could not instantiate Handler of type " + className, e ); - } - } - - if ( alternateClassName != null ) - { - return getHandlerInstance( alternateClassName, null, desiredClass, servletContext ); - } - - return null; } public boolean shouldDoSecureForwards() Modified: incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java (original) +++ incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java Sun Jan 30 22:58:37 2005 @@ -211,6 +211,19 @@ } /** + * Get the outer (unwrapped) request. + * + * @param request the request to unwrap. + * @return the outer request, if the given request is a ScopedRequest (or wraps a ScopedRequest); + * otherwise, the given request itself. + */ + public static ServletRequest getOuterServletRequest( ServletRequest request ) + { + ScopedRequest scopedRequest = unwrapRequest( request ); + return scopedRequest != null ? scopedRequest.getOuterRequest() : request; + } + + /** * Unwraps the contained ScopedRequest from the given ServletRequest, which may be a * ServletRequestWrapper. * Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java Sun Jan 30 22:58:37 2005 @@ -21,7 +21,8 @@ import org.apache.beehive.netui.core.urls.URLRewriterService; import org.apache.beehive.netui.pageflow.FlowController; import org.apache.beehive.netui.pageflow.PageFlowUtils; -import org.apache.beehive.netui.pageflow.internal.ContextCache; +import org.apache.beehive.netui.pageflow.handler.Handlers; +import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils; import org.apache.beehive.netui.pageflow.internal.InternalConstants; import org.apache.beehive.netui.pageflow.internal.InternalUtils; import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils; @@ -628,8 +629,8 @@ if (_type != null) { // Backwards compatibility - use explicitly specified values try { - ContextCache cc = ContextCache.get(pageContext.getServletContext()); - bean = cc.getReloadableClassHandler().newInstance(_beanType); + Handlers handlers = Handlers.get(pageContext.getServletContext()); + bean = handlers.getReloadableClassHandler().newInstance(_beanType); if (bean != null) { ((ActionForm) bean).setServlet(_servlet); } @@ -648,8 +649,7 @@ } if (bean == null) { - bean = InternalUtils.createActionForm(request, _mapping, _appConfig, _servlet, - servletContext); + bean = InternalUtils.createActionForm(_mapping, _appConfig, _servlet, servletContext); } } Modified: incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/ServletUtils.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/ServletUtils.java?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/ServletUtils.java (original) +++ incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/ServletUtils.java Sun Jan 30 22:58:37 2005 @@ -19,7 +19,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import javax.servlet.ServletContext; +import javax.servlet.ServletResponse; +import javax.servlet.ServletRequest; import java.io.PrintStream; import java.util.Enumeration; @@ -33,15 +36,19 @@ * attributes; if <code>null</null>, <code>System.err</code> is used. * */ - public static void dumpRequest( HttpServletRequest request, PrintStream output ) + public static void dumpRequest( ServletRequest request, PrintStream output ) { if ( output == null ) { output = System.err; } - output.println( "*** HttpServletRequest " + request ); - output.println( " uri = " + request.getRequestURI() ); + output.println( "*** ServletRequest " + request ); + + if ( request instanceof HttpServletRequest ) + { + output.println( " uri = " + ( ( HttpServletRequest ) request ).getRequestURI() ); + } for ( Enumeration e = request.getParameterNames(); e.hasMoreElements(); ) { @@ -55,10 +62,18 @@ output.println( " attribute " + name + " = " + request.getAttribute( name ) ); } - for ( Enumeration e = request.getSession().getAttributeNames(); e.hasMoreElements(); ) + if ( request instanceof HttpServletRequest ) { - String name = ( String ) e.nextElement(); - output.println( " session attribute " + name + " = " + request.getSession().getAttribute( name ) ); + HttpSession session = ( ( HttpServletRequest ) request ).getSession( false ); + + if ( session != null ) + { + for ( Enumeration e = session.getAttributeNames(); e.hasMoreElements(); ) + { + String name = ( String ) e.nextElement(); + output.println( " session attribute " + name + " = " + session.getAttribute( name ) ); + } + } } } @@ -89,13 +104,17 @@ /** * Set response headers to prevent caching of the response by the browser. * - * @param response the current HttpServletResponse + * @param response the current ServletResponse */ - public static void preventCache( HttpServletResponse response ) + public static void preventCache( ServletResponse response ) { - response.setHeader( "Pragma", "No-cache" ); - response.setDateHeader( "Expires", 0 ); - response.setHeader( "Cache-Control", "no-cache" ); + if ( response instanceof HttpServletResponse ) + { + HttpServletResponse httpResponse = ( HttpServletResponse ) response; + httpResponse.setHeader( "Pragma", "No-cache" ); + httpResponse.setDateHeader( "Expires", 0 ); + httpResponse.setHeader( "Cache-Control", "no-cache" ); + } } /** Modified: incubator/beehive/trunk/netui/src/util/schema/netui-config/netui-config.xsd URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/schema/netui-config/netui-config.xsd?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/src/util/schema/netui-config/netui-config.xsd (original) +++ incubator/beehive/trunk/netui/src/util/schema/netui-config/netui-config.xsd Sun Jan 30 22:58:37 2005 @@ -74,12 +74,20 @@ </xsd:sequence> </xsd:complexType> + <xsd:complexType name="handler"> + <xsd:sequence> + <xsd:element name="handler-class" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="custom-property" type="netui:custom-property" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="pageflow-handlers"> <xsd:sequence> - <xsd:element name="login-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/> - <xsd:element name="forward-redirect-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/> - <xsd:element name="reloadable-class-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/> - <xsd:element name="exceptions-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="action-forward-handler" type="netui:handler" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="exceptions-handler" type="netui:handler" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="forward-redirect-handler" type="netui:handler" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="login-handler" type="netui:handler" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="reloadable-class-handler" type="netui:handler" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml Sun Jan 30 22:58:37 2005 @@ -114,7 +114,21 @@ </pageflow-action-interceptors> <pageflow-handlers> - <forward-redirect-handler-class>pageFlowCore.forwards.Controller$Redirector</forward-redirect-handler-class> + <action-forward-handler> + <handler-class>miniTests.handlers.Controller$OverrideActionForwardHandler</handler-class> + </action-forward-handler> + <exceptions-handler> + <handler-class>miniTests.handlers.Controller$OverrideExceptionsHandler</handler-class> + </exceptions-handler> + <forward-redirect-handler> + <handler-class>pageFlowCore.forwards.Controller$FakeRedirector</handler-class> + </forward-redirect-handler> + <login-handler> + <handler-class>miniTests.handlers.Controller$OverrideLoginHandler1</handler-class> + </login-handler> + <login-handler> + <handler-class>miniTests.handlers.Controller$OverrideLoginHandler2</handler-class> + </login-handler> </pageflow-handlers> <pageflow-config> Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/Controller.jpf URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/Controller.jpf?view=auto&rev=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/Controller.jpf (added) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/Controller.jpf Sun Jan 30 22:58:37 2005 @@ -0,0 +1,187 @@ +package miniTests.handlers; + +import org.apache.beehive.netui.pageflow.*; +import org.apache.beehive.netui.pageflow.handler.*; +import org.apache.beehive.netui.pageflow.annotations.*; +import org.apache.beehive.netui.pageflow.interceptor.action.*; +import org.apache.struts.action.*; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import javax.security.auth.login.LoginException; +import java.security.Principal; +import org.apache.struts.config.ModuleConfig; + + [EMAIL PROTECTED]( + simpleActions={ + @Jpf.SimpleAction(name="begin", path="index.jsp"), + @Jpf.SimpleAction(name="roleRequiredAction", path="index.jsp", rolesAllowed={ "HandlersTest" } ) + } +) +public class Controller extends PageFlowController +{ + public String getActionForwardHandler() + { + return Handlers.get( getServletContext() ).getActionForwardHandler().toString(); + } + + public String getExceptionsHandler() + { + return Handlers.get( getServletContext() ).getExceptionsHandler().toString(); + } + + public String getLoginHandler() + { + return Handlers.get( getServletContext() ).getLoginHandler().toString(); + } + + public static class OverrideActionForwardHandler + extends BaseHandler + implements ActionForwardHandler + { + public ActionForward doForward( FlowControllerHandlerContext context, ActionForward fwd, ActionMapping mapping, + String actionName, ModuleConfig altModuleConfig, ActionForm form ) + { + return getPreviousHandler().doForward( context, fwd, mapping, actionName, altModuleConfig, form ); + } + + public ActionForward doAutoViewRender( FlowControllerHandlerContext context, ActionMapping mapping, ActionForm form ) + { + return getPreviousHandler().doAutoViewRender( context, mapping, form ); + } + + public ActionForward doReturnToPage( FlowControllerHandlerContext context, PreviousPageInfo prevPageInfo, + PageFlowController currentPageFlow, ActionForm currentForm, + String actionName, Forward pageFlowFwd ) + { + return getPreviousHandler().doReturnToPage( context, prevPageInfo, currentPageFlow, currentForm, actionName, pageFlowFwd ); + } + + public ActionForward doReturnToAction( FlowControllerHandlerContext context, String actionName, Forward pageFlowFwd ) + { + return getPreviousHandler().doReturnToAction( context, actionName, pageFlowFwd ); + } + + public ActionForward doNestingReturn( FlowControllerHandlerContext context, Forward pageFlowFwd, ActionMapping mapping, + ActionForm form ) + { + return getPreviousHandler().doNestingReturn( context, pageFlowFwd, mapping, form ); + } + + public ActionForward handleInterceptorReturn( FlowControllerHandlerContext context, PageFlowController poppedPageFlow, + PageFlowStack.PushedPageFlow pushedPageFlowWrapper, String returnAction, + ActionMapping actionMapping, ActionForm form, ActionInterceptor interceptor ) + { + return getPreviousHandler().handleInterceptorReturn( context, poppedPageFlow, pushedPageFlowWrapper, returnAction, + actionMapping, form, interceptor ); + } + + protected ActionForwardHandler getPreviousHandler() + { + return ( ActionForwardHandler ) super.getPreviousHandler(); + } + + public String toString() + { + return getClass().getName() + " which is adapting " + getPreviousHandler().getClass().getName(); + } + } + + public static class OverrideExceptionsHandler + extends BaseHandler + implements ExceptionsHandler + { + public ActionForward handleException( FlowControllerHandlerContext context, Throwable ex, ActionMapping actionMapping, + ActionForm form ) + throws IOException, ServletException + { + return getPreviousHandler().handleException( context, ex, actionMapping, form ); + } + + public Throwable unwrapException( FlowControllerHandlerContext context, Throwable ex ) + { + return getPreviousHandler().unwrapException( context, ex ); + } + + public void exposeException( FlowControllerHandlerContext context, Throwable ex, ActionMapping actionMapping ) + { + getPreviousHandler().exposeException( context, ex, actionMapping ); + } + + public boolean eatUnhandledException( FlowControllerHandlerContext context, Throwable ex ) + { + return getPreviousHandler().eatUnhandledException( context, ex ); + } + + protected ExceptionsHandler getPreviousHandler() + { + return ( ExceptionsHandler ) super.getPreviousHandler(); + } + + public String toString() + { + return getClass().getName() + " which is adapting " + getPreviousHandler().getClass().getName(); + } + } + + public static class OverrideLoginHandler1 + extends BaseHandler + implements LoginHandler + { + public void login( FlowControllerHandlerContext context, String username, String password ) + throws LoginException + { + getPreviousHandler().login( context, username, password ); + } + + public void logout( FlowControllerHandlerContext context, boolean invalidateSessions ) + { + getPreviousHandler().logout( context, invalidateSessions ); + } + + public boolean isUserInRole( FlowControllerHandlerContext context, String roleName ) + { + return getPreviousHandler().isUserInRole( context, roleName ); + } + + public Principal getUserPrincipal( FlowControllerHandlerContext context ) + { + return getPreviousHandler().getUserPrincipal( context ); + } + + protected LoginHandler getPreviousHandler() + { + return ( LoginHandler ) super.getPreviousHandler(); + } + + public String toString() + { + return getClass().getName() + " which is adapting " + getPreviousHandler().getClass().getName(); + } + } + + public static class OverrideLoginHandler2 extends OverrideLoginHandler1 + { + public boolean isUserInRole( FlowControllerHandlerContext context, String roleName ) + { + if ( roleName.equals( "HandlersTest" ) ) return true; + return getPreviousHandler().isUserInRole( context, roleName ); + } + + public Principal getUserPrincipal( FlowControllerHandlerContext context ) + { + if ( ( ( HttpServletRequest ) context.getRequest() ).getServletPath().startsWith( "/miniTests/handlers/" ) ) + { + return new Principal(){ public String getName() { return "handler-temp-user"; } }; + } + + return getPreviousHandler().getUserPrincipal( context ); + } + + public String toString() + { + return getClass().getName() + " which is adapting " + getPreviousHandler().toString(); + } + } +} Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/Controller.jpf ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/index.jsp URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/index.jsp?view=auto&rev=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/index.jsp (added) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/index.jsp Sun Jan 30 22:58:37 2005 @@ -0,0 +1,25 @@ +<%@ page language="java" contentType="text/html;charset=UTF-8"%> +<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%> +<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%> +<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%> + + +<netui:html> + <head> + <netui:base/> + </head> + <netui:body> + action-forward-handler: <b>${pageFlow.actionForwardHandler}</b><br/> + exceptions-handler: <b>${pageFlow.exceptionsHandler}</b><br/> + login-handler: <b>${pageFlow.loginHandler}</b><br/> + <br/> + The following action normally requires the role "HandlerTest", but we've set a LoginHandler + to guarantee that we appear to be in that role. If we return to this page, that means an + error was <i>not</i> thrown, i.e., this test succeeded. + <br/> + <netui:anchor action="roleRequiredAction">hit it</netui:anchor> + </netui:body> +</netui:html> + + + Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlers/index.jsp ------------------------------------------------------------------------------ svn:eol-style = native Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/mockportal/smokeTest/results.jsp URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/mockportal/smokeTest/results.jsp?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/mockportal/smokeTest/results.jsp (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/mockportal/smokeTest/results.jsp Sun Jan 30 22:58:37 2005 @@ -3,7 +3,7 @@ <%@ taglib uri="beehive-netui-tags-html.tld" prefix="netui"%> <%@ taglib uri="beehive-netui-tags-template.tld" prefix="netui-template"%> <netui:html> -<% org.apache.beehive.netui.pageflow.internal.InternalUtils.dumpRequest( request, null ); %> + <head> <title> Mock Portal Smoke Test Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/forwards/Controller.jpf URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/forwards/Controller.jpf?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/forwards/Controller.jpf (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/forwards/Controller.jpf Sun Jan 30 22:58:37 2005 @@ -18,8 +18,7 @@ package pageFlowCore.forwards; import org.apache.beehive.netui.pageflow.*; -import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler; -import org.apache.beehive.netui.pageflow.internal.DefaultHandler; +import org.apache.beehive.netui.pageflow.handler.*; import org.apache.beehive.netui.pageflow.annotations.Jpf; import javax.servlet.http.*; import javax.servlet.*; @@ -27,49 +26,23 @@ import java.net.URI; [EMAIL PROTECTED]( - value = { - "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", - "<view-properties>", - "<pageflow-object id='pageflow:/pageFlowCore/forwards/Controller.jpf'/>", - "<pageflow-object id='formbean:Redirector'/>", - "<pageflow-object id='action:begin.do'/>", - "<pageflow-object id='action:redirect.do'/>", - "<pageflow-object id='action:withQueryParams.do'/>", - "<pageflow-object id='action:randomURI.do'/>", - "<pageflow-object id='action:uriRedirect.do'/>", - "<pageflow-object id='action:uriWebappForward.do'/>", - "<pageflow-object id='action:uriRelativeForward.do'/>", - "<pageflow-object id='action:uriRelativeRedirect.do'/>", - "<pageflow-object id='action:setPath.do'/>", - "<pageflow-object id='page:index.jsp'/>", - "<pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'/>", - "<pageflow-object id='forward:[EMAIL PROTECTED]:redirect.do@'/>", - "<pageflow-object id='forward:[EMAIL PROTECTED]:withQueryParams.do@'/>", - "<pageflow-object id='dangling-fwd-dest:@forward:[EMAIL PROTECTED]:setPath.do@@'/>", - "<pageflow-object id='forward:[EMAIL PROTECTED]:setPath.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:uriRelativeRedirect.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:uriRelativeForward.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:uriWebappForward.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:uriRedirect.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:withQueryParams.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:randomURI.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:setPath.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:begin.do@'/>", - "<pageflow-object id='action-call:@page:[EMAIL PROTECTED]@action:redirect.do@'/>", - "</view-properties>" - } -) @Jpf.Controller public class Controller extends PageFlowController { - public static class Redirector - extends org.apache.beehive.netui.pageflow.internal.DefaultForwardRedirectHandler + public static class FakeRedirector + extends BaseHandler + implements ForwardRedirectHandler { - public void redirect( String uri, HttpServletRequest request, HttpServletResponse response ) + public void forward( FlowControllerHandlerContext context, String uri ) throws IOException, ServletException { - PrintWriter writer = response.getWriter(); + ( ( ForwardRedirectHandler ) getPreviousHandler() ).forward( context, uri ); + } + + public void redirect( FlowControllerHandlerContext context, String uri ) + throws IOException, ServletException + { + PrintWriter writer = context.getResponse().getWriter(); writer.println( "<html><head><title>Fake Redirect</title></head><body>" ); writer.println( "Fake redirect to: <b>" + uri + "</b><br><br>" ); Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/addExpressionMessages/Controller.jpf URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/addExpressionMessages/Controller.jpf?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/addExpressionMessages/Controller.jpf (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/addExpressionMessages/Controller.jpf Sun Jan 30 22:58:37 2005 @@ -28,9 +28,9 @@ getRequest().setAttribute( "requestMessage", "a message in the request with two arguments: {0} and {1}" ); getSession().setAttribute( "sessionMessage", "a message in the session" ); - addActionMessageExpression( "prop1", "${pageFlow.pageFlowMessage}" ); - addActionMessageExpression( "prop2", "${requestScope.requestMessage}", "ARG1", "ARG2" ); - addActionMessageExpression( "prop3", "${sessionScope.sessionMessage}" ); + addActionErrorExpression( "prop1", "${pageFlow.pageFlowMessage}" ); + addActionErrorExpression( "prop2", "${requestScope.requestMessage}", "ARG1", "ARG2" ); + addActionErrorExpression( "prop3", "${sessionScope.sessionMessage}" ); return new Forward( "index" ); } Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&r1=149228&r2=149229 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Sun Jan 30 22:58:37 2005 @@ -3417,6 +3417,19 @@ </features> </test> <test> + <name>Handlers</name> + <description>Sanity check test of handlers, which are registered in netui-config.xml. Tests the ability to define and "chain" (by adapting) handlers.</description> + <webapp>coreWeb</webapp> + <categories> + <category>bvt</category> + <category>bvt.struts11</category> + <category>corePageFlow</category> + </categories> + <features> + <feature>Handlers</feature> + </features> + </test> + <test> <name>Hidden</name> <description>Verify that the dataInput attribute works on the Hidden tag.</description> <webapp>coreWeb</webapp>
