You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by dd...@apache.org on 2006/11/10 20:42:39 UTC

svn commit: r473447 - /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java

Author: ddewolf
Date: Fri Nov 10 11:42:38 2006
New Revision: 473447

URL: http://svn.apache.org/viewvc?view=rev&rev=473447
Log:
Fixing freemarker/tiles integration

Modified:
    struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java

Modified: struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java?view=diff&rev=473447&r1=473446&r2=473447
==============================================================================
--- struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java (original)
+++ struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java Fri Nov 10 11:42:38 2006
@@ -20,37 +20,34 @@
  */
 package org.apache.struts2.tiles;
 
-import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.context.TilesRequestContextWrapper;
-import org.apache.struts2.views.freemarker.FreemarkerResult;
-import org.apache.struts2.ServletActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import freemarker.template.TemplateException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.views.freemarker.FreemarkerResult;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.context.TilesRequestContextWrapper;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 
-import com.opensymphony.xwork2.ActionInvocation;
-import freemarker.template.TemplateException;
-
 /**
- *
  * Default implementation of TilesUtil.
  * This class contains default implementation of utilities. This implementation
  * is intended to be used without Struts.
- *
+ * <p/>
  * TilesUtilImpl implementation used to intercept .ftl requests and
  * ensure that they are setup properly to take advantage of the
  * {@link FreemarkerResult}.
  *
  * @version $Id$
- *
  */
 public class StrutsTilesRequestContext extends TilesRequestContextWrapper {
 
     private static final Log LOG =
-        LogFactory.getLog(StrutsTilesRequestContext.class);
+            LogFactory.getLog(StrutsTilesRequestContext.class);
 
     /**
      * The mask used to detect requests which should be intercepted.
@@ -60,6 +57,7 @@
     /**
      * Default constructor.
      * Sets the mask to '.ftl'
+     *
      * @param context
      */
     public StrutsTilesRequestContext(TilesRequestContext context) {
@@ -68,6 +66,7 @@
 
     /**
      * Optional constructor used to specify a specific mask.
+     *
      * @param mask
      * @param context
      */
@@ -77,6 +76,10 @@
         this.mask = mask;
     }
 
+    public void dispatch(String include) throws IOException {
+        include(include);
+    }
+
     /**
      * Enhancement of the default include which allows for freemarker
      * templates to be intercepted so that the FreemarkerResult can
@@ -86,12 +89,15 @@
      * @throws ServletException
      * @throws Exception
      */
-    public void include(String include) throws Exception {
-        if(include.endsWith(mask)) {
-            HttpServletRequest request = (HttpServletRequest)getRequest();
+    public void include(String include) throws IOException {
+        if (include.endsWith(mask)) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Intercepting tiles include '" + include + "'. Processing as freemarker result.");
+            }
+            HttpServletRequest request = (HttpServletRequest) getRequest();
 
             ActionInvocation invocation =
-                ServletActionContext.getActionContext(request).getActionInvocation();
+                    ServletActionContext.getActionContext(request).getActionInvocation();
 
             FreemarkerResult result = new FreemarkerResult();
 
@@ -99,10 +105,9 @@
                 result.doExecute(include, invocation);
             } catch (TemplateException e) {
                 LOG.error("Error invoking Freemarker template", e);
-                throw new Exception("Error invoking Freemarker template.", e);
+                throw new IOException("Error invoking Freemarker template."+ e.getMessage());
             }
-        }
-        else {
+        } else {
             super.include(include);
         }
     }