Author: apetrelli
Date: Sat Nov 14 20:58:46 2009
New Revision: 836263

URL: http://svn.apache.org/viewvc?rev=836263&view=rev
Log:
TILESSB-13
Refactored MutableTilesContainer and user code.

Modified:
    
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/mgmt/MutableTilesContainer.java
    
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
    
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/DefinitionFMModel.java
    
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java
    
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
    
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
    
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java
    
tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
    
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java

Modified: 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/mgmt/MutableTilesContainer.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/mgmt/MutableTilesContainer.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/mgmt/MutableTilesContainer.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/mgmt/MutableTilesContainer.java
 Sat Nov 14 20:58:46 2009
@@ -22,6 +22,7 @@
 
 import org.apache.tiles.Definition;
 import org.apache.tiles.TilesContainer;
+import org.apache.tiles.request.Request;
 
 /**
  * Defines a mutable version of the TilesContainer.
@@ -35,7 +36,7 @@
      * Register a new definition with the container.
      *
      * @param definition The definition to register.
-     * @param requestItems the current request objects.
+     * @param request TODO
      */
-    void register(Definition definition, Object... requestItems);
+    void register(Definition definition, Request request);
 }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
 Sat Nov 14 20:58:46 2009
@@ -43,10 +43,8 @@
     private DefinitionManager mgr = new DefinitionManager();
 
     /** {...@inheritdoc} */
-    public void register(Definition definition, Object... requestItems) {
-        Request requestContext = getRequestContextFactory()
-                .createRequestContext(getApplicationContext(), requestItems);
-        register(definition, requestContext);
+    public void register(Definition definition, Request request) {
+        mgr.addDefinition(definition, request);
     }
 
     /** {...@inheritdoc} */
@@ -69,16 +67,4 @@
         super.setDefinitionsFactory(definitionsFactory);
         mgr.setFactory(definitionsFactory);
     }
-
-    /**
-     * Registers a custom definition.
-     *
-     * @param definition The definition to register.
-     * @param request The request inside which the definition should be
-     * registered.
-     */
-    protected void register(Definition definition,
-            Request request) {
-        mgr.addDefinition(definition, request);
-    }
 }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/DefinitionFMModel.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/DefinitionFMModel.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/DefinitionFMModel.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/DefinitionFMModel.java
 Sat Nov 14 20:58:46 2009
@@ -24,8 +24,11 @@
 import java.io.IOException;
 import java.util.Map;
 
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.freemarker.context.FreeMarkerTilesRequestContext;
 import org.apache.tiles.freemarker.context.FreeMarkerUtil;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.Request;
 import org.apache.tiles.template.DefinitionModel;
 
 import freemarker.core.Environment;
@@ -37,7 +40,7 @@
 /**
  * Wraps {...@link DefinitionModel} to be used in FreeMarker. For the list of
  * parameters, see {...@link DefinitionModel#start(java.util.Stack, String, 
String, String, String, String)} and
- * {...@link DefinitionModel#end(MutableTilesContainer, java.util.Stack, 
Object...)}.
+ * {...@link DefinitionModel#end(MutableTilesContainer, java.util.Stack, 
Request)}.
  *
  * @version $Rev$ $Date$
  * @since 2.2.0
@@ -63,7 +66,11 @@
     @SuppressWarnings("unchecked")
     public void execute(Environment env, Map params, TemplateModel[] loopVars,
             TemplateDirectiveBody body) throws TemplateException, IOException {
-        Map<String, TemplateModel> parms = (Map<String, TemplateModel>) params;
+        Map<String, TemplateModel> parms = params;
+        TilesContainer container = FreeMarkerUtil.getCurrentContainer(env);
+        Request request = FreeMarkerTilesRequestContext
+                .createServletFreemarkerRequest(container
+                        .getApplicationContext(), env);
         model.start(FreeMarkerUtil.getComposeStack(env),
                 FreeMarkerUtil.getAsString(parms.get("name")),
                 FreeMarkerUtil.getAsString(parms.get("template")),
@@ -71,9 +78,8 @@
                 FreeMarkerUtil.getAsString(parms.get("extends")),
                 FreeMarkerUtil.getAsString(parms.get("preparer")));
         FreeMarkerUtil.evaluateBody(body);
-        model.end((MutableTilesContainer) FreeMarkerUtil
-                .getCurrentContainer(env), FreeMarkerUtil.getComposeStack(env),
-                env);
+        model.end((MutableTilesContainer) container, FreeMarkerUtil
+                .getComposeStack(env), request);
     }
 
 }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java
 Sat Nov 14 20:58:46 2009
@@ -36,9 +36,11 @@
 
 import org.apache.tiles.ArrayStack;
 import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.freemarker.context.FreeMarkerTilesRequestContext;
 import org.apache.tiles.freemarker.context.FreeMarkerUtil;
 import org.apache.tiles.freemarker.io.NullWriter;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.servlet.context.ServletUtil;
 import org.apache.tiles.template.DefinitionModel;
 import org.junit.Before;
@@ -63,11 +65,6 @@
 public class DefinitionFMModelTest {
 
     /**
-     * The number of times the method is called.
-     */
-    private static final int CALL_COUNT = 3;
-
-    /**
      * The FreeMarker environment.
      */
     private Environment env;
