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]

Reply via email to