Author: taylor
Date: Tue Apr 15 17:23:47 2008
New Revision: 648465

URL: http://svn.apache.org/viewvc?rev=648465&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-864
porting from 2.1.2 backport

Added:
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
Modified:
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/registry/src/test/org/apache/jetspeed/components/portletentity/ContentFragmentTestImpl.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
 Tue Apr 15 17:23:47 2008
@@ -870,5 +870,10 @@
     {
         return this.instantlyRendered;
     }
+
+    public PortletContent getPortletContent()
+    {
+        return this.portletContent;
+    }
     
 }

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
 Tue Apr 15 17:23:47 2008
@@ -24,12 +24,11 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.aggregator.CurrentWorkerContext;
 import org.apache.jetspeed.aggregator.FailedToRenderFragmentException;
 import org.apache.jetspeed.aggregator.PageAggregator;
-import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.aggregator.PortletRenderer;
 import org.apache.jetspeed.aggregator.RenderingJob;
-import org.apache.jetspeed.aggregator.CurrentWorkerContext;
 import org.apache.jetspeed.container.state.NavigationalState;
 import org.apache.jetspeed.exception.JetspeedException;
 import org.apache.jetspeed.om.page.ContentFragment;
@@ -47,7 +46,7 @@
  * @author <a>Woonsan Ko</a>
  * @version $Id: $
  */
-public class AsyncPageAggregatorImpl implements PageAggregator
+public class AsyncPageAggregatorImpl extends BaseAggregatorImpl implements 
PageAggregator
 {
     protected final static Log log = 
LogFactory.getLog(AsyncPageAggregatorImpl.class);
 
@@ -95,6 +94,7 @@
             
context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
             
context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
         }
+        releaseBuffers(root, context);                
     }
 
     /**

Added: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java?rev=648465&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
 (added)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
 Tue Apr 15 17:23:47 2008
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.aggregator.impl;
+
+import java.util.Iterator;
+
+import org.apache.jetspeed.aggregator.PortletContent;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.request.RequestContext;
+
+/**
+ * Share common code for all aggregators 
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor </a>
+ * @author <a>Woonsan Ko</a>
+ * @version $Id: $
+ */
+public abstract class BaseAggregatorImpl 
+{
+    protected void releaseBuffers(ContentFragment f, RequestContext context)
+    {
+        if (f.getContentFragments() != null && f.getContentFragments().size() 
> 0)
+        {
+            Iterator children = f.getContentFragments().iterator();
+            while (children.hasNext())
+            {
+                ContentFragment child = (ContentFragment) children.next();
+                if (!"hidden".equals(child.getState()))
+                {
+                    releaseBuffers(child, context);
+                }
+            }
+        }
+        PortletContent content = f.getPortletContent();
+        if (content != null &&  content.getExpiration() == 0)
+        {
+            content.release();
+        }
+    }    
+}

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
 Tue Apr 15 17:23:47 2008
@@ -39,7 +39,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor </a>
  * @version $Id$
  */
-public class PageAggregatorImpl implements PageAggregator
+public class PageAggregatorImpl extends BaseAggregatorImpl implements 
PageAggregator 
 {
     private final static Log log = LogFactory.getLog(PageAggregatorImpl.class);
     private PortletRenderer renderer;
@@ -83,6 +83,7 @@
             
context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
             
context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
         }
+        releaseBuffers(root, context);        
     }
 
     /**

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
 Tue Apr 15 17:23:47 2008
@@ -21,6 +21,7 @@
 
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.aggregator.PortletAggregator;
+import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.aggregator.PortletRenderer;
 import org.apache.jetspeed.exception.JetspeedException;
 import org.apache.jetspeed.om.page.ContentFragment;
@@ -78,6 +79,11 @@
         ContentFragment contentFragment = new ContentFragmentImpl(fragment, 
new HashMap());
         renderer.renderNow(contentFragment, context);
         
context.getResponse().getWriter().write(contentFragment.getRenderedContent());
+        PortletContent content = contentFragment.getPortletContent();
+        if (content.getExpiration() == 0)
+        {
+            contentFragment.getPortletContent().release();
+        }        
     }
     
 }

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
 Tue Apr 15 17:23:47 2008
@@ -66,7 +66,13 @@
 
     public void release()
     {
-        writer.close();
+        if (writer != null)
+        {
+            writer.close();
+            cw.reset();
+        }
+        cw = null;
+        writer = null;
     }
 
     public String toString()

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/registry/src/test/org/apache/jetspeed/components/portletentity/ContentFragmentTestImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/registry/src/test/org/apache/jetspeed/components/portletentity/ContentFragmentTestImpl.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/registry/src/test/org/apache/jetspeed/components/portletentity/ContentFragmentTestImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/components/registry/src/test/org/apache/jetspeed/components/portletentity/ContentFragmentTestImpl.java
 Tue Apr 15 17:23:47 2008
@@ -59,6 +59,11 @@
         this.instantlyRendered = instantlyRendered;
     }
 
+    public PortletContent getPortletContent()
+    {
+        return null;        
+    }
+    
     /**
      * @param actions
      * @throws SecurityException

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
 Tue Apr 15 17:23:47 2008
@@ -98,5 +98,10 @@
      * @param title
      */
     void setTitle(String title);
-        
+
+    /**
+     * Release the buffers used by the portlet content cache. Note the actual 
release may not occur until garbage collection. 
+     *
+     */
+    void release();            
 }

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java?rev=648465&r1=648464&r2=648465&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java
 Tue Apr 15 17:23:47 2008
@@ -96,6 +96,13 @@
     public void setPortletContent(PortletContent portletContent);
     
     /**
+     * Retrieve the content for this fragment
+     * 
+     * @return PortletContent
+     */
+    public PortletContent getPortletContent();
+    
+    /**
      * Retrieves the actual 
<code>org.apache.jetspeed.decoration.decorator</code>
      * object for this content fragment.
      * 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to