update to autotag 1.1

git-svn-id: https://svn.apache.org/repos/asf/tiles/request/trunk@1360333 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 2ee1578..6a43a08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,7 +163,7 @@
             <dependency>
                 <groupId>org.apache.tiles</groupId>
                 <artifactId>tiles-autotag-core-runtime</artifactId>
-                <version>1.0.0</version>
+                <version>1.1-SNAPSHOT</version>
                 <optional>true</optional>
             </dependency>
             <dependency>
diff --git a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
index 9eabac3..6d18903 100644
--- a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
+++ b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
@@ -36,7 +36,7 @@
 /**
  * A Runtime for implementing a Freemarker Template Directive.   
  */
-public class FreemarkerAutotagRuntime implements AutotagRuntime, TemplateDirectiveModel {
+public class FreemarkerAutotagRuntime implements AutotagRuntime<Request>, TemplateDirectiveModel {
 
     private Environment env;
     private TemplateDirectiveBody body;
@@ -65,7 +65,7 @@
     
     /** {@inheritDoc} */
     @Override
-    public Object getParameter(String name, Object defaultValue) {
-        return FreemarkerUtil.getAsObject((TemplateModel)params.get(name), defaultValue);
+    public <T> T getParameter(String name, Class<T> type, T defaultValue) {
+        return FreemarkerUtil.getAsObject((TemplateModel)params.get(name), type, defaultValue);
     }
 }
diff --git a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtil.java b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtil.java
index 881e511..cbb4b02 100644
--- a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtil.java
+++ b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtil.java
@@ -46,11 +46,12 @@
      * model, or null if not specified.
      * @return The unwrapped object.
      */
-    public static Object getAsObject(TemplateModel model, Object defaultValue) {
+    public static <T> T getAsObject(TemplateModel model, Class<T> type, T defaultValue) {
         try {
-            Object retValue = defaultValue;
+            T retValue = defaultValue;
             if (model != null) {
-                Object value = DeepUnwrap.unwrap(model);
+                @SuppressWarnings("unchecked")
+                T value = (T) DeepUnwrap.unwrap(model);
                 if (value != null) {
                     retValue = value;
                 }
diff --git a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntimeTest.java b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntimeTest.java
index 9a93b21..822d295 100644
--- a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntimeTest.java
+++ b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntimeTest.java
@@ -147,10 +147,10 @@
         replay(model, params, body);
         FreemarkerAutotagRuntime runtime = new FreemarkerAutotagRuntime();
         runtime.execute(env, params, new TemplateModel[0], body);
-        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));
+        Object notnullParam = runtime.getParameter("notnullParam", Object.class, null);
+        Object nullParam = runtime.getParameter("nullParam", Object.class, null);
+        int notnullParamDefault = runtime.getParameter("notnullParam", Integer.class, new Integer(24));
+        int nullParamDefault = runtime.getParameter("nullParam", Integer.class, new Integer(24));
         assertEquals(42, notnullParam);
         assertEquals(null, nullParam);
         assertEquals(42, notnullParamDefault);
diff --git a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtilTest.java b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtilTest.java
index 1841b23..c8ab971 100644
--- a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtilTest.java
+++ b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/autotag/FreemarkerUtilTest.java
@@ -62,7 +62,7 @@
         new Environment(template, rootDataModel, out);
 
         replay(model);
-        assertEquals(new Integer(42), FreemarkerUtil.getAsObject(model, new Integer(1)));
+        assertEquals(new Integer(42), FreemarkerUtil.getAsObject(model, Integer.class, new Integer(1)));
         verify(template, rootDataModel, out, model);
     }
 
@@ -81,7 +81,7 @@
         replay(template, rootDataModel, out);
         new Environment(template, rootDataModel, out);
 
-        assertEquals(new Integer(1), FreemarkerUtil.getAsObject(null, new Integer(1)));
+        assertEquals(new Integer(1), FreemarkerUtil.getAsObject(null, Integer.class, new Integer(1)));
         verify(template, rootDataModel, out);
     }
 
@@ -104,7 +104,7 @@
 
         replay(model);
         try {
-            assertEquals(new Integer(42), FreemarkerUtil.getAsObject(model, new Integer(1)));
+            assertEquals(new Integer(42), FreemarkerUtil.getAsObject(model, Integer.class, new Integer(1)));
         } finally {
             verify(template, rootDataModel, out, model);
         }
diff --git a/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java b/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
index 9b72230..7b710f2 100644
--- a/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
+++ b/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
@@ -31,7 +31,7 @@
 /**
  * A Runtime for implementing JSP tag libraries.
  */
-public class JspAutotagRuntime extends SimpleTagSupport implements AutotagRuntime {
+public class JspAutotagRuntime extends SimpleTagSupport implements AutotagRuntime<Request> {
     /** {@inheritDoc} */
     @Override
     public void doTag() {
@@ -55,7 +55,7 @@
 
     /** {@inheritDoc} */
     @Override
-    public Object getParameter(String name, Object defaultValue) {
+    public <T> T getParameter(String name, Class<T> type, T defaultValue) {
         throw new UnsupportedOperationException("the parameters are injected into the tag itself, no need to fetch them");
     }
 }
diff --git a/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntimeTest.java b/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntimeTest.java
index 53baf2c..4972054 100644
--- a/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntimeTest.java
+++ b/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntimeTest.java
@@ -94,7 +94,7 @@
         runtime.setJspContext(jspContext);
         runtime.setParent(parent);
         runtime.doTag();
-        runtime.getParameter("test", null);
+        runtime.getParameter("test", Object.class, null);
         verify(jspBody, jspContext, parent);
     }
 }
diff --git a/tiles-request-velocity/src/main/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntime.java b/tiles-request-velocity/src/main/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntime.java
index 9d7b419..9fafedb 100644
--- a/tiles-request-velocity/src/main/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntime.java
+++ b/tiles-request-velocity/src/main/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntime.java
@@ -40,7 +40,7 @@
 /**
  * A Runtime for implementing Velocity Directives.
  */
-public class VelocityAutotagRuntime extends Directive implements AutotagRuntime {
+public class VelocityAutotagRuntime extends Directive implements AutotagRuntime<Request> {
     private InternalContextAdapter context;
     private Writer                 writer;
     private Node                   node;
@@ -70,12 +70,12 @@
     /** {@inheritDoc} */
     @Override
     @SuppressWarnings("unchecked")
-    public Object getParameter(String name, Object defaultValue) {
+    public <T> T getParameter(String name, Class<T> type, T defaultValue) {
         if (params == null) {
             ASTMap astMap = (ASTMap) node.jjtGetChild(0);
             params = (Map<String, Object>) astMap.value(context);
         }
-        Object result = params.get(name);
+        T result = (T) params.get(name);
         if (result == null) {
             result = defaultValue;
         }
diff --git a/tiles-request-velocity/src/test/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntimeTest.java b/tiles-request-velocity/src/test/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntimeTest.java
index 526c55d..4673fd9 100644
--- a/tiles-request-velocity/src/test/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntimeTest.java
+++ b/tiles-request-velocity/src/test/java/org/apache/tiles/request/velocity/autotag/VelocityAutotagRuntimeTest.java
@@ -97,10 +97,10 @@
         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));
+        Object notnullParam = runtime.getParameter("notnullParam", Object.class, null);
+        Object nullParam = runtime.getParameter("nullParam", Object.class, null);
+        int notnullParamDefault = runtime.getParameter("notnullParam", Integer.class, new Integer(24));
+        int nullParamDefault = runtime.getParameter("nullParam", Integer.class, new Integer(24));
         assertEquals(42, notnullParam);
         assertEquals(null, nullParam);
         assertEquals(42, notnullParamDefault);