Return-Path: Delivered-To: apmail-portals-jetspeed-dev-archive@www.apache.org Received: (qmail 87369 invoked from network); 25 Jan 2010 20:56:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 25 Jan 2010 20:56:01 -0000 Received: (qmail 86936 invoked by uid 500); 25 Jan 2010 20:56:01 -0000 Delivered-To: apmail-portals-jetspeed-dev-archive@portals.apache.org Received: (qmail 86901 invoked by uid 500); 25 Jan 2010 20:56:01 -0000 Mailing-List: contact jetspeed-dev-help@portals.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Jetspeed Developers List" Delivered-To: mailing list jetspeed-dev@portals.apache.org Received: (qmail 86891 invoked by uid 99); 25 Jan 2010 20:56:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Jan 2010 20:56:01 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Jan 2010 20:56:00 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id E8A1523888EC; Mon, 25 Jan 2010 20:55:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r902971 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/ components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/ components/jetspeed-portal-site/src/test/ja... Date: Mon, 25 Jan 2010 20:55:39 -0000 To: jetspeed-dev@portals.apache.org From: rwatler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100125205539.E8A1523888EC@eris.apache.org> Author: rwatler Date: Mon Jan 25 20:55:39 2010 New Revision: 902971 URL: http://svn.apache.org/viewvc?rev=902971&view=rev Log: implement content type fallback for missing system, (*.psml), type pages Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteContentTypeMapperImpl.java portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteSessionContextImpl.java portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteContentTypeMapper.java Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteContentTypeMapperImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteContentTypeMapperImpl.java?rev=902971&r1=902970&r2=902971&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteContentTypeMapperImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteContentTypeMapperImpl.java Mon Jan 25 20:55:39 2010 @@ -15,9 +15,10 @@ public class PortalSiteContentTypeMapperImpl implements PortalSiteContentTypeMapper { public static final String DEFAULT_PAGE_SYSTEM_TYPE_SUFFIX = Page.DOCUMENT_TYPE; - + private List contentTypeMappings; private List requestPathMappings; + private boolean enableContentTypeFallback; /** * Construct default PortalSite content type mapper implementation. @@ -34,7 +35,19 @@ */ public PortalSiteContentTypeMapperImpl(List contentTypeMappings) { - this(contentTypeMappings, null); + this(contentTypeMappings, null, false); + } + + /** + * Construct default PortalSite content type mapper implementation. + * + * @param contentTypeMappings mappings to determine content type from request path + * @param enableContentTypeFallback enable content type fallback for missing system + * type page, folder, etc. requests + */ + public PortalSiteContentTypeMapperImpl(List contentTypeMappings, boolean enableContentTypeFallback) + { + this(contentTypeMappings, null, enableContentTypeFallback); } /** @@ -46,8 +59,23 @@ */ public PortalSiteContentTypeMapperImpl(List contentTypeMappings, List requestPathMappings) { + this(contentTypeMappings, requestPathMappings, false); + } + + /** + * Construct default PortalSite content type mapper implementation. + * + * @param contentTypeMappings mappings to determine content type from request path + * @param requestPathMappings mappings to determine request path from server name, + * content type, and request path + * @param enableContentTypeFallback enable content type fallback for missing system + * type page, folder, etc. requests + */ + public PortalSiteContentTypeMapperImpl(List contentTypeMappings, List requestPathMappings, boolean enableContentTypeFallback) + { this.contentTypeMappings = contentTypeMappings; this.requestPathMappings = requestPathMappings; + this.enableContentTypeFallback = enableContentTypeFallback; } /* (non-Javadoc) @@ -69,6 +97,14 @@ } return null; } + + /* (non-Javadoc) + * @see org.apache.jetspeed.portalsite.PortalSiteContentTypeMapper#isContentTypeFallbackEnabled() + */ + public boolean isContentTypeFallbackEnabled() + { + return enableContentTypeFallback; + } /* (non-Javadoc) * @see org.apache.jetspeed.portalsite.PortalSiteContentTypeMapper#mapRequestPath(java.lang.String, java.lang.String, java.lang.String) Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteSessionContextImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteSessionContextImpl.java?rev=902971&r1=902970&r2=902971&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteSessionContextImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/main/java/org/apache/jetspeed/portalsite/impl/PortalSiteSessionContextImpl.java Mon Jan 25 20:55:39 2010 @@ -32,7 +32,6 @@ import javax.servlet.http.HttpSessionEvent; import org.apache.jetspeed.om.folder.Folder; -import org.apache.jetspeed.om.folder.FolderNotFoundException; import org.apache.jetspeed.om.page.DynamicPage; import org.apache.jetspeed.om.page.FragmentDefinition; import org.apache.jetspeed.om.page.BaseConcretePageElement; @@ -262,6 +261,29 @@ // types matched, continue below with native portal resolution // of request String systemType = contentTypeMapper.mapSystemType(requestPath); + if ((systemType != null) && contentTypeMapper.isContentTypeFallbackEnabled()) + { + // test for exact system match if content fallback enabled; + // clear system type if not found + SiteView view = getSiteView(); + if (view != null) + { + try + { + view.getNodeProxy(requestPath, null, false, false); + } + catch (NodeNotFoundException nnfe) + { + // log fallback mapping + if (log.isDebugEnabled()) + { + log.debug("System request: requestPath="+requestPath+" does not exist: fallback to content type"); + } + systemType = null; + } + } + } + // if not system type, test for content type if (systemType == null) { // test for content type mappings; if no content type matched Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml?rev=902971&r1=902970&r2=902971&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml Mon Jan 25 20:55:39 2010 @@ -192,6 +192,7 @@ + true