@@ -98,10 +95,10 @@
     private ObjectWrapper objectWrapper;
 
     /**
-     * @throws java.lang.Exception If something goes wrong.
+     * Sets up the model.
      */
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         template = createMock(Template.class);
         model = createMock(TemplateHashModel.class);
         expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
@@ -121,7 +118,9 @@
         DefinitionModel tModel = createMock(DefinitionModel.class);
         DefinitionFMModel fmModel = new DefinitionFMModel(tModel);
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
 
+        
expect(container.getApplicationContext()).andReturn(applicationContext);
         HttpServletRequest request = createMock(HttpServletRequest.class);
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
         
expect(request.getAttribute(FreeMarkerUtil.COMPOSE_STACK_ATTRIBUTE_NAME)).andReturn(composeStack).times(2);
@@ -132,12 +131,12 @@
 
         GenericServlet servlet = createMock(GenericServlet.class);
         ServletContext servletContext = createMock(ServletContext.class);
-        expect(servlet.getServletContext()).andReturn(servletContext).times(2);
+        
expect(servlet.getServletContext()).andReturn(servletContext).anyTimes();
         
expect(servletContext.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE)).andReturn(container);
         replay(servlet, servletContext);
         ServletContextHashModel servletContextModel = new 
ServletContextHashModel(servlet, objectWrapper);
-        
expect(model.get(FreemarkerServlet.KEY_REQUEST)).andReturn(requestModel).times(CALL_COUNT);
-        
expect(model.get(FreemarkerServlet.KEY_APPLICATION)).andReturn(servletContextModel);
+        
expect(model.get(FreemarkerServlet.KEY_REQUEST)).andReturn(requestModel).anyTimes();
+        
expect(model.get(FreemarkerServlet.KEY_APPLICATION)).andReturn(servletContextModel).anyTimes();
         initEnvironment();
 
         TemplateDirectiveBody body = createMock(TemplateDirectiveBody.class);
@@ -149,12 +148,12 @@
         params.put("preparer", objectWrapper.wrap("myPreparer"));
 
         tModel.start(composeStack, "myName", "myTemplate", "myRole", 
"myExtends", "myPreparer");
-        tModel.end(container, composeStack, env);
+        tModel.end(eq(container), eq(composeStack), 
isA(FreeMarkerTilesRequestContext.class));
         body.render(isA(NullWriter.class));
 
-        replay(tModel, body, container);
+        replay(tModel, body, container, applicationContext);
         fmModel.execute(env, params, null, body);
