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,