Author: shinsuke
Date: Fri Jan 12 18:53:38 2007
New Revision: 495825
URL: http://svn.apache.org/viewvc?view=rev&rev=495825
Log:
portlet filter chain is thread safe now.
Modified:
portals/bridges/trunk/portletfilter/src/java/org/apache/portals/bridges/portletfilter/PortletFilterChain.java
Modified:
portals/bridges/trunk/portletfilter/src/java/org/apache/portals/bridges/portletfilter/PortletFilterChain.java
URL:
http://svn.apache.org/viewvc/portals/bridges/trunk/portletfilter/src/java/org/apache/portals/bridges/portletfilter/PortletFilterChain.java?view=diff&rev=495825&r1=495824&r2=495825
==============================================================================
---
portals/bridges/trunk/portletfilter/src/java/org/apache/portals/bridges/portletfilter/PortletFilterChain.java
(original)
+++
portals/bridges/trunk/portletfilter/src/java/org/apache/portals/bridges/portletfilter/PortletFilterChain.java
Fri Jan 12 18:53:38 2007
@@ -15,7 +15,6 @@
*/
package org.apache.portals.bridges.portletfilter;
-
import java.io.IOException;
import java.util.StringTokenizer;
@@ -58,12 +57,12 @@
/**
* The int which is used to maintain the current position in the filter
chain.
*/
- private int renderPosition = 0;
+ private ThreadLocal renderPosition = new ThreadLocal();
/**
* The int which is used to maintain the current position in the filter
chain.
*/
- private int processActionPosition = 0;
+ private ThreadLocal processActionPosition = new ThreadLocal();
/**
* The int which gives the current number of filters in the chain.
@@ -103,20 +102,21 @@
* @throws PortletException
* @throws IOException
*/
- public void renderFilter(RenderRequest request, RenderResponse response)
throws PortletException, IOException
+ public void renderFilter(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException
{
// Call the next filter if there is one
- if (renderPosition < n)
+ int pos = ((Integer) renderPosition.get()).intValue();
+ if (pos < n)
{
- PortletFilterConfig filterConfig = filters[renderPosition++];
+ PortletFilterConfig filterConfig = filters[pos++];
PortletFilter filter = filterConfig.getPortletFilter();
+ renderPosition.set(new Integer(pos));
filter.renderFilter(request, response, this);
return;
}
- renderPosition = 0;
-
// We fell off the end of the chain -- call the servlet instance
portlet.render(request, response);
}
@@ -131,21 +131,21 @@
* @throws PortletException
* @throws IOException
*/
- public void processActionFilter(ActionRequest request, ActionResponse
response) throws PortletException,
- IOException
+ public void processActionFilter(ActionRequest request,
+ ActionResponse response) throws PortletException, IOException
{
// Call the next filter if there is one
- if (processActionPosition < n)
+ int pos = ((Integer) processActionPosition.get()).intValue();
+ if (pos < n)
{
- PortletFilterConfig filterConfig =
filters[processActionPosition++];
+ PortletFilterConfig filterConfig = filters[pos++];
PortletFilter filter = filterConfig.getPortletFilter();
+ processActionPosition.set(new Integer(pos));
filter.processActionFilter(request, response, this);
return;
}
- processActionPosition = 0;
-
// We fell off the end of the chain -- call the servlet instance
portlet.processAction(request, response);
@@ -162,7 +162,8 @@
{
if (n == filters.length)
{
- PortletFilterConfig[] newFilters = new PortletFilterConfig[n +
INCREMENT];
+ PortletFilterConfig[] newFilters = new PortletFilterConfig[n
+ + INCREMENT];
System.arraycopy(filters, 0, newFilters, 0, n);
filters = newFilters;
}
@@ -175,8 +176,8 @@
*/
public void reset()
{
- renderPosition = 0;
- processActionPosition = 0;
+ renderPosition.set(new Integer(0));
+ processActionPosition.set(new Integer(0));
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]