Copied: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java
 (from r1200278, 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/BodyDirective.java)
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java?p2=tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java&p1=tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/BodyDirective.java&r1=1200278&r2=1201651&rev=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/BodyDirective.java
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java
 Mon Nov 14 10:01:43 2011
@@ -18,70 +18,89 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.tiles.autotag.velocity.runtime;
 
-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.autotag.core.runtime.ModelBody;
+import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
 import org.apache.tiles.request.Request;
 import org.apache.tiles.request.servlet.ServletUtil;
 import org.apache.tiles.request.velocity.VelocityRequest;
 import org.apache.velocity.context.InternalContextAdapter;
 import org.apache.velocity.runtime.directive.Directive;
 import org.apache.velocity.runtime.parser.node.ASTBlock;
+import org.apache.velocity.runtime.parser.node.ASTMap;
 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 3.0.0
+ * A Runtime for implementing Velocity Directives.
  */
-public abstract class BodyDirective extends Directive {
+public class VelocityAutotagRuntime extends Directive implements 
AutotagRuntime {
+    private InternalContextAdapter context;
+    private Writer                 writer;
+    private Node                   node;
+    private Map<String, Object>    params;
 
     /** {@inheritDoc} */
     @Override
-    public int getType() {
-        return BLOCK;
+    public Request createRequest() {
+        ViewContext viewContext = (ViewContext) 
context.getInternalUserContext();
+        HttpServletRequest request = viewContext.getRequest();
+        HttpServletResponse response = viewContext.getResponse();
+        ServletContext servletContext = viewContext.getServletContext();
+        return 
VelocityRequest.createVelocityRequest(ServletUtil.getApplicationContext(servletContext),
+                                                     request,
+                                                     response,
+                                                     context,
+                                                     writer);
     }
 
     /** {@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);
+    public ModelBody createModelBody() {
         ASTBlock block = (ASTBlock) node.jjtGetChild(1);
-        ModelBody modelBody = new VelocityModelBody(context, block, writer);
-        execute(params, currentRequest, modelBody);
-        return true;
+        return new VelocityModelBody(context, block, writer);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    @SuppressWarnings("unchecked")
+    public Object getParameter(String name, Object defaultValue) {
+        if (params == null) {
+            ASTMap astMap = (ASTMap) node.jjtGetChild(0);
+            params = (Map<String, Object>) astMap.value(context);
+        }
+        Object result = params.get(name);
+        if (result == null) {
+            result = defaultValue;
+        }
+        return result;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getName() {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public int getType() {
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean render(InternalContextAdapter context, Writer writer, Node 
node) {
+        this.context = context;
+        this.writer = writer;
+        this.node = node;
+        return false;
     }
 
-    /**
-     * Executes the directive.
-     *
-     * @param params The parameters.
-     * @param request The request.
-     * @param modelBody The body.
-     * @throws IOException If something goes wrong.
-     */
-    protected abstract void execute(Map<String, Object> params,
-            Request request, ModelBody modelBody) throws IOException;
 }

Propchange: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/main/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntime.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java?rev=1201651&view=auto
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
 (added)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
 Mon Nov 14 10:01:43 2011
@@ -0,0 +1,88 @@
+package org.apache.tiles.autotag.velocity.runtime;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+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.autotag.core.runtime.ModelBody;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.Request;
+import org.apache.tiles.request.util.ApplicationAccess;
+import org.apache.tiles.request.velocity.VelocityRequest;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.runtime.parser.node.ASTBlock;
+import org.apache.velocity.runtime.parser.node.ASTMap;
+import org.apache.velocity.runtime.parser.node.Node;
+import org.apache.velocity.tools.view.ViewToolContext;
+import org.junit.Test;
+
+public class VelocityAutotagRuntimeTest {
+    @Test
+    public void testCreateRequest() {
+        InternalContextAdapter context = 
createMock(InternalContextAdapter.class);
+        Writer writer = createMock(Writer.class);
+        Node node = createMock(Node.class);
+        ViewToolContext viewContext = createMock(ViewToolContext.class);
+        HttpServletRequest request = createMock(HttpServletRequest.class);
+        HttpServletResponse response = createMock(HttpServletResponse.class);
+        ServletContext servletContext = createMock(ServletContext.class);
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
+
+        expect(context.getInternalUserContext()).andReturn(viewContext);
+        expect(viewContext.getRequest()).andReturn(request);
+        expect(viewContext.getResponse()).andReturn(response);
+        expect(viewContext.getServletContext()).andReturn(servletContext);
+        
expect(servletContext.getAttribute(ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(applicationContext);
+
+        replay(context, writer, node, viewContext, request, response, 
servletContext, applicationContext);
+        VelocityAutotagRuntime runtime = new VelocityAutotagRuntime();
+        runtime.render(context, writer, node);
+        Request velocityRequest = runtime.createRequest();
+        assertTrue(velocityRequest instanceof VelocityRequest);
+        verify(context, writer, node, viewContext, request, response, 
servletContext, applicationContext);
+    }
+
+    @Test
+    public void testCreateModelBody() {
+        InternalContextAdapter context = 
createMock(InternalContextAdapter.class);
+        Writer writer = createMock(Writer.class);
+        Node node = createMock(Node.class);
+        ASTBlock block = createMock(ASTBlock.class);
+        expect(node.jjtGetChild(1)).andReturn(block);
+        replay(context, writer, node, block);
+        VelocityAutotagRuntime runtime = new VelocityAutotagRuntime();
+        runtime.render(context, writer, node);
+        ModelBody modelBody = runtime.createModelBody();
+        assertTrue(modelBody instanceof VelocityModelBody);
+        verify(context, writer, node, block);
+    }
+
+    @Test
+    public void testGetParameter() {
+        InternalContextAdapter context = 
createMock(InternalContextAdapter.class);
+        Writer writer = createMock(Writer.class);
+        Node node = createMock(Node.class);
+        ASTMap astMap = createMock(ASTMap.class);
+        @SuppressWarnings("unchecked")
+        Map<String, Object> params = createMock(Map.class);
+        expect(node.jjtGetChild(0)).andReturn(astMap);
+        expect(astMap.value(context)).andReturn(params);
+        expect(params.get(eq("notnullParam"))).andReturn(new 
Integer(42)).anyTimes();
+        expect(params.get(eq("nullParam"))).andReturn(null).anyTimes();
+        replay(context, writer, node, astMap, params);
+        VelocityAutotagRuntime runtime = new VelocityAutotagRuntime();
+        runtime.render(context, writer, node);
+        Object notnullParam = runtime.getParameter("notnullParam", null);
+        Object nullParam = runtime.getParameter("nullParam", null);
+        Object notnullParamDefault = runtime.getParameter("notnullParam", new 
Integer(24));
+        Object nullParamDefault = runtime.getParameter("nullParam", new 
Integer(24));
+        assertEquals(42, notnullParam);
+        assertEquals(null, nullParam);
+        assertEquals(42, notnullParamDefault);
+        assertEquals(24, nullParamDefault);
+        verify(context, writer, node, astMap, params);
+    }
+}

Propchange: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGenerator.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGenerator.java?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGenerator.java
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGenerator.java
 Mon Nov 14 10:01:43 2011
@@ -46,19 +46,22 @@ public class VelocityDirectiveGenerator 
 
     @Override
     protected String getDirectoryName(File directory, String packageName,
-            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters) {
+            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters,
+            String runtimeClass) {
         return packageName.replaceAll("\\.", "/");
     }
 
     @Override
     protected String getFilename(File directory, String packageName,
-            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters) {
+            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters,
+            String runtimeClass) {
         return clazz.getTagClassPrefix() + "Directive.java";
     }
 
     @Override
     protected String getTemplatePath(File directory, String packageName,
-            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters) {
+            TemplateSuite suite, TemplateClass clazz, Map<String, String> 
parameters,
+            String runtimeClass) {
         return "/org/apache/tiles/autotag/velocity/velocityDirective.vm";
     }
 }

Modified: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/resources/org/apache/tiles/autotag/velocity/velocityDirective.vm
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/resources/org/apache/tiles/autotag/velocity/velocityDirective.vm?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/resources/org/apache/tiles/autotag/velocity/velocityDirective.vm
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/main/resources/org/apache/tiles/autotag/velocity/velocityDirective.vm
 Mon Nov 14 10:01:43 2011
@@ -20,21 +20,23 @@ package ${packageName};
  * under the License.
  *#
 import java.io.IOException;
-import java.util.Map;
+import java.io.Writer;
 
 #if(${clazz.hasBody()})
 import org.apache.tiles.autotag.core.runtime.ModelBody;
 #end
-import 
org.apache.tiles.autotag.velocity.runtime.Body#if(!${clazz.hasBody()})less#{end}Directive;
-import org.apache.tiles.autotag.velocity.runtime.VelocityUtil;
+import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
 import org.apache.tiles.request.Request;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
 
 /**
 #foreach($line in $stringTool.splitOnNewlines(${clazz.documentation}))
  * ${line}
 #end
  */
-public class ${clazz.tagClassPrefix}Directive extends 
Body#if(!${clazz.hasBody()})less#{end}Directive {
+public class ${clazz.tagClassPrefix}Directive extends Directive {
 
     /**
      * The template model.
@@ -49,13 +51,29 @@ public class ${clazz.tagClassPrefix}Dire
 
     /** {@inheritDoc} */
     @Override
-    protected void execute(Map<String, Object> params, Request 
request#if(${clazz.hasBody()}), ModelBody modelBody#end) throws IOException {
+    public int getType() {
+        return #if(${clazz.hasBody()})BLOCK#{else}LINE#{end};
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean render(InternalContextAdapter context, Writer writer, Node 
node)
+            throws IOException {
+        AutotagRuntime runtime = new ${runtimeClass}();
+        if (runtime instanceof Directive) {
+            ((Directive) runtime).render(context, writer, node);
+        }
+        Request request = runtime.createRequest();
+#if(${clazz.hasBody()})
+        ModelBody modelBody = runtime.createModelBody();
+#end
         model.execute(
 #foreach($parameter in ${clazz.parameters})
-            ($stringTool.getClassToCast(${parameter.type})) 
VelocityUtil.getObject(params.get("${parameter.exportedName}"), 
$stringTool.getDefaultValue(${parameter.type}, ${parameter.defaultValue})),
+            ($stringTool.getClassToCast(${parameter.type})) 
runtime.getParameter("${parameter.exportedName}", 
$stringTool.getDefaultValue(${parameter.type}, ${parameter.defaultValue})),
 #end
             request#if(${clazz.hasBody()}), modelBody#end
 
         );
+        return true;
     }
 }

Modified: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGeneratorTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGeneratorTest.java?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGeneratorTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGeneratorTest.java
 Mon Nov 14 10:01:43 2011
@@ -89,7 +89,8 @@ public class VelocityDirectiveGeneratorT
                 "doStuff", "DoStuff", executeMethod);
         clazz.setDocumentation("Documentation of the DoStuff class.");
 
-        generator.generate(file, "org.apache.tiles.autotag.velocity.test", 
suite, clazz, null);
+        generator.generate(file, "org.apache.tiles.autotag.velocity.test", 
suite, clazz, null,
+                           "org.apache.tiles.autotag.velocity.test.Runtime");
 
         InputStream expected = getClass()
                 .getResourceAsStream(
@@ -123,7 +124,8 @@ public class VelocityDirectiveGeneratorT
 
         suite.addTemplateClass(clazz);
 
-        generator.generate(file, "org.apache.tiles.autotag.velocity.test", 
suite, clazz, null);
+        generator.generate(file, "org.apache.tiles.autotag.velocity.test", 
suite, clazz, null,
+                           "org.apache.tiles.autotag.velocity.test.Runtime");
 
         expected = getClass()
                 .getResourceAsStream(

Modified: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffDirective.javat
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffDirective.javat?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffDirective.javat
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffDirective.javat
 Mon Nov 14 10:01:43 2011
@@ -1,17 +1,19 @@
 package org.apache.tiles.autotag.velocity.test;
 
 import java.io.IOException;
-import java.util.Map;
+import java.io.Writer;
 
 import org.apache.tiles.autotag.core.runtime.ModelBody;
-import org.apache.tiles.autotag.velocity.runtime.BodyDirective;
-import org.apache.tiles.autotag.velocity.runtime.VelocityUtil;
+import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
 import org.apache.tiles.request.Request;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
 
 /**
  * Documentation of the DoStuff class.
  */
-public class DoStuffDirective extends BodyDirective {
+public class DoStuffDirective extends Directive {
 
     /**
      * The template model.
@@ -26,12 +28,26 @@ public class DoStuffDirective extends Bo
 
     /** {@inheritDoc} */
     @Override
-    protected void execute(Map<String, Object> params, Request request, 
ModelBody modelBody) throws IOException {
+    public int getType() {
+        return BLOCK;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean render(InternalContextAdapter context, Writer writer, Node 
node)
+            throws IOException {
+        AutotagRuntime runtime = new 
org.apache.tiles.autotag.velocity.test.Runtime();
+        if (runtime instanceof Directive) {
+            ((Directive) runtime).render(context, writer, node);
+        }
+        Request request = runtime.createRequest();
+        ModelBody modelBody = runtime.createModelBody();
         model.execute(
-            (java.lang.String) VelocityUtil.getObject(params.get("one"), null),
-            (java.lang.Integer) VelocityUtil.getObject(params.get("two"), 0),
-            (java.lang.Boolean) VelocityUtil.getObject(params.get("three"), 
false),
+            (java.lang.String) runtime.getParameter("one", null),
+            (java.lang.Integer) runtime.getParameter("two", 0),
+            (java.lang.Boolean) runtime.getParameter("three", false),
             request, modelBody
         );
+        return true;
     }
 }

Modified: 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffNoBodyDirective.javat
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffNoBodyDirective.javat?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffNoBodyDirective.javat
 (original)
+++ 
tiles/framework/trunk/tiles-autotag/tiles-autotag-velocity/src/test/resources/org/apache/tiles/autotag/velocity/test/DoStuffNoBodyDirective.javat
 Mon Nov 14 10:01:43 2011
@@ -1,16 +1,18 @@
 package org.apache.tiles.autotag.velocity.test;
 
 import java.io.IOException;
-import java.util.Map;
+import java.io.Writer;
 
-import org.apache.tiles.autotag.velocity.runtime.BodylessDirective;
-import org.apache.tiles.autotag.velocity.runtime.VelocityUtil;
+import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
 import org.apache.tiles.request.Request;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
 
 /**
  * Documentation of the DoStuffNoBody class.
  */
-public class DoStuffNoBodyDirective extends BodylessDirective {
+public class DoStuffNoBodyDirective extends Directive {
 
     /**
      * The template model.
@@ -25,12 +27,25 @@ public class DoStuffNoBodyDirective exte
 
     /** {@inheritDoc} */
     @Override
-    protected void execute(Map<String, Object> params, Request request) throws 
IOException {
+    public int getType() {
+        return LINE;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean render(InternalContextAdapter context, Writer writer, Node 
node)
+            throws IOException {
+        AutotagRuntime runtime = new 
org.apache.tiles.autotag.velocity.test.Runtime();
+        if (runtime instanceof Directive) {
+            ((Directive) runtime).render(context, writer, node);
+        }
+        Request request = runtime.createRequest();
         model.execute(
-            (java.lang.Double) VelocityUtil.getObject(params.get("one"), null),
-            (java.lang.Float) VelocityUtil.getObject(params.get("two"), 0.0f),
-            (java.util.Date) VelocityUtil.getObject(params.get("three"), null),
+            (java.lang.Double) runtime.getParameter("one", null),
+            (java.lang.Float) runtime.getParameter("two", 0.0f),
+            (java.util.Date) runtime.getParameter("three", null),
             request
         );
+        return true;
     }
 }

Modified: tiles/framework/trunk/tiles-parent/tiles-freemarker/pom.xml
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-freemarker/pom.xml?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-freemarker/pom.xml (original)
+++ tiles/framework/trunk/tiles-parent/tiles-freemarker/pom.xml Mon Nov 14 
10:01:43 2011
@@ -45,6 +45,7 @@
                 </goals>
                 <configuration>
                     
<packageName>org.apache.tiles.freemarker.template</packageName>
+                    
<freemarkerRuntime>org.apache.tiles.autotag.freemarker.runtime.FreemarkerAutotagRuntime</freemarkerRuntime>
                 </configuration>
             </execution>
         </executions>

Modified: tiles/framework/trunk/tiles-parent/tiles-jsp/pom.xml
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-jsp/pom.xml?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-jsp/pom.xml (original)
+++ tiles/framework/trunk/tiles-parent/tiles-jsp/pom.xml Mon Nov 14 10:01:43 
2011
@@ -90,6 +90,7 @@
                 <configuration>
                     <taglibURI>http://tiles.apache.org/tags-tiles</taglibURI>
                     <packageName>org.apache.tiles.jsp.taglib</packageName>
+                    
<jspRuntime>org.apache.tiles.autotag.jsp.runtime.JspAutotagRuntime</jspRuntime>
                 </configuration>
             </execution>
         </executions>

Modified: 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/UseAttributeTag.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/UseAttributeTag.java?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/UseAttributeTag.java
 (original)
+++ 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/UseAttributeTag.java
 Mon Nov 14 10:01:43 2011
@@ -21,11 +21,14 @@
 
 package org.apache.tiles.jsp.taglib;
 
+import java.io.IOException;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.SimpleTagSupport;
 import javax.servlet.jsp.tagext.TagData;
 import javax.servlet.jsp.tagext.TagExtraInfo;
 import javax.servlet.jsp.tagext.VariableInfo;
 
-import org.apache.tiles.autotag.jsp.runtime.BodylessTag;
+import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
 import org.apache.tiles.request.Request;
 import org.apache.tiles.template.ImportAttributeModel;
 
@@ -35,7 +38,7 @@ import org.apache.tiles.template.ImportA
  * @since Tiles 1.0
  * @version $Rev$ $Date$
  */
-public class UseAttributeTag extends BodylessTag {
+public class UseAttributeTag extends SimpleTagSupport {
 
     /**
      * The template model.
@@ -173,7 +176,16 @@ public class UseAttributeTag extends Bod
 
     /** {@inheritDoc} */
     @Override
-    public void execute(Request request) {
+    public void doTag() throws JspException, IOException {
+        AutotagRuntime runtime = new 
org.apache.tiles.autotag.jsp.runtime.JspAutotagRuntime();
+        if (runtime instanceof SimpleTagSupport) {
+            SimpleTagSupport tag = (SimpleTagSupport) runtime;
+            tag.setJspContext(getJspContext());
+            tag.setJspBody(getJspBody());
+            tag.setParent(getParent());
+            tag.doTag();
+        }
+        Request request = runtime.createRequest();        
         model.execute(name, scopeName, id, ignore, request);
     }
 

Modified: 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
 Mon Nov 14 10:01:43 2011
@@ -24,9 +24,15 @@ import static org.easymock.EasyMock.*;
 import static org.easymock.classextension.EasyMock.*;
 import static org.junit.Assert.*;
 
-import java.util.HashMap;
+import java.io.IOException;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.JspFragment;
+import javax.servlet.jsp.tagext.JspTag;
 import javax.servlet.jsp.tagext.TagData;
 import javax.servlet.jsp.tagext.VariableInfo;
 
@@ -35,7 +41,9 @@ import org.apache.tiles.AttributeContext
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.access.TilesAccess;
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.Request;
+import org.apache.tiles.request.jsp.JspRequest;
+import org.apache.tiles.request.scope.ReflectionContextResolver;
+import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -61,36 +69,48 @@ public class UseAttributeTagTest {
 
     /**
      * Test method for {@link 
org.apache.tiles.jsp.taglib.UseAttributeTag#execute(org.apache.tiles.request.Request)}.
+     * @throws IOException 
+     * @throws JspException 
      */
-    @SuppressWarnings("unchecked")
     @Test
-    public void testExecute() {
-        Request request = createMock(Request.class);
+    public void testExecute() throws JspException, IOException {
+        JspFragment jspBody = createMock(JspFragment.class);
+        PageContext pageContext = createMock(PageContext.class);
+        JspTag parent = createMock(JspTag.class);
         ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
-        Map<String, Object> requestScope = createMock(Map.class);
-        Map<String, Object> scope = createMock(Map.class);
+        HttpServletRequest httpServletRequest = 
createMock(HttpServletRequest.class);
+        HttpServletResponse httpServletResponse = 
createMock(HttpServletResponse.class);
+        @SuppressWarnings("unchecked")
+        Map<String, Object> applicationScope = createMock(Map.class);
         TilesContainer container = createMock(TilesContainer.class);
         AttributeContext attributeContext = createMock(AttributeContext.class);
         Attribute attribute = createMock(Attribute.class);
-
-        expect(request.getApplicationContext()).andReturn(applicationContext);
-        expect(request.getContext("request")).andReturn(requestScope);
-        
expect(requestScope.get(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
-        
expect(container.getAttributeContext(request)).andReturn(attributeContext);
+        expect(pageContext.getAttribute(
+                ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE,
+                PageContext.APPLICATION_SCOPE)).andReturn(applicationContext);
+        
expect(applicationContext.getApplicationScope()).andReturn(applicationScope).anyTimes();
+        
expect(applicationScope.get(ApplicationAccess.CONTEXT_RESOLVER_ATTRIBUTE)).andReturn(new
 ReflectionContextResolver()).anyTimes();
+        expect(pageContext.getRequest()).andReturn(httpServletRequest);
+        expect(pageContext.getResponse()).andReturn(httpServletResponse);
+        
expect(pageContext.getAttribute(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, 
PageContext.REQUEST_SCOPE)).andReturn(container);
+        
expect(container.getAttributeContext(isA(JspRequest.class))).andReturn(attributeContext);
         expect(attributeContext.getAttribute("name")).andReturn(attribute);
-        expect(container.evaluate(attribute, request)).andReturn(new 
Integer(1));
-        expect(request.getContext("scope")).andReturn(scope);
-        Map<String, Object> toImport = new HashMap<String, Object>();
-        toImport.put("id", new Integer(1));
-        scope.putAll(toImport);
-
-        replay(request, applicationContext, requestScope, container, 
attributeContext, attribute, scope);
+        expect(container.evaluate(isA(Attribute.class), 
isA(JspRequest.class))).andReturn(new Integer(1));
+        pageContext.setAttribute("id", new Integer(1), PageContext.PAGE_SCOPE);
+        replay(jspBody, pageContext, parent, 
+               applicationContext, httpServletRequest, httpServletResponse, 
+               applicationScope, container, attributeContext, attribute);
         tag.setName("name");
-        tag.setScope("scope");
+        tag.setScope("page");
         tag.setId("id");
         tag.setIgnore(false);
-        tag.execute(request);
-        verify(request, applicationContext, requestScope, container, 
attributeContext, attribute, scope);
+        tag.setJspContext(pageContext);
+        tag.setJspBody(jspBody);
+        tag.setParent(parent);
+        tag.doTag();
+        verify(jspBody, pageContext, parent, 
+               applicationContext, httpServletRequest, httpServletResponse, 
+               container, attributeContext, attribute);
     }
 
     /**

Modified: tiles/framework/trunk/tiles-parent/tiles-velocity/pom.xml
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-velocity/pom.xml?rev=1201651&r1=1201650&r2=1201651&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-velocity/pom.xml (original)
+++ tiles/framework/trunk/tiles-parent/tiles-velocity/pom.xml Mon Nov 14 
10:01:43 2011
@@ -46,6 +46,7 @@
                 </goals>
                 <configuration>
                     
<packageName>org.apache.tiles.velocity.template</packageName>
+                    
<velocityRuntime>org.apache.tiles.autotag.velocity.runtime.VelocityAutotagRuntime</velocityRuntime>
                 </configuration>
             </execution>
         </executions>


Reply via email to