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 "David Sean Taylor (JIRA)" <je...@portals.apache.org> on 2005/06/23 05:09:09 UTC
[jira] Resolved: (JS2-266) The content search pathes of page omit portlet-decorator
[ http://issues.apache.org/jira/browse/JS2-266?page=all ]
David Sean Taylor resolved JS2-266:
-----------------------------------
Resolution: Fixed
patch applied
> The content search pathes of page omit portlet-decorator
> --------------------------------------------------------
>
> Key: JS2-266
> URL: http://issues.apache.org/jira/browse/JS2-266
> Project: Jetspeed 2
> Type: Bug
> Components: Aggregation
> Versions: 2.0-M3
> Environment: WinXP SP2, JDK1.4.2_07
> Reporter: James Liao
> Assignee: David Sean Taylor
> Attachments: better-patch.txt, patch3.txt
>
> The following code is from class org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build()
> List contentPathes = (List) context.getSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR);
> if (contentPathes == null)
> {
> contentPathes = new ArrayList(2);
> context.setSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR, contentPathes);
> }
> String mediaType = context.getCapabilityMap().getPreferredMediaType().getName();
> if (contentPathes.size() < 1)
> {
> // define the lookup order
> contentPathes.add(root.getType() + "/" + mediaType + "/" + layoutDecorator);
> contentPathes.add(ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> Iterator defaults = fallBackContentPathes.iterator();
> while (defaults.hasNext())
> {
> String path = (String) defaults.next();
> contentPathes.add(path.replaceAll("\\{mediaType\\}", mediaType));
> }
> }
> else
> {
> contentPathes.set(0, root.getType() + "/" + mediaType + "/" + layoutDecorator);
> }
> According to the above code, the contentPathes which is stored in session, contains the current layout decorator path, fallBack ContentPathes which are specified in the jetspeed-spring.xml.
> But content pathes does not include current page's portlet-decorator. All the portlet level entities are from the path "portlet/{mediaType}/jetspeed" which is specified in jetspeed-spring.xml(the default portlet-decorator?). That will cause some mistakes if I don't want to include jetspeed portlet-decorator style.
> So I suggest:
> 1. Remove the default portlet-decorator definition in jetspeed-spring.xml like the following:
> <!-- Aggregation: Page -->
> <bean id="org.apache.jetspeed.aggregator.PageAggregator"
> class="org.apache.jetspeed.aggregator.impl.PageAggregatorImpl" >
> <constructor-arg index="0" ><ref bean="org.apache.jetspeed.aggregator.PortletRenderer" /></constructor-arg>
> <!-- Aggregation Strategies:
> 0 = PageAggregatorImpl.STRATEGY_SEQUENTIAL
> 1 = PageAggregatorImpl.STRATEGY_PARALLEL
> -->
> <constructor-arg index="1"><value>0</value></constructor-arg>
> <constructor-arg index="2">
> <list>
> <!--<value>portlet/{mediaType}/jetspeed</value>-->
> <value>portlet/{mediaType}</value>
> <value>layout/{mediaType}</value>
> <value>generic/{mediaType}</value>
> <value>{mediaType}</value>
> </list>
> </constructor-arg>
> </bean>
> 2. Change the following code org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build()
> 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");
> }
> String layoutDecorator = root.getDecorator();
> if (layoutDecorator == null)
> {
> layoutDecorator = page.getDefaultDecorator(root.getType());
> }
> String defaultPortletDecorator = page.getDefaultDecorator(ContentFragment.PORTLET);
> ///////////////////////////////////////////////////////////////////////////////////////////////
> //TODO: Remove hard coding of locations and use CM + TL
> // DST: Im going to encapsulate this into a class, which can be accessed
> // by
> // the PowerTool when aggregating content, and make sure to modify the
> // search path
> // according to the current decorator. Assigned issue to JiRa JS2-24
> List contentPathes = (List) context.getSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR);
> if (contentPathes == null)
> {
> contentPathes = new ArrayList(2);
> context.setSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR, contentPathes);
> }
> String mediaType = context.getCapabilityMap().getPreferredMediaType().getName();
> if (contentPathes.size() < 1)
> {
> // define the lookup order
> contentPathes.add(root.getType() + "/" + mediaType + "/" + layoutDecorator);
> // Start added by jamesliao, 27-05-2005
> contentPathes.add(ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> // End
>
> Iterator defaults = fallBackContentPathes.iterator();
> while (defaults.hasNext())
> {
> String path = (String) defaults.next();
> contentPathes.add(path.replaceAll("\\{mediaType\\}", mediaType));
> }
> }
> else
> {
> contentPathes.set(0, root.getType() + "/" + mediaType + "/" + layoutDecorator);
> // Start added by jamesliao, 27-05-2005, override the previous portlet-decorator
> contentPathes.set(1, ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> // End
> }
> if (layoutDecorator != null)
> {
> addStyle(context, layoutDecorator, ContentFragment.LAYOUT);
> }
> ///////////////////////////////////////////////////////////////////////////////////////////////
> ContentDispatcher dispatcher = renderer.getDispatcher(context, (strategy == STRATEGY_PARALLEL));
> // handle maximized state
> NavigationalState nav = context.getPortalURL().getNavigationalState();
> PortletWindow window = nav.getMaximizedWindow();
> if (null != window)
> {
> renderMaximizedWindow(context, page, root, window);
> }
> else
> {
> aggregateAndRender(root, context, page);
> }
>
> //dispatcher.include(root);
> context.getResponse().getWriter().write(root.getRenderedContent());
> if (null != window)
> {
> context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
> context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
Re: [jira] Resolved: (JS2-266) The content search pathes of page omit portlet-decorator
Posted by James Liao <ji...@gmail.com>.
Hi David,
Is the patch you just applied something wrong?
The following is my patch for jetspeed-spring.xml:
Index: jetspeed-spring.xml
===================================================================
--- jetspeed-spring.xml (revision 190581)
+++ jetspeed-spring.xml (working copy)
@@ -385,7 +385,7 @@
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2">
<list>
- <value>portlet/{mediaType}/jetspeed</value>
+ <!--<value>portlet/{mediaType}/jetspeed</value>-->
<value>portlet/{mediaType}</value>
<value>layout/{mediaType}</value>
<value>generic/{mediaType}</value>
-James Liao
On 6/23/05, David Sean Taylor (JIRA) <je...@portals.apache.org> wrote:
> [ http://issues.apache.org/jira/browse/JS2-266?page=all ]
>
> David Sean Taylor resolved JS2-266:
> -----------------------------------
>
> Resolution: Fixed
>
> patch applied
>
> > The content search pathes of page omit portlet-decorator
> > --------------------------------------------------------
> >
> > Key: JS2-266
> > URL: http://issues.apache.org/jira/browse/JS2-266
> > Project: Jetspeed 2
> > Type: Bug
> > Components: Aggregation
> > Versions: 2.0-M3
> > Environment: WinXP SP2, JDK1.4.2_07
> > Reporter: James Liao
> > Assignee: David Sean Taylor
> > Attachments: better-patch.txt, patch3.txt
> >
> > The following code is from class org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build()
> > List contentPathes = (List) context.getSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR);
> > if (contentPathes == null)
> > {
> > contentPathes = new ArrayList(2);
> > context.setSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR, contentPathes);
> > }
> > String mediaType = context.getCapabilityMap().getPreferredMediaType().getName();
> > if (contentPathes.size() < 1)
> > {
> > // define the lookup order
> > contentPathes.add(root.getType() + "/" + mediaType + "/" + layoutDecorator);
> > contentPathes.add(ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> > Iterator defaults = fallBackContentPathes.iterator();
> > while (defaults.hasNext())
> > {
> > String path = (String) defaults.next();
> > contentPathes.add(path.replaceAll("\\{mediaType\\}", mediaType));
> > }
> > }
> > else
> > {
> > contentPathes.set(0, root.getType() + "/" + mediaType + "/" + layoutDecorator);
> > }
> > According to the above code, the contentPathes which is stored in session, contains the current layout decorator path, fallBack ContentPathes which are specified in the jetspeed-spring.xml.
> > But content pathes does not include current page's portlet-decorator. All the portlet level entities are from the path "portlet/{mediaType}/jetspeed" which is specified in jetspeed-spring.xml(the default portlet-decorator?). That will cause some mistakes if I don't want to include jetspeed portlet-decorator style.
> > So I suggest:
> > 1. Remove the default portlet-decorator definition in jetspeed-spring.xml like the following:
> > <!-- Aggregation: Page -->
> > <bean id="org.apache.jetspeed.aggregator.PageAggregator"
> > class="org.apache.jetspeed.aggregator.impl.PageAggregatorImpl" >
> > <constructor-arg index="0" ><ref bean="org.apache.jetspeed.aggregator.PortletRenderer" /></constructor-arg>
> > <!-- Aggregation Strategies:
> > 0 = PageAggregatorImpl.STRATEGY_SEQUENTIAL
> > 1 = PageAggregatorImpl.STRATEGY_PARALLEL
> > -->
> > <constructor-arg index="1"><value>0</value></constructor-arg>
> > <constructor-arg index="2">
> > <list>
> > <!--<value>portlet/{mediaType}/jetspeed</value>-->
> > <value>portlet/{mediaType}</value>
> > <value>layout/{mediaType}</value>
> > <value>generic/{mediaType}</value>
> > <value>{mediaType}</value>
> > </list>
> > </constructor-arg>
> > </bean>
> > 2. Change the following code org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build()
> > 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");
> > }
> > String layoutDecorator = root.getDecorator();
> > if (layoutDecorator == null)
> > {
> > layoutDecorator = page.getDefaultDecorator(root.getType());
> > }
> > String defaultPortletDecorator = page.getDefaultDecorator(ContentFragment.PORTLET);
> > ///////////////////////////////////////////////////////////////////////////////////////////////
> > //TODO: Remove hard coding of locations and use CM + TL
> > // DST: Im going to encapsulate this into a class, which can be accessed
> > // by
> > // the PowerTool when aggregating content, and make sure to modify the
> > // search path
> > // according to the current decorator. Assigned issue to JiRa JS2-24
> > List contentPathes = (List) context.getSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR);
> > if (contentPathes == null)
> > {
> > contentPathes = new ArrayList(2);
> > context.setSessionAttribute(ContentFilter.SESSION_CONTENT_PATH_ATTR, contentPathes);
> > }
> > String mediaType = context.getCapabilityMap().getPreferredMediaType().getName();
> > if (contentPathes.size() < 1)
> > {
> > // define the lookup order
> > contentPathes.add(root.getType() + "/" + mediaType + "/" + layoutDecorator);
> > // Start added by jamesliao, 27-05-2005
> > contentPathes.add(ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> > // End
> >
> > Iterator defaults = fallBackContentPathes.iterator();
> > while (defaults.hasNext())
> > {
> > String path = (String) defaults.next();
> > contentPathes.add(path.replaceAll("\\{mediaType\\}", mediaType));
> > }
> > }
> > else
> > {
> > contentPathes.set(0, root.getType() + "/" + mediaType + "/" + layoutDecorator);
> > // Start added by jamesliao, 27-05-2005, override the previous portlet-decorator
> > contentPathes.set(1, ContentFragment.PORTLET + "/" + mediaType + "/" + defaultPortletDecorator);
> > // End
> > }
> > if (layoutDecorator != null)
> > {
> > addStyle(context, layoutDecorator, ContentFragment.LAYOUT);
> > }
> > ///////////////////////////////////////////////////////////////////////////////////////////////
> > ContentDispatcher dispatcher = renderer.getDispatcher(context, (strategy == STRATEGY_PARALLEL));
> > // handle maximized state
> > NavigationalState nav = context.getPortalURL().getNavigationalState();
> > PortletWindow window = nav.getMaximizedWindow();
> > if (null != window)
> > {
> > renderMaximizedWindow(context, page, root, window);
> > }
> > else
> > {
> > aggregateAndRender(root, context, page);
> > }
> >
> > //dispatcher.include(root);
> > context.getResponse().getWriter().write(root.getRenderedContent());
> > if (null != window)
> > {
> > context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
> > context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
> > }
> > }
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the administrators:
> http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see:
> http://www.atlassian.com/software/jira
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org