-        verify(template, model, request, tModel, body, container, servlet, 
servletContext);
+        verify(template, model, request, tModel, body, container, servlet, 
servletContext, applicationContext);
     }
 
     /**

Modified: 
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
 Sat Nov 14 20:58:46 2009
@@ -24,12 +24,15 @@
 
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.tagext.SimpleTagSupport;
 
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.jsp.JspUtil;
+import org.apache.tiles.jsp.context.JspTilesRequestContext;
 import org.apache.tiles.jsp.taglib.TilesJspException;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.Request;
 import org.apache.tiles.template.DefinitionModel;
 
 /**
@@ -165,12 +168,18 @@
     @Override
     public void doTag() throws JspException, IOException {
         JspContext jspContext = getJspContext();
-        model.start(JspUtil.getComposeStack(jspContext), name, template, role, 
extend, preparer);
+        TilesContainer currentContainer = JspUtil
+                .getCurrentContainer(jspContext);
+        Request request = JspTilesRequestContext.createServletJspRequest(
+                currentContainer.getApplicationContext(),
+                (PageContext) jspContext);
+        model.start(JspUtil.getComposeStack(jspContext), name, template, role,
+                extend, preparer);
         JspUtil.evaluateFragment(getJspBody());
         TilesContainer container = JspUtil.getCurrentContainer(jspContext);
         if (container instanceof MutableTilesContainer) {
             model.end((MutableTilesContainer) container, JspUtil
-                    .getComposeStack(jspContext), jspContext);
+                    .getComposeStack(jspContext), request);
         } else {
             throw new TilesJspException("The current container is not 
mutable");
         }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
 Sat Nov 14 20:58:46 2009
@@ -25,6 +25,7 @@
 import org.apache.tiles.Attribute;
 import org.apache.tiles.Definition;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.Request;
 
 /**
  * <p>
@@ -64,13 +65,13 @@
      *
      * @param container The Tiles container to use. It must be "mutable".
      * @param composeStack The compose stack.
-     * @param requestItems The request objects.
+     * @param request TODO
      * @since 2.2.0
      */
     public void end(MutableTilesContainer container,
-            ArrayStack<Object> composeStack, Object... requestItems) {
+            ArrayStack<Object> composeStack, Request request) {
         Definition definition = (Definition) composeStack.pop();
-        registerDefinition(definition, container, composeStack, requestItems);
+        registerDefinition(definition, container, composeStack, request);
     }
 
     /**
@@ -84,16 +85,16 @@
      * will be rendered only if the current user belongs to one of the roles.
      * @param extendsParam The definition name that this definition extends.
      * @param preparer The preparer to use to invoke before the definition is 
rendered.
-     * @param requestItems The request objects.
+     * @param request TODO
      * @since 2.2.0
      */
     public void execute(MutableTilesContainer container,
             ArrayStack<Object> composeStack, String name, String template,
             String role, String extendsParam, String preparer,
-            Object... requestItems) {
+            Request request) {
         Definition definition = createDefinition(name, template, role,
                 extendsParam, preparer);
-        registerDefinition(definition, container, composeStack, requestItems);
+        registerDefinition(definition, container, composeStack, request);
     }
 
     /**
@@ -126,12 +127,12 @@
      * @param definition The definition to register.
      * @param container The container into which the definition will be 
registered.
      * @param composeStack The compose stack,
-     * @param requestItems The request object.
+     * @param request TODO
      */
     private void registerDefinition(Definition definition,
             MutableTilesContainer container, ArrayStack<Object> composeStack,
-            Object... requestItems) {
-        container.register(definition, requestItems);
+            Request request) {
+        container.register(definition, request);
 
         if (composeStack.isEmpty()) {
             return;

Modified: 
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java
 Sat Nov 14 20:58:46 2009
@@ -28,6 +28,7 @@
 import org.apache.tiles.Attribute;
 import org.apache.tiles.Definition;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.Request;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -70,70 +71,70 @@
 
     /**
      * Test method for {...@link org.apache.tiles.template.DefinitionModel
-     * #end(org.apache.tiles.mgmt.MutableTilesContainer, java.util.Stack, 
java.lang.Object[])}.
+     * #end(org.apache.tiles.mgmt.MutableTilesContainer, java.util.Stack, 
Request)}.
      */
     @Test
     public void testEnd() {
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
+        Request request = createMock(Request.class);
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
         Definition definition = new Definition();
         composeStack.push(definition);
-        Integer requestItem = new Integer(1);
 
-        container.register(definition, requestItem);
+        container.register(definition, request);
 
-        replay(container);
-        model.end(container, composeStack, requestItem);
-        verify(container);
+        replay(container, request);
+        model.end(container, composeStack, request);
+        verify(container, request);
     }
 
     /**
      * Test method for {...@link org.apache.tiles.template.DefinitionModel
-     * #end(org.apache.tiles.mgmt.MutableTilesContainer, java.util.Stack, 
java.lang.Object[])}.
+     * #end(org.apache.tiles.mgmt.MutableTilesContainer, java.util.Stack, 
Request)}.
      */
     @Test
     public void testEndInAttribute() {
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
+        Request request = createMock(Request.class);
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
         Attribute attribute = new Attribute();
         composeStack.push(attribute);
         Definition definition = new Definition();
         composeStack.push(definition);
-        Integer requestItem = new Integer(1);
 
-        container.register(definition, requestItem);
+        container.register(definition, request);
 
-        replay(container);
-        model.end(container, composeStack, requestItem);
+        replay(container, request);
+        model.end(container, composeStack, request);
         assertEquals(1, composeStack.size());
         attribute = (Attribute) composeStack.peek();
         assertEquals(definition.getName(), attribute.getValue());
         assertEquals("definition", attribute.getRenderer());
-        verify(container);
+        verify(container, request);
     }
 
     /**
      * Test method for {...@link org.apache.tiles.template.DefinitionModel
      * #execute(org.apache.tiles.mgmt.MutableTilesContainer, java.util.Stack,
-     * java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
java.lang.String, java.lang.Object[])}.
+     * java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
java.lang.String, Request)}.
      */
     @Test
     public void testExecute() {
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
+        Request request = createMock(Request.class);
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
         Attribute attribute = new Attribute();
         composeStack.push(attribute);
-        Integer requestItem = new Integer(1);
 
-        container.register((Definition) notNull(), eq(requestItem));
+        container.register((Definition) notNull(), eq(request));
 
-        replay(container);
+        replay(container, request);
         model.execute(container, composeStack, "myName", "myTemplate",
-                "myRole", "myExtends", "myPreparer", requestItem);
+                "myRole", "myExtends", "myPreparer", request);
         assertEquals(1, composeStack.size());
         attribute = (Attribute) composeStack.peek();
         assertEquals("definition", attribute.getRenderer());
-        verify(container);
+        verify(container, request);
     }
 
 }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionVModel.java
 Sat Nov 14 20:58:46 2009
