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/11/17 20:56:12 UTC

svn commit: r881468 - in /tiles/sandbox/trunk/tiles3: tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/ tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/ tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/ tiles-t...

Author: apetrelli
Date: Tue Nov 17 19:56:11 2009
New Revision: 881468

URL: http://svn.apache.org/viewvc?rev=881468&view=rev
Log:
TILESSB-14
Converted PutListAttributeModel.

Modified:
    tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/PutListAttributeFMModel.java
    tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java
    tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java
    tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/PutListAttributeModel.java
    tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java
    tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeVModel.java
    tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java

Modified: tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/PutListAttributeFMModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/PutListAttributeFMModel.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/PutListAttributeFMModel.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/PutListAttributeFMModel.java Tue Nov 17 19:56:11 2009
@@ -24,7 +24,6 @@
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.tiles.ArrayStack;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.freemarker.context.FreeMarkerTilesRequestContext;
 import org.apache.tiles.freemarker.context.FreeMarkerUtil;
@@ -40,8 +39,8 @@
 /**
  * Wraps {@link PutListAttributeModel} to be used in FreeMarker. For the list of
  * parameters, see
- * {@link PutListAttributeModel#start(ArrayStack, String, boolean)} and
- * {@link PutListAttributeModel#end(org.apache.tiles.TilesContainer, ArrayStack, String, boolean, Request)}
+ * {@link PutListAttributeModel#start(String, boolean, Request)} and
+ * {@link PutListAttributeModel#end(org.apache.tiles.TilesContainer, String, boolean, Request)}
  * .
  *
  * @version $Rev$ $Date$
@@ -69,18 +68,17 @@
     @SuppressWarnings("unchecked")
     public void execute(Environment env, Map params, TemplateModel[] loopVars,
             TemplateDirectiveBody body) throws TemplateException, IOException {
-        Map<String, TemplateModel> parms = (Map<String, TemplateModel>) params;
-        ArrayStack<Object> composeStack = FreeMarkerUtil.getComposeStack(env);
+        Map<String, TemplateModel> parms = params;
         TilesContainer container = FreeMarkerUtil.getCurrentContainer(env);
         Request request = FreeMarkerTilesRequestContext
                 .createServletFreemarkerRequest(container
                         .getApplicationContext(), env);
-        model.start(composeStack,
-                FreeMarkerUtil.getAsString(parms.get("role")), FreeMarkerUtil
-                        .getAsBoolean(parms.get("inherit"), false));
+        model.start(FreeMarkerUtil.getAsString(parms.get("role")),
+                FreeMarkerUtil
+                        .getAsBoolean(parms.get("inherit"), false), request);
         FreeMarkerUtil.evaluateBody(body);
-        model.end(container, composeStack, FreeMarkerUtil.getAsString(parms
+        model.end(container, FreeMarkerUtil.getAsString(parms
                 .get("name")), FreeMarkerUtil.getAsBoolean(
-                parms.get("cascade"), false), request);
+        parms.get("cascade"), false), request);
     }
 }

Modified: tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java Tue Nov 17 19:56:11 2009
@@ -34,11 +34,9 @@
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.tiles.ArrayStack;
 import org.apache.tiles.TilesContainer;
 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.request.ApplicationContext;
 import org.apache.tiles.servlet.context.ServletUtil;
@@ -95,10 +93,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>());
@@ -122,8 +120,6 @@
 
         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);
         expect(request.getAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(null);
         request.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
         replay(request);
@@ -146,9 +142,8 @@
         params.put("inherit", objectWrapper.wrap(false));
         params.put("cascade", objectWrapper.wrap(false));
 
-        tModel.start(composeStack, "myRole", false);
-        tModel.end(eq(container), eq(composeStack), eq("myName"), eq(false),
-                isA(FreeMarkerTilesRequestContext.class));
+        tModel.start(eq("myRole"), eq(false), isA(FreeMarkerTilesRequestContext.class));
+        tModel.end(eq(container), eq("myName"), eq(false), isA(FreeMarkerTilesRequestContext.class));
         body.render(isA(NullWriter.class));
 
         replay(tModel, body, container, applicationContext);

Modified: tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java Tue Nov 17 19:56:11 2009
@@ -213,9 +213,9 @@
         Request request = JspTilesRequestContext.createServletJspRequest(
                 currentContainer.getApplicationContext(),
                 (PageContext) jspContext);
-        model.start(JspUtil.getComposeStack(jspContext), role, inherit);
+        model.start(role, inherit, request);
         JspUtil.evaluateFragment(getJspBody());
-        model.end(currentContainer, JspUtil.getComposeStack(jspContext), name,
-                cascade, request);
+        model.end(currentContainer, name, cascade,
+                request);
     }
 }

Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/PutListAttributeModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/PutListAttributeModel.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/PutListAttributeModel.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/PutListAttributeModel.java Tue Nov 17 19:56:11 2009
@@ -45,15 +45,17 @@
 
     /**
      * Starts the operation.
-     *
-     * @param composeStack The composing stack.
      * @param role A comma-separated list of roles. If present, the attribute
      * will be rendered only if the current user belongs to one of the roles.
      * @param inherit If <code>true</code> the list contained in the in the same
      * attribute of the parent definition will be extended.
+     * @param request TODO
+     * @param composeStack The composing stack.
+     *
      * @since 2.2.0
      */
