You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2009/03/02 13:26:31 UTC

svn commit: r749287 - in /tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity: context/ template/

Author: apetrelli
Date: Mon Mar  2 12:26:30 2009
New Revision: 749287

URL: http://svn.apache.org/viewvc?rev=749287&view=rev
Log:
TILESSB-7
Modified Executable interface to expose a Renderable.

Modified:
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityUtil.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateVModel.java
    tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeVModel.java

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityUtil.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityUtil.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityUtil.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityUtil.java Mon Mar  2 12:26:30 2009
@@ -1,5 +1,7 @@
 package org.apache.tiles.velocity.context;
 
+import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 import java.util.Stack;
 
@@ -7,9 +9,33 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.Renderable;
 
 public class VelocityUtil {
     
+    public static final Renderable EMPTY_RENDERABLE;
+    
+    static {
+        EMPTY_RENDERABLE = new Renderable() {
+
+            @Override
+            public String toString() {
+                return "";
+            }
+
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException,
+                    ParseErrorException, ResourceNotFoundException {
+                // Does nothing, really!
+                return true;
+            }
+        };
+    }
+    
     private final static String PARAMETER_MAP_STACK_KEY = "org.apache.tiles.velocity.PARAMETER_MAP_STACK"; 
     
     private VelocityUtil() {

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeVModel.java Mon Mar  2 12:26:30 2009
@@ -22,18 +22,20 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        model.execute(ServletUtil.getComposeStack(request),
-                params.get("value"), (String) params.get("expression"), null,
-                (String) params.get("role"), (String) params.get("type"));
-        return null;
+        model.execute(ServletUtil.getComposeStack(request), params
+                .get("value"), (String) params.get("expression"), null,
+                (String) params.get("role"), (String) params
+                        .get("type"));
+        return VelocityUtil.EMPTY_RENDERABLE;
     }
 
     public void end(HttpServletRequest request, HttpServletResponse response,
             Context velocityContext) {
-        Map<String, Object> params = VelocityUtil.getParameterStack(velocityContext).pop();
-        model.end(ServletUtil.getComposeStack(request),
-                params.get("value"), (String) params.get("expression"), null,
-                (String) params.get("role"), (String) params.get("type"));
+        Map<String, Object> params = VelocityUtil.getParameterStack(
+                velocityContext).pop();
+        model.end(ServletUtil.getComposeStack(request), params.get("value"),
+                (String) params.get("expression"), null, (String) params
+                        .get("role"), (String) params.get("type"));
     }
 
     public void start(HttpServletRequest request, HttpServletResponse response,

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java Mon Mar  2 12:26:30 2009
@@ -1,5 +1,7 @@
 package org.apache.tiles.velocity.template;
 
+import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 import javax.servlet.ServletContext;
@@ -11,6 +13,10 @@
 import org.apache.tiles.template.DefinitionModel;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.Renderable;
 
 public class DefinitionVModel implements Executable, BodyExecutable {
@@ -27,23 +33,34 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        model.execute((MutableTilesContainer) ServletUtil.getCurrentContainer(
-                request, servletContext), ServletUtil.getComposeStack(request),
-                (String) params.get("name"), (String) params.get("template"),
-                (String) params.get("role"), (String) params.get("extends"),
-                (String) params.get("preparer"), velocityContext, request,
-                response);
-        return null;
+        return new AbstractDefaultToStringRenderable(velocityContext, params,
+                response, request) {
+
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException,
+                    ParseErrorException, ResourceNotFoundException {
+                model.execute((MutableTilesContainer) ServletUtil
+                        .getCurrentContainer(request, servletContext),
+                        ServletUtil.getComposeStack(request), (String) params
+                                .get("name"), (String) params.get("template"),
+                        (String) params.get("role"), (String) params
+                                .get("extends"), (String) params
+                                .get("preparer"), velocityContext, request,
+                        response, writer);
+                return true;
+            }
+        };
     }
 
     public void end(HttpServletRequest request, HttpServletResponse response,
             Context velocityContext) {
         Map<String, Object> params = VelocityUtil.getParameterStack(
                 velocityContext).pop();
-        model.end((MutableTilesContainer) ServletUtil.getCurrentContainer(
-                request, servletContext), ServletUtil
-                .getComposeStack(request), (String) params.get("name"),
-                velocityContext, request, response);
+        model
+                .end((MutableTilesContainer) ServletUtil.getCurrentContainer(
+                        request, servletContext), ServletUtil
+                        .getComposeStack(request), (String) params.get("name"),
+                        velocityContext, request, response);
 
     }
 

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringVModel.java Mon Mar  2 12:26:30 2009
@@ -1,13 +1,13 @@
 package org.apache.tiles.velocity.template;
 
 import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-
 import org.apache.tiles.Attribute;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.servlet.context.ServletUtil;
@@ -15,6 +15,10 @@
 import org.apache.tiles.velocity.TilesVelocityException;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.Renderable;
 
 public class GetAsStringVModel implements Executable, BodyExecutable {
@@ -22,31 +26,40 @@
     private GetAsStringModel model;
 
     private ServletContext servletContext;
-    
-    public GetAsStringVModel(GetAsStringModel model, ServletContext servletContext) {
+
+    public GetAsStringVModel(GetAsStringModel model,
+            ServletContext servletContext) {
         this.model = model;
         this.servletContext = servletContext;
     }
-    
-    public Renderable execute(HttpServletRequest request, HttpServletResponse response, Context velocityContext, Map<String, Object> params) {
-        TilesContainer container = ServletUtil.getCurrentContainer(request,
-                servletContext);
-        try {
-            model.execute(container, response.getWriter(), VelocityUtil
-                    .toSimpleBoolean((Boolean) params.get("ignore"), false),
-                    (String) params.get("preparer"), (String) params.get("role"),
-                    params.get("defaultValue"), (String) params
-                            .get("defaultValueRole"), (String) params
-                            .get("defaultValueType"), (String) params.get("name"),
-                    (Attribute) params.get("value"), velocityContext, request,
-                    response);
-        } catch (IOException e) {
-            throw new TilesVelocityException("Cannot execute getAsString", e);
-        }
-        return null;
+
+    public Renderable execute(HttpServletRequest request,
+            HttpServletResponse response, Context velocityContext,
+            Map<String, Object> params) {
+        return new AbstractDefaultToStringRenderable(velocityContext, params,
+                response, request) {
+
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException,
+                    ParseErrorException, ResourceNotFoundException {
+                TilesContainer container = ServletUtil.getCurrentContainer(
+                        request, servletContext);
+                model.execute(container, response.getWriter(),
+                        VelocityUtil.toSimpleBoolean((Boolean) params
+                                .get("ignore"), false), (String) params
+                                .get("preparer"), (String) params.get("role"),
+                        params.get("defaultValue"), (String) params
+                                .get("defaultValueRole"), (String) params
+                                .get("defaultValueType"), (String) params
+                                .get("name"), (Attribute) params.get("value"),
+                        velocityContext, request, response, writer);
+                return true;
+            }
+        };
     }
 
-    public void start(HttpServletRequest request, HttpServletResponse response, Context velocityContext, Map<String, Object> params) {
+    public void start(HttpServletRequest request, HttpServletResponse response,
+            Context velocityContext, Map<String, Object> params) {
         VelocityUtil.getParameterStack(velocityContext).push(params);
         model.start(ServletUtil.getComposeStack(request), ServletUtil
                 .getCurrentContainer(request, servletContext), VelocityUtil
@@ -59,7 +72,8 @@
                 response);
     }
 
-    public void end(HttpServletRequest request, HttpServletResponse response, Context velocityContext) {
+    public void end(HttpServletRequest request, HttpServletResponse response,
+            Context velocityContext) {
         Map<String, Object> params = VelocityUtil.getParameterStack(
                 velocityContext).pop();
         try {

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java Mon Mar  2 12:26:30 2009
@@ -37,7 +37,7 @@
             VelocityUtil.setAttribute(velocityContext, request, servletContext,
                     entry.getKey(), entry.getValue(), scope);
         }
-        return null;
+        return VelocityUtil.EMPTY_RENDERABLE;
     }
 
 }

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeVModel.java Mon Mar  2 12:26:30 2009
@@ -1,6 +1,7 @@
 package org.apache.tiles.velocity.template;
 
 import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 import javax.servlet.ServletContext;
@@ -13,6 +14,10 @@
 import org.apache.tiles.velocity.TilesVelocityException;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.Renderable;
 
 public class InsertAttributeVModel implements Executable, BodyExecutable {
@@ -54,17 +59,23 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        try {
-            model.execute(ServletUtil.getCurrentContainer(request, servletContext),
-                    VelocityUtil.toSimpleBoolean((Boolean) params.get("ignore"), false),
-                    (String) params.get("preparer"), (String) params.get("role"),
-                    params.get("defaultValue"), (String) params.get("defaultValueRole"),
-                    (String) params.get("defaultValueType"), (String) params.get("name"),
-                    (Attribute) params.get("value"), velocityContext, request, response);
-        } catch (IOException e) {
-            throw new TilesVelocityException("Cannot execute insertAttribute", e);
-        }
-        return null;
+        return new AbstractDefaultToStringRenderable(velocityContext, params, response, request){
+        
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException, ParseErrorException,
+                    ResourceNotFoundException {
+                model.execute(ServletUtil.getCurrentContainer(request,
+                        servletContext), VelocityUtil.toSimpleBoolean(
+                        (Boolean) params.get("ignore"), false), (String) params
+                        .get("preparer"), (String) params.get("role"), params
+                        .get("defaultValue"), (String) params
+                        .get("defaultValueRole"), (String) params
+                        .get("defaultValueType"), (String) params.get("name"),
+                        (Attribute) params.get("value"), velocityContext,
+                        request, response, writer);
+                return true;
+            }
+        };
     }
 
 }

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateVModel.java Mon Mar  2 12:26:30 2009
@@ -1,5 +1,7 @@
 package org.apache.tiles.velocity.template;
 
+import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 import javax.servlet.ServletContext;
@@ -10,6 +12,10 @@
 import org.apache.tiles.template.InsertTemplateModel;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.Renderable;
 
 public class InsertTemplateVModel implements Executable, BodyExecutable {
@@ -27,11 +33,19 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        model.execute(ServletUtil.getCurrentContainer(request, servletContext),
-                (String) params.get("template"), (String) params.get("role"),
-                (String) params.get("preparer"), velocityContext, request,
-                response);
-        return null;
+        return new AbstractDefaultToStringRenderable(velocityContext, params, response, request) {
+
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException,
+                    ParseErrorException, ResourceNotFoundException {
+                model.execute(ServletUtil.getCurrentContainer(request,
+                        servletContext), (String) params.get("template"),
+                        (String) params.get("role"), (String) params
+                                .get("preparer"), velocityContext, request,
+                        response, writer);
+                return true;
+            }
+        };
     }
 
     public void end(HttpServletRequest request, HttpServletResponse response,

Modified: tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeVModel.java?rev=749287&r1=749286&r2=749287&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeVModel.java (original)
+++ tiles/sandbox/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeVModel.java Mon Mar  2 12:26:30 2009
@@ -1,5 +1,7 @@
 package org.apache.tiles.velocity.template;
 
+import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 import javax.servlet.ServletContext;
@@ -10,6 +12,10 @@
 import org.apache.tiles.template.PutAttributeModel;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.Renderable;
 
 public class PutAttributeVModel implements Executable, BodyExecutable {
@@ -27,12 +33,23 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        model.execute(ServletUtil.getCurrentContainer(request, servletContext), ServletUtil.getComposeStack(request),
-                (String) params.get("name"), params.get("value"),
-                (String) params.get("expression"), null, (String) params.get("role"),
-                (String) params.get("type"), VelocityUtil.toSimpleBoolean((Boolean) params.get("value"), false),
-                velocityContext, request, response);
-        return null;
+        return new AbstractDefaultToStringRenderable(velocityContext, params, response, request) {
+
+            public boolean render(InternalContextAdapter context, Writer writer)
+                    throws IOException, MethodInvocationException,
+                    ParseErrorException, ResourceNotFoundException {
+                model.execute(ServletUtil.getCurrentContainer(request,
+                        servletContext), ServletUtil.getComposeStack(request),
+                        (String) params.get("name"), params.get("value"),
+                        (String) params.get("expression"), null,
+                        (String) params.get("role"), (String) params
+                                .get("type"), VelocityUtil.toSimpleBoolean(
+                                (Boolean) params.get("value"), false),
+                        velocityContext, request, response, writer);
+                return true;
+            }
+            
+        };
     }
 
     public void end(HttpServletRequest request, HttpServletResponse response,