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 rw...@apache.org on 2010/01/25 21:55:39 UTC

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...

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<ContentTypeMapping> contentTypeMappings;
     private List<RequestPathMapping> requestPathMappings;
+    private boolean enableContentTypeFallback;
     
     /**
      * Construct default PortalSite content type mapper implementation.
@@ -34,7 +35,19 @@
      */
     public PortalSiteContentTypeMapperImpl(List<ContentTypeMapping> 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<ContentTypeMapping> contentTypeMappings, boolean enableContentTypeFallback)
+    {
+        this(contentTypeMappings, null, enableContentTypeFallback);
     }
 
     /**
@@ -46,8 +59,23 @@
      */
     public PortalSiteContentTypeMapperImpl(List<ContentTypeMapping> contentTypeMappings, List<RequestPathMapping> 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<ContentTypeMapping> contentTypeMappings, List<RequestPathMapping> 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 @@
                </bean>
            </list>
        </constructor-arg>
+       <constructor-arg index="2"><value>true</value></constructor-arg>
   </bean>
   <bean id="org.apache.jetspeed.portalsite.PortalSite" 
        name="portalSite"

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java?rev=902971&r1=902970&r2=902971&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java Mon Jan 25 20:55:39 2010
@@ -1481,6 +1481,19 @@
         assertTrue(requestPageProxy instanceof DynamicPage);
         assertEquals("docpage.dpsml", requestPageProxy.getName());
         assertEquals("/contentfolder/pub/docpage.dpsml", extractFileSystemPathFromId(requestPageProxy.getId()));
+
+        locator = new JetspeedProfileLocator();
+        locator.init(null, "/document.psml");
+        locator.add("user", true, false, "user");
+        locators = new HashMap();
+        locators.put(ProfileLocator.PAGE_LOCATOR, locator);
+        requestContext = sessionContext.newRequestContext(locators);
+        assertNotNull(requestContext);
+        requestPageProxy = requestContext.getPage();
+        assertNotNull(requestPageProxy);
+        assertTrue(requestPageProxy instanceof DynamicPage);
+        assertEquals("contentpage.dpsml", requestPageProxy.getName());
+        assertEquals("/contentpage.dpsml", extractFileSystemPathFromId(requestPageProxy.getId()));
     }
 
     /**

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteContentTypeMapper.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteContentTypeMapper.java?rev=902971&r1=902970&r2=902971&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteContentTypeMapper.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteContentTypeMapper.java Mon Jan 25 20:55:39 2010
@@ -38,6 +38,14 @@
     String mapSystemType(String requestPath);
 
     /**
+     * isContentTypeFallbackEnabled - enable content type fallback for missing
+     *                                system type page, folder, etc. requests
+     *
+     * @return content type fallback enabled flag
+     */
+    boolean isContentTypeFallbackEnabled();
+
+    /**
      * mapContentType - map request to content type used to select dynamic
      *                  pages; implementation should return null to handle
      *                  request as page and folder lookup.



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org