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