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>