You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2009/03/17 03:18:05 UTC

svn commit: r755079 - /incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java

Author: ajaquith
Date: Tue Mar 17 02:18:05 2009
New Revision: 755079

URL: http://svn.apache.org/viewvc?rev=755079&view=rev
Log:
WikiContextFactory getSpecialPageResolution() has been renamed getSpecialPageURI(), and returns URIs rather than Stripes Resolutions.

Modified:
    incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java

Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java?rev=755079&r1=755078&r2=755079&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/WikiContextFactory.java Tue Mar 17 02:18:05 2009
@@ -33,17 +33,18 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.PageContext;
 
-import net.sourceforge.stripes.action.RedirectResolution;
 import net.sourceforge.stripes.mock.MockHttpServletRequest;
 import net.sourceforge.stripes.mock.MockHttpServletResponse;
 import net.sourceforge.stripes.mock.MockHttpSession;
 import net.sourceforge.stripes.util.ResolverUtil;
 
-import org.apache.wiki.*;
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiProvider;
+import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.WikiException;
 import org.apache.wiki.api.WikiPage;
 import org.apache.wiki.auth.SessionMonitor;
-import org.apache.wiki.content.ContentManager;
 import org.apache.wiki.content.PageNotFoundException;
 import org.apache.wiki.content.WikiName;
 import org.apache.wiki.log.Logger;
@@ -53,7 +54,6 @@
 import org.apache.wiki.tags.WikiTagBase;
 import org.apache.wiki.ui.stripes.HandlerInfo;
 import org.apache.wiki.ui.stripes.WikiActionBeanContext;
-import org.apache.wiki.ui.stripes.WikiInterceptor;
 import org.apache.wiki.url.StripesURLConstructor;
 import org.apache.wiki.util.TextUtil;
 
@@ -148,22 +148,11 @@
         // Stash the WikiSession as a request attribute
         WikiSession wikiSession = SessionMonitor.getInstance( engine ).find( request.getSession() );
         request.setAttribute( ATTR_WIKISESSION, wikiSession );
-
-        WikiPage page = context.getPage();
-        if( page == null )
-        {
-            // If the page supplied was blank, default to the front page to
-            // avoid NPEs
-            // FIXME: I don't think this should ever happen
-            throw new InternalWikiException("saveContext with null wikipage");
-            //page = engine.getFrontPage( ContentManager.DEFAULT_SPACE );
-            //context.setPage( page );
-        }
         request.setAttribute( WikiTagBase.ATTR_CONTEXT, context );
     }
 
-    /** Private map with JSPs as keys, Resolutions as values */
-    private final Map<String, RedirectResolution> m_specialRedirects;
+    /** Private map with JSPs as keys, URIs (for absolute or relative URLs)  as values */
+    private final Map<String, URI> m_specialRedirects;
 
     private final WikiEngine m_engine;
 
@@ -187,7 +176,7 @@
     {
         super();
         m_engine = engine;
-        m_specialRedirects = new HashMap<String, RedirectResolution>();
+        m_specialRedirects = new HashMap<String, URI>();
 
         initRequestContextMap( properties );
         initSpecialPageRedirects( properties );
@@ -242,10 +231,10 @@
      * 
      * @since 2.4.20
      * @param page the page name.
-     * @return The rewritten page name, or <code>null</code>, if the page
-     *         does not exist.
+     * @return The rewritten page name
+     * @throws PageNotFoundException if the page does not exist
      */
-    public final String getFinalPageName( String page ) throws ProviderException
+    public final String getFinalPageName( String page ) throws PageNotFoundException, ProviderException
     {
         boolean isThere = simplePageExists( page );
         String finalName = page;
@@ -289,8 +278,8 @@
 
     /**
      * <p>
-     * If the page is a special page, this method returns a
-     * {@link net.sourceforge.stripes.action.RedirectResolution} for that page;
+     * If the page is a special page, this method returns an
+     * a String representing the relative or absolute URL to that page;
      * otherwise, it returns <code>null</code>.
      * </p>
      * <p>
@@ -299,9 +288,8 @@
      * always be redirected to "RecentChanges.jsp" instead of trying to find a
      * Wiki page called "RecentChanges".
      * </p>
-     * TODO: fix this algorithm
      */
-    public final RedirectResolution getSpecialPageResolution( String page )
+    public final URI getSpecialPageURI( String page )
     {
         return m_specialRedirects.get( page );
     }
@@ -477,23 +465,18 @@
                             // No http:// ftp:// or other authority, so it must be relative to webapp /
                             if ( !redirectUrl.startsWith( "/" ) )
                             {
-                                redirectUrl = "/" + redirectUrl;
+                                uri = new URI( "/" + redirectUrl );
                             }
                         }
+                        
+                        // Add the URI for the special page
+                        m_specialRedirects.put( specialPage, uri );
                     }
                     catch( URISyntaxException e )
                     {
                         // The user supplied a STRANGE reference
                         log.error( "Strange special page reference: " + redirectUrl );
                     }
-                    
-                    // Add a new RedirectResolution for the special page
-                    RedirectResolution resolution = m_specialRedirects.get( specialPage );
-                    if( resolution == null )
-                    {
-                        resolution = new RedirectResolution( redirectUrl );
-                        m_specialRedirects.put( specialPage, resolution );
-                    }
                 }
             }
         }
@@ -555,7 +538,14 @@
             // funny plurals)
             if( pageName != null )
             {
-                page = resolvePage( request, pageName );
+                try
+                {
+                    page = resolvePage( request, pageName );
+                }
+                catch( PageNotFoundException e )
+                {
+                    // If we can't find the page, it must not exist yet (which is ok)
+                }
             }
         }
 
@@ -601,13 +591,13 @@
             page = pages[0];
             try
             {
-                // Look for singular/plural variants; if one
-                // not found, take the one the user supplied
+                // Look for singular/plural variants
                 String finalPage = getFinalPageName( page );
-                if( finalPage != null )
-                {
-                    page = finalPage;
-                }
+                return finalPage;
+            }
+            catch( PageNotFoundException e )
+            {
+                // No worries; use the one the user supplied
             }
             catch( ProviderException e )
             {
@@ -667,6 +657,6 @@
         {
             return true;
         }
-        return m_engine.getPageManager().pageExists( page );
+        return m_engine.pageExists( page );
     }
 }