You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by bl...@apache.org on 2005/07/15 14:57:15 UTC

svn commit: r219193 - in /portals/pluto/trunk: container/src/java/org/apache/pluto/ container/src/java/org/apache/pluto/core/impl/ container/src/java/org/apache/pluto/factory/ container/src/java/org/apache/pluto/factory/impl/ portal/src/java/org/apache...

Author: blumm
Date: Fri Jul 15 05:57:13 2005
New Revision: 219193

URL: http://svn.apache.org/viewcvs?rev=219193&view=rev
Log:
Fix for PLUTO-112(http://issues.apache.org/jira/browse/PLUTO-112). The patches were provided by Ulrich Kuester. I tested them successful. Look at Jira for more details.

Modified:
    portals/pluto/trunk/container/src/java/org/apache/pluto/PortletContainerImpl.java
    portals/pluto/trunk/container/src/java/org/apache/pluto/core/impl/RenderResponseImpl.java
    portals/pluto/trunk/container/src/java/org/apache/pluto/factory/PortletObjectAccess.java
    portals/pluto/trunk/container/src/java/org/apache/pluto/factory/RenderResponseFactory.java
    portals/pluto/trunk/container/src/java/org/apache/pluto/factory/impl/RenderResponseFactoryImpl.java
    portals/pluto/trunk/portal/src/java/org/apache/pluto/portalImpl/Servlet.java
    portals/pluto/trunk/portal/src/webapp/WEB-INF/config/services/ConfigService.properties

Modified: portals/pluto/trunk/container/src/java/org/apache/pluto/PortletContainerImpl.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/container/src/java/org/apache/pluto/PortletContainerImpl.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/container/src/java/org/apache/pluto/PortletContainerImpl.java (original)
+++ portals/pluto/trunk/container/src/java/org/apache/pluto/PortletContainerImpl.java Fri Jul 15 05:57:13 2005
@@ -52,6 +52,9 @@
 
     private String uniqueContainerName;
     private boolean initialized;
+    
+    private static String CONTAINER_SUPPORTS_BUFFERING = "portletcontainer.supportsBuffering";
+    private boolean supportsBuffering;
 
     private Logger log = null;
 
@@ -70,6 +73,16 @@
         log = ((LogService)environment
                 .getContainerService(LogService.class))
                 .getLogger(getClass());
+        
+        Boolean b = (Boolean)properties.get(CONTAINER_SUPPORTS_BUFFERING);
+        if (b == null) {
+        	log.warn("org.apache.pluto.PortletContainerImpl#init(): " +
+        			"Couldn't retrieve parameter \"" + CONTAINER_SUPPORTS_BUFFERING + "\" from" +
+        			"passed properties object. Falling back to default value \"FALSE\"");
+        	supportsBuffering = false;
+        } else {
+        	supportsBuffering = b.booleanValue();
+        }
     }
 
     public void shutdown() throws PortletContainerException
@@ -99,7 +112,8 @@
 
             RenderResponse renderResponse = PortletObjectAccess.getRenderResponse(portletWindow, 
                                                                                   servletRequest, 
-                                                                                  servletResponse);
+                                                                                  servletResponse,
+                                                                                  supportsBuffering);
 
             invoker = PortletInvokerAccess.getPortletInvoker(portletWindow.getPortletEntity().getPortletDefinition());
             invoker.render(renderRequest, renderResponse);
@@ -194,7 +208,8 @@
 
         RenderResponse renderResponse = PortletObjectAccess.getRenderResponse(portletWindow, 
                                                                               servletRequest, 
-                                                                              servletResponse);
+                                                                              servletResponse,
+                                                                              supportsBuffering);
 
         invoker = PortletInvokerAccess.getPortletInvoker(portletWindow.getPortletEntity().getPortletDefinition());
 

