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]