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/06/17 02:08:15 UTC

svn commit: r414964 - in /incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity: VelocityRenderer.java VelocityRendererFactory.java VelocityWeblogPageRenderer.java

Author: agilliland
Date: Fri Jun 16 17:08:15 2006
New Revision: 414964

URL: http://svn.apache.org/viewvc?rev=414964&view=rev
Log:
some small tweaks to velocity rendering system.

- velocity renderers now lookup the velocity template at construction time and throw an exception if they can't find the template via velocity.
- velocity renderers now have debugging which times how long rendering takes.
- removed search for decorator by custom name from VelocityWeblogPageRenderer.  there didn't appear to be any way for that to be possible, so i ditched it.


Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityWeblogPageRenderer.java

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java?rev=414964&r1=414963&r2=414964&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java Fri Jun 16 17:08:15 2006
@@ -36,24 +36,33 @@
     private static Log log = LogFactory.getLog(VelocityRenderer.class);
     
     private String resourceId = null;
+    private Template resourceTemplate = null;
     
     
-    public VelocityRenderer(String resource) {
+    public VelocityRenderer(String resource) throws Exception {
         
         this.resourceId = resource;
+        
+        // make sure that we can locate the template
+        // if we can't then this will throw an exception
+        resourceTemplate = RollerVelocity.getTemplate(this.resourceId, "UTF-8");
     }
     
     
     public void render(Map model, Writer out) throws Exception {
         
-        // lookup the specified resource
-        Template tmpl = RollerVelocity.getTemplate(this.resourceId, "UTF-8");
+        long startTime = System.currentTimeMillis();
         
         // convert model to Velocity Context
         Context ctx = new VelocityContext(model);
         
-        // render output to servlet response
-        tmpl.merge(ctx, out);
+        // render output to Writer
+        this.resourceTemplate.merge(ctx, out);
+        
+        long endTime = System.currentTimeMillis();
+        long renderTime = (endTime - startTime)/1000;
+        
+        log.debug("Rendered ["+this.resourceId+"] in "+renderTime+" secs");
     }
     
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java?rev=414964&r1=414963&r2=414964&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java Fri Jun 16 17:08:15 2006
@@ -30,6 +30,8 @@
     
     public Renderer getRenderer(String rendererType, String resourceId) {
         
+        Renderer renderer = null;
+        
         // nothing we can do with null values
         if(rendererType == null || resourceId == null) {
             return null;
@@ -38,16 +40,23 @@
         if("velocity".equals(rendererType)) {
             
             // standard velocity template
-            return new VelocityRenderer(resourceId);
+            try {
+                renderer = new VelocityRenderer(resourceId);
+            } catch(Exception e) {
+                // couldn't find the given resource, can't render
+            }
         } else if("velocityWeblogPage".equals(rendererType)) {
             
             // special case for velocity weblog page templates
             // needed because of the way we do the decorator stuff
-            return new VelocityWeblogPageRenderer(resourceId);
+            try {
+                renderer = new VelocityWeblogPageRenderer(resourceId);
+            } catch(Exception e) {
+                // couldn't find the given resource, can't render
+            }
         }
         
-        // we don't want to handle this content
-        return null;
+        return renderer;
     }
     
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityWeblogPageRenderer.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityWeblogPageRenderer.java?rev=414964&r1=414963&r2=414964&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityWeblogPageRenderer.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/VelocityWeblogPageRenderer.java Fri Jun 16 17:08:15 2006
@@ -42,34 +42,42 @@
     private static Log log = LogFactory.getLog(VelocityWeblogPageRenderer.class);
     
     private String resourceId = null;
+    private Template resourceTemplate = null;
     
     
-    public VelocityWeblogPageRenderer(String resource) {
+    public VelocityWeblogPageRenderer(String resource) throws Exception {
         
         this.resourceId = resource;
+        
+        // make sure that we can locate the template
+        // if we can't then this will throw an exception
+        resourceTemplate = RollerVelocity.getTemplate(this.resourceId, "UTF-8");
     }
     
     
     public void render(Map model, Writer out) throws Exception {
         
-        // lookup the specified resource
-        Template tmpl = RollerVelocity.getTemplate(this.resourceId, "UTF-8");
+        long startTime = System.currentTimeMillis();
+        
+        // the template we are going to render
+        // we already looked this up at construction time
+        Template tmpl = this.resourceTemplate;
         
         // convert model to Velocity Context
         Context ctx = new VelocityContext(model);
         
-        // if there is a decorator template then apply it
-        WebsiteData website = null;
         // TODO: this is poor form, we should not need to access the pojo from the wrapper
+        WebsiteData weblog = null;
         WebsiteDataWrapper websiteWrapper = (WebsiteDataWrapper) model.get("website");
         if(websiteWrapper != null) {
-            website = websiteWrapper.getPojo();
+            weblog = websiteWrapper.getPojo();
         }
-        if (website != null) {
+        
+        if (weblog != null) {
             Template decorator = null;
             try {
                 // look for decorator
-                decorator = findDecorator(website, (String) ctx.get("decorator"));
+                decorator = findDecorator(weblog);
             } catch(Exception e) {
                 // error finding decorator
                 log.warn("Could not find a decorator to apply");
@@ -86,8 +94,14 @@
             }
         }
         
-        // render output to servlet response
+        // render output to Writer
         tmpl.merge(ctx, out);
+        
+        long endTime = System.currentTimeMillis();
+        long renderTime = (endTime - startTime)/1000;
+        
+        log.debug("Rendered ["+this.resourceId+"] from weblog "+
+                weblog.getHandle()+" in "+renderTime+" secs");
     }
     
     
@@ -95,34 +109,23 @@
      * Load the decorator template and apply it.  If there is no user specified
      * decorator then the default decorator is applied.
      */
-    private Template findDecorator(WebsiteData website, String decorator_name)
-            throws Exception {
+    private Template findDecorator(WebsiteData website) throws Exception {
         
         Template decorator = null;
         org.apache.roller.pojos.Template decorator_template = null;
         
-        // check for user-specified decorator
-        if (decorator_name != null) {
-            decorator_template = website.getPageByName(decorator_name);
-        }
-        
-        // if no user-specified decorator try default page-name
-        if (decorator_template == null) {
+        try {
+            // see if user defined a custom decorator
             decorator_template = website.getPageByName("_decorator");
-        }
-        
-        // try loading Template
-        if (decorator_template != null) {
-            try {
-                decorator = RollerVelocity.getTemplate(decorator_template.getId(), "UTF-8");
-            } catch (Exception e) {
-                // it may not exist, so this is okay
-            }
+            
+            decorator = RollerVelocity.getTemplate(decorator_template.getId(), "UTF-8");
+        } catch (Exception e) {
+            // it may not exist, so this is okay
         }
         
         // couldn't find Template, load default "no-op" decorator
         if (decorator == null) {
-            decorator = RollerVelocity.getTemplate("/themes/noop_decorator.vm", "UTF-8");
+            decorator = RollerVelocity.getTemplate("templates/weblog/noop_decorator.vm", "UTF-8");
         }
         
         return decorator;