From 0a23cd4ec587135f51e07d1e1fefb80d17f86132 Mon Sep 17 00:00:00 2001 From: Rainer Hermanns Date: Sat, 21 Jun 2008 09:40:34 +0000 Subject: [PATCH] WW-2537 Fix generics in all codebase Starting with Java5 enhancements in S2. This patch applies required changes to S2 related to the "generified xwork" XWork Java5 enhancements o added generics where possible o use parameterizes Collection classes where possible o converted for to for-each loops o optimized imports o updated tests o aligned parameter types with Struts2 o fixed some minor bugs git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@670170 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/java/example/ConfigTest.java | 2 +- .../struts2/components/ActionComponent.java | 2 +- .../apache/struts2/components/FieldError.java | 4 +- .../apache/struts2/dispatcher/SessionMap.java | 38 +++++++++---------- .../struts2/interceptor/ParameterAware.java | 2 +- .../struts2/util/TextProviderHelper.java | 7 ++-- .../apache/struts2/views/jsp/TagUtils.java | 4 +- core/src/site/resources/tags/ajax/a.html | 8 +++- .../resources/tags/ajax/autocompleter.html | 8 +++- .../resources/tags/ajax/datetimepicker.html | 8 +++- core/src/site/resources/tags/ajax/div.html | 8 +++- .../site/resources/tags/ajax/tabbedpanel.html | 8 +++- .../site/resources/tags/ajax/textarea.html | 8 +++- core/src/site/resources/tags/ajax/tree.html | 8 +++- .../FileUploadInterceptorTest.java | 5 +-- .../ServletConfigInterceptorTest.java | 6 +-- .../struts2/views/jsp/AbstractTagTest.java | 2 +- .../views/jsp/ui/FieldErrorTagTest.java | 4 +- .../dojo/views/jsp/ui/AbstractTagTest.java | 11 +++--- .../struts2/validators/DWRValidator.java | 6 +-- 20 files changed, 95 insertions(+), 54 deletions(-) diff --git a/apps/blank/src/test/java/example/ConfigTest.java b/apps/blank/src/test/java/example/ConfigTest.java index d70aa4e7d..b39fe5f17 100644 --- a/apps/blank/src/test/java/example/ConfigTest.java +++ b/apps/blank/src/test/java/example/ConfigTest.java @@ -44,7 +44,7 @@ public class ConfigTest extends StrutsTestCase { ActionSupport.INPUT.equals(result)); } - protected Map assertFieldErrors(ActionSupport action) throws Exception { + protected Map> assertFieldErrors(ActionSupport action) throws Exception { assertTrue(action.hasFieldErrors()); return action.getFieldErrors(); } diff --git a/core/src/main/java/org/apache/struts2/components/ActionComponent.java b/core/src/main/java/org/apache/struts2/components/ActionComponent.java index 3edaa3104..daee128ce 100644 --- a/core/src/main/java/org/apache/struts2/components/ActionComponent.java +++ b/core/src/main/java/org/apache/struts2/components/ActionComponent.java @@ -191,7 +191,7 @@ public class ActionComponent extends ContextBean { Map application = ctx.getApplication(); Dispatcher du = Dispatcher.getInstance(); - Map extraContext = du.createContextMap(new RequestMap(req), + Map extraContext = du.createContextMap(new RequestMap(req), newParams, session, application, diff --git a/core/src/main/java/org/apache/struts2/components/FieldError.java b/core/src/main/java/org/apache/struts2/components/FieldError.java index 075b896ed..d8062538d 100644 --- a/core/src/main/java/org/apache/struts2/components/FieldError.java +++ b/core/src/main/java/org/apache/struts2/components/FieldError.java @@ -87,7 +87,7 @@ import com.opensymphony.xwork2.util.ValueStack; "or partial depending on param tag nested)if they exists") public class FieldError extends UIBean implements UnnamedParametric { - private List errorFieldNames = new ArrayList(); + private List errorFieldNames = new ArrayList(); public FieldError(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -105,7 +105,7 @@ public class FieldError extends UIBean implements UnnamedParametric { } } - public List getFieldErrorFieldNames() { + public List getFieldErrorFieldNames() { return errorFieldNames; } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java b/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java index 1b5a622c7..e9ef51380 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java @@ -39,12 +39,12 @@ import javax.servlet.http.HttpSession; * Note, this will occur lazily - only when the entry set is asked for. * */ -public class SessionMap extends AbstractMap implements Serializable { +public class SessionMap extends AbstractMap implements Serializable { private static final long serialVersionUID = 4678843241638046854L; protected HttpSession session; - protected Set entries; + protected Set> entries; protected HttpServletRequest request; @@ -101,23 +101,23 @@ public class SessionMap extends AbstractMap implements Serializable { * * @return a Set of attributes from the http session. */ - public Set entrySet() { + public Set> entrySet() { if (session == null) { - return Collections.EMPTY_SET; + return Collections.emptySet(); } synchronized (session) { if (entries == null) { - entries = new HashSet(); + entries = new HashSet>(); - Enumeration enumeration = session.getAttributeNames(); + Enumeration 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() { public boolean equals(Object obj) { - Map.Entry entry = (Map.Entry) obj; + Map.Entry entry = (Map.Entry) obj; return ((key == null) ? (entry.getKey() == null) : key.equals(entry.getKey())) && ((value == null) ? (entry.getValue() == null) : value.equals(entry.getValue())); } @@ -126,18 +126,18 @@ public class SessionMap extends AbstractMap implements Serializable { 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 @@ public class SessionMap extends AbstractMap implements Serializable { * @param key the name of the session attribute. * @return the session attribute or null 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 @@ public class SessionMap extends AbstractMap implements Serializable { * @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 @@ public class SessionMap extends AbstractMap implements Serializable { * @param key the name of the attribute to remove. * @return the value that was removed or null 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 @@ public class SessionMap extends AbstractMap implements Serializable { synchronized (session) { entries = null; - Object value = get(key); + V value = get(key); session.removeAttribute(key.toString()); return value; diff --git a/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java b/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java index 81bbbb9a5..7c64051e7 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java @@ -42,5 +42,5 @@ public interface ParameterAware { * * @param parameters a Map of parameters (name/value Strings). */ - public void setParameters(Map parameters); + public void setParameters(Map parameters); } diff --git a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java index 167a5b7b5..851638b0e 100644 --- a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java +++ b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java @@ -29,6 +29,7 @@ import com.opensymphony.xwork2.TextProvider; import java.util.Iterator; import java.util.List; import java.util.LinkedList; +import java.util.Collections; /** * Helper methods to access text from TextProviders @@ -50,7 +51,7 @@ public class TextProviderHelper { * * @return the message if found, otherwise the defaultMessage */ - public static String getText(String key, String defaultMessage, List args, ValueStack stack) { + public static String getText(String key, String defaultMessage, List args, ValueStack stack) { String msg = null; TextProvider tp = null; @@ -101,7 +102,7 @@ public class TextProviderHelper { * * @return the message if found, otherwise the defaultMessage */ - public static String getText(String key, String defaultMessage,ValueStack stack) { - return getText(key, defaultMessage, new LinkedList(), stack); + public static String getText(String key, String defaultMessage, ValueStack stack) { + return getText(key, defaultMessage, Collections.emptyList(), stack); } } diff --git a/core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java b/core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java index 418011b8c..a4a2848d2 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/TagUtils.java @@ -62,7 +62,7 @@ public class TagUtils { "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 extraContext = du.createContextMap(new RequestMap(req), req.getParameterMap(), new SessionMap(req), new ApplicationMap(pageContext.getServletContext()), @@ -77,7 +77,7 @@ public class TagUtils { 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 context = stack.getContext(); context.put(ServletActionContext.PAGE_CONTEXT, pageContext); AttributeMap attrMap = new AttributeMap(context); diff --git a/core/src/site/resources/tags/ajax/a.html b/core/src/site/resources/tags/ajax/a.html index 33160fa62..12c765d2c 100644 --- a/core/src/site/resources/tags/ajax/a.html +++ b/core/src/site/resources/tags/ajax/a.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

+ + + + + + @@ -209,7 +215,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/autocompleter.html b/core/src/site/resources/tags/ajax/autocompleter.html index fd6324ee6..95e2d5ff8 100644 --- a/core/src/site/resources/tags/ajax/autocompleter.html +++ b/core/src/site/resources/tags/ajax/autocompleter.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -257,7 +263,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/datetimepicker.html b/core/src/site/resources/tags/ajax/datetimepicker.html index b11265ae9..630b8382b 100644 --- a/core/src/site/resources/tags/ajax/datetimepicker.html +++ b/core/src/site/resources/tags/ajax/datetimepicker.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -161,7 +167,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/div.html b/core/src/site/resources/tags/ajax/div.html index 57065a8b9..35938c943 100644 --- a/core/src/site/resources/tags/ajax/div.html +++ b/core/src/site/resources/tags/ajax/div.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -225,7 +231,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/tabbedpanel.html b/core/src/site/resources/tags/ajax/tabbedpanel.html index c4ce00f4e..0fb323bd6 100644 --- a/core/src/site/resources/tags/ajax/tabbedpanel.html +++ b/core/src/site/resources/tags/ajax/tabbedpanel.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -145,7 +151,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/textarea.html b/core/src/site/resources/tags/ajax/textarea.html index 37e956ec0..42456d6c8 100644 --- a/core/src/site/resources/tags/ajax/textarea.html +++ b/core/src/site/resources/tags/ajax/textarea.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -113,7 +119,7 @@ Please do not edit it directly. - + diff --git a/core/src/site/resources/tags/ajax/tree.html b/core/src/site/resources/tags/ajax/tree.html index bcfff173b..8ce580294 100644 --- a/core/src/site/resources/tags/ajax/tree.html +++ b/core/src/site/resources/tags/ajax/tree.html @@ -19,6 +19,12 @@ Please do not edit it directly.

Attributes

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator
+ + + + + + @@ -233,7 +239,7 @@ Please do not edit it directly. - + diff --git a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java index 9666d8088..695e28fff 100644 --- a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java @@ -205,7 +205,7 @@ public class FileUploadInterceptorTest extends StrutsTestCase { mai.setAction(action); mai.setResultCode("success"); mai.setInvocationContext(ActionContext.getContext()); - Map param = new HashMap(); + Map param = new HashMap(); ActionContext.getContext().setParameters(param); ActionContext.getContext().put(ServletActionContext.HTTP_REQUEST, createMultipartRequest((HttpServletRequest) req, 2000)); @@ -214,7 +214,6 @@ public class FileUploadInterceptorTest extends StrutsTestCase { 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 @@ public class FileUploadInterceptorTest extends StrutsTestCase { mai.setAction(action); mai.setResultCode("success"); mai.setInvocationContext(ActionContext.getContext()); - Map param = new HashMap(); + Map param = new HashMap(); ActionContext.getContext().setParameters(param); ActionContext.getContext().put(ServletActionContext.HTTP_REQUEST, createMultipartRequest(req, 2000)); diff --git a/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java index 25faba84e..202bb9fa6 100644 --- a/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java @@ -88,7 +88,7 @@ public class ServletConfigInterceptorTest extends StrutsTestCase { MockActionInvocation mai = createActionInvocation(mock); - Map param = new HashMap(); + Map param = new HashMap(); mai.getInvocationContext().setParameters(param); mock.setParameters(param); @@ -105,7 +105,7 @@ public class ServletConfigInterceptorTest extends StrutsTestCase { MockActionInvocation mai = createActionInvocation(mock); - Map session = new HashMap(); + Map session = new HashMap(); mai.getInvocationContext().setSession(session); mock.setSession(session); @@ -122,7 +122,7 @@ public class ServletConfigInterceptorTest extends StrutsTestCase { MockActionInvocation mai = createActionInvocation(mock); - Map app = new HashMap(); + Map app = new HashMap(); mai.getInvocationContext().setApplication(app); mock.setApplication(app); diff --git a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java index aa2be6b91..87784f89e 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java @@ -113,7 +113,7 @@ public abstract class AbstractTagTest extends StrutsTestCase { Dispatcher.setInstance(du); du.setConfigurationManager(configurationManager); session = new SessionMap(request); - Map extraContext = du.createContextMap(new RequestMap(request), + Map extraContext = du.createContextMap(new RequestMap(request), request.getParameterMap(), session, new ApplicationMap(pageContext.getServletContext()), diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java index f4e55e8ce..d50be7803 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/FieldErrorTagTest.java @@ -216,7 +216,7 @@ public class FieldErrorTagTest extends AbstractUITagTest { this.returnNullForFieldErrors = returnNullForFieldErrors; } - public Map getFieldErrors() { + public Map> getFieldErrors() { if (haveFieldErrors) { List err1 = new ArrayList(); err1.add("field error message number 1"); @@ -234,7 +234,7 @@ public class FieldErrorTagTest extends AbstractUITagTest { return null; } else { - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } } diff --git a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java index 4aaf72e68..e20722f60 100644 --- a/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java +++ b/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AbstractTagTest.java @@ -43,7 +43,6 @@ import com.opensymphony.xwork2.Action; 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 @@ import com.opensymphony.xwork2.util.ValueStackFactory; */ public abstract class AbstractTagTest extends StrutsTestCase { protected Action action; - protected Map context; - protected Map session; + protected Map context; + protected Map session; protected ValueStack stack; /** @@ -110,12 +109,12 @@ public abstract class AbstractTagTest extends StrutsTestCase { pageContext.setServletContext(servletContext); mockContainer = new Mock(Container.class); - Dispatcher du = new Dispatcher(pageContext.getServletContext(), new HashMap()); + Dispatcher du = new Dispatcher(pageContext.getServletContext(), new HashMap()); du.init(); Dispatcher.setInstance(du); du.setConfigurationManager(configurationManager); - session = new SessionMap(request); - Map extraContext = du.createContextMap(new RequestMap(request), + session = new SessionMap(request); + Map extraContext = du.createContextMap(new RequestMap(request), request.getParameterMap(), session, new ApplicationMap(pageContext.getServletContext()), diff --git a/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java b/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java index 0c35c3f5a..87b3398d2 100644 --- a/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java +++ b/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java @@ -75,7 +75,7 @@ public class DWRValidator { ServletContext servletContext = WebContextFactory.get().getServletContext(); HttpServletResponse res = WebContextFactory.get().getHttpServletResponse(); - Map requestParams = new HashMap(req.getParameterMap()); + Map requestParams = new HashMap(req.getParameterMap()); if (params != null) { requestParams.putAll(params); } else { @@ -85,7 +85,7 @@ public class DWRValidator { Map session = new SessionMap(req); Map application = new ApplicationMap(servletContext); Dispatcher du = Dispatcher.getInstance(); - HashMap ctx = du.createContextMap(requestMap, + HashMap ctx = du.createContextMap(requestMap, params, session, application, @@ -122,7 +122,7 @@ public class DWRValidator { public static class ValidatorActionInvocation extends DefaultActionInvocation { private static final long serialVersionUID = -7645433725470191275L; - protected ValidatorActionInvocation(Map extraContext, boolean pushAction) throws Exception { + protected ValidatorActionInvocation(Map extraContext, boolean pushAction) throws Exception { super(extraContext, pushAction); }

Dynamic Attributes Allowed:

false
 

Name

Required

false StringLabel expression used for rendering a element specific labelLabel expression used for rendering an element specific label
labelSeparator