@@ -27,9 +27,12 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.tiles.TilesContainer;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.Request;
 import org.apache.tiles.servlet.context.ServletUtil;
 import org.apache.tiles.template.DefinitionModel;
+import org.apache.tiles.velocity.context.VelocityTilesRequestContext;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
 import org.apache.velocity.runtime.Renderable;
@@ -38,9 +41,9 @@
  * Wraps {...@link DefinitionModel} to be used in Velocity. For the list of
  * parameters, see
  * {...@link DefinitionModel#start(java.util.Stack, String, String, String, 
String, String)}
- * , {...@link DefinitionModel#end(MutableTilesContainer, java.util.Stack, 
Object...)} and
+ * , {...@link DefinitionModel#end(MutableTilesContainer, java.util.Stack, 
Request)} and
  * {...@link DefinitionModel#execute(MutableTilesContainer, java.util.Stack, 
String, String,
- * String, String, String, Object...)}.
+ * String, String, String, Request)}.
  *
  * @version $Rev$ $Date$
  * @since 2.2.0
@@ -73,12 +76,16 @@
     public Renderable execute(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext,
             Map<String, Object> params) {
-        model.execute((MutableTilesContainer) ServletUtil.getCurrentContainer(
-                request, servletContext), ServletUtil.getComposeStack(request),
+        TilesContainer container = ServletUtil.getCurrentContainer(
+                request, servletContext);
+        Request currentRequest = VelocityTilesRequestContext
+                .createVelocityRequest(container
+                        .getApplicationContext(), request, response,
+                        velocityContext, null);
+        model.execute((MutableTilesContainer) container, 
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);
+                (String) params.get("preparer"), currentRequest);
 
         return VelocityUtil.EMPTY_RENDERABLE;
     }
