Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/desktop/core.src.js URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/desktop/core.src.js?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/desktop/core.src.js (original) +++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/desktop/core.src.js Mon Apr 20 18:31:00 2009 @@ -491,16 +491,42 @@ { var jsObj = jetspeed; var headTagElems = []; + var headTagElemsByMergeHint = []; var childTagElems = jsObj.getHead().childNodes; // retrieve the current head tag elements if (childTagElems) { + var reDojoRequires = /^header\.dojo\.requires/; + var reDojo = /^header\.dojo\./; + for (var i = 0; i < childTagElems.length; i++) { if (childTagElems[i].nodeType == dojo.dom.ELEMENT_NODE) { headTagElems.push(childTagElems[i]); + if (childTagElems[i].tagName == "SCRIPT") + { + var mergeHint = childTagElems[i].getAttribute("org.apache.portals.portal.page.head.element.contribution.merge.hint"); + // TODO: HeaderResourceImpl needs to write some dojo sections separately. + if (mergeHint == "header.dojo.parameters") + { + mergeHint = "header.dojo.config"; + } + else if (reDojoRequires.test(mergeHint)) + { + mergeHint = "header.dojo.requires"; + } + + if (mergeHint && reDojo.test(mergeHint)) + { + if (!headTagElemsByMergeHint[mergeHint]) + { + headTagElemsByMergeHint[mergeHint] = []; + } + headTagElemsByMergeHint[mergeHint].push(childTagElems[i]); + } + } } } } @@ -519,6 +545,7 @@ if (!id) id = childNode.getAttribute("ID"); if (!id) id = childNode.getAttribute("Id"); if (!id) id = childNode.getAttribute("iD"); + var mergeHint = childNode.getAttribute("org.apache.portals.portal.page.head.element.contribution.merge.hint"); var tagName = childNode.tagName; var matched = false; @@ -539,35 +566,87 @@ if (!matched) { - // not matched, insert the new head element in the current insertionIndex and increase the insertion index. - var headElem = jetspeed.createHeadElement(childNode); - - if (jsObj.UAie) + if (headTagElemsByMergeHint[mergeHint]) { - if (tagName == "SCRIPT" && childNode.text) + if (jsObj.UAie) { - headElem.text = childNode.value; + var headTagElemsByMergeHintArray = headTagElemsByMergeHint[mergeHint]; + var lines = childNode.text.split(/\n/); + for (var i = 0; i < lines.length; i++) + { + var found = false; + for (var j = 0; j < headTagElemsByMergeHintArray.length; j++) + { + var existingLine = headTagElemsByMergeHintArray[j].text; + if (existingLine && existingLine.indexOf(lines[i]) >= 0) + { + found = true; + break; + } + } + if (!found) + { + var lastLine = headTagElemsByMergeHintArray[headTagElemsByMergeHintArray.length - 1].text; + headTagElemsByMergeHintArray[headTagElemsByMergeHintArray.length - 1].text = (lastLine ? lastLine + "\r\n": "") + lines[i]; + } + } } - else if (tagName == "STYLE" && childNode.text) + else if (childNode.textContent) { - headElem.styleSheet.cssText = childNode.text; + var headTagElemsByMergeHintArray = headTagElemsByMergeHint[mergeHint]; + var lines = childNode.textContent.split(/\n/); + for (var i = 0; i < lines.length; i++) + { + var found = false; + for (var j = 0; j < headTagElemsByMergeHintArray.length; j++) + { + var existingLine = headTagElemsByMergeHintArray.textContent; + if (existingLine && existingLine.indexOf(lines[i]) >= 0) + { + found = true; + break; + } + } + if (!found) + { + var lastLine = headTagElemsByMergeHintArray[headTagElemsByMergeHintArray.length - 1].textContent; + headTagElemsByMergeHintArray[headTagElemsByMergeHintArray.length - 1].textContent = (lastLine ? lastLine + "\r\n": "") + lines[i]; + } + } } } - else if (childNode.textContent) - { - headElem.appendChild(document.createTextNode(childNode.textContent)); - } - - if (headTagElems[insertionIndex]) - { - jsObj.getHead().insertBefore(headElem, headTagElems[insertionIndex]); - } else { - jsObj.getHead().appendChild(scriptElem); + // not matched, insert the new head element in the current insertionIndex and increase the insertion index. + var headElem = jetspeed.createHeadElement(childNode); + + if (jsObj.UAie) + { + if (tagName == "SCRIPT" && childNode.text) + { + headElem.text = childNode.value; + } + else if (tagName == "STYLE" && childNode.text) + { + headElem.styleSheet.cssText = childNode.text; + } + } + else if (childNode.textContent) + { + headElem.appendChild(document.createTextNode(childNode.textContent)); + } + + if (headTagElems[insertionIndex]) + { + jsObj.getHead().insertBefore(headElem, headTagElems[insertionIndex]); + } + else + { + jsObj.getHead().appendChild(scriptElem); + } + + ++insertionIndex; } - - ++insertionIndex; } } }
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-header-resource/src/main/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-header-resource/src/main/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-header-resource/src/main/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-header-resource/src/main/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java Mon Apr 20 18:31:00 2009 @@ -16,24 +16,24 @@ */ package org.apache.jetspeed.headerresource.impl; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; -import java.util.Map; import java.util.List; -import java.util.ArrayList; +import java.util.Map; import java.util.Set; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.container.url.BasePortalURL; import org.apache.jetspeed.headerresource.HeaderResource; import org.apache.jetspeed.headerresource.HeaderResourceLib; +import org.apache.jetspeed.portlet.HeaderPhaseSupportConstants; import org.apache.jetspeed.request.RequestContext; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - /** * Default implementation for HeaderResource * @@ -346,7 +346,9 @@ { if ( requiresScriptBlock && ! inScriptBlock ) { - header.append( "<script language=\"JavaScript\" type=\"text/javascript\">" ).append( EOL ); + header.append( "<script language=\"JavaScript\" type=\"text/javascript\" ") + .append( HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE ).append( "=\"" ) + .append( headerName ).append( "\">" ).append( EOL ); inScriptBlock = true; } else if ( requiresStyleBlock && ! inStyleBlock ) @@ -1007,7 +1009,8 @@ StringBuffer initOut = new StringBuffer(); // <script type="text/javascript" src='http://localhost:8080/jetspeed/javascript/dojo/dojo.js'></script> // src='$jetspeedDesktop.getPortalResourceUrl("/javascript/dojo/dojo.js")' - initOut.append( "<script type=\"text/javascript\" src=\"" ).append( getPortalResourceUrl( dojoGetPath(), false ) ).append( "dojo.js" ).append( "\"></script>" ); + initOut.append( "<script type=\"text/javascript\" src=\"" ).append( getPortalResourceUrl( dojoGetPath(), false ) ).append( "dojo.js" ) + .append( "\" id=\"").append(HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_ELEMENT_ID_DOJO_LIBRARY_INCLUDE).append("\"></script>" ); return initOut.toString(); } protected String dojoGenerateWriteincludes() Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java Mon Apr 20 18:31:00 2009 @@ -17,20 +17,17 @@ package org.apache.jetspeed.aggregator.impl; import java.io.IOException; -import java.util.Iterator; -import java.util.Map; -import java.util.HashMap; -import java.util.List; import java.util.ArrayList; import java.util.Collections; - -import javax.portlet.Portlet; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - +import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.aggregator.PageAggregator; -import org.apache.jetspeed.container.state.NavigationalState; import org.apache.jetspeed.container.url.BasePortalURL; import org.apache.jetspeed.decoration.DecorationFactory; import org.apache.jetspeed.exception.JetspeedException; @@ -40,14 +37,7 @@ import org.apache.jetspeed.headerresource.HeaderResourceLib; import org.apache.jetspeed.om.page.ContentFragment; import org.apache.jetspeed.om.page.ContentPage; -import org.apache.jetspeed.om.portlet.PortletApplication; -import org.apache.jetspeed.portlet.PortletHeaderRequest; -import org.apache.jetspeed.portlet.PortletHeaderResponse; -import org.apache.jetspeed.portlet.SupportsHeaderPhase; import org.apache.jetspeed.request.RequestContext; -import org.apache.jetspeed.PortalReservedParameters; -import org.apache.jetspeed.om.portlet.PortletDefinition; -import org.apache.jetspeed.container.PortletWindow; /** * HeaderAggregator builds the content required to render a page of portlets. @@ -1046,94 +1036,8 @@ { context.setAttribute( PortalReservedParameters.HEADER_NAMED_RESOURCE_REGISTRY_ATTRIBUTE, getHeaderResourceRegistry() ); } - - // handle maximized state - boolean atLeastOneHasHeaderPhase = false; - NavigationalState nav = context.getPortalURL().getNavigationalState(); - PortletWindow window = nav.getMaximizedWindow(); - if ( null != window ) - { - ContentFragment maxedContentFragment = page.getContentFragmentById( window.getId().toString() ); - if ( maxedContentFragment != null ) - { - atLeastOneHasHeaderPhase = renderHeaderFragment( context, maxedContentFragment ); - } - } - else - { - atLeastOneHasHeaderPhase = aggregateAndRender( root, context, page ); - } - - if ( atLeastOneHasHeaderPhase ) - { - - } } - protected boolean aggregateAndRender( ContentFragment fragment, RequestContext context, ContentPage page ) - { - boolean atLeastOneHasHeaderPhase = false; - boolean hasHeaderPhase = false; - if ( fragment.getContentFragments() != null && fragment.getContentFragments().size() > 0 ) - { - Iterator children = fragment.getContentFragments().iterator(); - while (children.hasNext()) - { - ContentFragment child = (ContentFragment) children.next(); - if ( ! "hidden".equals( fragment.getState() ) ) - { - hasHeaderPhase = aggregateAndRender( child, context, page ); - if ( hasHeaderPhase ) - { - atLeastOneHasHeaderPhase = true; - } - } - } - } - hasHeaderPhase = renderHeaderFragment( context, fragment ); - if ( hasHeaderPhase ) - { - atLeastOneHasHeaderPhase = true; - } - return atLeastOneHasHeaderPhase; - } - - protected boolean renderHeaderFragment( RequestContext context, ContentFragment fragment ) - { - try - { - if ( !fragment.getType().equals( ContentFragment.LAYOUT ) ) - { - PortletWindow portletWindow = context.getPortletWindow( fragment ); - if (portletWindow.isValid()) - { - PortletDefinition pd = portletWindow.getPortletDefinition(); - if ( getPortletFactory().isPortletApplicationRegistered((PortletApplication)pd.getApplication() ) ) - { - String portletApplicationContextPath = pd.getApplication().getContextPath(); - Portlet portlet = getPortletFactory().getPortletInstance( context.getConfig().getServletContext().getContext( portletApplicationContextPath ), pd ).getRealPortlet(); - if ( portlet != null && portlet instanceof SupportsHeaderPhase ) - { - log.debug( "renderHeaderFragment: " + pd.getPortletName() + " supports header phase" ); - - HeaderResource hr = getHeaderResourceFactory().getHeaderResource( context, this.baseUrlAccess, isDesktop(), getHeaderConfiguration() ); - PortletHeaderRequest headerRequest = new PortletHeaderRequestImpl( context, portletWindow, portletApplicationContextPath ); - PortletHeaderResponse headerResponse = new PortletHeaderResponseImpl( context, hr, isDesktop(), getHeaderConfiguration(), getHeaderResourceRegistry() ); - ((SupportsHeaderPhase)portlet).doHeader( headerRequest, headerResponse ); - return true; - } - } - } - } - return false; - } - catch ( Exception e ) - { - log.error( "renderHeaderFragment failed", e ); - } - return false; - } - protected PortletFactory getPortletFactory() { return this.factory; Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java Mon Apr 20 18:31:00 2009 @@ -885,10 +885,16 @@ public String getDojoConfigurations() { HttpServletRequest request = getRequestContext().getRequest(); - StringBuilder sb = new StringBuilder(128); - sb.append("var djConfig = {jetspeed: {}};\r\n"); - sb.append("djConfig.baseScriptUri = \"" + request.getContextPath() + "/javascript/dojo/\";\r\n"); - sb.append("djConfig.jetspeed.servletPath = \"" + request.getServletPath() + "\";"); + StringBuilder sb = new StringBuilder(256); + + sb.append("<script language=\"JavaScript\" type=\"text/javascript\" ") + .append(HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE).append("=\"") + .append(HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_CONFIG).append("\">\r\n") + .append("var djConfig = {jetspeed: {}};\r\n") + .append("djConfig.baseScriptUri = \"" + request.getContextPath() + "/javascript/dojo/\";\r\n") + .append("djConfig.jetspeed.servletPath = \"" + request.getServletPath() + "\";\r\n") + .append("</script>"); + return sb.toString(); } Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/headerresource/HeaderResource.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/headerresource/HeaderResource.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/headerresource/HeaderResource.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/headerresource/HeaderResource.java Mon Apr 20 18:31:00 2009 @@ -18,6 +18,8 @@ import java.util.Map; +import org.apache.jetspeed.portlet.HeaderPhaseSupportConstants; + /** * HeaderResource has tags information to put them into <head> tag. * @@ -63,11 +65,11 @@ public final static String HEADER_SECTION_NAME_PREFIX_DOJO = "header.dojo."; public final static String HEADER_SECTION_DOJO_PARAMETERS = "header.dojo.parameters"; public final static String HEADER_SECTION_DOJO_PREINIT = "header.dojo.preinit"; - public final static String HEADER_SECTION_DOJO_CONFIG = "header.dojo.config"; + public final static String HEADER_SECTION_DOJO_CONFIG = HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_CONFIG; public final static String HEADER_SECTION_DOJO_INIT = "header.dojo.init"; - public final static String HEADER_SECTION_DOJO_REQUIRES_CORE = "header.dojo.requires.core"; + public final static String HEADER_SECTION_DOJO_REQUIRES_CORE = HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRES + ".core"; public final static String HEADER_SECTION_DOJO_MODULES_PATH = "header.dojo.modules.path"; - public final static String HEADER_SECTION_DOJO_REQUIRES_MODULES = "header.dojo.requires.modules"; + public final static String HEADER_SECTION_DOJO_REQUIRES_MODULES = HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRES + ".modules"; public final static String HEADER_SECTION_DOJO_WRITEINCLUDES = "header.dojo.writeincludes"; public final static String HEADER_SECTION_DOJO_MODULES_NAMESPACE = "header.dojo.modules.namespace"; public final static String HEADER_SECTION_DOJO_STYLE_BODYEXPAND = "header.dojo.style.bodyexpand"; Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/HeaderPhaseSupportConstants.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/HeaderPhaseSupportConstants.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/HeaderPhaseSupportConstants.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/HeaderPhaseSupportConstants.java Mon Apr 20 18:31:00 2009 @@ -16,10 +16,51 @@ */ package org.apache.jetspeed.portlet; +/** + * This interface defines some constants for attribute name or value of contributed head elements. + * This constant values are used by Jetspeed portal to optimize the head elements aggregation. + * <P> + * Jetspeed can look up 'id' attribute value not to include redundant head element. + * Also, Jetspeed can look up 'org.apache.portals.portal.page.head.element.contribution.merge.hint' attribute value + * to merge all the text content of elements containing 'org.apache.portals.portal.page.head.element.contribution.merge.hint' + * attribute with same value. + * </P> + * <P> + * For example, if the following elements are contributed by a portlet, + * <XMP> + * <script id="header.dojo.library.include" language="JavaScript" src="/script/dojo/dojo.js"></script> + * <script language="JavaScript" org.apache.portals.portal.page.head.element.contribution.merge.hint="header.dojo.requires"> + * dojo.require("dojo.io.*"); + * </script> + * </XMP> + * and, if the following elements are contributed by another portlet, + * <XMP> + * <script id="header.dojo.library.include" language="JavaScript" src="/script/dojo/dojo.js"></script> + * <script language="JavaScript" org.apache.portals.portal.page.head.element.contribution.merge.hint="header.dojo.requires"> + * dojo.require("dojo.lang.*"); + * </script> + * </XMP> + * then, the result aggregated elements are to be like the following: + * <XMP> + * <script id="header.dojo.library.include" language="JavaScript" src="/script/dojo/dojo.js"></script> + * <script language="JavaScript" org.apache.portals.portal.page.head.element.contribution.merge.hint="header.dojo.requires"> + * dojo.require("dojo.io.*"); + * dojo.require("dojo.lang.*"); + * </script> + * </XMP> + * </P> + * + * @version $Id$ + */ public interface HeaderPhaseSupportConstants { /** + * An ID attribute value for dojo library inclusion which can be used in head elements merging by portal. + */ + public static final String HEAD_ELEMENT_CONTRIBUTION_ELEMENT_ID_DOJO_LIBRARY_INCLUDE = "header.dojo.library.include"; + + /** * An attribute name of head element contributed to the portal page aggregation by a portlet. * The value of this attribute can be used by portal to merge contents of each contributed head element * into centralized element(s). @@ -31,13 +72,13 @@ public static final String HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE = "org.apache.portals.portal.page.head.element.contribution.merge.hint"; /** - * An attribute value for key hint which can be used in head elements merging by portal. + * An attribute value for key hint to aggregate dojo configuration which can be used in head elements merging by portal. */ - public static final String HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRE = "dojo.require"; - + public static final String HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_CONFIG = "header.dojo.config"; + /** - * An ID attribute value which can be used in head elements merging by portal. + * An attribute value for key hint to aggregate dojo require statements which can be used in head elements merging by portal. */ - public static final String HEAD_ELEMENT_CONTRIBUTION_ELEMENT_ID_DOJO_LIBRARY_INCLUDE = "dojo.library.include"; - + public static final String HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRES = "header.dojo.requires"; + } Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderRequest.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderRequest.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderRequest.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderRequest.java Mon Apr 20 18:31:00 2009 @@ -18,6 +18,13 @@ import javax.portlet.PortletPreferences; +/** + * This interface is deprecated because head contribution from portlet is possible + * by the native portlet API in a JSR-286 compliant portal. + * + * @version $Id$ + * @deprecated + */ public interface PortletHeaderRequest { /** Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderResponse.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderResponse.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderResponse.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/PortletHeaderResponse.java Mon Apr 20 18:31:00 2009 @@ -22,7 +22,13 @@ import org.apache.jetspeed.headerresource.HeaderResource; - +/** + * This interface is deprecated because head contribution from portlet is possible + * by the native portlet API in a JSR-286 compliant portal. + * + * @version $Id$ + * @deprecated + */ public interface PortletHeaderResponse { /** Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/SupportsHeaderPhase.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/SupportsHeaderPhase.java?rev=766785&r1=766784&r2=766785&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/SupportsHeaderPhase.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portlet/SupportsHeaderPhase.java Mon Apr 20 18:31:00 2009 @@ -19,9 +19,14 @@ import javax.portlet.PortletException; /** - * Indicates that a portlet supports the pre-286 header phase - * + * Indicates that a portlet supports the pre-286 header phase. + * <P> + * This interface is deprecated because head contribution from portlet is possible + * by the native portlet API in a JSR-286 compliant portal. + * </P> * @author <a href="mailto:[email protected]">David Sean Taylor</a> + * @version $Id$ + * @deprecated */ public interface SupportsHeaderPhase { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