Modified: portals/pluto/trunk/container/src/java/org/apache/pluto/core/impl/RenderResponseImpl.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/container/src/java/org/apache/pluto/core/impl/RenderResponseImpl.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/container/src/java/org/apache/pluto/core/impl/RenderResponseImpl.java (original)
+++ portals/pluto/trunk/container/src/java/org/apache/pluto/core/impl/RenderResponseImpl.java Fri Jul 15 05:57:13 2005
@@ -38,14 +38,18 @@
 
 public class RenderResponseImpl extends PortletResponseImpl implements RenderResponse {
     private static final String illegalStateExceptionText = "No content type set.";
+    
+    private boolean containerSupportsBuffering;
 
     private String currentContentType = null;   // needed as servlet 2.3 does not have a response.getContentType
 
     public RenderResponseImpl(PortletWindow portletWindow,
                               javax.servlet.http.HttpServletRequest servletRequest,
-                              javax.servlet.http.HttpServletResponse servletResponse)
+                              javax.servlet.http.HttpServletResponse servletResponse,
+                              boolean containerSupportsBuffering)
     {
         super(portletWindow, servletRequest, servletResponse);
+        this.containerSupportsBuffering = containerSupportsBuffering;
     }
 
     // javax.portlet.RenderResponse ---------------------------------------------------------------
@@ -118,13 +122,22 @@
 
     public void setBufferSize(int size)
     {
-        throw new IllegalStateException("portlet container does not support buffering");
+    	if (!containerSupportsBuffering) {
+    		// default behaviour if property pluto.allowSetBufferSize in file
+    		// ConfigService.properties wasn't set or was set to a value not equal to "yes"
+    		throw new IllegalStateException("portlet container does not support buffering");
+    	} else {
+    		this._getHttpServletResponse().setBufferSize(size);
+    	}
     }
 
     public int getBufferSize()
     {
-        //return this._getHttpServletResponse().getBufferSize();
-        return 0;
+    	if (!containerSupportsBuffering) {
+    		return 0;
+    	} else {
+    		return this._getHttpServletResponse().getBufferSize();
+    	}
     }
 
     public void flushBuffer() throws java.io.IOException

Modified: portals/pluto/trunk/container/src/java/org/apache/pluto/factory/PortletObjectAccess.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/container/src/java/org/apache/pluto/factory/PortletObjectAccess.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/container/src/java/org/apache/pluto/factory/PortletObjectAccess.java (original)
+++ portals/pluto/trunk/container/src/java/org/apache/pluto/factory/PortletObjectAccess.java Fri Jul 15 05:57:13 2005
@@ -49,11 +49,13 @@
 
     public static RenderResponse getRenderResponse(PortletWindow portletWindow,
                                                    javax.servlet.http.HttpServletRequest servletRequest,
-                                                   javax.servlet.http.HttpServletResponse servletResponse)
+                                                   javax.servlet.http.HttpServletResponse servletResponse,
+                                                   boolean containerSupportsBuffering)
     {
         return getResponseFactory().getRenderResponse(portletWindow,
                                                       servletRequest,
-                                                      servletResponse);
+                                                      servletResponse,
+                                                      containerSupportsBuffering);
     }
 
     public static PortletSession getPortletSession(PortletWindow portletWindow,

Modified: portals/pluto/trunk/container/src/java/org/apache/pluto/factory/RenderResponseFactory.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/container/src/java/org/apache/pluto/factory/RenderResponseFactory.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/container/src/java/org/apache/pluto/factory/RenderResponseFactory.java (original)
+++ portals/pluto/trunk/container/src/java/org/apache/pluto/factory/RenderResponseFactory.java Fri Jul 15 05:57:13 2005
@@ -27,5 +27,6 @@
 
     public RenderResponse getRenderResponse(PortletWindow portletWindow,
                                             javax.servlet.http.HttpServletRequest servletRequest,
-                                            javax.servlet.http.HttpServletResponse servletResponse);
+                                            javax.servlet.http.HttpServletResponse servletResponse,
+                                            boolean containerSupportsBuffering);
 }