-    public void start(ArrayStack<Object> composeStack, String role, boolean inherit) {
+    public void start(String role, boolean inherit, Request request) {
+        ArrayStack<Object> composeStack = ComposeStackUtil.getComposeStack(request);
         ListAttribute listAttribute = new ListAttribute();
         listAttribute.setRole(role);
         listAttribute.setInherit(inherit);
@@ -64,14 +66,15 @@
      * Ends the operation.
      *
      * @param container The Tiles container to use.
-     * @param composeStack The composing stack.
      * @param name The name of the attribute to put.
      * @param cascade If <code>true</code> the attribute will be cascaded to all nested attributes.
      * @param request TODO
+     * @param composeStack The composing stack.
      * @since 2.2.0
      */
-    public void end(TilesContainer container, ArrayStack<Object> composeStack,
-            String name, boolean cascade, Request request) {
+    public void end(TilesContainer container, String name,
+            boolean cascade, Request request) {
+        ArrayStack<Object> composeStack = ComposeStackUtil.getComposeStack(request);
         ListAttribute listAttribute = (ListAttribute) composeStack.pop();
         AttributeContext attributeContext = null;
         if (!composeStack.isEmpty()) {

Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java Tue Nov 17 19:56:11 2009
@@ -22,8 +22,12 @@
 package org.apache.tiles.template;
 
 import static org.easymock.EasyMock.*;
+import static org.easymock.classextension.EasyMock.*;
 import static org.junit.Assert.*;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.tiles.ArrayStack;
 import org.apache.tiles.AttributeContext;
 import org.apache.tiles.ListAttribute;
@@ -53,20 +57,28 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.template.PutListAttributeModel#start(ArrayStack, String, boolean)}.
+     * Test method for {@link org.apache.tiles.template.PutListAttributeModel#start(String, boolean, Request)}.
      */
     @Test
     public void testStart() {
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
-        model.start(composeStack, "myRole", false);
+        Map<String, Object> requestScope = new HashMap<String, Object>();
+        Request request = createMock(Request.class);
+        requestScope.put(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME, composeStack);
+
+        expect(request.getRequestScope()).andReturn(requestScope);
+
+        replay(request);
+        model.start("myRole", false, request);
         assertEquals(1, composeStack.size());
         ListAttribute listAttribute = (ListAttribute) composeStack.peek();
         assertEquals("myRole", listAttribute.getRole());
+        verify(request);
     }
 
     /**
      * Test method for {@link org.apache.tiles.template.PutListAttributeModel
-     * #end(org.apache.tiles.TilesContainer, ArrayStack, String, boolean, Request)}.
+     * #end(org.apache.tiles.TilesContainer, String, boolean, Request)}.
      */
     @Test
     public void testEnd() {
@@ -76,12 +88,15 @@
         ArrayStack<Object> composeStack = new ArrayStack<Object>();
         ListAttribute listAttribute = new ListAttribute();
         composeStack.push(listAttribute);
+        Map<String, Object> requestScope = new HashMap<String, Object>();
+        requestScope.put(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME, composeStack);
 
+        expect(request.getRequestScope()).andReturn(requestScope);
         expect(container.getAttributeContext(request)).andReturn(attributeContext);
         attributeContext.putAttribute("myName", listAttribute, false);
 
         replay(container, attributeContext, request);
-        model.end(container, composeStack, "myName", false, request);
+        model.end(container, "myName", false, request);
         assertEquals(0, composeStack.size());
         verify(container, attributeContext, request);
     }

Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeVModel.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeVModel.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeVModel.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeVModel.java Tue Nov 17 19:56:11 2009
@@ -39,8 +39,8 @@
 /**
  * Wraps {@link PutListAttributeModel} to be used in Velocity. For the list of
  * parameters, see
- * {@link PutListAttributeModel#start(java.util.Stack, String, boolean)}
- * AND {@link PutListAttributeModel#end(org.apache.tiles.TilesContainer, java.util.Stack, String, boolean, Request)}.
+ * {@link PutListAttributeModel#start(String, boolean, Request)}
+ * AND {@link PutListAttributeModel#end(org.apache.tiles.TilesContainer, String, boolean, Request)}.
  *
  * @version $Rev$ $Date$
  * @since 2.2.0
@@ -81,10 +81,9 @@
                 .createVelocityRequest(container.getApplicationContext(),
                         request, response, velocityContext, null);
         model.end(container,
-                ServletUtil.getComposeStack(request), (String) params
+                (String) params
                         .get("name"), VelocityUtil.toSimpleBoolean(
-                        (Boolean) params.get("cascade"), false),
-                currentRequest);
+                (Boolean) params.get("cascade"), false), currentRequest);
         return VelocityUtil.EMPTY_RENDERABLE;
     }
 
@@ -92,8 +91,12 @@
     public void start(HttpServletRequest request, HttpServletResponse response,
             Context velocityContext, Map<String, Object> params) {
         VelocityUtil.getParameterStack(velocityContext).push(params);
-        model.start(ServletUtil.getComposeStack(request), (String) params
-                .get("role"), VelocityUtil.toSimpleBoolean((Boolean) params
-                .get("inherit"), false));
+        TilesContainer container = ServletUtil.getCurrentContainer(
+                request, servletContext);
+        Request currentRequest = VelocityTilesRequestContext
+                .createVelocityRequest(container.getApplicationContext(),
+                        request, response, velocityContext, null);
+        model.start((String) params.get("role"), VelocityUtil.toSimpleBoolean(
+                (Boolean) params.get("inherit"), false), currentRequest);
     }
 }

Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java?rev=881468&r1=881467&r2=881468&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java Tue Nov 17 19:56:11 2009
@@ -88,20 +88,21 @@
         HttpServletResponse response = createMock(HttpServletResponse.class);
         Context velocityContext = createMock(Context.class);
         Map<String, Object> params = createParams();
-        ArrayStack<Object> composeStack = new ArrayStack<Object>();
         ArrayStack<Map<String, Object>> parameterMapStack = new ArrayStack<Map<String, Object>>();
+        TilesContainer container = createMock(TilesContainer.class);
+        ApplicationContext applicationContext = createMock(ApplicationContext.class);
 
-        expect(request.getAttribute(ServletUtil.COMPOSE_STACK_ATTRIBUTE_NAME))
-                .andReturn(composeStack);
+        expect(container.getApplicationContext()).andReturn(applicationContext);
+        expect(request.getAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
         expect(velocityContext.get(PARAMETER_MAP_STACK_KEY)).andReturn(parameterMapStack);
-        tModel.start(composeStack, "myRole", false);
+        tModel.start(eq("myRole"), eq(false), isA(VelocityTilesRequestContext.class));
 
-        replay(tModel, servletContext, request, response, velocityContext);
+        replay(tModel, servletContext, request, response, velocityContext, container, applicationContext);
         initializeModel();
         model.start(request, response, velocityContext, params);
         assertEquals(1, parameterMapStack.size());
         assertEquals(params, parameterMapStack.peek());
-        verify(tModel, servletContext, request, response, velocityContext);
+        verify(tModel, servletContext, request, response, velocityContext, container, applicationContext);
     }
 
     /**
@@ -114,19 +115,16 @@
         HttpServletRequest request = createMock(HttpServletRequest.class);
         HttpServletResponse response = createMock(HttpServletResponse.class);
         Context velocityContext = createMock(Context.class);
-        TilesContainer container = createMock(TilesContainer.class);
-        ArrayStack<Object> composeStack = new ArrayStack<Object>();
         Map<String, Object> params = createParams();
         ArrayStack<Map<String, Object>> parameterMapStack = new ArrayStack<Map<String, Object>>();
         parameterMapStack.push(params);
+        TilesContainer container = createMock(TilesContainer.class);
         ApplicationContext applicationContext = createMock(ApplicationContext.class);
 
         expect(container.getApplicationContext()).andReturn(applicationContext);
-        expect(request.getAttribute(ServletUtil.COMPOSE_STACK_ATTRIBUTE_NAME))
-                .andReturn(composeStack);
         expect(velocityContext.get(PARAMETER_MAP_STACK_KEY)).andReturn(parameterMapStack);
         expect(request.getAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
-        tModel.end(eq(container), eq(composeStack), eq("myName"), eq(false), isA(VelocityTilesRequestContext.class));
+        tModel.end(eq(container), eq("myName"), eq(false), isA(VelocityTilesRequestContext.class));
 
         replay(tModel, servletContext, container, request, response, velocityContext, applicationContext);
         initializeModel();