You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by me...@apache.org on 2009/07/13 14:34:45 UTC

svn commit: r793569 - /incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java

Author: medgar
Date: Mon Jul 13 12:34:45 2009
New Revision: 793569

URL: http://svn.apache.org/viewvc?rev=793569&view=rev
Log:
CLK-565

Modified:
    incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java

Modified: incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java?rev=793569&r1=793568&r2=793569&view=diff
==============================================================================
--- incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java (original)
+++ incubator/click/trunk/click/extras/src/org/apache/click/extras/service/FreemarkerTemplateService.java Mon Jul 13 12:34:45 2009
@@ -18,10 +18,7 @@
  */
 package org.apache.click.extras.service;
 
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.cache.MultiTemplateLoader;
-import freemarker.cache.TemplateLoader;
-import freemarker.cache.WebappTemplateLoader;
+import java.io.IOException;
 import java.io.Writer;
 import java.util.Map;
 
@@ -32,12 +29,17 @@
 import org.apache.click.service.LogService;
 import org.apache.click.service.TemplateService;
 import org.apache.click.util.ClickUtils;
+import org.apache.commons.lang.Validate;
+
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.cache.MultiTemplateLoader;
+import freemarker.cache.TemplateLoader;
+import freemarker.cache.WebappTemplateLoader;
 import freemarker.log.Logger;
 import freemarker.template.Configuration;
 import freemarker.template.ObjectWrapper;
 import freemarker.template.Template;
 import freemarker.template.TemplateExceptionHandler;
-import org.apache.commons.lang.Validate;
 
 /**
  * Provides a <a target="_blank" href="http://www.freemarker.org/">Freemarker</a> TemplateService class.
@@ -116,6 +118,12 @@
  */
 public class FreemarkerTemplateService implements TemplateService {
 
+    /** The click error page template path. */
+    protected static final String ERROR_PAGE_PATH = "/click/error.htm";
+
+    /** The click not found page template path. */
+    protected static final String NOT_FOUND_PAGE_PATH = "/click/not-found.htm";
+
     // -------------------------------------------------------------- Variables
 
     /** The Freemarker engine configuration. */
@@ -130,6 +138,12 @@
     /** The application configuration service. */
     protected ConfigService configService;
 
+    /** The /click/error.htm page template has been deployed. */
+    protected boolean deployedErrorTemplate;
+
+    /** The /click/not-found.htm page template has been deployed. */
+    protected boolean deployedNotFoundTemplate;
+
     // --------------------------------------------------------- Public Methods
 
     /**
@@ -196,6 +210,20 @@
         if (configService.getLocale() != null) {
             configuration.setLocale(configService.getLocale());
         }
+
+        // Attempt to load click error page and not found templates from the
+        // web click directory
+        try {
+            configuration.getTemplate(ERROR_PAGE_PATH);
+            deployedErrorTemplate = true;
+        } catch (IOException ioe) {
+        }
+
+        try {
+            configuration.getTemplate(NOT_FOUND_PAGE_PATH);
+            deployedNotFoundTemplate = true;
+        } catch (IOException ioe) {
+        }
     }
 
     /**
@@ -215,8 +243,17 @@
     public void renderTemplate(Page page, Map model, Writer writer)
             throws Exception {
 
+        String templatePath = page.getTemplate();
+
+        if (!deployedErrorTemplate && templatePath.equals(ERROR_PAGE_PATH)) {
+            templatePath = "META-INF/web" + ERROR_PAGE_PATH;
+        }
+        if (!deployedErrorTemplate && templatePath.equals(NOT_FOUND_PAGE_PATH)) {
+            templatePath = "META-INF/web" + NOT_FOUND_PAGE_PATH;
+        }
+
         // Get the template object
-        Template template = configuration.getTemplate(page.getTemplate());
+        Template template = configuration.getTemplate(templatePath);
 
         // Merge the data-model and the template
         template.process(model, writer);