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 2005/12/06 01:02:46 UTC

svn commit: r354232 - in /incubator/roller/trunk/src/org/roller/presentation/velocity: BasePageServlet.java LanguageServlet.java PreviewServlet.java

Author: agilliland
Date: Mon Dec  5 16:02:37 2005
New Revision: 354232

URL: http://svn.apache.org/viewcvs?rev=354232&view=rev
Log:
more detailed exception handling and error reporting for page servlets.


Modified:
    incubator/roller/trunk/src/org/roller/presentation/velocity/BasePageServlet.java
    incubator/roller/trunk/src/org/roller/presentation/velocity/LanguageServlet.java
    incubator/roller/trunk/src/org/roller/presentation/velocity/PreviewServlet.java

Modified: incubator/roller/trunk/src/org/roller/presentation/velocity/BasePageServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/velocity/BasePageServlet.java?rev=354232&r1=354231&r2=354232&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/velocity/BasePageServlet.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/velocity/BasePageServlet.java Mon Dec  5 16:02:37 2005
@@ -17,8 +17,10 @@
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.exception.ParseErrorException;
 import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.servlet.VelocityServlet;
+import org.roller.RollerException;
 import org.roller.model.RollerFactory;
 import org.roller.model.UserManager;
 import org.roller.pojos.WeblogTemplate;
