Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java Sat Feb 20 21:06:14 2010 @@ -21,11 +21,14 @@ package org.apache.tiles.template; +import java.io.IOException; + import org.apache.tiles.Attribute; import org.apache.tiles.AttributeContext; import org.apache.tiles.TilesContainer; import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; /** * <p> @@ -110,14 +113,17 @@ * rendered. If specified, it overrides the preparer specified in the * definition itself. * @param request TODO + * @param modelBody TODO * @param container The Tiles container. - * + * @throws IOException If something goes wrong. * @since 2.2.0 */ public void execute(String template, String templateType, String templateExpression, - String role, String preparer, Request request) { + String role, String preparer, Request request, ModelBody modelBody) throws IOException { TilesContainer container = TilesAccess.getCurrentContainer(request); container.startContext(request); + modelBody.evaluateWithoutWriting(); + container = TilesAccess.getCurrentContainer(request); renderTemplate(container, template, templateType, templateExpression, role, preparer, 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=912223&r1=912222&r2=912223&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 Sat Feb 20 21:06:14 2010 @@ -21,6 +21,8 @@ package org.apache.tiles.template; +import java.io.IOException; + import org.apache.tiles.ArrayStack; import org.apache.tiles.AttributeContext; import org.apache.tiles.Definition; @@ -28,6 +30,7 @@ import org.apache.tiles.TilesContainer; import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; /** * <p> @@ -89,4 +92,27 @@ } attributeContext.putAttribute(name, listAttribute, cascade); } + + public void execute(String name, String role, boolean inherit, + boolean cascade, Request request, ModelBody modelBody) throws IOException { + ArrayStack<Object> composeStack = ComposeStackUtil.getComposeStack(request); + ListAttribute listAttribute = new ListAttribute(); + listAttribute.setRole(role); + listAttribute.setInherit(inherit); + composeStack.push(listAttribute); + modelBody.evaluateWithoutWriting(); + TilesContainer container = TilesAccess.getCurrentContainer(request); + listAttribute = (ListAttribute) composeStack.pop(); + AttributeContext attributeContext = null; + if (!composeStack.isEmpty()) { + Object obj = composeStack.peek(); + if (obj instanceof Definition) { + attributeContext = (AttributeContext) obj; + } + } + if (attributeContext == null) { + attributeContext = container.getAttributeContext(request); + } + attributeContext.putAttribute(name, listAttribute, cascade); + } } 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=912223&r1=912222&r2=912223&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 Feb 20 21:06:14 2010 @@ -24,6 +24,7 @@ import static org.easymock.EasyMock.*; import static org.junit.Assert.*; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -34,6 +35,7 @@ import org.apache.tiles.mgmt.MutableTilesContainer; import org.apache.tiles.request.ApplicationContext; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; import org.junit.Before; import org.junit.Test; @@ -141,10 +143,11 @@ /** * Test method for {...@link org.apache.tiles.template.DefinitionModel * #execute(java.lang.String, java.lang.String, - * java.lang.String, java.lang.String, java.lang.String, Request)}. + * java.lang.String, java.lang.String, java.lang.String, Request, ModelBody)}. + * @throws IOException If something goes wrong. */ @Test - public void testExecute() { + public void testExecute() throws IOException { MutableTilesContainer container = createMock(MutableTilesContainer.class); Request request = createMock(Request.class); ArrayStack<Object> composeStack = new ArrayStack<Object>(); @@ -154,18 +157,20 @@ requestScope.put(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME, composeStack); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); ApplicationContext applicationContext = createMock(ApplicationContext.class); + ModelBody modelBody = createMock(ModelBody.class); + modelBody.evaluateWithoutWriting(); expect(request.getApplicationContext()).andReturn(applicationContext); expect(request.getContext("request")).andReturn(requestScope).anyTimes(); container.register((Definition) notNull(), eq(request)); - replay(container, request, applicationContext); + replay(container, request, modelBody, applicationContext); model.execute("myName", "myTemplate", "myRole", "myExtends", - "myPreparer", request); + "myPreparer", request, modelBody); assertEquals(1, composeStack.size()); attribute = (Attribute) composeStack.peek(); assertEquals("definition", attribute.getRenderer()); - verify(container, request, applicationContext); + verify(container, request, modelBody, applicationContext); } } Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/GetAsStringModelTest.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/GetAsStringModelTest.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/GetAsStringModelTest.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/GetAsStringModelTest.java Sat Feb 20 21:06:14 2010 @@ -37,6 +37,7 @@ import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.ApplicationContext; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; import org.junit.Before; import org.junit.Test; @@ -131,7 +132,7 @@ * Test method for {...@link org.apache.tiles.template.GetAsStringModel * #execute(boolean, java.lang.String, java.lang.String, * java.lang.Object, java.lang.String, java.lang.String, java.lang.String, - * org.apache.tiles.Attribute, Request)}. + * org.apache.tiles.Attribute, Request, ModelBody)}. * @throws IOException If something goes wrong. */ @Test @@ -142,11 +143,15 @@ Request request = createMock(Request.class); Writer writer = createMock(Writer.class); Map<String, Object> requestScope = new HashMap<String, Object>(); + ArrayStack<Object> composeStack = new ArrayStack<Object>(); + requestScope.put(ComposeStackUtil.COMPOSE_STACK_ATTRIBUTE_NAME, composeStack); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); ApplicationContext applicationContext = createMock(ApplicationContext.class); + ModelBody modelBody = createMock(ModelBody.class); - expect(request.getApplicationContext()).andReturn(applicationContext); - expect(request.getContext("request")).andReturn(requestScope); + modelBody.evaluateWithoutWriting(); + expect(request.getApplicationContext()).andReturn(applicationContext).times(2); + expect(request.getContext("request")).andReturn(requestScope).anyTimes(); expect(request.getWriter()).andReturn(writer); container.prepare("myPreparer", request); expect(resolver.computeAttribute(container, attribute, "myName", "myRole", false, "myDefaultValue", @@ -155,10 +160,10 @@ writer.write("myValue"); container.endContext(request); - replay(resolver, container, writer, request, applicationContext); + replay(resolver, container, writer, request, applicationContext, modelBody); model.execute(false, "myPreparer", "myRole", "myDefaultValue", "myDefaultValueRole", "myDefaultValueType", - "myName", attribute, request); - verify(resolver, container, writer, request, applicationContext); + "myName", attribute, request, modelBody); + verify(resolver, container, writer, request, applicationContext, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertAttributeModelTest.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertAttributeModelTest.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertAttributeModelTest.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertAttributeModelTest.java Sat Feb 20 21:06:14 2010 @@ -35,6 +35,7 @@ import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.ApplicationContext; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; import org.junit.Before; import org.junit.Test; @@ -126,7 +127,7 @@ /** * Test method for {...@link org.apache.tiles.template.InsertAttributeModel * #execute(boolean, String, String, Object, String, String, String, - * Attribute, Request)}. + * Attribute, Request, ModelBody)}. * @throws IOException If something goes wrong. */ @Test @@ -138,8 +139,10 @@ Map<String, Object> requestScope = new HashMap<String, Object>(); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); ApplicationContext applicationContext = createMock(ApplicationContext.class); + ModelBody modelBody = createMock(ModelBody.class); - expect(request.getApplicationContext()).andReturn(applicationContext); + modelBody.evaluateWithoutWriting(); + expect(request.getApplicationContext()).andReturn(applicationContext).times(2); expect(request.getContext("request")).andReturn(requestScope).anyTimes(); container.prepare("myPreparer", request); @@ -149,10 +152,10 @@ container.endContext(request); container.render(attribute, request); - replay(resolver, container, request, applicationContext); + replay(resolver, container, request, applicationContext, modelBody); model.execute(false, "myPreparer", "myRole", "myDefaultValue", "myDefaultValueRole", - "myDefaultValueType", "myName", attribute, request); - verify(resolver, container, request, applicationContext); + "myDefaultValueType", "myName", attribute, request, modelBody); + verify(resolver, container, request, applicationContext, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertDefinitionModelTest.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertDefinitionModelTest.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertDefinitionModelTest.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertDefinitionModelTest.java Sat Feb 20 21:06:14 2010 @@ -22,7 +22,9 @@ package org.apache.tiles.template; import static org.easymock.EasyMock.*; +import static org.easymock.classextension.EasyMock.*; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -32,6 +34,7 @@ import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.ApplicationContext; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; import org.junit.Before; import org.junit.Test; @@ -109,18 +112,21 @@ /** * Test method for {...@link org.apache.tiles.template.InsertDefinitionModel * #execute(java.lang.String, java.lang.String, String, - * String, java.lang.String, java.lang.String, Request)}. + * String, java.lang.String, java.lang.String, Request, ModelBody)}. + * @throws IOException If something goes wrong. */ @Test - public void testExecute() { + public void testExecute() throws IOException { TilesContainer container = createMock(TilesContainer.class); Request request = createMock(Request.class); AttributeContext attributeContext = createMock(AttributeContext.class); Map<String, Object> requestScope = new HashMap<String, Object>(); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); ApplicationContext applicationContext = createMock(ApplicationContext.class); + ModelBody modelBody = createMock(ModelBody.class); - expect(request.getApplicationContext()).andReturn(applicationContext); + modelBody.evaluateWithoutWriting(); + expect(request.getApplicationContext()).andReturn(applicationContext).times(2); expect(request.getContext("request")).andReturn(requestScope).anyTimes(); expect(container.startContext(request)).andReturn(attributeContext); expect(container.getAttributeContext(request)).andReturn(attributeContext); @@ -129,11 +135,11 @@ attributeContext.setTemplateAttribute((Attribute) notNull()); container.render("myDefinitionName", request); - replay(container, attributeContext, request, applicationContext); + replay(container, attributeContext, request, applicationContext, modelBody); model.execute("myDefinitionName", "myTemplate", "myTemplateType", "myTemplateExpression", "myRole", "myPreparer", - request); - verify(container, attributeContext, request, applicationContext); + request, modelBody); + verify(container, attributeContext, request, applicationContext, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertTemplateModelTest.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertTemplateModelTest.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertTemplateModelTest.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertTemplateModelTest.java Sat Feb 20 21:06:14 2010 @@ -23,6 +23,7 @@ import static org.easymock.EasyMock.*; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -32,6 +33,7 @@ import org.apache.tiles.access.TilesAccess; import org.apache.tiles.request.ApplicationContext; import org.apache.tiles.request.Request; +import org.apache.tiles.template.body.ModelBody; import org.junit.Before; import org.junit.Test; @@ -106,18 +108,21 @@ /** * Test method for {...@link org.apache.tiles.template.InsertTemplateModel - * #execute(String, String, String, String, String, Request)}. + * #execute(String, String, String, String, String, Request, ModelBody)}. + * @throws IOException If something goes wrong. */ @Test - public void testExecute() { + public void testExecute() throws IOException { TilesContainer container = createMock(TilesContainer.class); Request request = createMock(Request.class); AttributeContext attributeContext = createMock(AttributeContext.class); Map<String, Object> requestScope = new HashMap<String, Object>(); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); ApplicationContext applicationContext = createMock(ApplicationContext.class); + ModelBody modelBody = createMock(ModelBody.class); - expect(request.getApplicationContext()).andReturn(applicationContext); + modelBody.evaluateWithoutWriting(); + expect(request.getApplicationContext()).andReturn(applicationContext).times(2); expect(request.getContext("request")).andReturn(requestScope).anyTimes(); expect(container.startContext(request)).andReturn(attributeContext); expect(container.getAttributeContext(request)).andReturn(attributeContext); @@ -126,11 +131,11 @@ attributeContext.setTemplateAttribute((Attribute) notNull()); container.renderContext(request); - replay(container, attributeContext, request, applicationContext); + replay(container, attributeContext, request, applicationContext, modelBody); model.execute("myTemplate", "myTemplateType", "myTemplateExpression", "myRole", "myPreparer", - request); - verify(container, attributeContext, request, applicationContext); + request, modelBody); + verify(container, attributeContext, request, applicationContext, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -38,7 +38,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class AddAttributeDirective extends BodyBlockDirective { +public class AddAttributeDirective extends BodyDirective { /** * The template model. Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddListAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddListAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddListAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/AddListAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -21,18 +21,12 @@ package org.apache.tiles.velocity.template; -import java.io.Writer; +import java.io.IOException; import java.util.Map; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.tiles.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.AddListAttributeModel; -import org.apache.velocity.context.InternalContextAdapter; +import org.apache.tiles.template.body.ModelBody; /** * Wraps {...@link AddListAttributeModel} to be used in Velocity. For the list of @@ -42,7 +36,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class AddListAttributeDirective extends BlockDirective { +public class AddListAttributeDirective extends BodyDirective { /** * The template model. @@ -76,24 +70,9 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, null); - model.end(currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, null); - model.start((String) params.get("role"), currentRequest); + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute((String) params.get("role"), request, modelBody); } } Copied: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyDirective.java (from r912109, tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyBlockDirective.java) URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyDirective.java?p2=tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyDirective.java&p1=tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyBlockDirective.java&r1=912109&r2=912223&rev=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyBlockDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodyDirective.java Sat Feb 20 21:06:14 2010 @@ -48,7 +48,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public abstract class BodyBlockDirective extends Directive { +public abstract class BodyDirective extends Directive { /** {...@inheritdoc} */ @Override Added: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java?rev=912223&view=auto ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java (added) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java Sat Feb 20 21:06:14 2010 @@ -0,0 +1,76 @@ +/* + * $Id$ + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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.request.Request; +import org.apache.tiles.request.servlet.ServletUtil; +import org.apache.tiles.request.velocity.VelocityRequest; +import org.apache.tiles.velocity.context.VelocityUtil; +import org.apache.velocity.context.InternalContextAdapter; +import org.apache.velocity.runtime.directive.Directive; +import org.apache.velocity.runtime.parser.node.Node; +import org.apache.velocity.tools.view.ViewContext; + +/** + * Base abstract directive for those models who need to evaluate and use a + * body. + * + * @version $Rev$ $Date$ + * @since 2.2.2 + */ +public abstract class BodylessDirective extends Directive { + + /** {...@inheritdoc} */ + @Override + public int getType() { + return LINE; + } + + /** {...@inheritdoc} */ + + @Override + public boolean render(InternalContextAdapter context, Writer writer, Node node) + throws IOException { + ViewContext viewContext = (ViewContext) context + .getInternalUserContext(); + Map<String, Object> params = VelocityUtil.getParameters(context, node); + HttpServletRequest request = viewContext.getRequest(); + HttpServletResponse response = viewContext.getResponse(); + ServletContext servletContext = viewContext.getServletContext(); + Request currentRequest = VelocityRequest.createVelocityRequest( + ServletUtil.getApplicationContext(servletContext), request, + response, context, writer); + execute(params, currentRequest); + return true; + } + + protected abstract void execute(Map<String, Object> params, + Request request) throws IOException; +} Propchange: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/BodylessDirective.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/DefinitionDirective.java Sat Feb 20 21:06:14 2010 @@ -21,19 +21,13 @@ package org.apache.tiles.velocity.template; -import java.io.Writer; +import java.io.IOException; import java.util.Map; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.tiles.mgmt.MutableTilesContainer; import org.apache.tiles.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.DefinitionModel; -import org.apache.velocity.context.InternalContextAdapter; +import org.apache.tiles.template.body.ModelBody; /** * Wraps {...@link DefinitionModel} to be used in Velocity. For the list of @@ -48,7 +42,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class DefinitionDirective extends BlockDirective { +public class DefinitionDirective extends BodyDirective { /** * The template model. @@ -82,27 +76,12 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end(currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start((String) params.get("name"), (String) params + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute((String) params.get("name"), (String) params .get("template"), (String) params.get("role"), (String) params .get("extends"), (String) params.get("preparer"), - currentRequest); + request, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/GetAsStringDirective.java Sat Feb 20 21:06:14 2010 @@ -25,19 +25,13 @@ 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.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.DefaultAttributeResolver; import org.apache.tiles.template.GetAsStringModel; +import org.apache.tiles.template.body.ModelBody; import org.apache.tiles.velocity.context.VelocityUtil; -import org.apache.velocity.context.InternalContextAdapter; /** * Wraps {...@link GetAsStringModel} to be used in Velocity. For the list of @@ -52,7 +46,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class GetAsStringDirective extends BlockDirective { +public class GetAsStringDirective extends BodyDirective { /** * The template model. @@ -87,32 +81,15 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) - throws IOException { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end(VelocityUtil.toSimpleBoolean((Boolean) params.get("ignore"), - false), currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start(VelocityUtil.toSimpleBoolean( + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute(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"), - currentRequest); + request, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -21,22 +21,11 @@ package org.apache.tiles.velocity.template; -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.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.ImportAttributeModel; import org.apache.tiles.velocity.context.VelocityUtil; -import org.apache.velocity.context.InternalContextAdapter; -import org.apache.velocity.runtime.directive.Directive; -import org.apache.velocity.runtime.parser.node.Node; -import org.apache.velocity.tools.view.ViewContext; /** * Wraps {...@link ImportAttributeModel} to be used in Velocity. For the list of @@ -47,7 +36,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class ImportAttributeDirective extends Directive { +public class ImportAttributeDirective extends BodylessDirective { /** * The template model. @@ -87,22 +76,11 @@ /** {...@inheritdoc} */ @Override - public boolean render(InternalContextAdapter context, Writer writer, - Node node) { - ViewContext viewContext = (ViewContext) context - .getInternalUserContext(); - Map<String, Object> params = VelocityUtil.getParameters(context, node); - HttpServletRequest request = viewContext.getRequest(); - HttpServletResponse response = viewContext.getResponse(); - ServletContext servletContext = viewContext.getServletContext(); - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); + protected void execute(Map<String, Object> params, Request request) { model.execute((String) params.get("name"), (String) params.get("scope"), (String) params.get("toName"), VelocityUtil.toSimpleBoolean((Boolean) params.get("ignore"), - false), currentRequest); - return true; + false), request); } } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -22,21 +22,14 @@ 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.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.DefaultAttributeResolver; import org.apache.tiles.template.InsertAttributeModel; +import org.apache.tiles.template.body.ModelBody; import org.apache.tiles.velocity.context.VelocityUtil; -import org.apache.velocity.context.InternalContextAdapter; /** * Wraps {...@link InsertAttributeModel} to be used in Velocity. For the list of @@ -51,7 +44,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class InsertAttributeDirective extends BlockDirective { +public class InsertAttributeDirective extends BodyDirective { /** * The template model. @@ -86,32 +79,15 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) - throws IOException { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end(VelocityUtil.toSimpleBoolean((Boolean) params.get("ignore"), - false), currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start(VelocityUtil.toSimpleBoolean( + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute(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"), - currentRequest); + request, modelBody); } } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertDefinitionDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertDefinitionDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertDefinitionDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertDefinitionDirective.java Sat Feb 20 21:06:14 2010 @@ -21,18 +21,12 @@ package org.apache.tiles.velocity.template; -import java.io.Writer; +import java.io.IOException; import java.util.Map; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.tiles.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.InsertDefinitionModel; -import org.apache.velocity.context.InternalContextAdapter; +import org.apache.tiles.template.body.ModelBody; /** * Wraps {...@link InsertDefinitionModel} to be used in Velocity. For the list of @@ -47,7 +41,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class InsertDefinitionDirective extends BlockDirective { +public class InsertDefinitionDirective extends BodyDirective { /** * The template model. @@ -81,28 +75,12 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end((String) params.get("name"), (String) params.get("template"), + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute((String) params.get("name"), (String) params.get("template"), (String) params.get("templateType"), (String) params .get("templateExpression"), (String) params.get("role"), (String) params.get("preparer"), - currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start(currentRequest); + request, modelBody); } - } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/InsertTemplateDirective.java Sat Feb 20 21:06:14 2010 @@ -21,18 +21,12 @@ package org.apache.tiles.velocity.template; -import java.io.Writer; +import java.io.IOException; import java.util.Map; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.tiles.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.InsertTemplateModel; -import org.apache.velocity.context.InternalContextAdapter; +import org.apache.tiles.template.body.ModelBody; /** * Wraps {...@link InsertTemplateModel} to be used in Velocity. For the list of @@ -47,7 +41,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class InsertTemplateDirective extends BlockDirective { +public class InsertTemplateDirective extends BodyDirective { /** * The template model. @@ -81,28 +75,12 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end((String) params.get("template"), (String) params + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute((String) params.get("template"), (String) params .get("templateType"), (String) params.get("templateExpression"), (String) params .get("role"), (String) params.get("preparer"), - currentRequest); - } - - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start(currentRequest); + request, modelBody); } - } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -40,7 +40,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class PutAttributeDirective extends BodyBlockDirective { +public class PutAttributeDirective extends BodyDirective { /** * The template model. Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeDirective.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeDirective.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeDirective.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/PutListAttributeDirective.java Sat Feb 20 21:06:14 2010 @@ -21,19 +21,13 @@ package org.apache.tiles.velocity.template; -import java.io.Writer; +import java.io.IOException; import java.util.Map; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.tiles.request.Request; -import org.apache.tiles.request.servlet.ServletUtil; -import org.apache.tiles.request.velocity.VelocityRequest; import org.apache.tiles.template.PutListAttributeModel; +import org.apache.tiles.template.body.ModelBody; import org.apache.tiles.velocity.context.VelocityUtil; -import org.apache.velocity.context.InternalContextAdapter; /** * Wraps {...@link PutListAttributeModel} to be used in Velocity. For the list of @@ -45,7 +39,7 @@ * @version $Rev$ $Date$ * @since 2.2.2 */ -public class PutListAttributeDirective extends BlockDirective { +public class PutListAttributeDirective extends BodyDirective { /** * The template model. @@ -73,32 +67,18 @@ /** {...@inheritdoc} */ @Override - protected void end(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.end((String) params.get("name"), VelocityUtil.toSimpleBoolean( - (Boolean) params.get("cascade"), false), currentRequest); + public String getName() { + return "tiles_putListAttribute"; } - /** {...@inheritdoc} */ - @Override - protected void start(InternalContextAdapter context, Writer writer, - Map<String, Object> params, HttpServletRequest request, - HttpServletResponse response, ServletContext servletContext) { - Request currentRequest = VelocityRequest.createVelocityRequest( - ServletUtil.getApplicationContext(servletContext), request, - response, context, writer); - model.start((String) params.get("role"), VelocityUtil.toSimpleBoolean( - (Boolean) params.get("inherit"), false), currentRequest); - } /** {...@inheritdoc} */ @Override - public String getName() { - return "tiles_putListAttribute"; + protected void execute(Map<String, Object> params, Request request, + ModelBody modelBody) throws IOException { + model.execute((String) params.get("name"), (String) params.get("role"), + VelocityUtil.toSimpleBoolean((Boolean) params.get("inherit"), + false), VelocityUtil.toSimpleBoolean((Boolean) params + .get("cascade"), false), request, modelBody); } - } Modified: tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/BodyBlockDirectiveTest.java URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/BodyBlockDirectiveTest.java?rev=912223&r1=912222&r2=912223&view=diff ============================================================================== --- tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/BodyBlockDirectiveTest.java (original) +++ tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/BodyBlockDirectiveTest.java Sat Feb 20 21:06:14 2010 @@ -48,7 +48,7 @@ import org.junit.Test; /** - * Tests {...@link BodyBlockDirective}. + * Tests {...@link BodyDirective}. * * @version $Rev$ $Date$ */ @@ -57,14 +57,14 @@ /** * The directive to test. */ - private BodyBlockDirective directive; + private BodyDirective directive; /** * @throws java.lang.Exception */ @Before public void setUp() { - directive = createMock(BodyBlockDirective.class, new Method[0]); + directive = createMock(BodyDirective.class, new Method[0]); } /**
