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 2009/04/01 17:32:14 UTC
svn commit: r760925 - in /portals/jetspeed-2/portal/trunk:
components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/
components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/
jetspeed-api/src/main/java/org/apache/jetspeed/ jet...
Author: woonsan
Date: Wed Apr 1 15:32:12 2009
New Revision: 760925
URL: http://svn.apache.org/viewvc?rev=760925&view=rev
Log:
JS2-949: Adding codes to accumulate all the contributed head elements in the page aggregators.
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/TestContentCache.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/TestContentCache.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/TestContentCache.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/TestContentCache.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/test/java/org/apache/jetspeed/cache/TestContentCache.java Wed Apr 1 15:32:12 2009
@@ -19,9 +19,9 @@
import java.io.NotSerializableException;
import java.io.PrintWriter;
import java.security.Principal;
-import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import junit.framework.TestCase;
import net.sf.ehcache.Cache;
@@ -400,7 +400,7 @@
}
- public Collection<Element> getHeadElements()
+ public Map<String, Element> getHeadElements()
{
// TODO Auto-generated method stub
return null;
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java Wed Apr 1 15:32:12 2009
@@ -18,7 +18,9 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,6 +36,7 @@
import org.apache.jetspeed.om.page.ContentPage;
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.container.PortletWindow;
+import org.w3c.dom.Element;
/**
* Asynchronous Page Aggregator builds the content required to render a
@@ -59,19 +62,24 @@
*/
public void build( RequestContext context ) throws JetspeedException, IOException
{
- ContentPage page = context.getPage();
+ ContentPage page = context.getPage();
+
if (null == page)
{
throw new JetspeedException("Failed to find PSML Pin ContentPageAggregator.build");
}
+
ContentFragment root = page.getRootContentFragment();
+
if (root == null)
{
throw new JetspeedException("No root ContentFragment found in ContentPage");
}
+
// handle maximized state
NavigationalState nav = context.getPortalURL().getNavigationalState();
PortletWindow window = nav.getMaximizedWindow();
+
if (null != window)
{
renderMaximizedWindow(context, page, root, window);
@@ -79,14 +87,20 @@
else
{
aggregateAndRender(root, context, page, true, null, null, null);
- }
- //dispatcher.include(root);
+ }
+
+ // accumulate all the head contributions from the rendered contents
+ aggregateHeadElements(root, context, null);
+
+ // write all rendered content
context.getResponse().getWriter().write(root.getRenderedContent());
+
if (null != window)
{
window.removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
window.removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
}
+
releaseBuffers(root, context);
}
@@ -192,4 +206,35 @@
renderer.renderNow(f, context);
}
+
+ protected void aggregateHeadElements( ContentFragment f, RequestContext context, Map<String, Element> headElements )
+ {
+ boolean isRoot = (headElements == null);
+
+ if (headElements == null)
+ {
+ headElements = new HashMap<String, Element>();
+ }
+
+ List<ContentFragment> contentFragments = (List<ContentFragment>) f.getContentFragments();
+
+ if (contentFragments != null && !contentFragments.isEmpty())
+ {
+ for (ContentFragment child : contentFragments)
+ {
+ if (!"hidden".equals(f.getState()))
+ {
+ aggregateHeadElements(child, context, headElements);
+ }
+ }
+ }
+
+ headElements.putAll(f.getPortletContent().getHeadElements());
+
+ if (isRoot)
+ {
+ context.getRequest().setAttribute(PortalReservedParameters.MARKUP_HEAD_ELEMENTS_ATTRIBUTE, headElements);
+ }
+ }
+
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java Wed Apr 1 15:32:12 2009
@@ -17,18 +17,20 @@
package org.apache.jetspeed.aggregator.impl;
import java.io.IOException;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.jetspeed.PortalReservedParameters;
import org.apache.jetspeed.aggregator.PageAggregator;
import org.apache.jetspeed.aggregator.PortletRenderer;
-import org.apache.jetspeed.aggregator.impl.BaseAggregatorImpl;
+import org.apache.jetspeed.container.PortletWindow;
import org.apache.jetspeed.container.state.NavigationalState;
import org.apache.jetspeed.exception.JetspeedException;
import org.apache.jetspeed.om.page.ContentFragment;
import org.apache.jetspeed.om.page.ContentPage;
import org.apache.jetspeed.request.RequestContext;
-import org.apache.jetspeed.container.PortletWindow;
+import org.w3c.dom.Element;
/**
* ContentPageAggregator builds the content required to render a page of portlets.
@@ -52,18 +54,23 @@
public void build( RequestContext context ) throws JetspeedException, IOException
{
ContentPage page = context.getPage();
+
if (null == page)
{
throw new JetspeedException("Failed to find PSML Pin ContentPageAggregator.build");
}
+
ContentFragment root = page.getRootContentFragment();
+
if (root == null)
{
throw new JetspeedException("No root ContentFragment found in ContentPage");
}
+
// handle maximized state
NavigationalState nav = context.getPortalURL().getNavigationalState();
PortletWindow window = nav.getMaximizedWindow();
+
if (null != window)
{
renderMaximizedWindow(context, page, root, window);
@@ -71,21 +78,30 @@
else
{
aggregateAndRender(root, context, page);
- }
+ }
+
+ // accumulate all the head contributions from the rendered contents
+ aggregateHeadElements(root, context, null);
+
+ // write all rendered content
context.getResponse().getWriter().write(root.getRenderedContent());
+
if (null != window)
{
window.removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
window.removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
}
+
releaseBuffers(root, context);
}
protected void aggregateAndRender( ContentFragment f, RequestContext context, ContentPage page )
{
- if (f.getContentFragments() != null && f.getContentFragments().size() > 0)
+ List<ContentFragment> contentFragments = (List<ContentFragment>) f.getContentFragments();
+
+ if (contentFragments != null && !contentFragments.isEmpty())
{
- for (ContentFragment child : (List<ContentFragment>)f.getContentFragments())
+ for (ContentFragment child : contentFragments)
{
if (!"hidden".equals(f.getState()))
{
@@ -93,6 +109,37 @@
}
}
}
+
renderer.renderNow(f, context);
}
+
+ protected void aggregateHeadElements( ContentFragment f, RequestContext context, Map<String, Element> headElements )
+ {
+ boolean isRoot = (headElements == null);
+
+ if (headElements == null)
+ {
+ headElements = new HashMap<String, Element>();
+ }
+
+ List<ContentFragment> contentFragments = (List<ContentFragment>) f.getContentFragments();
+
+ if (contentFragments != null && !contentFragments.isEmpty())
+ {
+ for (ContentFragment child : contentFragments)
+ {
+ if (!"hidden".equals(f.getState()))
+ {
+ aggregateHeadElements(child, context, headElements);
+ }
+ }
+ }
+
+ headElements.putAll(f.getPortletContent().getHeadElements());
+
+ if (isRoot)
+ {
+ context.getRequest().setAttribute(PortalReservedParameters.MARKUP_HEAD_ELEMENTS_ATTRIBUTE, headElements);
+ }
+ }
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java Wed Apr 1 15:32:12 2009
@@ -20,7 +20,6 @@
import java.io.NotSerializableException;
import java.io.PrintWriter;
import java.io.Serializable;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -223,16 +222,20 @@
this.headElements.put(keyHint, element);
}
- public Collection<Element> getHeadElements()
+ public Map<String, Element> getHeadElements()
{
+ Map<String, Element> headElemMap = null;
+
if (this.headElements != null)
{
- return this.headElements.values();
+ headElemMap = this.headElements;
}
else
{
- return Collections.emptyList();
+ headElemMap = Collections.emptyMap();
}
+
+ return headElemMap;
}
}
\ No newline at end of file
Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java Wed Apr 1 15:32:12 2009
@@ -58,6 +58,7 @@
public static final String HEADER_NAMED_RESOURCE_ATTRIBUTE = "org.apache.jetspeed.headernamedresource";
public static final String HEADER_NAMED_RESOURCE_ADDED_FRAGMENTS_ATTRIBUTE = "org.apache.jetspeed.headernamedresourceaddedfragments";
public static final String HEADER_NAMED_RESOURCE_REGISTRY_ATTRIBUTE = "org.apache.jetspeed.headernamedresourceregistry";
+ public static final String MARKUP_HEAD_ELEMENTS_ATTRIBUTE = "org.apache.jetspeed.markup.head.elements";
public static final String PATH_ATTRIBUTE = "org.apache.jetspeed.Path";
public static final String PARAMETER_ALREADY_DECODED_ATTRIBUTE = "org.apache.jetspeed.parameterAlreadyDecoded";
public static final String RESOVLER_CACHE_ATTR = "org.apache.jetspeed.resovler.cache";
Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java?rev=760925&r1=760924&r2=760925&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java Wed Apr 1 15:32:12 2009
@@ -18,7 +18,7 @@
import java.io.NotSerializableException;
import java.io.PrintWriter;
-import java.util.Collection;
+import java.util.Map;
import org.apache.jetspeed.cache.ContentCacheKey;
import org.w3c.dom.Element;
@@ -132,11 +132,11 @@
void addHeadElement(Element element, String keyHint) throws NotSerializableException;
/**
- * Retrieves header element list to be contributed to the page.
+ * Retrieves header element map to be contributed to the page.
*
- * @return List with head element items
+ * @return
*/
- Collection<Element> getHeadElements();
+ Map<String, Element> getHeadElements();
void reset();
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org