You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2007/10/24 10:21:29 UTC

svn commit: r587815 - /portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java

Author: woonsan
Date: Wed Oct 24 01:21:28 2007
New Revision: 587815

URL: http://svn.apache.org/viewvc?rev=587815&view=rev
Log:
[JS2-785] Parallel Rendering on Websphere 6.1
Synchronization was added during invoking getAttribute().

Modified:
    portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java

Modified: portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java?rev=587815&r1=587814&r2=587815&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java (original)
+++ portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java Wed Oct 24 01:21:28 2007
@@ -59,20 +59,39 @@
 
     public DynamicInformationProvider getDynamicProvider(HttpServletRequest request)
     {
-        DynamicInformationProvider provider =
-            (DynamicInformationProvider) request.getAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider");
+        DynamicInformationProvider provider = null;
+        
+        boolean isParallel = CurrentWorkerContext.getParallelRenderingMode();
+        ServletRequest servletRequest = null;
+        
+        if (isParallel)
+        {
+            // request should be an instance of org.apache.jetspeed.engine.servlet.ServletRequestImpl
+            // unwrap the real request instance provided by the container to synchronize
+            servletRequest = ((HttpServletRequestWrapper) request).getRequest();
+
+            // if it is not an instance of HttpServletRequestWrapper any more, then it is not AdjustedSRTServletRequest instance.
+            if (servletRequest instanceof HttpServletRequestWrapper)
+            {
+                servletRequest = ((HttpServletRequestWrapper) servletRequest).getRequest();
+            }
+            
+            synchronized (servletRequest)
+            {
+                provider = (DynamicInformationProvider) servletRequest.getAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider");
+            }
+        }
+        else
+        {
+            provider = (DynamicInformationProvider) request.getAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider");
+        }
 
         if (provider == null)
         {
             provider = new DynamicInformationProviderImpl(request, servletConfig);
             
-            if (CurrentWorkerContext.getParallelRenderingMode())
+            if (isParallel)
             {
-                // request should be an instance of org.apache.jetspeed.engine.servlet.ServletRequestImpl
-                // unwrap the real request instance provided by the container to synchronize
-                
-                ServletRequest servletRequest = ((HttpServletRequestWrapper)((HttpServletRequestWrapper) request).getRequest()).getRequest();
-
                 synchronized (servletRequest)
                 {
                     servletRequest.setAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider", provider);



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org