Index: core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java
===================================================================
--- core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java	Tue Jun 17 13:26:43 CEST 2008
@@ -62,7 +62,7 @@
                         "has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag.");
             }
             stack = du.getContainer().getInstance(ValueStackFactory.class).createValueStack();
-            Map extraContext = du.createContextMap(new RequestMap(req),
+            Map<String, Object> extraContext = du.createContextMap(new RequestMap(req),
                     req.getParameterMap(),
                     new SessionMap(req),
                     new ApplicationMap(pageContext.getServletContext()),
@@ -77,7 +77,7 @@
             ActionContext.setContext(new ActionContext(stack.getContext()));
         } else {
             // let's make sure that the current page context is in the action context
-            Map context = stack.getContext();
+            Map<String, Object> context = stack.getContext();
             context.put(ServletActionContext.PAGE_CONTEXT, pageContext);
 
             AttributeMap attrMap = new AttributeMap(context);
Index: core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java
===================================================================
--- core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java	Tue Jun 17 21:04:07 CEST 2008
@@ -42,5 +42,5 @@
      *
      * @param parameters a Map of parameters (name/value Strings).
      */
-    public void setParameters(Map<String,String[]> parameters);
+    public void setParameters(Map<String, Object> parameters);
 }
Index: core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
===================================================================
--- core/src/main/java/org/apache/struts2/util/TextProviderHelper.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/util/TextProviderHelper.java	Tue Jun 17 12:17:37 CEST 2008
@@ -50,7 +50,7 @@
        *
      * @return the message if found, otherwise the defaultMessage
      */
-    public static String getText(String key, String defaultMessage, List<String> args, ValueStack stack) {
+    public static String getText(String key, String defaultMessage, List<Object> args, ValueStack stack) {
         String msg = null;
         TextProvider tp = null;
 
@@ -102,6 +102,6 @@
      * @return the message if found, otherwise the defaultMessage
      */
     public static String getText(String key, String defaultMessage,ValueStack stack) {
-        return getText(key, defaultMessage, new LinkedList<String>(), stack);
+        return getText(key, defaultMessage, new LinkedList<Object>(), stack);
     }
 }
Index: core/src/main/resources/template/simple/checkboxlist.ftl
===================================================================
--- core/src/main/resources/template/simple/checkboxlist.ftl	(revision 668218)
+++ core/src/main/resources/template/simple/checkboxlist.ftl	Mon Jun 16 18:28:12 CEST 2008
@@ -34,11 +34,6 @@
         <#else>
             <#assign itemValue = stack.findString('top')/>
         </#if>
-        <#if parameters.label?exists> 
-            <#assign itemLabel = stack.findString(parameters.label)/> 
-        <#else> 
-            <#assign itemLabel = itemValue/> 
-        </#if>
 <#assign itemKeyStr=itemKey.toString() />
 <input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/>
         <#if tag.contains(parameters.nameValue, itemKey)>
@@ -53,7 +48,7 @@
         <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
         <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
 />
-<label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemLabel?html}</label>
+<label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label>
     </@s.iterator>
 <#else>
   &nbsp;
Index: core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java
===================================================================
--- core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java	Tue Jun 17 13:41:11 CEST 2008
@@ -39,12 +39,12 @@
  * Note, this will occur lazily - only when the entry set is asked for.
  *
  */
-public class SessionMap extends AbstractMap implements Serializable {
+public class SessionMap<K, V> extends AbstractMap<K,V> implements Serializable {
 
     private static final long serialVersionUID = 4678843241638046854L;
 
     protected HttpSession session;
-    protected Set<Object> entries;
+    protected Set<Map.Entry<K,V>> entries;
     protected HttpServletRequest request;
 
 
@@ -101,23 +101,23 @@
      *
      * @return a Set of attributes from the http session.
      */
-    public Set entrySet() {
+    public Set<java.util.Map.Entry<K,V>> entrySet() {
         if (session == null) {
-            return Collections.EMPTY_SET;
+            return Collections.emptySet();
         }
 
         synchronized (session) {
             if (entries == null) {
-                entries = new HashSet<Object>();
+                entries = new HashSet<Map.Entry<K,V>>();
 
-                Enumeration enumeration = session.getAttributeNames();
+                Enumeration<? extends Object> enumeration = session.getAttributeNames();
 
                 while (enumeration.hasMoreElements()) {
                     final String key = enumeration.nextElement().toString();
                     final Object value = session.getAttribute(key);
-                    entries.add(new Map.Entry() {
+                    entries.add(new Map.Entry<K,V>() {
                         public boolean equals(Object obj) {
-                            Map.Entry entry = (Map.Entry) obj;
+                            Map.Entry<K, V> entry = (Map.Entry<K, V>) obj;
 
                             return ((key == null) ? (entry.getKey() == null) : key.equals(entry.getKey())) && ((value == null) ? (entry.getValue() == null) : value.equals(entry.getValue()));
                         }
@@ -126,18 +126,18 @@
                             return ((key == null) ? 0 : key.hashCode()) ^ ((value == null) ? 0 : value.hashCode());
                         }
 
-                        public Object getKey() {
-                            return key;
+                        public K getKey() {
+                            return (K) key;
                         }
 
-                        public Object getValue() {
-                            return value;
+                        public V getValue() {
+                            return (V) value;
                         }
 
-                        public Object setValue(Object obj) {
+                        public V setValue(Object obj) {
                             session.setAttribute(key, obj);
 
-                            return value;
+                            return (V) value;
                         }
                     });
                 }
@@ -153,13 +153,13 @@
      * @param key the name of the session attribute.
      * @return the session attribute or <tt>null</tt> if it doesn't exist.
      */
-    public Object get(Object key) {
+    public V get(Object key) {
         if (session == null) {
             return null;
         }
 
         synchronized (session) {
-            return session.getAttribute(key.toString());
+            return (V) session.getAttribute(key.toString());
         }
     }
 
@@ -170,7 +170,7 @@
      * @param value the value to set.
      * @return the object that was just set.
      */
-    public Object put(Object key, Object value) {
+    public V put(K key, V value) {
         synchronized (this) {
             if (session == null) {
                 session = request.getSession(true);
@@ -191,7 +191,7 @@
      * @param key the name of the attribute to remove.
      * @return the value that was removed or <tt>null</tt> if the value was not found (and hence, not removed).
      */
-    public Object remove(Object key) {
+    public V remove(Object key) {
         if (session == null) {
             return null;
         }
@@ -199,7 +199,7 @@
         synchronized (session) {
             entries = null;
 
-            Object value = get(key);
+            V value = get(key);
             session.removeAttribute(key.toString());
 
             return value;
Index: core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java
===================================================================
--- core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java	(revision 668218)
+++ core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java	Tue Jun 17 13:22:53 CEST 2008
@@ -216,7 +216,7 @@
             this.returnNullForFieldErrors = returnNullForFieldErrors;
         }
 
-        public Map getFieldErrors() {
+        public Map<String, List<String>> getFieldErrors() {
             if (haveFieldErrors) {
                 List err1 = new ArrayList();
                 err1.add("field error message number 1");
@@ -234,7 +234,7 @@
                 return null;
             }
             else {
-                return Collections.EMPTY_MAP;
+                return Collections.emptyMap();
             }
         }
 
Index: core/src/main/java/org/apache/struts2/components/FieldError.java
===================================================================
--- core/src/main/java/org/apache/struts2/components/FieldError.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/components/FieldError.java	Tue Jun 17 13:23:39 CEST 2008
@@ -87,7 +87,7 @@
                 "or partial depending on param tag nested)if they exists")
 public class FieldError extends UIBean implements UnnamedParametric {
 
-    private List errorFieldNames = new ArrayList();
+    private List<String> errorFieldNames = new ArrayList<String>();
 
     public FieldError(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
         super(stack, request, response);
@@ -105,7 +105,7 @@
         }
     }
 
-    public List getFieldErrorFieldNames() {
+    public List<String> getFieldErrorFieldNames() {
         return errorFieldNames;
     }
 }
Index: core/src/main/java/org/apache/struts2/components/ActionComponent.java
===================================================================
--- core/src/main/java/org/apache/struts2/components/ActionComponent.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/components/ActionComponent.java	Tue Jun 17 13:26:14 CEST 2008
@@ -190,7 +190,7 @@
         Map application = ctx.getApplication();
 
         Dispatcher du = Dispatcher.getInstance();
-        Map extraContext = du.createContextMap(new RequestMap(req),
+        Map<String, Object> extraContext = du.createContextMap(new RequestMap(req),
                 newParams,
                 session,
                 application,
Index: core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java
===================================================================
--- core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java	(revision 668218)
+++ core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java	Tue Jun 17 21:09:14 CEST 2008
@@ -88,7 +88,7 @@
 
         MockActionInvocation mai = createActionInvocation(mock);
 
-        Map param = new HashMap();
+        Map<String, Object> param = new HashMap<String, Object>();
         mai.getInvocationContext().setParameters(param);
 
         mock.setParameters(param);
@@ -105,7 +105,7 @@
 
         MockActionInvocation mai = createActionInvocation(mock);
 
-        Map session = new HashMap();
+        Map<String, Object> session = new HashMap<String, Object>();
         mai.getInvocationContext().setSession(session);
 
         mock.setSession(session);
@@ -122,7 +122,7 @@
 
         MockActionInvocation mai = createActionInvocation(mock);
 
-        Map app = new HashMap();
+        Map<String, Object> app = new HashMap<String, Object>();
         mai.getInvocationContext().setApplication(app);
 
         mock.setApplication(app);
Index: apps/blank/src/test/java/example/ConfigTest.java
===================================================================
--- apps/blank/src/test/java/example/ConfigTest.java	(revision 668218)
+++ apps/blank/src/test/java/example/ConfigTest.java	Tue Jun 17 13:23:56 CEST 2008
@@ -44,7 +44,7 @@
                 ActionSupport.INPUT.equals(result));
     }
 
-    protected Map assertFieldErrors(ActionSupport action) throws Exception {
+    protected Map<String, List<String>> assertFieldErrors(ActionSupport action) throws Exception {
         assertTrue(action.hasFieldErrors());
         return action.getFieldErrors();
     }
Index: core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
===================================================================
--- core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java	(revision 668218)
+++ core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java	Tue Jun 17 21:03:37 CEST 2008
@@ -244,8 +244,9 @@
                             "provide an action-specific or global result named '" + WAIT +
                             "'! This requires FreeMarker support and won't work if you don't have it installed");
                     // no wait result? hmm -- let's try to do dynamically put it in for you!
+                    Object obj = "/org/apache/struts2/interceptor/wait.ftl";
                     ResultConfig rc = new ResultConfig.Builder(WAIT, "org.apache.struts2.views.freemarker.FreemarkerResult")
-                            .addParams(Collections.singletonMap("location", "/org/apache/struts2/interceptor/wait.ftl"))
+                            .addParams(Collections.singletonMap("location", obj))
                             .build();
                     results.put(WAIT, rc);
                 }
Index: core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
===================================================================
--- core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java	(revision 668218)
+++ core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java	Tue Jun 17 21:06:02 CEST 2008
@@ -205,7 +205,7 @@
         mai.setAction(action);
         mai.setResultCode("success");
         mai.setInvocationContext(ActionContext.getContext());
-        Map<String, Object[]> param = new HashMap<String, Object[]>();
+        Map<String, Object> param = new HashMap<String, Object>();
         ActionContext.getContext().setParameters(param);
         ActionContext.getContext().put(ServletActionContext.HTTP_REQUEST, createMultipartRequest((HttpServletRequest) req, 2000));
 
@@ -214,7 +214,6 @@
         assertTrue(!action.hasErrors());
 
         assertTrue(param.size() == 3);
-        System.err.println("param.get(\"file\"): " + param.get("file").getClass());
         File[] files = (File[]) param.get("file");
         String[] fileContentTypes = (String[]) param.get("fileContentType");
         String[] fileRealFilenames = (String[]) param.get("fileFileName");
@@ -266,7 +265,7 @@
         mai.setAction(action);
         mai.setResultCode("success");
         mai.setInvocationContext(ActionContext.getContext());
-        Map<String, Object[]> param = new HashMap<String, Object[]>();
+        Map<String, Object> param = new HashMap<String, Object>();
         ActionContext.getContext().setParameters(param);
         ActionContext.getContext().put(ServletActionContext.HTTP_REQUEST, createMultipartRequest(req, 2000));
 
Index: core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
===================================================================
--- core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java	(revision 668218)
+++ core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java	Tue Jun 17 13:26:25 CEST 2008
@@ -113,7 +113,7 @@
         Dispatcher.setInstance(du);
         du.setConfigurationManager(configurationManager);
         session = new SessionMap(request);
-        Map extraContext = du.createContextMap(new RequestMap(request),
+        Map<String, Object> extraContext = du.createContextMap(new RequestMap(request),
                 request.getParameterMap(),
                 session,
                 new ApplicationMap(pageContext.getServletContext()),
Index: plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java
===================================================================
--- plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java	(revision 668218)
+++ plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java	Tue Jun 17 13:27:48 CEST 2008
@@ -43,7 +43,6 @@
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.ValueStackFactory;
 
 
 /**
@@ -52,8 +51,8 @@
  */
 public abstract class AbstractTagTest extends StrutsTestCase {
     protected Action action;
-    protected Map context;
-    protected Map session;
+    protected Map<String, Object> context;
+    protected Map<String, Object> session;
     protected ValueStack stack;
 
     /**
@@ -110,12 +109,12 @@
         pageContext.setServletContext(servletContext);
 
         mockContainer = new Mock(Container.class);
-        Dispatcher du = new Dispatcher(pageContext.getServletContext(), new HashMap());
+        Dispatcher du = new Dispatcher(pageContext.getServletContext(), new HashMap<String, String>());
         du.init();
         Dispatcher.setInstance(du);
         du.setConfigurationManager(configurationManager);
-        session = new SessionMap(request);
-        Map extraContext = du.createContextMap(new RequestMap(request),
+        session = new SessionMap<String, Object>(request);
+        Map<String, Object> extraContext = du.createContextMap(new RequestMap(request),
                 request.getParameterMap(),
                 session,
                 new ApplicationMap(pageContext.getServletContext()),
Index: core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java
===================================================================
--- core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java	(revision 668218)
+++ core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java	Mon Jun 16 17:30:28 CEST 2008
@@ -154,7 +154,7 @@
         tag.setName("testActionTagAction");
         tag.setExecuteResult(false);
         tag.setIgnoreContextParams(false);
-        ActionContext.getContext().getParameters().put("user", "Santa Claus");
+        ActionContext.getContext().getParameters().put("user", new String[]{"Santa Claus"});
 
         tag.doStartTag();
 
@@ -176,7 +176,7 @@
         tag.setName("testActionTagAction");
         tag.setExecuteResult(false);
         tag.setIgnoreContextParams(true);
-        ActionContext.getContext().getParameters().put("user", "Santa Claus");
+        ActionContext.getContext().getParameters().put("user", new String[]{"Santa Claus"});
 
         tag.doStartTag();
 
Index: plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java
===================================================================
--- plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java	(revision 668218)
+++ plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java	Tue Jun 17 13:25:14 CEST 2008
@@ -75,7 +75,7 @@
         ServletContext servletContext = WebContextFactory.get().getServletContext();
         HttpServletResponse res = WebContextFactory.get().getHttpServletResponse();
 
-        Map requestParams = new HashMap(req.getParameterMap());
+        Map<String, Object[]> requestParams = new HashMap<String, Object[]>(req.getParameterMap());
         if (params != null) {
             requestParams.putAll(params);
         } else {
@@ -85,7 +85,7 @@
         Map session = new SessionMap(req);
         Map application = new ApplicationMap(servletContext);
         Dispatcher du = Dispatcher.getInstance();
-        HashMap ctx = du.createContextMap(requestMap,
+        HashMap<String, Object> ctx = du.createContextMap(requestMap,
                 params,
                 session,
                 application,
@@ -122,7 +122,7 @@
     public static class ValidatorActionInvocation extends DefaultActionInvocation {
         private static final long serialVersionUID = -7645433725470191275L;
 
-        protected ValidatorActionInvocation(Map extraContext, boolean pushAction) throws Exception {
+        protected ValidatorActionInvocation(Map<String, Object> extraContext, boolean pushAction) throws Exception {
             super(extraContext, pushAction);
         }
 