@@ -86,11 +93,14 @@
     /** {...@inheritdoc} */
     public Renderable end(HttpServletRequest request,
             HttpServletResponse response, Context velocityContext) {
-        model
-                .end((MutableTilesContainer) ServletUtil.getCurrentContainer(
-                        request, servletContext), ServletUtil
-                        .getComposeStack(request), velocityContext,
-                        request, response);
+        TilesContainer container = ServletUtil.getCurrentContainer(
+                request, servletContext);
+        Request currentRequest = VelocityTilesRequestContext
+                .createVelocityRequest(container
+                        .getApplicationContext(), request, response,
+                        velocityContext, null);
+        model.end((MutableTilesContainer) container, ServletUtil
+                .getComposeStack(request), currentRequest);
         return VelocityUtil.EMPTY_RENDERABLE;
     }
 

Modified: 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java?rev=836263&r1=836262&r2=836263&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java
 Sat Nov 14 20:58:46 2009
@@ -35,8 +35,10 @@
 
 import org.apache.tiles.ArrayStack;
 import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.servlet.context.ServletUtil;
 import org.apache.tiles.template.DefinitionModel;
+import org.apache.tiles.velocity.context.VelocityTilesRequestContext;
 import org.apache.tiles.velocity.context.VelocityUtil;
 import org.apache.velocity.context.Context;
 import org.junit.Before;
@@ -75,27 +77,29 @@
      * Test method for {...@link 
org.apache.tiles.velocity.template.DefinitionVModel
      * #execute(javax.servlet.http.HttpServletRequest, 
javax.servlet.http.HttpServletResponse,
      * org.apache.velocity.context.Context, java.util.Map)}.
-     * @throws IOException If something goes wrong.
      */
     @Test
-    public void testExecute() throws IOException {
+    public void testExecute() {
         HttpServletRequest request = createMock(HttpServletRequest.class);
         HttpServletResponse response = createMock(HttpServletResponse.class);
         Context velocityContext = createMock(Context.class);
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
         Map<String, Object> params = createParams();
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
 
+        
expect(container.getApplicationContext()).andReturn(applicationContext);
         
expect(request.getAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
         expect(request.getAttribute(ServletUtil.COMPOSE_STACK_ATTRIBUTE_NAME))
                 .andReturn(composeStack);
-        tModel.execute(container, composeStack, "myName", "myTemplate", 
"myRole", "myExtends", "myPreparer",
-                velocityContext, request, response);
+        tModel.execute(eq(container), eq(composeStack), eq("myName"),
+                eq("myTemplate"), eq("myRole"), eq("myExtends"),
+                eq("myPreparer"), isA(VelocityTilesRequestContext.class));
 
-        replay(tModel, servletContext, request, response, velocityContext, 
container);
+        replay(tModel, servletContext, request, response, velocityContext, 
container, applicationContext);
         initializeModel();
         assertEquals(VelocityUtil.EMPTY_RENDERABLE, model.execute(request, 
response, velocityContext, params));
-        verify(tModel, servletContext, request, response, velocityContext, 
container);
+        verify(tModel, servletContext, request, response, velocityContext, 
container, applicationContext);
     }
 
     /**
@@ -128,22 +132,24 @@
      * @throws IOException If something goes wrong.
      */
     @Test
-    public void testEnd() throws IOException {
+    public void testEnd() {
         HttpServletRequest request = createMock(HttpServletRequest.class);
         HttpServletResponse response = createMock(HttpServletResponse.class);
         Context velocityContext = createMock(Context.class);
         MutableTilesContainer container = 
createMock(MutableTilesContainer.class);
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
 
+        
expect(container.getApplicationContext()).andReturn(applicationContext);
         
expect(request.getAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
         expect(request.getAttribute(ServletUtil.COMPOSE_STACK_ATTRIBUTE_NAME))
                 .andReturn(composeStack);
-        tModel.end(container, composeStack, velocityContext, request, 
response);
+        tModel.end(eq(container), eq(composeStack), 
isA(VelocityTilesRequestContext.class));
 
-        replay(tModel, servletContext, request, response, velocityContext, 
container);
+        replay(tModel, servletContext, request, response, velocityContext, 
container, applicationContext);
         initializeModel();
         assertEquals(VelocityUtil.EMPTY_RENDERABLE, model.end(request, 
response, velocityContext));
-        verify(tModel, servletContext, request, response, velocityContext, 
container);
+        verify(tModel, servletContext, request, response, velocityContext, 
container, applicationContext);
     }
 
     /**


Reply via email to