You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2004/10/15 06:50:06 UTC
svn commit: rev 54822 - in incubator/beehive/trunk/netui/src: pageflow/org/apache/beehive/netui/pageflow pageflow/org/apache/beehive/netui/pageflow/handler pageflow/org/apache/beehive/netui/pageflow/interceptor pageflow/org/apache/beehive/netui/pageflow/internal pageflow/org/apache/beehive/netui/pageflow/util tags-html/org/apache/beehive/netui/tags/html tags-html/org/apache/beehive/netui/tags/tree
Author: rich
Date: Thu Oct 14 21:50:04 2004
New Revision: 54822
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.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/FlowControllerFactory.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/MultipartRequestUtils.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowContextListener.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.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/PageFlowStack.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServerAdapter.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/LoginHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultServerAdapter.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/DefaultURLRewriter.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/TemplateHelper.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/BindingUpdateErrors.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Exceptions.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
Log:
Changed the scope of the ServerAdapter. It used to be statically initialized; now it lives in the ServletContext. Moved getServerAdapter() from InternalUtils to ContextCache. Now, any call to retrieve the ServerAdapter requires the ServletContext; tricky in some situations, but the only non-kludgy alternative.
DRT/BVT: netui (WinXP)
BB: self (linux)
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java Thu Oct 14 21:50:04 2004
@@ -610,8 +610,8 @@
//
// If we're not in production mode, send a diagnostic on the response; otherwise, simply send a 404.
//
- InternalUtils.sendDevTimeError( "PageFlow_NoModuleConf", request, response, null,
- HttpServletResponse.SC_NOT_FOUND, uri, modulePath );
+ InternalUtils.sendDevTimeError( "PageFlow_NoModuleConf", null, HttpServletResponse.SC_NOT_FOUND,
+ request, response, servletContext, uri, modulePath );
}
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java Thu Oct 14 21:50:04 2004
@@ -20,6 +20,7 @@
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.CachedFacesBackingInfo;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.util.cache.ClassLevelCache;
@@ -39,7 +40,7 @@
private Map _pageInputs;
- void persistInSession( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext )
+ void persistInSession( HttpServletRequest request, HttpServletResponse response )
{
HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart( request );
ScopedServletUtils.setScopedSessionAttr( InternalConstants.FACES_BACKING_ATTR, this, unwrappedRequest );
@@ -56,7 +57,8 @@
HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart( request );
String attr =
ScopedServletUtils.getScopedSessionAttrName( InternalConstants.FACES_BACKING_ATTR, unwrappedRequest );
- InternalUtils.getServerAdapter().ensureFailover( attr, this, unwrappedRequest );
+ ServletContext servletContext = InternalUtils.getServletContext( request );
+ ContextCache.get( servletContext ).getServerAdapter().ensureFailover( attr, this, unwrappedRequest );
}
public String getDisplayName()
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java Thu Oct 14 21:50:04 2004
@@ -122,7 +122,7 @@
_log.error( "Error while creating backing bean instance of " + backingClassName, e );
}
- bean.persistInSession( request, response, servletContext );
+ bean.persistInSession( request, response );
return bean;
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -218,7 +218,7 @@
protected void sendError( String errText, HttpServletRequest request, HttpServletResponse response )
throws IOException
{
- InternalUtils.sendError( "PageFlow_Custom_Error", request, response, null, getDisplayName(), errText );
+ InternalUtils.sendError( "PageFlow_Custom_Error", null, request, response, getDisplayName(), errText );
}
/**
@@ -247,9 +247,8 @@
// First, put the exception into the request (or other applicable context).
Throwable unwrapped = eh.unwrapException( ex );
- eh.exposeException( unwrapped, request, response, mapping );
- return eh.handleException( unwrapped, mapping, actionName, form, request, response,
- getServletContext(), this );
+ eh.exposeException( unwrapped, mapping, request, response, getServletContext() );
+ return eh.handleException( unwrapped, mapping, actionName, form, this, request, response, getServletContext() );
}
finally
{
@@ -1414,7 +1413,7 @@
catch ( Throwable e )
{
ExceptionsHandler eh = ContextCache.get( getServletContext() ).getExceptionsHandler();
- eh.sendUnhandledExceptionError( eh.unwrapException( e ), request, response );
+ eh.sendUnhandledExceptionError( eh.unwrapException( e ), request, response, getServletContext() );
}
finally
{
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java Thu Oct 14 21:50:04 2004
@@ -288,7 +288,7 @@
if ( lastIndexOfJpfClass != -1 )
{
retVal = pfStack.popUntil( request, lastIndexOfJpfClass );
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
return retVal;
}
}
@@ -332,7 +332,7 @@
pfStack.push( current, request );
}
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
}
else
{
@@ -363,7 +363,7 @@
}
retVal = onStackAlready;
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
}
else
{
@@ -373,7 +373,7 @@
// onDestroy() gets called before the new one's onCreate().
//
retVal.reinitialize( request, response, servletContext );
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
retVal.create( request, response, servletContext );
}
}
@@ -385,7 +385,7 @@
// onCreate()).
//
if ( createdNew ) retVal.reinitialize( request, response, servletContext );
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
if ( createdNew ) retVal.create( request, response, servletContext );
}
}
@@ -424,7 +424,7 @@
_log.debug( "Storing " + retVal + " in the session..." );
}
- retVal.persistInSession( request, response, servletContext );
+ retVal.persistInSession( request, response );
return retVal;
}
catch ( InstantiationException e )
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -23,6 +23,7 @@
import org.apache.struts.config.ModuleConfig;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.ServletContext;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
@@ -78,10 +79,11 @@
private boolean _isNestedReturn = false;
private boolean _init = false;
private transient ActionMapping _mapping = null; // will be reinitialized as necessary by PreviousPageInfo
+ private transient FlowController _flowController = null; // will be reinitialized as necessary by PreviousPageInfo
+ private transient ServletContext _servletContext = null; // will be reinitialized as necessary by PreviousPageInfo
private String _mappingPath;
private StringBuffer _queryString;
private boolean _explicitPath = false;
- private transient FlowController _flowController = null; // will be reinitialized as necessary by PreviousPageInfo
private String _returnFormType = null;
private boolean _userSetRedirect = false;
private Map _actionOutputs = null;
@@ -110,6 +112,7 @@
_queryString = init._queryString;
_explicitPath = init._explicitPath;
_flowController = init._flowController;
+ _servletContext = init._servletContext;
_returnFormType = init._returnFormType;
_userSetRedirect = init._userSetRedirect;
_actionOutputs = init._actionOutputs;
@@ -220,8 +223,9 @@
* Internal. Initialize from an existing Struts ActionForward.
* @exclude
*/
- protected Forward( ActionForward initFwd )
+ protected Forward( ActionForward initFwd, ServletContext servletContext )
{
+ _servletContext = servletContext;
setName( initFwd.getName() );
initFrom( initFwd );
}
@@ -303,7 +307,8 @@
_log.debug( "Creating form bean of type " + _returnFormType );
}
- ReloadableClassHandler rch = ContextCache.get( request ).getReloadableClassHandler();
+ ServletContext servletContext = InternalUtils.getServletContext( request );
+ ReloadableClassHandler rch = ContextCache.get( servletContext ).getReloadableClassHandler();
Object formBean = rch.newInstance( _returnFormType, request );
ActionForm wrappedFormBean = InternalUtils.wrapFormBean( formBean );
addOutputForm( wrappedFormBean );
@@ -553,6 +558,8 @@
private void checkActionOutputs( PageFlowActionForward fc )
{
PageFlowActionForward.ActionOutput[] actionOutputs = fc.getActionOutputs();
+ boolean isInProductionMode =
+ ContextCache.get( _servletContext ).getServerAdapter().isInProductionMode();
for ( int i = 0; i < actionOutputs.length; ++i )
{
@@ -569,7 +576,7 @@
// If we're *not* in production mode, do some (expensive) checks to ensure that the types for the
// action outputs match their declared types.
//
- if ( ! InternalUtils.getServerAdapter().isInProductionMode() && _actionOutputs != null )
+ if ( ! isInProductionMode && _actionOutputs != null )
{
Object actualActionOutput = _actionOutputs.get( actionOutput.getName() );
@@ -634,6 +641,7 @@
_mapping = mapping;
_mappingPath = mapping != null ? mapping.getPath() : null;
_flowController = flowController;
+ _servletContext = flowController.getServletContext();
}
/**
@@ -648,6 +656,7 @@
_mapping = mapping;
_mappingPath = mapping != null ? mapping.getPath() : null;
_flowController = flowController;
+ _servletContext = flowController.getServletContext();
}
/**
@@ -943,6 +952,7 @@
void reinitialize( FlowController fc )
{
_flowController = fc;
+ _servletContext = fc.getServletContext();
if ( _mapping == null && _mappingPath != null )
{
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/MultipartRequestUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/MultipartRequestUtils.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/MultipartRequestUtils.java Thu Oct 14 21:50:04 2004
@@ -113,7 +113,7 @@
}
else
{
- ServletContext servletContext = InternalUtils.getServerAdapter().getServletContext(request);
+ ServletContext servletContext = InternalUtils.getServletContext(request);
servlet = new ActionServletWrapper(InternalUtils.getActionServlet(servletContext));
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java Thu Oct 14 21:50:04 2004
@@ -110,5 +110,4 @@
* page flow compiler.
*/
public static final String JPF_MODULE_CONFIG_GEN_DIR = InternalConstants.WEBINF_DIR + "/.pageflow-struts-generated";
-
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowContextListener.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowContextListener.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowContextListener.java Thu Oct 14 21:50:04 2004
@@ -66,11 +66,6 @@
{
servletContext.setAttribute( ALREADY_INIT_ATTR, Boolean.TRUE );
- //
- // Callback to the server adapter.
- //
- InternalUtils.getServerAdapter().initServletContext( servletContext );
-
try
{
InputStream configInput = servletContext.getResourceAsStream( CONFIG_FILE );
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java Thu Oct 14 21:50:04 2004
@@ -36,6 +36,7 @@
import org.apache.beehive.netui.pageflow.internal.CachedPageFlowInfo;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
@@ -165,7 +166,7 @@
return true;
}
- void persistInSession( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext )
+ void persistInSession( HttpServletRequest request, HttpServletResponse response )
{
PageFlowController currentPageFlow = PageFlowUtils.getCurrentPageFlow( request );
@@ -203,7 +204,7 @@
if ( request.getAttribute( DELETING_PAGEFLOW_ATTR ) != this && request.getSession( false ) != null )
{
HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart( request );
- ServerAdapter serverAdapter = InternalUtils.getServerAdapter();
+ ServerAdapter serverAdapter = ContextCache.get( getServletContext() ).getServerAdapter();
//
// If this is a singleton page flow, there are two attributes to deal with.
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java Thu Oct 14 21:50:04 2004
@@ -113,8 +113,7 @@
/**
* Stores this object in the user session, in the appropriate place.
*/
- abstract void persistInSession( HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext );
+ abstract void persistInSession( HttpServletRequest request, HttpServletResponse response );
/**
* Ensures that any changes to this object will be replicated in a cluster (for failover),
@@ -138,7 +137,8 @@
if ( controlFields.isEmpty() ) return;
request = PageFlowUtils.unwrapMultipart( request );
- ControlBeanContext beanContext = JavaControlUtils.getControlBeanContext( request, response, false );
+ ControlBeanContext beanContext =
+ JavaControlUtils.getControlBeanContext( request, response, _servletContext, false );
assert beanContext != null : "ControlBeanContext was not initialized by PageFlowRequestProcessor";
String classID = getClass().getName();
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java Thu Oct 14 21:50:04 2004
@@ -22,6 +22,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
import java.io.IOException;
import java.io.PrintWriter;
@@ -84,11 +85,12 @@
* @param request the current HttpServletRequest
* @param response the current HttpServletResponse
*/
- void sendError( HttpServletRequest request, HttpServletResponse response, int productionTimeErrorCode )
+ void sendError( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext,
+ int productionTimeErrorCode )
throws IOException
{
- InternalUtils.sendDevTimeError( _messageKeyPrefix, getMessageArgs(), request, response, null,
- productionTimeErrorCode );
+ InternalUtils.sendDevTimeError( _messageKeyPrefix, getMessageArgs(), null, productionTimeErrorCode,
+ request, response, servletContext );
}
/**
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -43,6 +43,7 @@
import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
/**
@@ -118,7 +119,8 @@
//
// Callback to the server adapter.
//
- InternalUtils.getServerAdapter().beginRequest( httpRequest, httpResponse, _servletContext );
+ ServerAdapter serverAdapter = ContextCache.get( _servletContext ).getServerAdapter();
+ serverAdapter.beginRequest( httpRequest, httpResponse );
//
// Initialize the ControlBeanContext in the session.
@@ -161,12 +163,12 @@
//
// Clean up the ControlBeanContext in the session.
//
- JavaControlUtils.uninitializeControlContext( httpRequest, httpResponse );
+ JavaControlUtils.uninitializeControlContext( httpRequest, httpResponse, _servletContext );
//
// Callback to the server adapter.
//
- InternalUtils.getServerAdapter().endRequest( httpRequest, httpResponse, _servletContext );
+ serverAdapter.endRequest( httpRequest, httpResponse );
}
}
else
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -467,6 +467,7 @@
{
String uri = PageFlowUtils.getRelativeURI( request, InternalUtils.decodeURI( request ), null );
ServletContext servletContext = getServletContext();
+ ServerAdapter serverAdapter = ContextCache.get( servletContext ).getServerAdapter();
//
// Allow weblogic to do a security check on forwarded requests, if that feature is enabled.
@@ -478,7 +479,7 @@
// security check may not have been done for the request URI. In this case, a redirect
// to https may happen during checkSecurity().
//
- if ( InternalUtils.getServerAdapter().checkSecurity( uri, request, response, servletContext ) )
+ if ( serverAdapter.checkSecurity( uri, request, response ) )
{
if ( _log.isDebugEnabled() )
{
@@ -592,8 +593,9 @@
_log.error( msg.toString() );
}
- InternalUtils.sendDevTimeError( "PageFlow_NoModuleConf", request, response, null,
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR, uri, modulePath );
+ InternalUtils.sendDevTimeError( "PageFlow_NoModuleConf", null,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
+ servletContext, uri, modulePath );
return;
}
@@ -623,9 +625,9 @@
_log.error( msg.toString() );
}
- InternalUtils.sendDevTimeError( "PageFlow_WrongPath", request, response, null,
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- requestedType, desiredType);
+ InternalUtils.sendDevTimeError( "PageFlow_WrongPath", null,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
+ servletContext, requestedType, desiredType);
return;
}
@@ -682,12 +684,13 @@
// First reinitialize the reloadable class handler. This will bounce a classloader if necessary.
//
ServletContext servletContext = getServletContext();
- ContextCache.get( servletContext ).getReloadableClassHandler().reinit( request );
+ ContextCache contextCache = ContextCache.get( servletContext );
+ contextCache.getReloadableClassHandler().reinit( request );
//
// Callback to the server adapter.
//
- InternalUtils.getServerAdapter().beginRequest( request, response, servletContext );
+ contextCache.getServerAdapter().beginRequest( request, response );
//
// Initialize the ControlBeanContext in the session.
@@ -703,12 +706,12 @@
//
// Clean up the ControlBeanContext in the session.
//
- JavaControlUtils.uninitializeControlContext( request, response );
+ JavaControlUtils.uninitializeControlContext( request, response, getServletContext() );
//
// Callback to the server adapter.
//
- InternalUtils.getServerAdapter().endRequest( request, response, servletContext );
+ contextCache.getServerAdapter().endRequest( request, response );
}
if ( _log.isTraceEnabled() )
@@ -1171,7 +1174,7 @@
assert mapping != null;
ActionForm form = InternalUtils.getFormBean( mapping, request );
PageFlowController curJpf = InternalUtils.ensureCurrentPageFlow( request, response );
- Forward pfFwd = new Forward( ( ActionForward ) fwd );
+ Forward pfFwd = new Forward( ( ActionForward ) fwd, servletContext );
fwd = ForwardHandler.processForward( pfFwd, mapping, request, response, form, servletContext, curJpf );
}
@@ -1290,8 +1293,9 @@
{
boolean securityRedirected = false;
ServletContext servletContext = getServletContext();
+ ContextCache contextCache = ContextCache.get( servletContext );
- if ( ContextCache.get( servletContext ).shouldDoSecureForwards() )
+ if ( contextCache.shouldDoSecureForwards() )
{
Boolean needSecure = PageFlowUtils.isSecureResource( uri, servletContext, request );
@@ -1304,7 +1308,7 @@
if ( needSecure.equals( Boolean.FALSE ) )
{
changeScheme( uri, SCHEME_UNSECURE,
- InternalUtils.getServerAdapter().getListenPort(request),
+ contextCache.getServerAdapter().getListenPort(request),
request, response );
securityRedirected = true;
}
@@ -1314,7 +1318,7 @@
if ( needSecure.equals( Boolean.TRUE ) )
{
changeScheme( uri, SCHEME_SECURE,
- InternalUtils.getServerAdapter().getSecureListenPort(request),
+ contextCache.getServerAdapter().getSecureListenPort(request),
request, response );
securityRedirected = true;
}
@@ -1329,7 +1333,7 @@
if ( ! securityRedirected )
{
- ForwardRedirectHandler fwdRedirectHandler = ContextCache.get( servletContext ).getForwardRedirectHandler();
+ ForwardRedirectHandler fwdRedirectHandler = contextCache.getForwardRedirectHandler();
fwdRedirectHandler.forward( uri, request, response );
}
}
@@ -1341,7 +1345,7 @@
protected void processNoCache( HttpServletRequest request, HttpServletResponse response )
{
if ( moduleConfig.getControllerConfig().getNocache()
- || ! InternalUtils.getServerAdapter().isInProductionMode() )
+ || ! ContextCache.get( getServletContext() ).getServerAdapter().isInProductionMode() )
{
//
// The call to PageFlowJspFilter.preventCache() will cause caching to be prevented
@@ -1408,7 +1412,7 @@
ActionInterceptorChain.getAfterActionChain( actionName, request, servletContext );
if ( interceptorChain != null )
{
- InterceptorForward originalForward = ret != null ? new InterceptorForward( ret ) : null;
+ InterceptorForward originalForward = ret != null ? new InterceptorForward( ret, servletContext ) : null;
InterceptorForward interceptorForward =
interceptorChain.doIntercept( request, response, originalForward, pfc, actionName );
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java Thu Oct 14 21:50:04 2004
@@ -24,10 +24,12 @@
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.ServletContext;
import java.util.Stack;
import java.io.Serializable;
@@ -201,11 +203,11 @@
return -1;
}
- void ensureFailover( HttpServletRequest request )
+ void ensureFailover( HttpServletRequest request, ServletContext servletContext )
{
String name =
ScopedServletUtils.getScopedSessionAttrName( JPF_STACK_ATTR, PageFlowUtils.unwrapMultipart( request ) );
- InternalUtils.getServerAdapter().ensureFailover( name, this, request );
+ ContextCache.get( servletContext ).getServerAdapter().ensureFailover( name, this, request );
}
void save( HttpServletRequest request )
@@ -229,7 +231,9 @@
ActionInterceptor interceptor = ActionInterceptorChain.getActiveInterceptor( request );
InterceptorForward interceptedForward = ActionInterceptorChain.getInterceptedForward( request, true );
_stack.push( new PushedPageFlow( pageFlow, interceptor, interceptedForward ) );
- ensureFailover( request ); // to ensure that this attribute is replicated for session failover
+
+ // To ensure that this attribute is replicated for session failover...
+ ensureFailover( request, pageFlow.getServletContext() );
}
/**
@@ -241,11 +245,12 @@
public PushedPageFlow pop( HttpServletRequest request )
{
PushedPageFlow ppf = ( PushedPageFlow ) _stack.pop();
- ppf.getPageFlow().setIsOnNestingStack( false );
+ PageFlowController pfc = ppf.getPageFlow();
+ pfc.setIsOnNestingStack( false );
if ( request != null ) // may be null if we're called from valueUnbound()
{
- ensureFailover( request ); // to ensure that this attribute is replicated for session failover
+ ensureFailover( request, pfc.getServletContext() ); // to ensure that this attribute is replicated for session failover
}
return ppf;
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java Thu Oct 14 21:50:04 2004
@@ -21,6 +21,7 @@
import org.apache.beehive.netui.pageflow.internal.ActionResultImpl;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.RequestValues;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
import org.apache.beehive.netui.pageflow.scoping.ScopedResponse;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
@@ -668,7 +669,7 @@
*/
public static Boolean isSecureResource( String uri, ServletContext servletContext, HttpServletRequest request )
{
- return InternalUtils.getServerAdapter().isSecureResource( uri, request, servletContext );
+ return ContextCache.get( servletContext ).getServerAdapter().isSecureResource( uri, request );
}
/**
@@ -1080,14 +1081,5 @@
public static void setCurrentActionResolver( ActionResolver resolver, HttpServletRequest request )
{
InternalUtils.setCurrentActionResolver( resolver, request );
- }
-
- /**
- * @deprecated This is an internal utility. {@link InternalUtils#getServerAdapter} can be used, but it is
- * not guaranteed to be supported in the future.
- */
- public static final ServerAdapter getServerAdapter()
- {
- return InternalUtils.getServerAdapter();
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServerAdapter.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServerAdapter.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ServerAdapter.java Thu Oct 14 21:50:04 2004
@@ -56,14 +56,13 @@
* </pre>
*
* @param uri a webapp-relative URI for a resource.
- * @param servletContext the ServletContext
* @param request the current HttpServletRequest.
* @return <code>Boolean.TRUE</code> if a transport-guarantee of <code>CONFIDENTIAL</code> or
* <code>INTEGRAL</code> is associated with the given resource; <code>Boolean.FALSE</code>
* a transport-guarantee of <code>NONE</code> is associated with the given resource; or
* <code>null</code> if there is no transport-guarantee associated with the given resource.
*/
- public Boolean isSecureResource( String uri, HttpServletRequest request, ServletContext servletContext );
+ public Boolean isSecureResource( String uri, HttpServletRequest request );
/**
* Cause the server to do a security check for the given URI. If required, it does a redirect to
@@ -74,16 +73,8 @@
* @param response the current HttpServletResponse.
* @return <code>true</code> if a redirect occurred.
*/
- boolean checkSecurity( String uri, HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext );
-
- /**
- * Get the ServletContext, based on the given request.
- *
- * @param request the current HttpServletRequest.
- * @return the ServletContext associated with the request.
- */
- public ServletContext getServletContext( HttpServletRequest request );
+ boolean checkSecurity( String uri, HttpServletRequest request, HttpServletResponse response );
+
/**
* Get the port on which the server is listening for unsecure connections.
@@ -156,18 +147,16 @@
*
* @param request the current HttpServletRequest.
* @param response the current HttpServletResponse.
- * @param servletContext the current ServletContext.
*/
- public void beginRequest( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext );
+ public void beginRequest( HttpServletRequest request, HttpServletResponse response );
/**
* Called at the end of each processed request.
*
* @param request the current HttpServletRequest.
* @param response the current HttpServletResponse.
- * @param servletContext the current ServletContext.
*/
- public void endRequest( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext );
+ public void endRequest( HttpServletRequest request, HttpServletResponse response );
/**
* Get a context object to support Java Controls.
@@ -180,10 +169,9 @@
/**
* Get the build directory (or directories) where reloadable classes reside.
*
- * @param servletContext the current ServletContext.
* @return an array of URLs to indicate where reloadable classes reside, or <code>null</code> if there are no
* appropriate directories.
* @see org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler
*/
- public File[] getReloadableClassDirs( ServletContext servletContext );
+ public File[] getReloadableClassDirs();
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java Thu Oct 14 21:50:04 2004
@@ -27,6 +27,7 @@
import javax.servlet.ServletContext;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
@@ -56,8 +57,7 @@
return _modulePath;
}
- void persistInSession( HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext )
+ void persistInSession( HttpServletRequest request, HttpServletResponse response )
{
request.getSession().setAttribute( SHARED_FLOW_ATTR_PREFIX + getClass().getName(), this );
}
@@ -71,7 +71,8 @@
*/
public void ensureFailover( HttpServletRequest request )
{
- InternalUtils.getServerAdapter().ensureFailover( SHARED_FLOW_ATTR_PREFIX + getClass().getName(), this, request );
+ ServerAdapter serverAdapter = ContextCache.get( getServletContext() ).getServerAdapter();
+ serverAdapter.ensureFailover( SHARED_FLOW_ATTR_PREFIX + getClass().getName(), this, request );
}
/**
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java Thu Oct 14 21:50:04 2004
@@ -35,14 +35,15 @@
extends Handler
{
ActionForward handleException( Throwable ex, ActionMapping actionMapping, String actionName,
- ActionForm form, HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext, FlowController flowController )
+ ActionForm form, FlowController flowController, HttpServletRequest request,
+ HttpServletResponse response, ServletContext servletContext )
throws Exception;
Throwable unwrapException( Throwable ex );
- void exposeException( Throwable ex, HttpServletRequest request, HttpServletResponse response,
- ActionMapping actionMapping );
+ void exposeException( Throwable ex, ActionMapping actionMapping, HttpServletRequest request,
+ HttpServletResponse response, ServletContext servletContext );
- void sendUnhandledExceptionError( Throwable ex, HttpServletRequest request, HttpServletResponse response );
+ void sendUnhandledExceptionError( Throwable ex, HttpServletRequest request, HttpServletResponse response,
+ ServletContext servletContext );
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/LoginHandler.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/LoginHandler.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/LoginHandler.java Thu Oct 14 21:50:04 2004
@@ -48,6 +48,7 @@
* @param request the current HttpServletRequest.
*/
public void logout( boolean invalidateSessions, HttpServletRequest request, HttpServletResponse response );
+
/**
* Tell whether the current user is in a given role.
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java Thu Oct 14 21:50:04 2004
@@ -20,6 +20,7 @@
import org.apache.beehive.netui.pageflow.Forward;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.ServletContext;
import java.net.URI;
import org.apache.struts.action.ActionForward;
@@ -39,9 +40,9 @@
* Internal. Initialize from an existing Struts ActionForward
* @exclude
*/
- public InterceptorForward( ActionForward originalForward )
+ public InterceptorForward( ActionForward originalForward, ServletContext servletContext )
{
- super( originalForward );
+ super( originalForward, servletContext );
}
InterceptorForward( HttpServletRequest request )
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
==============================================================================
--- 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/ContextCache.java Thu Oct 14 21:50:04 2004
@@ -24,6 +24,7 @@
import org.apache.beehive.netui.pageflow.PageFlowActionServlet;
import org.apache.beehive.netui.pageflow.PageFlowContextListener;
import org.apache.beehive.netui.pageflow.PageFlowConstants;
+import org.apache.beehive.netui.pageflow.ServerAdapter;
import org.apache.beehive.netui.pageflow.handler.LoginHandler;
import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler;
@@ -31,10 +32,7 @@
import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler;
import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
-import java.util.List;
-import java.util.ArrayList;
public class ContextCache implements Serializable, PageFlowConstants
@@ -46,6 +44,10 @@
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 CATALINA_HOME_PROP = "catalina.home";
+ private static final String SERVER_ADAPTER_PROP = "pageflow.serveradapter";
+ private static final String WL_SERVER_ADAPTER_CLASS = "com.bea.wlw.netui.pageflow.internal.WebLogicServerAdapter";
+ private static final String TOMCAT_SERVER_ADAPTER_CLASS = "org.apache.beehive.netui.tomcat.TomcatServerAdapter";
private boolean _secureForwards = false;
private int _forwardOverflowCount = DEFAULT_FORWARD_OVERFLOW_COUNT;
@@ -55,7 +57,7 @@
private LoginHandler _loginHandler = null;
private ReloadableClassHandler _reloadableClassHandler = null;
private ExceptionsHandler _exceptionsHandler = null;
- private transient ServletContext _servletContext;
+ private ServerAdapter _serverAdapter = null;
public ForwardRedirectHandler getForwardRedirectHandler()
@@ -78,11 +80,6 @@
return _exceptionsHandler;
}
- public static ContextCache get( HttpServletRequest request )
- {
- return get( InternalUtils.getServerAdapter().getServletContext( request ) );
- }
-
public static ContextCache get( ServletContext servletContext )
{
ContextCache cache = ( ContextCache ) servletContext.getAttribute( CACHE_ATTR );
@@ -109,7 +106,6 @@
private void reinit( ServletContext servletContext )
{
- _servletContext = servletContext;
_exceptionsHandler.reinit( servletContext );
_forwardRedirectHandler.reinit( servletContext );
_loginHandler.reinit( servletContext );
@@ -125,7 +121,9 @@
private ContextCache( ServletContext servletContext )
{
- _servletContext = servletContext;
+ _serverAdapter = createServerAdapter();
+ _serverAdapter.initServletContext( servletContext ); // callback
+
String doSecureForwards = servletContext.getInitParameter( SECURE_FORWARDS_PARAM );
_secureForwards = ( Boolean.TRUE.toString().equals( doSecureForwards ) );
@@ -257,5 +255,62 @@
}
return defaultVal;
+ }
+
+ private static ServerAdapter createServerAdapter()
+ {
+ String serverAdapterClassName = System.getProperty( SERVER_ADAPTER_PROP );
+ boolean userSpecifiedServerAdapter = serverAdapterClassName != null;
+
+ if ( serverAdapterClassName == null )
+ {
+ if ( System.getProperty( CATALINA_HOME_PROP ) != null )
+ {
+ serverAdapterClassName = TOMCAT_SERVER_ADAPTER_CLASS;
+ }
+ else
+ {
+ serverAdapterClassName = WL_SERVER_ADAPTER_CLASS;
+ }
+
+ }
+
+ try
+ {
+ Class serverAdapterClass = Class.forName( serverAdapterClassName );
+ ServerAdapter serverAdapter = ( ServerAdapter ) serverAdapterClass.newInstance();
+
+ if ( _log.isInfoEnabled() )
+ {
+ _log.info( "Created server adapter of type " + serverAdapterClass );
+ }
+
+ return serverAdapter;
+ }
+ catch ( ClassNotFoundException e )
+ {
+ if ( userSpecifiedServerAdapter && _log.isErrorEnabled() )
+ {
+ _log.error( "Could not find ServerAdapter class " + serverAdapterClassName
+ + "; using " + DefaultServerAdapter.class.getName() + "." );
+ }
+
+ return new DefaultServerAdapter();
+ }
+ catch ( Exception e )
+ {
+ if ( _log.isErrorEnabled() )
+ {
+ _log.error( "Error instantiating ServerAdapter " + serverAdapterClassName
+ + "; using " + DefaultServerAdapter.class.getName() + ".", e );
+ }
+
+ return new DefaultServerAdapter();
+ }
+ }
+
+ public ServerAdapter getServerAdapter()
+ {
+ return _serverAdapter;
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -58,8 +58,8 @@
public ActionForward handleException( Throwable ex, ActionMapping actionMapping, String actionName,
- ActionForm form, HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext, FlowController flowController )
+ ActionForm form, FlowController flowController , HttpServletRequest request,
+ HttpServletResponse response, ServletContext servletContext)
throws Exception
{
if ( _log.isInfoEnabled() )
@@ -133,7 +133,7 @@
_log.error( msg.append( " unhandled by the current page flow (and any shared flow)" ).toString(), ex );
}
- sendUnhandledExceptionError( ex, request, response );
+ sendUnhandledExceptionError( ex, request, response, servletContext );
return null;
}
@@ -157,8 +157,8 @@
return ex;
}
- public void exposeException( Throwable ex, HttpServletRequest request, HttpServletResponse response,
- ActionMapping actionMapping )
+ public void exposeException( Throwable ex, ActionMapping actionMapping, HttpServletRequest request,
+ HttpServletResponse response, ServletContext servletContext )
{
//
// Put the exception in a place where Struts/NetUI tags will find it.
@@ -289,8 +289,8 @@
err = Bundle.getString( "PageFlow_MissingExceptionHandler", methodName );
}
- InternalUtils.sendError( "PageFlow_Custom_Error", request, response, null, flowController.getDisplayName(),
- err );
+ InternalUtils.sendError( "PageFlow_Custom_Error", null, request, response, servletContext,
+ flowController.getDisplayName(), err );
return null;
}
}
@@ -324,7 +324,8 @@
}
}
- public void sendUnhandledExceptionError( Throwable ex, HttpServletRequest request, HttpServletResponse response )
+ public void sendUnhandledExceptionError( Throwable ex, HttpServletRequest request, HttpServletResponse response,
+ ServletContext servletContext )
{
_log.error( "Unhandled Page Flow Exception", ex );
@@ -347,9 +348,9 @@
String msg = ex.getMessage();
if ( msg == null ) msg = " ";
- InternalUtils.sendDevTimeError( "PageFlow_UnhandledException", request, response, ex,
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- ex.getClass().getName(), msg, sw.toString() );
+ InternalUtils.sendDevTimeError( "PageFlow_UnhandledException", ex,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
+ servletContext, ex.getClass().getName(), msg, sw.toString() );
}
}
catch ( IOException ioEx )
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -59,8 +59,9 @@
int forwardOverflowCount = contextCache.getForwardOverflowCount();
if ( requestCount > forwardOverflowCount )
{
- InternalUtils.sendDevTimeError( "PageFlow_Forward_Overflow", request, response, null,
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR, forwardOverflowCount, uri );
+ InternalUtils.sendDevTimeError( "PageFlow_Forward_Overflow", null,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
+ getServletContext(), forwardOverflowCount, uri );
return;
}
@@ -72,9 +73,9 @@
int nestingOverflowCount = contextCache.getNestingOverflowCount();
if ( pfStack != null && pfStack.size() > nestingOverflowCount )
{
- InternalUtils.sendDevTimeError( "PageFlow_Nesting_Overflow", request, response, null,
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- pfStack.size(), nestingOverflowCount );
+ InternalUtils.sendDevTimeError( "PageFlow_Nesting_Overflow", null,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
+ getServletContext(), pfStack.size(), nestingOverflowCount );
return;
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -41,12 +41,12 @@
public void login( String username, String password, HttpServletRequest request, HttpServletResponse response )
throws LoginException
{
- InternalUtils.getServerAdapter().login( username, password, request, response );
+ ContextCache.get( getServletContext() ).getServerAdapter().login( username, password, request, response );
}
public void logout( boolean invalidateSessions, HttpServletRequest request, HttpServletResponse response )
{
- InternalUtils.getServerAdapter().logout( invalidateSessions, request, response );
+ ContextCache.get( getServletContext() ).getServerAdapter().logout( invalidateSessions, request, response );
}
public boolean isUserInRole( String roleName, HttpServletRequest request )
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultReloadableClassHandler.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -18,6 +18,7 @@
package org.apache.beehive.netui.pageflow.internal;
import org.apache.beehive.netui.pageflow.AutoRegisterActionServlet;
+import org.apache.beehive.netui.pageflow.ServerAdapter;
import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler;
import org.apache.beehive.netui.util.classloader.BouncyClassLoader;
import org.apache.beehive.netui.util.cache.ClassLevelCache;
@@ -52,9 +53,10 @@
if ( false )
{
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- File[] classDirs = InternalUtils.getServerAdapter().getReloadableClassDirs( servletContext );
+ ServerAdapter serverAdapter = ContextCache.get( servletContext ).getServerAdapter();
+ File[] classDirs = serverAdapter.getReloadableClassDirs();
- if ( classDirs != null && ! InternalUtils.getServerAdapter().isInProductionMode() )
+ if ( classDirs != null && ! serverAdapter.isInProductionMode() )
{
_pageFlowClassLoader = new BouncyClassLoader( classDirs, contextClassLoader );
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultServerAdapter.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultServerAdapter.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultServerAdapter.java Thu Oct 14 21:50:04 2004
@@ -25,7 +25,6 @@
import javax.security.auth.login.LoginException;
import org.apache.beehive.controls.api.context.ControlBeanContext;
-import org.apache.beehive.controls.runtime.servlet.ServletBeanContext;
import java.io.File;
@@ -34,8 +33,14 @@
{
private static boolean _productionMode = true;
+ private ServletContext _servletContext = null;
+
static
{
+ //
+ // This is our definition of "production mode": when asserts are disabled.
+ //
+
try
{
assert false;
@@ -51,18 +56,13 @@
return _productionMode;
}
- public ServletContext getServletContext( HttpServletRequest request )
- {
- return request.getSession( true ).getServletContext();
- }
-
- public Boolean isSecureResource( String uri, HttpServletRequest request, ServletContext servletContext )
+ public Boolean isSecureResource( String uri, HttpServletRequest request )
{
return null;
}
- public boolean checkSecurity( String uri, HttpServletRequest request, HttpServletResponse response,
- ServletContext servletContext )
+ public boolean checkSecurity( String uri, HttpServletRequest request, HttpServletResponse response )
+
{
return false;
}
@@ -98,13 +98,14 @@
public void initServletContext( ServletContext servletContext )
{
+ _servletContext = servletContext;
}
- public void beginRequest( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext )
+ public void beginRequest( HttpServletRequest request, HttpServletResponse response )
{
}
- public void endRequest( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext )
+ public void endRequest( HttpServletRequest request, HttpServletResponse response )
{
}
@@ -113,9 +114,14 @@
return new PageFlowBeanContext();
}
- public File[] getReloadableClassDirs( ServletContext servletContext )
+ public File[] getReloadableClassDirs()
{
- String path = servletContext.getRealPath( "/WEB-INF/classes" );
+ String path = _servletContext.getRealPath( "/WEB-INF/classes" );
return path != null ? new File[]{ new File( path ) } : null;
+ }
+
+ protected ServletContext getServletContext()
+ {
+ return _servletContext;
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -69,32 +69,30 @@
private static final String ACTIONOUTPUT_MAP_ATTR = ATTR_PREFIX + "actionOutputs";
private static final String BINDING_UPDATE_ERRORS_ATTR = ATTR_PREFIX + "bindingUpdateErrors";
private static final String SHARED_FLOW_CLASSNAME_ATTR = ATTR_PREFIX + "sharedFlowClass";
- private static final String CATALINA_HOME_PROP = "catalina.home";
- private static final String SERVER_ADAPTER_PROP = "pageflow.serveradapter";
- private static final String WL_SERVER_ADAPTER_CLASS = "com.bea.wlw.netui.pageflow.internal.WebLogicServerAdapter";
- private static final String TOMCAT_SERVER_ADAPTER_CLASS = "org.apache.beehive.netui.tomcat.TomcatServerAdapter";
-
- private static final ServerAdapter SERVER_ADAPTER = createServerAdapter();
/**
* If not in production mode, write an error to the response; otherwise, set a response error code.
*/
- public static void sendDevTimeError( String messageKey, HttpServletRequest request, HttpServletResponse response,
- Throwable cause, int productionTimeErrorCode, Object ... messageArgs )
+ public static void sendDevTimeError( String messageKey, Throwable cause, int productionTimeErrorCode,
+ HttpServletRequest request, HttpServletResponse response,
+ ServletContext servletContext, Object ... messageArgs )
throws IOException
{
- sendDevTimeError( messageKey, messageArgs, request, response, cause, productionTimeErrorCode );
+ sendDevTimeError( messageKey, messageArgs, cause, productionTimeErrorCode, request, response, servletContext );
}
/**
* 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, HttpServletRequest request,
- HttpServletResponse response, Throwable cause, int productionTimeErrorCode )
+ public static void sendDevTimeError( String messageKey, Object[] messageArgs, Throwable cause,
+ int productionTimeErrorCode, HttpServletRequest request,
+ HttpServletResponse response, ServletContext servletContext )
throws IOException
{
- if ( SERVER_ADAPTER.isInProductionMode() && ! RequestValues.avoidDirectResponseOutput( request ) )
+ boolean prodMode = ContextCache.get( servletContext ).getServerAdapter().isInProductionMode();
+
+ if ( prodMode && ! RequestValues.avoidDirectResponseOutput( request ) )
{
if ( _log.isErrorEnabled() )
{
@@ -112,8 +110,8 @@
/**
* Write an error to the response.
*/
- public static void sendError( String messageKey, HttpServletRequest request, HttpServletResponse response,
- Throwable cause, Object ... messageArgs )
+ public static void sendError( String messageKey, Throwable cause, HttpServletRequest request,
+ HttpServletResponse response, Object ... messageArgs )
throws IOException
{
sendError( messageKey, messageArgs, request, response, cause );
@@ -242,7 +240,7 @@
//
// This method is provided for org.apache.beehive.netui.script.xscript.context.PageFlowContextResolver.
//
- ServletContext servletContext = SERVER_ADAPTER.getServletContext( request );
+ ServletContext servletContext = getServletContext( request );
if ( servletContext == null && _log.isWarnEnabled() )
{
@@ -311,7 +309,7 @@
public static void warnAboutClassLoaders( Object object, HttpServletRequest request )
{
- warnAboutClassLoaders( object, SERVER_ADAPTER.getServletContext( request ) );
+ warnAboutClassLoaders( object, getServletContext( request ) );
}
public static void warnAboutClassLoaders( Object object, ServletContext servletContext )
@@ -559,11 +557,6 @@
return null;
}
- public static final ServerAdapter getServerAdapter()
- {
- return SERVER_ADAPTER;
- }
-
/**
* Get the current ActionServlet.
*
@@ -751,7 +744,7 @@
*/
public static SharedFlowController ensureSharedFlow( HttpServletRequest request, HttpServletResponse response )
{
- return ensureSharedFlow( request, response, SERVER_ADAPTER.getServletContext( request ) );
+ return ensureSharedFlow( request, response, getServletContext( request ) );
}
/**
@@ -819,58 +812,6 @@
}
}
- private static ServerAdapter createServerAdapter()
- {
- String serverAdapterClassName = System.getProperty( SERVER_ADAPTER_PROP );
- boolean userSpecifiedServerAdapter = serverAdapterClassName != null;
-
- if ( serverAdapterClassName == null )
- {
- if ( System.getProperty( CATALINA_HOME_PROP ) != null )
- {
- serverAdapterClassName = TOMCAT_SERVER_ADAPTER_CLASS;
- }
- else
- {
- serverAdapterClassName = WL_SERVER_ADAPTER_CLASS;
- }
-
- }
-
- try
- {
- Class serverAdapterClass = Class.forName( serverAdapterClassName );
- ServerAdapter serverAdapter = ( ServerAdapter ) serverAdapterClass.newInstance();
-
- if ( _log.isInfoEnabled() )
- {
- _log.info( "Created server adapter of type " + serverAdapterClass );
- }
-
- return serverAdapter;
- }
- catch ( ClassNotFoundException e )
- {
- if ( userSpecifiedServerAdapter && _log.isErrorEnabled() )
- {
- _log.error( "Could not find ServerAdapter class " + serverAdapterClassName
- + "; using " + DefaultServerAdapter.class.getName() + "." );
- }
-
- return new DefaultServerAdapter();
- }
- catch ( Exception e )
- {
- if ( _log.isErrorEnabled() )
- {
- _log.error( "Error instantiating ServerAdapter " + serverAdapterClassName
- + "; using " + DefaultServerAdapter.class.getName() + ".", e );
- }
-
- return new DefaultServerAdapter();
- }
- }
-
public static String getSharedFlowClassName( HttpServletRequest request, ServletContext servletContext )
{
return getSharedFlowClassNameForURI( InternalUtils.decodeURI( request ), request, servletContext );
@@ -1002,5 +943,11 @@
{
PageflowConfig pfConfig = ConfigUtil.getConfig().getPageflowConfig();
return pfConfig != null ? pfConfig.getMultipartHandler() : null;
+ }
+
+ public static ServletContext getServletContext( HttpServletRequest request )
+ {
+ assert request.getSession( false ) != null : "getServletContext() called before session created";
+ return request.getSession( true ).getServletContext();
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java Thu Oct 14 21:50:04 2004
@@ -62,7 +62,7 @@
public static void initializeControlContext( HttpServletRequest request, HttpServletResponse response,
ServletContext servletContext )
{
- ControlBeanContext beanContext = getControlBeanContext( request, response, true );
+ ControlBeanContext beanContext = getControlBeanContext( request, response, servletContext, true );
//
// Start a new execution context
@@ -73,10 +73,11 @@
}
}
- public static void uninitializeControlContext( HttpServletRequest request, HttpServletResponse response )
+ public static void uninitializeControlContext( HttpServletRequest request, HttpServletResponse response,
+ ServletContext servletContext )
{
- ControlBeanContext beanContext = getControlBeanContext( request, response, false );
+ ControlBeanContext beanContext = getControlBeanContext( request, response, servletContext, false );
if ( beanContext instanceof ServletBeanContext )
{
@@ -102,7 +103,7 @@
}
public static ControlBeanContext getControlBeanContext( HttpServletRequest request, HttpServletResponse response,
- boolean createIfMissing )
+ ServletContext servletContext, boolean createIfMissing )
{
//
// Retrieve the control bean context from the request, and if it's not there, from the session.
@@ -129,7 +130,8 @@
//
if ( createIfMissing )
{
- beanContext = InternalUtils.getServerAdapter().createControlBeanContext( request, response );
+ beanContext =
+ ContextCache.get( servletContext ).getServerAdapter().createControlBeanContext( request, response );
request.getSession().setAttribute( CONTROL_CONTEXT_CLASSNAME, beanContext );
request.setAttribute( CONTROL_CONTEXT_CLASSNAME, beanContext );
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/DefaultURLRewriter.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/DefaultURLRewriter.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/DefaultURLRewriter.java Thu Oct 14 21:50:04 2004
@@ -19,7 +19,9 @@
//internal imports
import org.apache.beehive.netui.pageflow.PageFlowUtils;
+import org.apache.beehive.netui.pageflow.ServerAdapter;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.util.FileUtils;
@@ -54,16 +56,18 @@
}
else
{
+ ServerAdapter serverAdapter = ContextCache.get(servletContext).getServerAdapter();
+
//Need to do default secure/unsecure rewriting
if ((type.equals(URLRewriter.ACTION_SECURE) || (type.equals(URLRewriter.RESOURCE_SECURE))))
{
if (!request.isSecure())
- url = internalRewriteUrl(url, "https", InternalUtils.getServerAdapter().getSecureListenPort((HttpServletRequest) request), request.getServerName());
+ url = internalRewriteUrl(url, "https", serverAdapter.getSecureListenPort((HttpServletRequest) request), request.getServerName());
}
else
{
if (request.isSecure())
- url = internalRewriteUrl(url, "http", InternalUtils.getServerAdapter().getListenPort((HttpServletRequest) request), request.getServerName());
+ url = internalRewriteUrl(url, "http", serverAdapter.getListenPort((HttpServletRequest) request), request.getServerName());
}
}
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/TemplateHelper.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/TemplateHelper.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/TemplateHelper.java Thu Oct 14 21:50:04 2004
@@ -24,8 +24,9 @@
import java.net.URI;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
-import org.apache.beehive.netui.pageflow.PageFlowUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
/**
@@ -563,7 +564,8 @@
}
else {
// Append the webapp name
- String webAppName = InternalUtils.getServerAdapter().getFullContextPath(httpRequest);
+ ServletContext servletContext = InternalUtils.getServletContext(httpRequest);
+ String webAppName = ContextCache.get(servletContext).getServerAdapter().getFullContextPath(httpRequest);
buf = appendEnsureSeparator(buf, webAppName);
// Append the servlet name (mapping)
@@ -651,7 +653,8 @@
}
else {
// Append the webapp name
- String webAppName = InternalUtils.getServerAdapter().getFullContextPath(httpRequest);
+ ServletContext servletContext = InternalUtils.getServletContext(httpRequest);
+ String webAppName = ContextCache.get(servletContext).getServerAdapter().getFullContextPath(httpRequest);
buf.append(webAppName);
// Append the servlet name (mapping)
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/BindingUpdateErrors.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/BindingUpdateErrors.java (original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/BindingUpdateErrors.java Thu Oct 14 21:50:04 2004
@@ -20,6 +20,7 @@
import org.apache.beehive.netui.pageflow.ServerAdapter;
import org.apache.beehive.netui.pageflow.internal.BindingUpdateError;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.tags.AbstractSimpleTag;
import org.apache.beehive.netui.util.Bundle;
@@ -114,8 +115,8 @@
return;
}
- ServerAdapter sa = InternalUtils.getServerAdapter();
PageContext pageContext = getPageContext();
+ ServerAdapter sa = ContextCache.get(pageContext.getServletContext()).getServerAdapter();
ServletRequest request = pageContext.getRequest();
assert(sa != null);
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Exceptions.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Exceptions.java (original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Exceptions.java Thu Oct 14 21:50:04 2004
@@ -18,6 +18,7 @@
package org.apache.beehive.netui.tags.html;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.tags.AbstractSimpleTag;
import org.apache.beehive.netui.util.HtmlExceptionFormatter;
import org.apache.struts.Globals;
@@ -127,7 +128,7 @@
}
if (!_showStackTrace && _showDevModeStackTrace) {
- boolean devMode = !InternalUtils.getServerAdapter().isInProductionMode();
+ boolean devMode = !ContextCache.get(pageContext.getServletContext()).getServerAdapter().isInProductionMode();
if (devMode)
_showStackTrace = true;
}
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
==============================================================================
--- 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 Thu Oct 14 21:50:04 2004
@@ -41,6 +41,7 @@
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.taglib.html.Constants;
import org.apache.struts.util.RequestUtils;
+import org.apache.struts.util.TokenProcessor;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
@@ -791,7 +792,7 @@
writeHiddenParam(Constants.TOKEN_KEY, token, results, request);
}
}
-
+
// add a hidden value for each parameter
if (_params != null) {
Iterator paramKeys = _params.keySet().iterator();
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java (original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java Thu Oct 14 21:50:04 2004
@@ -18,6 +18,7 @@
package org.apache.beehive.netui.tags.tree;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.pageflow.util.PageflowTagUtils;
import org.apache.beehive.netui.script.ExpressionUpdateException;
@@ -33,6 +34,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
+import javax.servlet.ServletContext;
import java.io.IOException;
import java.net.URLEncoder;
@@ -729,7 +731,8 @@
// In devMode we will verify the structure of the tree. This will not run in
// production mode.
- boolean devMode = !InternalUtils.getServerAdapter().isInProductionMode();
+ ServletContext servletContext = InternalUtils.getServletContext(request);
+ boolean devMode = !ContextCache.get(servletContext).getServerAdapter().isInProductionMode();
if (devMode) {
boolean error = false;
StringBuilder errorText = new StringBuilder();