Modified: portals/pluto/trunk/container/src/java/org/apache/pluto/factory/impl/RenderResponseFactoryImpl.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/container/src/java/org/apache/pluto/factory/impl/RenderResponseFactoryImpl.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/container/src/java/org/apache/pluto/factory/impl/RenderResponseFactoryImpl.java (original)
+++ portals/pluto/trunk/container/src/java/org/apache/pluto/factory/impl/RenderResponseFactoryImpl.java Fri Jul 15 05:57:13 2005
@@ -34,11 +34,13 @@
     // org.apache.pluto.factory.RenderRequestFactory implementation -------------------------------
     public RenderResponse getRenderResponse(PortletWindow portletWindow,
                                             javax.servlet.http.HttpServletRequest servletRequest,
-                                            javax.servlet.http.HttpServletResponse servletResponse)
+                                            javax.servlet.http.HttpServletResponse servletResponse,
+                                            boolean containerSupportsBuffering)
     {
         RenderResponse renderResponse = new RenderResponseImpl(portletWindow,
                                                                servletRequest,
-                                                               servletResponse );
+                                                               servletResponse,
+                                                               containerSupportsBuffering);
         return renderResponse;
     }
     // --------------------------------------------------------------------------------------------

Modified: portals/pluto/trunk/portal/src/java/org/apache/pluto/portalImpl/Servlet.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/portal/src/java/org/apache/pluto/portalImpl/Servlet.java?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/portal/src/java/org/apache/pluto/portalImpl/Servlet.java (original)
+++ portals/pluto/trunk/portal/src/java/org/apache/pluto/portalImpl/Servlet.java Fri Jul 15 05:57:13 2005
@@ -51,6 +51,11 @@
 {
 
     private static String CONTENT_TYPE = "text/html";
+    
+    /**
+     * Stores whether the portlet container used supports buffering
+     */
+    private static String CONTAINER_SUPPORTS_BUFFERING = "portletcontainer.supportsBuffering";
 
     private Logger log = null;
 
@@ -62,7 +67,7 @@
     public void init (ServletConfig config) throws ServletException
     {
         super.init (config);
-
+        
         String charset = config.getInitParameter("charset");
         if (charset != null && charset.length() > 0) {
             CONTENT_TYPE = "text/html; charset=" + charset;
@@ -108,13 +113,27 @@
             environment.addContainerService(FactoryAccess.getInformationProviderContainerService());
             environment.addContainerService(FactoryAccess.getDynamicTitleContainerService());
     
-    		Properties properties = new Properties();
+            String allowSetBufferSizeString = Config.getParameters().getString(CONTAINER_SUPPORTS_BUFFERING);
+            boolean allowSetBufferSize = false;
+            if (allowSetBufferSizeString == null) {
+            	log.warn("org.apache.pluto.portalImpl.Servlet#init(): " +
+            			"Couldn't read property \"pluto.allowSetBufferSize\" " +
+            			"from config file ConfigService.properties");
+            } else {
+            	allowSetBufferSize = allowSetBufferSizeString.equalsIgnoreCase("yes");
+            }
+            Properties containerProperties = new Properties();
+
+            containerProperties.put(CONTAINER_SUPPORTS_BUFFERING, new Boolean(allowSetBufferSize));
+            
+//    		Properties properties = new Properties();
     		
             try
             {
                 PortletContainerFactory.
                     getPortletContainer().
-                        init(uniqueContainerName, config, environment, properties);
+//                        init(uniqueContainerName, config, environment, properties);
+                    	init(uniqueContainerName, config, environment, containerProperties);
             }
             catch (PortletContainerException exc)
             {

Modified: portals/pluto/trunk/portal/src/webapp/WEB-INF/config/services/ConfigService.properties
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/portal/src/webapp/WEB-INF/config/services/ConfigService.properties?rev=219193&r1=219192&r2=219193&view=diff
==============================================================================
--- portals/pluto/trunk/portal/src/webapp/WEB-INF/config/services/ConfigService.properties (original)
+++ portals/pluto/trunk/portal/src/webapp/WEB-INF/config/services/ConfigService.properties Fri Jul 15 05:57:13 2005
@@ -41,6 +41,7 @@
 portletcontainer.uniquename = pluto
 portletcontainer.entrance.impl = org.apache.pluto.PortletContainerImpl
 portletcontainer.entrance.wrapper.impl = org.apache.pluto.portalImpl.core.PortletContainerWrapperImpl
+portletcontainer.supportsBuffering=no
 
 servlet.insecure=/portal
 servlet.secure=/secure