You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2006/07/14 20:27:48 UTC

svn commit: r421978 - in /incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering: servlets/PreviewServlet.java util/WeblogPreviewRequest.java

Author: agilliland
Date: Fri Jul 14 11:27:47 2006
New Revision: 421978

URL: http://svn.apache.org/viewvc?rev=421978&view=rev
Log:
couple more tweaks to fix up previewing.

- parsed preview request now supports heavyweight accessors for Theme pojo.
- preview servlet now uses heavyweight methods of preview request.
- preview servlet no longer makes ad-hoc page request for model init data, it can use a real preview request since that is now a subclass of page request.


Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java?rev=421978&r1=421977&r2=421978&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java Fri Jul 14 11:27:47 2006
@@ -31,10 +31,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
-import org.apache.roller.ThemeNotFoundException;
-import org.apache.roller.model.RollerFactory;
-import org.apache.roller.model.ThemeManager;
-import org.apache.roller.model.UserManager;
 import org.apache.roller.pojos.Template;
 import org.apache.roller.pojos.Theme;
 import org.apache.roller.pojos.WebsiteData;
@@ -43,7 +39,6 @@
 import org.apache.roller.ui.rendering.Renderer;
 import org.apache.roller.ui.rendering.RendererManager;
 import org.apache.roller.ui.rendering.model.ModelLoader;
-import org.apache.roller.ui.rendering.util.WeblogPageRequest;
 import org.apache.roller.ui.rendering.util.WeblogPreviewRequest;
 
 
@@ -81,7 +76,6 @@
         
         log.debug("Entering");
         
-        Theme previewTheme = null;
         WebsiteData weblog = null;
         
         WeblogPreviewRequest previewRequest = null;
@@ -89,37 +83,22 @@
             previewRequest = new WeblogPreviewRequest(request);
             
             // lookup weblog specified by preview request
-            UserManager uMgr = RollerFactory.getRoller().getUserManager();
-            weblog = uMgr.getWebsiteByHandle(previewRequest.getWeblogHandle());
+            weblog = previewRequest.getWeblog();
             
             if(weblog == null) {
                 throw new RollerException("unable to lookup weblog: "+
                         previewRequest.getWeblogHandle());
             }
         } catch (Exception e) {
-            // some kind of error parsing the request
+            // some kind of error parsing the request or getting weblog
             log.error("error creating preview request", e);
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
         
         // try getting the preview theme
-        log.debug("preview theme = "+previewRequest.getTheme());
-        if(previewRequest.getTheme() != null) {
-            try {
-                ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
-                previewTheme = themeMgr.getTheme(previewRequest.getTheme());
-                
-            } catch(ThemeNotFoundException tnfe) {
-                // bogus theme specified ... don't worry about it
-                // possibly "custom", but we'll handle that below
-            } catch(RollerException re) {
-                
-                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                log.error("Error doing theme preview", re);
-                return;
-            }
-        }
+        log.debug("preview theme = "+previewRequest.getThemeName());
+        Theme previewTheme = previewRequest.getTheme();
         
         // construct a temporary Website object for this request
         // and set the EditorTheme to our previewTheme
@@ -127,7 +106,7 @@
         tmpWebsite.setData(weblog);
         if(previewTheme != null && previewTheme.isEnabled()) {
             tmpWebsite.setEditorTheme(previewTheme.getName());
-        } else if(previewRequest.getTheme().equals(Theme.CUSTOM)) {
+        } else if(Theme.CUSTOM.equals(previewRequest.getThemeName())) {
             tmpWebsite.setEditorTheme(Theme.CUSTOM);
         }
         
@@ -159,11 +138,7 @@
             // populate the rendering model
             Map initData = new HashMap();
             initData.put("request", request);
-            
-            // we need to add a simple page request to use weblog models
-            WeblogPageRequest pageRequest = new WeblogPageRequest();
-            pageRequest.setWeblogHandle(previewRequest.getWeblogHandle());
-            initData.put("pageRequest", pageRequest);
+            initData.put("pageRequest", previewRequest);
             
             // page context for helpers which use jsp tags :/
             PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(
@@ -186,7 +161,7 @@
             ModelLoader.loadCustomModels(tmpWebsite, model, initData);
             
             // ick, gotta load pre-3.0 model stuff as well :(
-            ModelLoader.loadOldModels(model, request, response, pageContext, pageRequest);
+            ModelLoader.loadOldModels(model, request, response, pageContext, previewRequest);
             
         } catch (RollerException ex) {
             log.error("ERROR loading model for page", ex);
@@ -247,7 +222,7 @@
      * Post requests are not allowed, send a 404.
      */
     public void doPost(HttpServletRequest request, HttpServletResponse response)
-    throws ServletException, IOException {
+            throws ServletException, IOException {
         
         response.sendError(HttpServletResponse.SC_NOT_FOUND);
     }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java?rev=421978&r1=421977&r2=421978&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java Fri Jul 14 11:27:47 2006
@@ -19,6 +19,13 @@
 package org.apache.roller.ui.rendering.util;
 
 import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.RollerException;
+import org.apache.roller.ThemeNotFoundException;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.ThemeManager;
+import org.apache.roller.pojos.Theme;
 
 
 /**
@@ -26,9 +33,15 @@
  */
 public class WeblogPreviewRequest extends WeblogPageRequest {
     
+    private static Log log = LogFactory.getLog(WeblogPreviewRequest.class);
+    
     private static final String PREVIEW_SERVLET = "/roller-ui/authoring/preview";
     
-    private String theme = null;
+    // lightweight attributes
+    private String themeName = null;
+    
+    // heavyweight attributes
+    private Theme theme = null;
     
     
     public WeblogPreviewRequest(HttpServletRequest request) 
@@ -40,7 +53,11 @@
         // all we need to worry about is the query params
         // the only param we expect is "theme"
         if(request.getParameter("theme") != null) {
-            this.theme = request.getParameter("theme");
+            this.themeName = request.getParameter("theme");
+        }
+        
+        if(log.isDebugEnabled()) {
+            log.debug("theme = "+this.themeName);
         }
     }
     
@@ -50,12 +67,12 @@
     }
     
     
-    public String getTheme() {
-        return theme;
+    public String getThemeName() {
+        return themeName;
     }
 
-    public void setTheme(String theme) {
-        this.theme = theme;
+    public void setThemeName(String theme) {
+        this.themeName = theme;
     }
     
     // override so that previews never show login status
@@ -66,6 +83,26 @@
     // override so that previews never show login status
     public boolean isLoggedIn() {
         return false;
+    }
+
+    public Theme getTheme() {
+        
+        if(theme == null && themeName != null) {
+            try {
+                ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
+                theme = themeMgr.getTheme(themeName);
+            } catch(ThemeNotFoundException tnfe) {
+                // bogus theme specified ... don't worry about it
+            } catch(RollerException re) {
+                log.error("Error looking up theme "+themeName, re);
+            }
+        }
+        
+        return theme;
+    }
+
+    public void setTheme(Theme theme) {
+        this.theme = theme;
     }
     
 }