You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/10/04 09:50:28 UTC
[tomcat] 02/02: Use generics and remove a couple of casts
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit d2726474ab7832962d355174f070de347204b61b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Oct 3 22:04:32 2019 +0100
Use generics and remove a couple of casts
---
java/javax/el/Util.java | 54 ++++++++++++++++++++++++-------------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/java/javax/el/Util.java b/java/javax/el/Util.java
index f0a9f6f..0bbf0c2 100644
--- a/java/javax/el/Util.java
+++ b/java/javax/el/Util.java
@@ -212,11 +212,11 @@ class Util {
Method[] methods = clazz.getMethods();
- List<Wrapper> wrappers = Wrapper.wrap(methods, methodName);
+ List<Wrapper<Method>> wrappers = Wrapper.wrap(methods, methodName);
- Wrapper result = findWrapper(clazz, wrappers, methodName, paramTypes, paramValues);
+ Wrapper<Method> result = findWrapper(clazz, wrappers, methodName, paramTypes, paramValues);
- return getMethod(clazz, (Method) result.unWrap());
+ return getMethod(clazz, result.unWrap());
}
/*
@@ -224,14 +224,14 @@ class Util {
* making changes keep the code in sync.
*/
@SuppressWarnings("null")
- private static Wrapper findWrapper(Class<?> clazz, List<Wrapper> wrappers,
+ private static <T> Wrapper<T> findWrapper(Class<?> clazz, List<Wrapper<T>> wrappers,
String name, Class<?>[] paramTypes, Object[] paramValues) {
- Map<Wrapper,MatchResult> candidates = new HashMap<>();
+ Map<Wrapper<T>,MatchResult> candidates = new HashMap<>();
int paramCount = paramTypes.length;
- for (Wrapper w : wrappers) {
+ for (Wrapper<T> w : wrappers) {
Class<?>[] mParamTypes = w.getParameterTypes();
int mParamCount;
if (mParamTypes == null) {
@@ -336,9 +336,9 @@ class Util {
// Look for the method that has the highest number of parameters where
// the type matches exactly
MatchResult bestMatch = new MatchResult(0, 0, 0, false);
- Wrapper match = null;
+ Wrapper<T> match = null;
boolean multiple = false;
- for (Map.Entry<Wrapper, MatchResult> entry : candidates.entrySet()) {
+ for (Map.Entry<Wrapper<T>, MatchResult> entry : candidates.entrySet()) {
int cmp = entry.getValue().compareTo(bestMatch);
if (cmp > 0 || match == null) {
bestMatch = entry.getValue();
@@ -400,10 +400,10 @@ class Util {
* This method duplicates code in org.apache.el.util.ReflectionUtil. When
* making changes keep the code in sync.
*/
- private static Wrapper resolveAmbiguousWrapper(Set<Wrapper> candidates,
+ private static <T> Wrapper<T> resolveAmbiguousWrapper(Set<Wrapper<T>> candidates,
Class<?>[] paramTypes) {
// Identify which parameter isn't an exact match
- Wrapper w = candidates.iterator().next();
+ Wrapper<T> w = candidates.iterator().next();
int nonMatchIndex = 0;
Class<?> nonMatchClass = null;
@@ -421,7 +421,7 @@ class Util {
return null;
}
- for (Wrapper c : candidates) {
+ for (Wrapper<T> c : candidates) {
if (c.getParameterTypes()[nonMatchIndex] ==
paramTypes[nonMatchIndex]) {
// Methods have different non-matching parameters
@@ -433,7 +433,7 @@ class Util {
// Can't be null
Class<?> superClass = nonMatchClass.getSuperclass();
while (superClass != null) {
- for (Wrapper c : candidates) {
+ for (Wrapper<T> c : candidates) {
if (c.getParameterTypes()[nonMatchIndex].equals(superClass)) {
// Found a match
return c;
@@ -443,9 +443,9 @@ class Util {
}
// Treat instances of Number as a special case
- Wrapper match = null;
+ Wrapper<T> match = null;
if (Number.class.isAssignableFrom(nonMatchClass)) {
- for (Wrapper c : candidates) {
+ for (Wrapper<T> c : candidates) {
Class<?> candidateType = c.getParameterTypes()[nonMatchIndex];
if (Number.class.isAssignableFrom(candidateType) ||
candidateType.isPrimitive()) {
@@ -589,11 +589,11 @@ class Util {
Constructor<?>[] constructors = clazz.getConstructors();
- List<Wrapper> wrappers = Wrapper.wrap(constructors);
+ List<Wrapper<Constructor<?>>> wrappers = Wrapper.wrap(constructors);
- Wrapper wrapper = findWrapper(clazz, wrappers, methodName, paramTypes, paramValues);
+ Wrapper<Constructor<?>> wrapper = findWrapper(clazz, wrappers, methodName, paramTypes, paramValues);
- Constructor<?> constructor = getConstructor(clazz, (Constructor<?>) wrapper.unWrap());
+ Constructor<?> constructor = getConstructor(clazz, wrapper.unWrap());
if (constructor == null) {
throw new MethodNotFoundException(message(
null, "util.method.notfound", clazz, methodName,
@@ -665,10 +665,10 @@ class Util {
}
- private abstract static class Wrapper {
+ private abstract static class Wrapper<T> {
- public static List<Wrapper> wrap(Method[] methods, String name) {
- List<Wrapper> result = new ArrayList<>();
+ public static List<Wrapper<Method>> wrap(Method[] methods, String name) {
+ List<Wrapper<Method>> result = new ArrayList<>();
for (Method method : methods) {
if (method.getName().equals(name)) {
result.add(new MethodWrapper(method));
@@ -677,22 +677,22 @@ class Util {
return result;
}
- public static List<Wrapper> wrap(Constructor<?>[] constructors) {
- List<Wrapper> result = new ArrayList<>();
+ public static List<Wrapper<Constructor<?>>> wrap(Constructor<?>[] constructors) {
+ List<Wrapper<Constructor<?>>> result = new ArrayList<>();
for (Constructor<?> constructor : constructors) {
result.add(new ConstructorWrapper(constructor));
}
return result;
}
- public abstract Object unWrap();
+ public abstract T unWrap();
public abstract Class<?>[] getParameterTypes();
public abstract boolean isVarArgs();
public abstract boolean isBridge();
}
- private static class MethodWrapper extends Wrapper {
+ private static class MethodWrapper extends Wrapper<Method> {
private final Method m;
public MethodWrapper(Method m) {
@@ -700,7 +700,7 @@ class Util {
}
@Override
- public Object unWrap() {
+ public Method unWrap() {
return m;
}
@@ -720,7 +720,7 @@ class Util {
}
}
- private static class ConstructorWrapper extends Wrapper {
+ private static class ConstructorWrapper extends Wrapper<Constructor<?>> {
private final Constructor<?> c;
public ConstructorWrapper(Constructor<?> c) {
@@ -728,7 +728,7 @@ class Util {
}
@Override
- public Object unWrap() {
+ public Constructor<?> unWrap() {
return c;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org