@@ -55,11 +57,10 @@
      * Process a request for a Weblog page.
      */
     public Template handleRequest(HttpServletRequest request,
-                            HttpServletResponse response, Context ctx)
-        throws Exception {
+                                HttpServletResponse response, 
+                                Context ctx) {
         
         Template outty = null;
-        Exception pageException = null;
         
         try {
             PageContext pageContext =
@@ -126,16 +127,19 @@
                 outty = findDecorator(website, (String) ctx.get("decorator"));
             }
             
-        } catch( Exception e ) {
-            pageException = e;
-            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-        }
-        
-        if (pageException != null) {
-            mLogger.error(pageException.getClass() 
+        } catch(ResourceNotFoundException rnfe ) {
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+            request.setAttribute("DisplayException", rnfe);
+            
+            mLogger.error(rnfe.getClass().getName() 
                 + " processing URL: " + request.getRequestURL());
-            mLogger.debug(pageException);
-            request.setAttribute("DisplayException", pageException);
+            mLogger.debug(rnfe);
+            
+        } catch(Exception e) {
+            
+            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            request.setAttribute("DisplayException", e);
+            mLogger.error("EXCEPTION: in RollerServlet", e);
         }
         
         return outty;
@@ -147,9 +151,11 @@
      * and populating velocity context.
      */
     protected Template prepareForPageExecution(Context ctx,
-            RollerRequest rreq,
-            HttpServletResponse response,
-            org.roller.pojos.Template page) throws Exception {
+                                            RollerRequest rreq,
+                                            HttpServletResponse response,
+                                            org.roller.pojos.Template page) 
+            
+            throws ResourceNotFoundException, RollerException {
         
         Template outty = null;
         
@@ -164,7 +170,17 @@
         // Made it this far, populate the Context
         ContextLoader.setupContext( ctx, rreq, response );
         
-        return getTemplate( page.getId(), "UTF-8" );
+        try {
+            outty = getTemplate( page.getId(), "UTF-8" );
+        } catch (ResourceNotFoundException ex) {
+            // just rethrow
+            throw ex;
+        } catch (Exception ex) {
+            // wrap this as a roller exception
+            throw new RollerException("Error getting velocity template", ex);
+        }
+        
+        return outty;
     }
     
     
@@ -173,7 +189,7 @@
      * decorator then the default decorator is applied.
      */
     protected Template findDecorator(WebsiteData website, String decorator_name)
-        throws Exception {
+            throws ResourceNotFoundException, RollerException {
         
         Template decorator = null;
         org.roller.pojos.Template decorator_template = null;
@@ -199,7 +215,15 @@
         
         // couldn't find Template, load default "no-op" decorator
         if (decorator == null) {
-            decorator = getTemplate("/themes/noop_decorator.vm", "UTF-8");
+            try {
+                decorator = getTemplate("/themes/noop_decorator.vm", "UTF-8");
+            } catch (ResourceNotFoundException ex) {
+                // just rethrow
+                throw ex;
+            } catch (Exception ex) {
+                // wrap as a RollerException
+                throw new RollerException("error getting no-op decorator", ex);
+            }
         }
         
         return decorator;

Modified: incubator/roller/trunk/src/org/roller/presentation/velocity/LanguageServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/velocity/LanguageServlet.java?rev=354232&r1=354231&r2=354232&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/velocity/LanguageServlet.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/velocity/LanguageServlet.java Mon Dec  5 16:02:37 2005
@@ -74,7 +74,7 @@
 	public Template handleRequest(
 		HttpServletRequest request,
 		HttpServletResponse response,
-		Context ctx) throws Exception
+		Context ctx)
 	{
 		mLogger.debug("Processing language change...");
         ServletContext servletContext = RollerContext.getServletContext();

Modified: incubator/roller/trunk/src/org/roller/presentation/velocity/PreviewServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/velocity/PreviewServlet.java?rev=354232&r1=354231&r2=354232&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/velocity/PreviewServlet.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/velocity/PreviewServlet.java Mon Dec  5 16:02:37 2005
@@ -1,7 +1,4 @@
 package org.roller.presentation.velocity;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.StringWriter;
 import org.apache.velocity.Template;
 import org.apache.velocity.context.Context;
@@ -11,6 +8,8 @@
 import javax.servlet.jsp.PageContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.roller.RollerException;
 import org.roller.ThemeNotFoundException;
 import org.roller.model.Roller;
 import org.roller.model.RollerFactory;
@@ -18,10 +17,8 @@
 import org.roller.model.UserManager;
 import org.roller.pojos.Theme;
 import org.roller.pojos.UserData;
-import org.roller.pojos.WeblogTemplate;
 import org.roller.pojos.WebsiteData;
 import org.roller.presentation.RollerRequest;
-
 /**
  * Allow users to preview what their blog would look like in a given theme.
  *
@@ -40,8 +37,8 @@
      * modify the users theme for this request.
      */
     public Template handleRequest( HttpServletRequest request,
-            HttpServletResponse response,
-            Context ctx ) throws Exception {
+                                HttpServletResponse response,
+                                Context ctx ) {
         
         Theme previewTheme = null;
         
@@ -56,6 +53,11 @@
             } catch(ThemeNotFoundException tnfe) {
                 // bogus theme specified ... don't worry about it
                 // possibly "custom", but we'll handle that below
+            } catch(RollerException re) {
+                
+                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                request.setAttribute("DisplayException", re);
+                mLogger.error("EXCEPTION: in RollerServlet", re);
             }
         }
         
@@ -69,7 +71,6 @@
         }
         
         Template outty = null;
-        Exception pageException = null;
         
         try {
             PageContext pageContext =
@@ -129,14 +130,19 @@
                 outty = findDecorator(tmpWebsite, (String) ctx.get("decorator"));
             }
             
-        } catch( Exception e ) {
-            pageException = e;
-            response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-        }
-        
-        if (pageException != null) {
-            mLogger.error("EXCEPTION: in RollerServlet", pageException);
-            request.setAttribute("DisplayException", pageException);
+        } catch(ResourceNotFoundException rnfe ) {
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+            request.setAttribute("DisplayException", rnfe);
+            
+            mLogger.error(rnfe.getClass().getName() 
+                + " processing URL: " + request.getRequestURL());
+            mLogger.debug(rnfe);
+            
+        } catch(Exception e) {
+            
+            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            request.setAttribute("DisplayException", e);
+            mLogger.error("EXCEPTION: in RollerServlet", e);
         }
         
         return outty;